[adios] 01/01: New upstream 1.10.0

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Oct 28 09:34:20 UTC 2016


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

mckinstry pushed a commit to tag upstream/1.10.0
in repository adios.

commit 73d6ad467051111c314adf143b73832598f382d0
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Wed Aug 31 09:49:54 2016 +0100

    New upstream 1.10.0
---
 CMakeLists.txt                                     |   306 +-
 COPYING                                            |     9 +
 Makefile.am                                        |    67 +-
 Makefile.in                                        |   539 +-
 NEWS                                               |    16 +
 README => README.md                                |     0
 aclocal.m4                                         |   984 +-
 adios_config.flags.cmake                           |    30 +-
 adios_config.flags.in                              |    39 -
 adios_config.flags.makesrc.in                      |    45 +
 adios_config.in => adios_config.makesrc.in         |    51 +-
 cmake_init                                         |   117 +-
 config.h.cmake                                     |     7 +
 config.h.in                                        |    52 +-
 config/ac_alacrity.m4                              |     2 +-
 config/ac_fastbit.m4                               |     2 +-
 config/ac_mxml.m4                                  |     8 +-
 config/ac_nc4par.m4                                |     5 +
 config/ac_ncsu_timer.m4                            |    61 -
 config/ac_phdf5.m4                                 |     5 +
 config/ac_ridcompress.m4                           |    73 -
 config/acx_mpi.m4                                  |   217 +-
 config/compile                                     |   232 +-
 config/depcomp                                     |   531 +-
 config/libtool.m4                                  |  4187 +-
 config/ltmain.sh                                   |  8139 ++-
 config/ltoptions.m4                                |   147 +-
 config/ltsugar.m4                                  |     7 +-
 config/ltversion.m4                                |    14 +-
 config/lt~obsolete.m4                              |    17 +-
 config/missing                                     |   461 +-
 config/test-driver                                 |   127 +
 configure                                          | 29515 ++++------
 configure.ac                                       |   330 +-
 examples/C/Makefile.in                             |   315 +-
 examples/C/arrays/Makefile.am                      |     2 +-
 examples/C/arrays/Makefile.in                      |   239 +-
 examples/C/arrays/arrays.xml                       |     2 +-
 examples/C/attributes/Makefile.am                  |     2 +-
 examples/C/attributes/Makefile.in                  |   249 +-
 examples/C/attributes/attributes.xml               |     2 +-
 examples/C/attributes/attributes_read.c            |    79 +-
 examples/C/flexpath_arrays/Makefile.in             |   315 +-
 .../global_range_select/Makefile.am                |     4 +-
 .../global_range_select/Makefile.in                |   241 +-
 .../flexpath_arrays/global_range_select/arrays.xml |     2 +-
 .../global_range_select/arrays_read.c              |    11 +-
 .../C/flexpath_arrays/process_select/Makefile.am   |     4 +-
 .../C/flexpath_arrays/process_select/Makefile.in   |   241 +-
 .../C/flexpath_arrays/process_select/arrays.xml    |     2 +-
 examples/C/global-array-time/Makefile.am           |     4 +-
 examples/C/global-array-time/Makefile.in           |   270 +-
 examples/C/global-array-time/adios_globaltime.xml  |     2 +-
 .../C/global-array-time/adios_globaltime_no_xml.c  |    47 +-
 .../C/global-array-time/adios_read_globaltime.c    |     5 +-
 .../adios_read_globaltime_streaming.c              |     4 +-
 examples/C/global-array/Makefile.am                |    12 +-
 examples/C/global-array/Makefile.in                |   357 +-
 examples/C/global-array/adios_global.xml           |     2 +-
 .../global-array/adios_global_aggregate_by_color.c |     2 +-
 examples/C/global-array/adios_global_no_xml.c      |    27 +-
 examples/C/global-array/adios_read_chunk.c         |     4 +-
 examples/C/global-array/adios_read_global.c        |     5 +-
 examples/C/global-array/adios_read_global_no_xml.c |     4 +-
 examples/C/global-array/adios_read_writeblock.c    |     6 +-
 examples/C/global-array/no_xml_write_byid.c        |   177 +-
 examples/C/global-array/read_no_xml_write_byid.c   |     4 +-
 examples/C/icee_arrays/Makefile.in                 |   315 +-
 examples/C/icee_arrays/array/Makefile.am           |     7 +-
 examples/C/icee_arrays/array/Makefile.in           |   244 +-
 examples/C/icee_arrays/array/adios_read.c          |     5 +-
 examples/C/icee_arrays/array/adios_write.c         |     5 +-
 examples/C/manual/Makefile.am                      |     8 +-
 examples/C/manual/Makefile.in                      |   269 +-
 examples/C/manual/config.xml                       |     2 +-
 examples/C/query/Makefile.am                       |     7 +-
 examples/C/query/Makefile.in                       |   275 +-
 examples/C/query/README_table.txt                  |    12 +-
 examples/C/query/query_table.c                     |   129 +-
 examples/C/query/query_vars.c                      |   202 +-
 examples/C/query/write_table.c                     |    45 +-
 examples/C/query/write_vars.c                      |    51 +-
 examples/C/read_all/Makefile.in                    |   266 +-
 examples/C/read_all/read_all.c                     |    32 +-
 examples/C/read_all/read_all_v1.c                  |    17 +-
 examples/C/scalars/Makefile.am                     |     4 +-
 examples/C/scalars/Makefile.in                     |   253 +-
 examples/C/scalars/scalars.xml                     |     2 +-
 examples/C/scalars/scalars_read.c                  |     4 +-
 examples/C/schema/Makefile.am                      |    18 +-
 examples/C/schema/Makefile.in                      |   323 +-
 examples/C/schema/rectilinear2d.xml                |     2 +-
 examples/C/schema/rectilinear2d_noxml.c            |     2 +-
 examples/C/schema/structured2d.xml                 |     2 +-
 examples/C/schema/structured2d_noxml.c             |     2 +-
 examples/C/schema/tri2d.xml                        |     2 +-
 examples/C/schema/tri2d_noxml.c                    |     4 +-
 examples/C/schema/triangle2d.xml                   |     2 +-
 examples/C/schema/uniform2d.xml                    |     2 +-
 examples/C/schema/uniform2d_noxml.c                |     2 +-
 examples/C/stat/Makefile.am                        |     2 +-
 examples/C/stat/Makefile.in                        |   239 +-
 examples/C/stat/stat.xml                           |     2 +-
 examples/C/transforms/Makefile.am                  |    12 +-
 examples/C/transforms/Makefile.in                  |   278 +-
 examples/C/transforms/adios_global.xml             |     2 +-
 examples/C/transforms/adios_read_points.c          |     2 +-
 examples/C/transforms/adios_read_subv.c            |     2 +-
 examples/C/transforms/adios_read_wb_subpg.c        |     2 +-
 examples/Fortran/Makefile.in                       |   315 +-
 examples/Fortran/arrays/Makefile.am                |     2 +-
 examples/Fortran/arrays/Makefile.in                |   233 +-
 examples/Fortran/arrays/arrays.xml                 |     2 +-
 examples/Fortran/global-array-time/Makefile.am     |     2 +-
 examples/Fortran/global-array-time/Makefile.in     |   231 +-
 .../Fortran/global-array-time/adios_globaltime.xml |     2 +-
 examples/Fortran/global-array/Makefile.am          |     6 +-
 examples/Fortran/global-array/Makefile.in          |   254 +-
 examples/Fortran/global-array/adios_global.xml     |     2 +-
 .../Fortran/global-array/adios_global_no_xml.F90   |     2 +-
 .../Fortran/global-array/no_xml_write_byid.F90     |     2 +-
 examples/Fortran/scalars/Makefile.am               |     2 +-
 examples/Fortran/scalars/Makefile.in               |   233 +-
 examples/Fortran/scalars/scalars.xml               |     2 +-
 examples/Fortran/schema/Makefile.am                |    10 +-
 examples/Fortran/schema/Makefile.in                |   299 +-
 examples/Fortran/schema/rectilinear2d_noxml.F90    |     6 +-
 examples/Fortran/schema/structured2d_noxml.F90     |     4 +-
 examples/Fortran/schema/tri2d_noxml.F90            |     6 +-
 examples/Fortran/schema/tri2d_noxml_seperate.F90   |     6 +-
 examples/Fortran/schema/uniform2d_noxml.F90        |     6 +-
 examples/Makefile.in                               |   315 +-
 examples/coupling/coupling_reader_2D.xml           |     2 +-
 examples/coupling/coupling_writer_2D.xml           |     2 +-
 examples/skel/genarray3d/genarray3d.xml            |     2 +-
 examples/skel/geos5/geos5.xml                      |     2 +-
 examples/skel/grapes/grapes.xml                    |     2 +-
 examples/skel/gts/gts.xml                          |     2 +-
 examples/skel/picongpu/picongpu.xml                |     2 +-
 examples/skel/picongpu/picongpu_skel.xml           |     2 +-
 examples/skel/s3d/s3d.xml                          |     2 +-
 examples/staging/stage_write/genarray_stream.xml   |     2 +-
 examples/staging/stage_write/stage_write.c         |     2 +-
 .../stage_write_varyingsize/decompose_block.o      |   Bin 9968 -> 0 bytes
 .../stage_write_varyingsize/genarray_varying       |   Bin 5254828 -> 0 bytes
 .../stage_write_varyingsize/genarray_varying.o     |   Bin 92096 -> 0 bytes
 .../stage_write_varyingsize/genarray_varying.xml   |     2 +-
 .../genarray_varying_comm.mod                      |   122 -
 .../staging/stage_write_varyingsize/stage_write    |   Bin 4501675 -> 0 bytes
 .../staging/stage_write_varyingsize/stage_write.c  |     2 +-
 .../staging/stage_write_varyingsize/stage_write.o  |   Bin 55448 -> 0 bytes
 examples/staging/stage_write_varyingsize/utils.o   |   Bin 23680 -> 0 bytes
 runconf                                            |   560 +-
 scripts/FindADIOS.cmake                            |     6 +-
 src/CMakeLists.txt                                 |    72 +-
 src/Makefile.am                                    |   966 +-
 src/Makefile.in                                    | 10188 ++--
 src/core/a2sel.c                                   |   262 +
 src/core/a2sel.h                                   |    33 +
 src/core/adios.c                                   |   148 +-
 src/core/adios_bp_v1.c                             |    44 +-
 src/core/adios_clock.c                             |    87 +
 src/core/adios_clock.h                             |    28 +
 src/core/adios_copyspec.c                          |     4 +-
 src/core/adios_infocache.c                         |     2 +-
 src/core/adios_internals.c                         |   853 +-
 src/core/adios_internals.h                         |    68 +-
 src/core/adios_internals_mxml.c                    |   172 +-
 src/core/adios_internals_mxml.h                    |     5 -
 src/core/adios_read.c                              |    16 +-
 src/core/adios_read_ext.c                          |    19 +-
 src/core/adios_read_hooks.h                        |     2 +-
 src/core/adios_read_v1.c                           |    12 +-
 src/core/adios_selection_util.c                    |    28 +-
 src/core/adios_selection_util.h                    |     3 +-
 src/core/adios_subvolume.c                         |     6 +-
 src/core/adios_timing.c                            |    36 +-
 src/core/adios_timing.h                            |     4 +-
 src/core/adios_transport_hooks.c                   |     7 +-
 src/core/adios_transport_hooks.h                   |    43 +-
 src/core/adiosf.c                                  |    21 +-
 src/core/adiosf_defs_mod.f90                       |     8 +
 src/core/adiosf_read.c                             |   104 +-
 src/core/adiosf_read_mod.f90                       |    57 +
 src/core/adiosf_read_v1.c                          |     8 +-
 src/core/adiosf_write_mod.f90                      |    14 +-
 src/core/bp_utils.c                                |   104 +-
 src/core/bp_utils.h                                |     5 +-
 src/core/buffer.c                                  |   143 +-
 src/core/buffer.h                                  |    24 +-
 src/core/common_adios.c                            |   692 +-
 src/core/common_adios.h                            |     2 +-
 src/core/common_read.c                             |   331 +-
 src/core/common_read.h                             |     8 -
 src/core/flexpath.h                                |    34 +-
 src/core/globals.c                                 |    12 +-
 src/core/mpidummy.c                                |    11 +-
 src/core/strutil.c                                 |   356 +
 src/core/strutil.h                                 |    53 +
 src/core/transforms/adios_patchdata.c              |     3 +-
 src/core/transforms/adios_transforms_datablock.c   |     5 +-
 src/core/transforms/adios_transforms_hooks_read.h  |     1 +
 src/core/transforms/adios_transforms_read.c        |    31 +-
 src/core/transforms/adios_transforms_read.h        |     3 +
 src/core/transforms/adios_transforms_reqgroup.c    |    20 +-
 src/core/transforms/adios_transforms_util.c        |     8 +-
 src/core/transforms/adios_transforms_util.h        |     3 +-
 src/core/transforms/adios_transforms_write.c       |    51 +-
 src/core/transforms/adios_transforms_write.h       |     6 +
 src/core/types.h                                   |    31 +
 src/core/util.c                                    |   404 +-
 src/core/util.h                                    |    74 +-
 src/core/util_mpi.c                                |   101 +
 src/core/util_mpi.h                                |    10 +
 src/mxml/CMakeLists.txt                            |    36 +
 src/mxml/Makefile.am                               |    41 +
 src/mxml/Makefile.in                               |   868 +
 src/mxml/cmake_try_longlong.c                      |     6 +
 src/mxml/config.h                                  |    39 +
 src/mxml/mxml-2.9/ANNOUNCEMENT                     |    11 +
 src/mxml/mxml-2.9/CHANGES                          |   363 +
 src/mxml/mxml-2.9/COPYING                          |   507 +
 src/mxml/mxml-2.9/Makefile.in                      |   434 +
 src/mxml/mxml-2.9/README                           |   196 +
 src/mxml/mxml-2.9/config.h.in                      |    95 +
 src/mxml/mxml-2.9/configure                        |  5742 ++
 src/mxml/mxml-2.9/configure.in                     |   338 +
 src/mxml/mxml-2.9/doc/0.gif                        |   Bin 0 -> 1483 bytes
 src/mxml/mxml-2.9/doc/1.gif                        |   Bin 0 -> 1272 bytes
 src/mxml/mxml-2.9/doc/2.gif                        |   Bin 0 -> 1417 bytes
 src/mxml/mxml-2.9/doc/3.gif                        |   Bin 0 -> 1450 bytes
 src/mxml/mxml-2.9/doc/4.gif                        |   Bin 0 -> 1380 bytes
 src/mxml/mxml-2.9/doc/5.gif                        |   Bin 0 -> 1432 bytes
 src/mxml/mxml-2.9/doc/6.gif                        |   Bin 0 -> 1502 bytes
 src/mxml/mxml-2.9/doc/7.gif                        |   Bin 0 -> 1322 bytes
 src/mxml/mxml-2.9/doc/8.gif                        |   Bin 0 -> 1534 bytes
 src/mxml/mxml-2.9/doc/9.gif                        |   Bin 0 -> 1530 bytes
 src/mxml/mxml-2.9/doc/A.gif                        |   Bin 0 -> 1478 bytes
 src/mxml/mxml-2.9/doc/B.gif                        |   Bin 0 -> 1427 bytes
 src/mxml/mxml-2.9/doc/C.gif                        |   Bin 0 -> 1479 bytes
 src/mxml/mxml-2.9/doc/D.gif                        |   Bin 0 -> 1463 bytes
 src/mxml/mxml-2.9/doc/E.gif                        |   Bin 0 -> 672 bytes
 src/mxml/mxml-2.9/doc/F.gif                        |   Bin 0 -> 641 bytes
 src/mxml/mxml-2.9/doc/advanced.html                |   634 +
 src/mxml/mxml-2.9/doc/basics.html                  |   606 +
 src/mxml/mxml-2.9/doc/chapters.xcf.gz              |   Bin 0 -> 6565 bytes
 src/mxml/mxml-2.9/doc/docset.css                   |   114 +
 src/mxml/mxml-2.9/doc/docset.header                |    16 +
 src/mxml/mxml-2.9/doc/docset.intro                 |   178 +
 src/mxml/mxml-2.9/doc/footer.man                   |     4 +
 src/mxml/mxml-2.9/doc/install.html                 |   119 +
 src/mxml/mxml-2.9/doc/intro.html                   |   194 +
 src/mxml/mxml-2.9/doc/intro.man                    |   173 +
 src/mxml/mxml-2.9/doc/license.html                 |   594 +
 src/mxml/mxml-2.9/doc/logo.gif                     |   Bin 0 -> 5796 bytes
 src/mxml/mxml-2.9/doc/logo.xcf.gz                  |   Bin 0 -> 13923 bytes
 src/mxml/mxml-2.9/doc/makedocs.sh                  |    28 +
 src/mxml/mxml-2.9/doc/mxml.book                    |    11 +
 src/mxml/mxml-2.9/doc/mxml.html                    |  4239 ++
 src/mxml/mxml-2.9/doc/mxmldoc.html                 |   204 +
 src/mxml/mxml-2.9/doc/mxmldoc.man                  |   198 +
 src/mxml/mxml-2.9/doc/mxmldoc.xsd                  |   189 +
 src/mxml/mxml-2.9/doc/reference.heading            |     4 +
 src/mxml/mxml-2.9/doc/reference.html               |  1792 +
 src/mxml/mxml-2.9/doc/relnotes.html                |   583 +
 src/mxml/mxml-2.9/doc/schema.html                  |   201 +
 src/mxml/mxml-2.9/doc/title.html                   |    32 +
 src/mxml/mxml-2.9/install-sh                       |   251 +
 src/mxml/mxml-2.9/mxml-attr.c                      |   314 +
 src/mxml/mxml-2.9/mxml-entity.c                    |   449 +
 src/mxml/mxml-2.9/mxml-file.c                      |  3053 +
 src/mxml/mxml-2.9/mxml-get.c                       |   452 +
 src/mxml/mxml-2.9/mxml-index.c                     |   659 +
 src/mxml/mxml-2.9/mxml-node.c                      |   788 +
 src/mxml/mxml-2.9/mxml-private.c                   |   323 +
 src/mxml/mxml-2.9/mxml-private.h                   |    50 +
 src/mxml/mxml-2.9/mxml-search.c                    |   280 +
 src/mxml/mxml-2.9/mxml-set.c                       |   337 +
 src/mxml/mxml-2.9/mxml-string.c                    |   469 +
 src/mxml/mxml-2.9/mxml.h                           |   332 +
 src/mxml/mxml-2.9/mxml.list.in                     |   107 +
 src/mxml/mxml-2.9/mxml.pc.in                       |    10 +
 src/mxml/mxml-2.9/mxml.spec                        |    95 +
 src/mxml/mxml-2.9/mxml.xml                         |  1627 +
 src/mxml/mxml-2.9/mxmldoc.c                        |  5797 ++
 src/mxml/mxml-2.9/test.xml                         |    29 +
 src/mxml/mxml-2.9/test/class.cxx                   |    84 +
 src/mxml/mxml-2.9/test/dotest.sh                   |    47 +
 src/mxml/mxml-2.9/test/enum.cxx                    |    17 +
 src/mxml/mxml-2.9/test/function.cxx                |   107 +
 src/mxml/mxml-2.9/test/functype.cxx                |     1 +
 src/mxml/mxml-2.9/test/struct.cxx                  |    55 +
 src/mxml/mxml-2.9/test/type.cxx                    |     3 +
 src/mxml/mxml-2.9/testmxml.c                       |   860 +
 src/mxml/mxml-2.9/vcnet/config.h                   |   123 +
 src/mxml/mxml-2.9/vcnet/mxml.sln                   |    51 +
 src/mxml/mxml-2.9/vcnet/mxml1.def                  |    77 +
 src/mxml/mxml-2.9/vcnet/mxml1.vcproj               |   424 +
 src/mxml/mxml-2.9/vcnet/mxmldoc.vcproj             |   364 +
 src/mxml/mxml-2.9/vcnet/testmxml.vcproj            |   364 +
 src/nssi/adios_nssi_args.x                         |   250 -
 src/nssi/adios_nssi_config.c                       |   373 -
 src/nssi/adios_nssi_config.h                       |    31 -
 src/nssi/adios_nssi_filter.c                       |  1419 -
 src/nssi/aggregation.cpp                           |  1120 -
 src/nssi/aggregation.h                             |    58 -
 src/nssi/io_timer.h                                |    27 -
 src/nssi/nssi_coupling_server.cpp                  |  1703 -
 src/nssi/nssi_staging_server.cpp                   |   853 -
 src/public/adios.h                                 |    16 +-
 src/public/adios_error.h                           |     2 +
 src/public/adios_query.h                           |   102 +-
 src/public/adios_read_ext.h                        |     9 +
 src/public/adios_read_v2.h                         |     3 +
 src/public/adios_selection.h                       |    26 +-
 src/public/adios_types.h                           |     1 +
 src/public/adios_version.h                         |     6 +-
 src/query/Makefile.plugins                         |     1 +
 src/query/Makefile.plugins.cmake                   |     2 +
 src/query/adios_query.c                            |    46 +-
 src/query/adios_query_hooks.c                      |     1 +
 src/query/adios_query_hooks.h                      |     5 +-
 src/query/adios_query_mod.f90                      |     1 +
 src/query/adiosf_query.c                           |    39 +-
 src/query/common_query.c                           |   461 +-
 src/query/common_query.h                           |    20 +-
 src/query/common_query_read.c                      |   584 +
 src/query/fastbit_adios.c                          |    61 +-
 src/query/fastbit_adios.h                          |    41 +-
 src/query/query_alac.c                             |  1300 +-
 src/query/query_fastbit.c                          |   590 +-
 src/query/query_minmax.c                           |   769 +
 src/query/query_utils.c                            |     1 +
 src/read/read_bp.c                                 |   974 +-
 src/read/read_bp_staged.c                          |    30 +-
 src/read/read_dataspaces.c                         |    60 +-
 src/read/read_datatap.c                            |  2300 -
 src/read/read_dimes.c                              |    28 +-
 src/read/read_flexpath.c                           |    84 +-
 src/read/read_nssi.c                               |   659 -
 src/transforms/adios_transform_alacrity_common.h   |     2 +-
 src/transforms/adios_transform_alacrity_read.c     |     1 +
 src/transforms/adios_transform_alacrity_write.c    |     2 +-
 src/transforms/adios_transform_aplod_read.c        |     4 +-
 src/transforms/adios_transform_aplod_write.c       |     1 +
 src/transforms/adios_transform_bzip2_read.c        |     1 +
 src/transforms/adios_transform_bzip2_write.c       |     5 +-
 src/transforms/adios_transform_identity_read.c     |     2 +
 src/transforms/adios_transform_isobar_read.c       |     1 +
 src/transforms/adios_transform_isobar_write.c      |     7 +-
 src/transforms/adios_transform_szip_read.c         |     1 +
 src/transforms/adios_transform_zlib_write.c        |     5 +-
 src/write/adios_dataspaces.c                       |    58 +-
 src/write/adios_datatap.c                          |  1082 -
 src/write/adios_dimes.c                            |    47 +-
 src/write/adios_flexpath.c                         |   150 +-
 src/write/adios_icee.c                             |    34 +-
 src/write/adios_mpi.c                              |  1135 +-
 src/write/adios_mpi_amr.c                          |  1329 +-
 src/write/adios_mpi_bgq.c                          |   586 +-
 src/write/adios_mpi_lustre.c                       |   947 +-
 src/write/adios_nc4.c                              |    16 +-
 src/write/adios_nssi.c                             |  1648 -
 src/write/adios_phdf5.c                            |    72 +-
 src/write/adios_posix.c                            |   895 +-
 src/write/adios_posix1.c                           |   876 -
 src/write/adios_var_merge.c                        |    35 +-
 tests/C/CMakeLists.txt                             |     1 -
 tests/C/Makefile.am                                |     2 +-
 tests/C/Makefile.in                                |   362 +-
 tests/C/adios_test_c.c                             |    15 +-
 tests/C/config_c.xml                               |     2 +-
 tests/C/fgr_tests/CMakeLists.txt                   |     1 -
 tests/C/fgr_tests/Makefile.am                      |     2 +-
 tests/C/fgr_tests/Makefile.in                      |   253 +-
 tests/C/fgr_tests/posix_fgr.c                      |     1 +
 tests/C/flexpath_tests/1D_arr_global/Makefile.am   |     6 +-
 tests/C/flexpath_tests/1D_arr_global/Makefile.in   |   260 +-
 tests/C/flexpath_tests/1D_arr_global/reader.c      |     6 +-
 .../1D_arr_global/test_config_flex.xml             |     2 +-
 tests/C/flexpath_tests/1D_arr_global/writer.c      |     4 +-
 .../1D_arr_global_noxml/CMakeLists.txt             |     1 -
 .../flexpath_tests/1D_arr_global_noxml/Makefile.am |     6 +-
 .../flexpath_tests/1D_arr_global_noxml/Makefile.in |   272 +-
 .../C/flexpath_tests/1D_arr_global_noxml/writer.c  |     4 +-
 tests/C/flexpath_tests/Makefile.in                 |   315 +-
 tests/C/flexpath_tests/common/utils.c              |     1 +
 .../global_range_select/CMakeLists.txt             |     1 -
 .../flexpath_tests/global_range_select/Makefile.am |     4 +-
 .../flexpath_tests/global_range_select/Makefile.in |   241 +-
 .../flexpath_tests/global_range_select/arrays.xml  |     2 +-
 tests/C/flexpath_tests/include/test_common.h       |     2 +-
 tests/C/flexpath_tests/maya_append/CMakeLists.txt  |     1 -
 tests/C/flexpath_tests/maya_append/Makefile.am     |     6 +-
 tests/C/flexpath_tests/maya_append/Makefile.in     |   277 +-
 tests/C/flexpath_tests/maya_append/writer.c        |     4 +-
 tests/C/flexpath_tests/maya_noxml/CMakeLists.txt   |     1 -
 tests/C/flexpath_tests/maya_noxml/Makefile.am      |     6 +-
 tests/C/flexpath_tests/maya_noxml/Makefile.in      |   289 +-
 tests/C/flexpath_tests/maya_noxml/writer.c         |     6 +-
 tests/C/flexpath_tests/scalar/CMakeLists.txt       |     1 -
 tests/C/flexpath_tests/scalar/Makefile.am          |     6 +-
 tests/C/flexpath_tests/scalar/Makefile.in          |   260 +-
 tests/C/flexpath_tests/scalar/test_config_flex.xml |     2 +-
 tests/C/flexpath_tests/scalar/test_config_mpi.xml  |     2 +-
 tests/C/flexpath_tests/scalar/writer.c             |     2 +-
 tests/C/query/Makefile.in                          |   315 +-
 tests/C/query/alacrity/CMakeLists.txt              |     4 +-
 tests/C/query/alacrity/DS1/DS1-inputs.xml          |    10 +
 tests/C/query/alacrity/DS1/DS1-notrans.xml         |    22 +
 tests/C/query/alacrity/DS1/DS1.xml                 |    22 +
 tests/C/query/alacrity/DS2/DS2-inputs.xml          |     9 +
 tests/C/query/alacrity/DS2/DS2-notrans.xml         |    22 +
 tests/C/query/alacrity/DS2/DS2.xml                 |    22 +
 tests/C/query/alacrity/DS3/DS3-inputs-3.xml        |    29 +
 tests/C/query/alacrity/DS3/DS3-inputs-WB.xml       |    26 +
 tests/C/query/alacrity/DS3/DS3-inputs.xml          |    35 +
 tests/C/query/alacrity/DS3/DS3.xml                 |    25 +
 tests/C/query/alacrity/Makefile.am                 |    33 +-
 tests/C/query/alacrity/Makefile.in                 |   344 +-
 tests/C/query/alacrity/adios_alac_query.c          |    47 +-
 tests/C/query/alacrity/adios_build_alac_index.c    |    74 +-
 .../xml/xml/alacrity-1var-no-transform.xml         |    25 +
 tests/C/query/alacrity/xml/xml/alacrity-1var.xml   |    25 +
 .../xml/xml/alacrity-2var-no-transform.xml         |    26 +
 .../C/query/alacrity/xml/xml/alacrity-2var-pfd.xml |    26 +
 tests/C/query/alacrity/xml/xml/alacrity-2var.xml   |    26 +
 .../alacrity/xml/xml/alacrity-gen-1var-1D.xml      |    19 +
 .../C/query/alacrity/xml/xml/alacrity-gen-1var.xml |    22 +
 tests/C/query/alacrity/xml/xml/alacrity.xml        |    28 +
 .../alacrity/xml/xml/build-alac-index-inputs.xml   |     7 +
 tests/C/query/common/CMakeLists.txt                |     3 +-
 tests/C/query/common/Makefile.am                   |    12 +-
 tests/C/query/common/Makefile.in                   |   285 +-
 tests/C/query/common/adios_query_test.c            |   171 +-
 tests/C/query/common/adios_query_xml_parse.c       |   122 +-
 .../query/common/compute_expected_query_results.c  |    28 +-
 tests/C/query/fastbit/CMakeLists.txt               |     5 +-
 tests/C/query/fastbit/Makefile.am                  |    15 +-
 tests/C/query/fastbit/Makefile.in                  |   273 +-
 tests/C/query/fastbit/fastbit_tests.c              |   307 +-
 tests/C/query/fastbit/query.xml                    |    68 +
 .../DS-1D/{query0.xml => DS-1D.query0.xml}         |     0
 .../DS-1D/{query1.xml => DS-1D.query1.xml}         |     0
 .../DS-2D/{query0.xml => DS-2D.query0.xml}         |     0
 .../DS-2D/{query1.xml => DS-2D.query1.xml}         |     0
 .../DS-3D/{query-wb0.xml => DS-3D.query-wb0.xml}   |     0
 .../DS-3D/{query-wb1.xml => DS-3D.query-wb1.xml}   |     0
 .../DS-3D/{query0.xml => DS-3D.query0.xml}         |     0
 .../DS-3D/{query1.xml => DS-3D.query1.xml}         |     0
 ...-particle-query0.xml => DS-particle.query0.xml} |     0
 ...-particle-query1.xml => DS-particle.query1.xml} |     0
 .../{query0.xml => DS-unevenpg.query0.xml}         |     0
 .../{query1.xml => DS-unevenpg.query1.xml}         |     0
 tests/CMakeLists.txt                               |     2 +
 tests/Fortran/Makefile.am                          |     2 +-
 tests/Fortran/Makefile.in                          |   230 +-
 tests/Fortran/adios_test_f.F90                     |     2 +-
 tests/Fortran/config_fortran.xml                   |     2 +-
 tests/Makefile.am                                  |    15 +-
 tests/Makefile.in                                  |   323 +-
 tests/bp_read/Makefile.am                          |     2 +-
 tests/bp_read/Makefile.in                          |   294 +-
 tests/bp_read/bp_read_c.c                          |    10 +-
 tests/bp_read/genbp.c                              |     8 +-
 tests/bp_read/testbp_c.xml                         |     4 +-
 tests/genarray/CMakeLists.txt                      |     4 +-
 tests/genarray/Makefile.am                         |     8 +-
 tests/genarray/Makefile.in                         |   271 +-
 tests/genarray/genarray.xml                        |     2 +-
 tests/genarray/genarray3d.xml                      |     2 +-
 tests/suite/Makefile.in                            |   315 +-
 tests/suite/programs/CMakeLists.txt                |    12 +-
 tests/suite/programs/Makefile.am                   |    75 +-
 tests/suite/programs/Makefile.in                   |  1252 +-
 tests/suite/programs/adios_amr_write.xml           |     2 +-
 tests/suite/programs/adios_amr_write_2vars.xml     |     2 +-
 tests/suite/programs/adios_transforms.xml          |     2 +-
 tests/suite/programs/adios_transforms_read_write.c |     2 +-
 tests/suite/programs/big_file.c                    |     2 +-
 tests/suite/programs/blocks.c                      |     3 +-
 tests/suite/programs/build_standard_dataset.c      |    17 +-
 tests/suite/programs/connect_to_space_subset.c     |     2 +-
 tests/suite/programs/examples/Makefile.in          |   315 +-
 .../programs/examples/attributes/CMakeLists.txt    |     2 +-
 .../suite/programs/examples/attributes/Makefile.am |     2 +-
 .../suite/programs/examples/attributes/Makefile.in |   249 +-
 .../programs/examples/attributes/attributes_C.xml  |     2 +-
 .../programs/examples/global_array/CMakeLists.txt  |     2 +-
 .../programs/examples/global_array/Makefile.am     |    16 +-
 .../programs/examples/global_array/Makefile.in     |   349 +-
 .../examples/global_array/global_array_C.xml       |     2 +-
 .../examples/global_array/global_array_F.xml       |     2 +-
 .../global_array_aggregate_by_color_C.c            |     2 +-
 .../examples/global_array/global_array_read_C.c    |     2 +-
 .../global_array/global_array_read_byid_noxml_C.c  |     2 +-
 .../global_array/global_array_read_noxml_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/CMakeLists.txt      |     4 +-
 .../examples/global_array_time/Makefile.am         |     4 +-
 .../examples/global_array_time/Makefile.in         |   280 +-
 .../global_array_time/global_array_time_C.xml      |     2 +-
 .../global_array_time/global_array_time_F.xml      |     2 +-
 .../global_array_time_read_as_stream_C.c           |     2 +-
 .../programs/examples/local_array/CMakeLists.txt   |     2 +-
 .../programs/examples/local_array/Makefile.am      |     2 +-
 .../programs/examples/local_array/Makefile.in      |   249 +-
 .../examples/local_array/local_array_C.xml         |     2 +-
 .../suite/programs/examples/scalars/CMakeLists.txt |     4 +-
 tests/suite/programs/examples/scalars/Makefile.am  |     4 +-
 tests/suite/programs/examples/scalars/Makefile.in  |   296 +-
 .../suite/programs/examples/scalars/scalars_C.xml  |     2 +-
 .../suite/programs/examples/scalars/scalars_F.xml  |     2 +-
 tests/suite/programs/local_array_time.c            |     4 +
 tests/suite/programs/local_array_time.xml          |     5 +-
 tests/suite/programs/many_vars.c                   |     2 +-
 tests/suite/programs/path_test.xml                 |     2 +-
 tests/suite/programs/posix_method.xml              |     2 +-
 tests/suite/programs/reuse_dim.c                   |     2 +-
 tests/suite/programs/selections.c                  |     2 +-
 tests/suite/programs/set_path.xml                  |     2 +-
 tests/suite/programs/set_path_var.xml              |     2 +-
 tests/suite/programs/steps_write.c                 |     2 +-
 tests/suite/programs/transforms.xml                |     2 +-
 tests/suite/programs/two_groups.c                  |    16 +-
 tests/suite/programs/two_groups.xml                |     2 +-
 tests/suite/programs/write_alternate.c             |     1 +
 tests/suite/programs/write_alternate.xml           |     2 +-
 tests/suite/programs/write_read.xml                |     2 +-
 tests/suite/tests/19_query.sh                      |    39 +-
 tests/suite/tests/20_transforms_writeblock.sh      |     4 +-
 tests/test_src/CMakeLists.txt                      |    44 +
 tests/test_src/Makefile.am                         |   128 +
 tests/test_src/Makefile.in                         |  1649 +
 .../{suite/programs => test_src}/copy_subvolume.c  |     0
 .../{suite/programs => test_src}/group_free_test.c |     2 +-
 tests/{suite/programs => test_src}/hashtest.c      |     0
 tests/test_src/points_1DtoND.c                     |   422 +
 tests/test_src/query_minmax.c                      |   379 +
 tests/test_src/read_points_2d.c                    |   694 +
 tests/test_src/read_points_3d.c                    |   774 +
 tests/test_src/selection_api.F90                   |   218 +
 tests/test_src/test_strutil.c                      |   141 +
 tests/test_src/text_to_pairstruct.c                |   127 +
 .../programs => test_src}/transforms_specparse.c   |     0
 tests/test_src/trim_spaces.c                       |    62 +
 utils/CMakeLists.txt                               |     2 +-
 utils/Makefile.am                                  |    14 +-
 utils/Makefile.in                                  |   336 +-
 utils/adios_lint/CMakeLists.txt                    |     1 +
 utils/adios_lint/Makefile.am                       |     6 +-
 utils/adios_lint/Makefile.in                       |   272 +-
 utils/adios_list_methods/CMakeLists.txt            |    28 +
 utils/adios_list_methods/Makefile.am               |    44 +
 .../Makefile.in                                    |   470 +-
 .../adios_list_methods.c}                          |    10 +-
 utils/bp2ascii/Makefile.am                         |     6 +-
 utils/bp2ascii/Makefile.in                         |   259 +-
 utils/bp2ascii/bp2ascii.c                          |    15 +-
 utils/bp2bp/Makefile.am                            |     2 +-
 utils/bp2bp/Makefile.in                            |   274 +-
 utils/bp2bp/bp2bp.c                                |    31 +-
 utils/bp2h5/Makefile.am                            |     5 +-
 utils/bp2h5/Makefile.in                            |   307 +-
 utils/bp2h5/bp2h5.c                                |    52 +-
 utils/bp2ncd/Makefile.am                           |    10 +-
 utils/bp2ncd/Makefile.in                           |   299 +-
 utils/bp2ncd/bp2ncd.c                              |    52 +-
 utils/bpdiff/Makefile.in                           |   280 +-
 utils/bpdiff/bpdiff.c                              |    23 +-
 utils/bpdiff/utils.c                               |     8 +-
 utils/bpdiff/utils.h                               |     1 +
 utils/bpdump/Makefile.am                           |     6 +-
 utils/bpdump/Makefile.in                           |   276 +-
 utils/bpdump/bpdump.c                              |    79 +-
 utils/bpls/Makefile.in                             |   272 +-
 utils/bpls/bpls.c                                  |    79 +-
 utils/bpmeta/CMakeLists.txt                        |     2 +-
 utils/bpmeta/Makefile.am                           |     6 +-
 utils/bpmeta/Makefile.in                           |   276 +-
 utils/bpmeta/bpmeta.c                              |    53 +-
 utils/bprecover/Makefile.am                        |     6 +-
 utils/bprecover/Makefile.in                        |   272 +-
 utils/bprecover/bprecover.c                        |    89 +-
 utils/bpsplit/Makefile.am                          |    11 +-
 utils/bpsplit/Makefile.in                          |   306 +-
 utils/bpsplit/bpappend.c                           |    51 +-
 utils/bpsplit/bpsplit.c                            |    39 +-
 utils/fastbit/Makefile.am                          |    10 +-
 utils/fastbit/Makefile.in                          |   279 +-
 utils/fastbit/adios_index_fastbit.c                |    38 +-
 utils/gpp/CMakeLists.txt                           |     6 +-
 utils/gpp/Makefile.am                              |     2 +-
 utils/gpp/Makefile.in                              |   167 +-
 utils/gpp/ad_config.py                             |    20 +-
 utils/gpp/gpp.py                                   |    20 +-
 utils/gpp/{gpp.py => gpp.py.in}                    |    20 +-
 utils/gpp/type_mapper.py                           |    14 +-
 utils/list_methods/CMakeLists.txt                  |    28 -
 utils/list_methods/Makefile.am                     |    36 -
 utils/skel/Makefile.am                             |     7 +-
 utils/skel/Makefile.in                             |   361 +-
 utils/skel/etc/Makefile.in                         |   157 +-
 utils/skel/etc/templates/xml.tmpl                  |     2 +-
 utils/skel/src/Makefile.in                         |   300 +-
 utils/skeldump/Makefile.in                         |   272 +-
 utils/skeldump/skeldump.c                          |    90 +-
 wrappers/java/test/test1.sh                        |     2 +-
 wrappers/matlab/posix_method.bp                    |   Bin 1257 -> 0 bytes
 .../matlab/posix_method.bp.dir/posix_method.bp.0   |   Bin 10373 -> 0 bytes
 wrappers/matlab/two_groups19.bp                    |     1 -
 wrappers/matlab/xgc.diagnosis.bp                   |     1 -
 wrappers/numpy/DEVELOPER                           |    17 +
 wrappers/numpy/MANIFEST.in                         |     3 +
 wrappers/numpy/_hl/__init__.py                     |     0
 wrappers/numpy/_hl/selections.py                   |   309 +
 wrappers/numpy/adios.cpp                           | 56076 ++++++++++++-------
 wrappers/numpy/adios.pyx                           |  1315 +-
 wrappers/numpy/adios_mpi.cpp                       | 46494 +++++++++------
 wrappers/numpy/adios_mpi.pyx                       |  1315 +-
 wrappers/numpy/adios_mpi2serial.sed                |     3 +
 wrappers/numpy/doc/source/quick.rst                |    63 +-
 wrappers/numpy/example/staging/README              |     4 +
 wrappers/numpy/example/staging/adios_read_mpi.py   |    44 +
 wrappers/numpy/example/staging/adios_write_mpi.py  |    53 +
 wrappers/numpy/example/staging/job.pbs             |    58 +
 wrappers/numpy/example/utils/bpls.py               |     8 +-
 wrappers/numpy/mpi-compat.h                        |    14 +
 wrappers/numpy/setup.py                            |    41 +-
 wrappers/numpy/setup_mpi.py                        |   142 +-
 wrappers/numpy/src/__init__.py                     |     2 +
 wrappers/numpy/src_mpi/__init__.py                 |     2 +
 wrappers/numpy/test/README                         |     8 +
 wrappers/numpy/test/__init__.py                    |     0
 wrappers/numpy/test/test_adios_group_unittest.py   |   148 +
 ...s_unittest.py => test_adios_prefix_unittest.py} |    70 +-
 .../numpy/test/test_adios_timestep_unittest.py     |    63 +-
 wrappers/numpy/test/test_adios_unittest.py         |   105 +-
 wrappers/numpy/test/test_adios_write_unittest.py   |     8 +-
 wrappers/numpy/test/test_adios_writer_unittest.py  |    95 +-
 wrappers/numpy/test/test_selections.py             |    90 +
 wrappers/numpy/tests/config.xml                    |     2 +-
 wrappers/numpy/tests/config_mpi.xml                |     2 +-
 wrappers/numpy/tests/test_adios.py                 |    20 +-
 wrappers/numpy/tests/test_adios_attribute.py       |    62 +
 wrappers/numpy/tests/test_adios_matplot.py         |    19 +-
 wrappers/numpy/tests/test_adios_mpi.py             |    20 +-
 wrappers/numpy/tests/test_adios_mpi_writer.py      |    21 +-
 wrappers/numpy/tests/test_adios_timestep.py        |    25 +-
 wrappers/numpy/tests/test_adios_writer.py          |    21 +-
 wrappers/numpy/uninstal-adios-modules.sh           |    34 +
 654 files changed, 161645 insertions(+), 96497 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ccc42e2..954d132 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,6 +33,20 @@ set(libdir ${exec_prefix}/lib)
 set(includedir ${prefix}/include)
 set(sysconfdir ${prefix}/etc)
 
+#set(Python_ADDITIONAL_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+find_package(PythonInterp)
+#message(STATUS "PYTHON_EXECUTABLE = ${PYTHON_EXECUTABLE}")
+#message(STATUS "PYTHONINTERP_FOUND = ${PYTHONINTERP_FOUND}")
+#message(STATUS "PYTHON_VERSION_STRING = ${PYTHON_VERSION_STRING}")
+#message(STATUS "PYTHON_VERSION_MAJOR = ${PYTHON_VERSION_MAJOR}")
+if (NOT PYTHONINTERP_FOUND OR NOT ${PYTHON_VERSION_MAJOR} GREATER 1)
+    message(FATAL_ERROR "Python 2.x or 3.x is required to build ADIOS.")
+else()
+    message(STATUS "Python ${PYTHON_VERSION_STRING} will be used in building ADIOS")
+endif()
+
+
+
 if(DEFINED ENV{MACRODEFFLAG})
   set(MACRODEFFLAG $ENV{MACRODEFFLAG})
 else()
@@ -43,8 +57,12 @@ message(STATUS "MACRODEFFLAG = ${MACRODEFFLAG}")
 set(LIBS "")
 set(CPPFLAGS "$ENV{CPPFLAGS}")
 set(CFLAGS "$ENV{CFLAGS}")
-set(EXTRA_CFLAGS "$ENV{EXTRA_CFLAGS}")
-set(EXTRA_LIBS "$ENV{EXTRA_LIBS}")
+if(DEFINED ENV{EXTRA_CFLAGS})
+    set(EXTRA_CFLAGS "$ENV{EXTRA_CFLAGS}")
+endif()
+if(DEFINED ENV{EXTRA_LIBS})
+    set(EXTRA_LIBS "$ENV{EXTRA_LIBS}")
+endif()
 ######## file moved from initial_cache.cmake to indicate external library is used(ON) or not (OFF)######
 if(DEFINED ENV{BUILD_WRITE})
   if("$ENV{BUILD_WRITE}" STREQUAL "") 
@@ -529,37 +547,7 @@ elseif(DEFINED ENV{ALACRITY})
   endif()
 endif()
 
-if(DEFINED ENV{RIDCOMPRESS_DIR})
-  if("$ENV{RIDCOMPRESS_DIR}" STREQUAL "")
-    set(RIDCOMPRESS OFF CACHE BOOL "")
-  else()
-    set(RIDCOMPRESS ON CACHE BOOL "")
-    set(RIDCOMPRESS_DIR $ENV{RIDCOMPRESS_DIR})
-  endif()
-elseif(DEFINED ENV{RIDCOMPRESS})
-  if("$ENV{RIDCOMPRESS}" STREQUAL "")
-    set(RIDCOMPRESS OFF CACHE BOOL "")
-  else()
-    set(RIDCOMPRESS ON CACHE BOOL "")
-    set(RIDCOMPRESS_DIR $ENV{RIDCOMPRESS})
-  endif()
-endif()
 
-if(DEFINED ENV{NCSU_TIMER_DIR})
-  if("$ENV{NCSU_TIMER_DIR}" STREQUAL "")
-    set(NCSU_TIMER OFF CACHE BOOL "")
-  else()
-    set(NCSU_TIMER ON CACHE BOOL "")
-    set(NCSU_TIMER_DIR $ENV{NCSU_TIMER_DIR})
-  endif()
-elseif(DEFINED ENV{NCSU_TIMER})
-  if("$ENV{NCSU_TIMER}" STREQUAL "")
-    set(NCSU_TIMER OFF CACHE BOOL "")
-  else()
-    set(NCSU_TIMER ON CACHE BOOL "")
-    set(NCSU_TIMER $ENV{NCSU_TIMER})
-  endif()
-endif()
 ###################### end of external library is used(ON) or not (OFF) ##############################
 
 
@@ -586,9 +574,18 @@ set(FC_FUNC_ FC_GLOBAL_)
 # Define to 1 if you have the <Attributes.h> header file.
 CHECK_INCLUDE_FILES(Attributes.h HAVE_ATTRIBUTES_H)
 
+# Define to 1 if you have the `nanosleep' function.
+CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
+
+# Define to 1 if you have the `gettimeofday' function.
+CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
+
 # Define to 1 if you have the `clock_gettime' function.
 CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME)
 
+# Define to 1 if you have the `clock_get_time' function. On OSX. 
+CHECK_FUNCTION_EXISTS(clock_get_time HAVE_CLOCK_GET_TIME)
+
 # Define if you have CRAY_PMI.
 set(HAVE_CRAY_PMI 0)
 if(CRAY_PMI)
@@ -825,15 +822,15 @@ if(FLEXPATH)
   else()
     set(FLEXPATH_LIBDIR "$ENV{FLEXPATH_DIR}/lib")
   endif()
-  find_library(FLEXPATH_LIBS1 NAMES libevpath.a PATHS ${FLEXPATH_LIBDIR})
+  find_library(FLEXPATH_LIBS1 NAMES evpath PATHS ${FLEXPATH_LIBDIR})
   set(FLEXPATH_LIBS1 "${FLEXPATH_LIBS1}" CACHE INTERNAL "Internal variable")
-  find_library(FLEXPATH_LIBS2 NAMES libffs.a PATHS ${FLEXPATH_LIBDIR})
+  find_library(FLEXPATH_LIBS2 NAMES ffs PATHS ${FLEXPATH_LIBDIR})
   set(FLEXPATH_LIBS2 "${FLEXPATH_LIBS2}" CACHE INTERNAL "Internal variable")
-  find_library(FLEXPATH_LIBS3 NAMES libatl.a PATHS ${FLEXPATH_LIBDIR})
+  find_library(FLEXPATH_LIBS3 NAMES atl PATHS ${FLEXPATH_LIBDIR})
   set(FLEXPATH_LIBS3 "${FLEXPATH_LIBS3}" CACHE INTERNAL "Internal variable")
-  find_library(FLEXPATH_LIBS4 NAMES libdill.a PATHS ${FLEXPATH_LIBDIR})
+  find_library(FLEXPATH_LIBS4 NAMES dill PATHS ${FLEXPATH_LIBDIR})
   set(FLEXPATH_LIBS4 "${FLEXPATH_LIBS4}" CACHE INTERNAL "Internal variable")
-  find_library(FLEXPATH_LIBS5 NAMES libcercs_env.a PATHS ${FLEXPATH_LIBDIR})
+  find_library(FLEXPATH_LIBS5 NAMES cercs_env PATHS ${FLEXPATH_LIBDIR})
   set(FLEXPATH_LIBS5 "${FLEXPATH_LIBS5}" CACHE INTERNAL "Internal variable")
   if(FLEXPATH_LIBS1 AND FLEXPATH_LIBS2 AND FLEXPATH_LIBS3 AND FLEXPATH_LIBS4 AND FLEXPATH_LIBS5 AND HAVE_FLEXPATH_H)
     set(HAVE_FLEXPATH 1)
@@ -856,7 +853,7 @@ endif()
 
 set(HAVE_FASTBIT 0)
 if(FASTBIT)
-  set(FASTBIT_INCDIR "${FASTBIT_DIR}/include")
+  set(FASTBIT_INCDIR "${FASTBIT_DIR}/include/fastbit")
   set(FASTBIT_LIBDIR "${FASTBIT_DIR}/lib")
   find_path(FASTBIT_INCLUDE_DIR NAMES iapi.h PATHS ${FASTBIT_INCDIR})
   if(NOT FASTBIT_INCLUDE_DIR)
@@ -865,19 +862,16 @@ if(FASTBIT)
   else()
     set(HAVE_IAPI_H 1)
   endif()  
-  find_library(FASTBIT_LIBS NAMES fastbit PATHS ${FASTBIT_LIBDIR})
-  if(FASTBIT_INCLUDE_DIR AND FASTBIT_LIBS)
+  find_library(FASTBIT_LIB NAMES fastbit PATHS ${FASTBIT_LIBDIR})
+  if(FASTBIT_INCLUDE_DIR AND FASTBIT_LIB)
     set(HAVE_FASTBIT 1)
     set(FASTBIT_CPPFLAGS "-I${FASTBIT_INCDIR}")
-    set(FASTBIT_LIBS ${FASTBIT_LIBS} CACHE STRING "") 
+    set(FASTBIT_LIBS ${FASTBIT_LIB} -lstdc++ CACHE STRING "") 
   else()
     set(FASTBIT OFF CACHE BOOL "" FORCE)
   endif()
 endif()
 
-# Define to 1 if you have the `gettimeofday' function.
-CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
-
 set(HAVE_MPI 0)
 
 # Define if you have the MPI library.
@@ -949,31 +943,38 @@ endif(LUSTRE)
 # Define to 1 if you have the <memory.h> header file.
 CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H)
 
-# Define to 1 if you have the <mxml.h> header file.
-find_path(MXML_INCLUDE_DIR NAMES mxml.h PATHS ${MXML_DIR}/include)
-if(NOT MXML_INCLUDE_DIR-NOTFOUND)
-  message(STATUS "find mxml header")
-  set(HAVE_MXML_H 1)
-#include_directories(${MXML_INCLUDE_DIR})
-  set(MXML_CPPFLAGS "-I${MXML_INCLUDE_DIR}")
-#  set(CPPFLAGS "${CPPFLAGS} ${MXML_CPPFLAGS}")
-endif(NOT MXML_INCLUDE_DIR-NOTFOUND)
-
-# Define if you have the MXML.
-# MXML: /sw/analysis-x64/mxml/2.6/centos5.5_pgi10./9
 set(HAVE_MXML 0)
-find_library(MXML_LIBS NAMES mxml PATHS ${MXML_DIR}/lib)
-if(MXML_LIBS)
-  message(STATUS "find mxml library")
-endif()
-if(MXML_LIBS AND HAVE_MXML_H)
+if (MXML_DIR)
+  # Use a preinstalled MXML library pointed by the user
+  # Define to 1 if you have the <mxml.h> header file.
+  find_path(MXML_INCLUDE_DIR NAMES mxml.h PATHS ${MXML_DIR}/include)
+  if(NOT MXML_INCLUDE_DIR-NOTFOUND)
+    message(STATUS "find mxml header")
+    set(HAVE_MXML_H 1)
+  endif(NOT MXML_INCLUDE_DIR-NOTFOUND)
+
+  # Define if you have the MXML.
+  # MXML: /sw/analysis-x64/mxml/2.6/centos5.5_pgi10./9
+  find_library(MXML_LIBS NAMES mxml PATHS ${MXML_DIR}/lib)
+  if(MXML_LIBS)
+    message(STATUS "find mxml library")
+  endif()
+  if(MXML_LIBS AND HAVE_MXML_H)
+    set(HAVE_MXML 1)
+  endif()
+endif(MXML_DIR)
+
+if (NOT HAVE_MXML)
+  # Build the supplied mxml directory
+  message(STATUS "MXML will be built for ADIOS in ./src/mxml")
   set(HAVE_MXML 1)
-#  set(LIBS "${LIBS} ${MXML_LIBS})
-#  set(CPPFLAGS "${CPPFLAGS} ${MXML_CPPFLAGS}")
-endif()
+  set(BUILD_MXML 1)
+  set(MXML_LIBS "") 
+  set(MXML_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/src/mxml/mxml-2.9)
+  message(STATUS "Checking type long long int")
+  try_compile(HAVE_LONG_LONG ${PROJECT_BINARY_DIR}/src/mxml SOURCES ${PROJECT_SOURCE_DIR}/src/mxml/cmake_try_longlong.c)
+endif (NOT HAVE_MXML)
 
-# Define to 1 if you have the `nanosleep' function.
-CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
 
 # Define if you have NETCDF.
 if(NETCDF)
@@ -1178,6 +1179,15 @@ CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
 # Define to 1 if you have the `strncpy' function.
 CHECK_FUNCTION_EXISTS(strncpy HAVE_STRNCPY)
 
+# Define to 1 if you have the `strdup' function.
+CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
+
+# Define to 1 if you have the `snprintf' function.
+CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
+
+# Define to 1 if you have the `vsnprintf' function.
+CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
+
 # Define to 1 if you have the <sys/stat.h> header file.
 CHECK_INCLUDE_FILES(sys/stat.h HAVE_SYS_STAT_H)
 
@@ -1302,32 +1312,15 @@ endif()
 set(HAVE_ALACRITY 0)
 if(ALACRITY)
   find_path(ALACRITY_INCLUDE_DIR NAMES alacrity.h PATHS ${ALACRITY_DIR}/include)
-  find_library(ALACRITY_LIBS NAMES alacrity PATHS ${ALACRITY_DIR}/lib)
-  if(ALACRITY_INCLUDE_DIR AND ALACRITY_LIBS)
+  find_library(ALACRITY_LIB NAMES alacrity PATHS ${ALACRITY_DIR}/lib)
+  find_library(RIDCOMPRESS_LIB NAMES ridcompress PATHS ${ALACRITY_DIR}/lib)
+  if(ALACRITY_INCLUDE_DIR AND ALACRITY_LIB AND RIDCOMPRESS_LIB)
     set(HAVE_ALACRITY 1)
     set(ALACRITY_CPPFLAGS "-I${ALACRITY_INCLUDE_DIR}")
+    set(ALACRITY_LIBS ${ALACRITY_LIB} ${RIDCOMPRESS_LIB} -lstdc++ CACHE STRING "") 
   endif()
 endif()
 
-set(HAVE_RIDCOMPRESS 0)
-if(RIDCOMPRESS)
-  set(RIDCOMPRESS_INCLUDE_DIR ${RIDCOMPRESS_DIR}/include)
-  find_library(RIDCOMPRESS_LIBS NAMES ridcompress PATHS ${RIDCOMPRESS_DIR}/lib)
-  if(RIDCOMPRESS_INCLUDE_DIR AND RIDCOMPRESS_LIBS)
-    set(HAVE_RIDCOMPRESS 1)
-    set(RIDCOMPRESS_CPPFLAGS "-I${RIDCOMPRESS_INCLUDE_DIR}")
-  endif()
-endif()
-
-set(HAVE_NCSU_TIMER 0)
-if(NCSU_TIMER)
-  find_path(TIMER_INCLUDE_DIR NAMES timer.h PATHS ${NCSU_TIMER_DIR}/include)
-  find_library(TIMER_LIBS NAMES timer PATHS ${NCSU_TIMER_DIR}/lib)
-  if(TIMER_INCLUDE_DIR AND TIMER_LIBS)
-    set(HAVE_NCSU_TIMER 1)
-    set(TIMER_CPPFLAGS "-I${TIMER_INCLUDE_DIR}")
-  endif()
-endif()
 
 # Define to 1 if your C compiler doesn't accept -c and -o together.
 
@@ -1357,7 +1350,7 @@ set(PACKAGE adios)
 set(VERSION_MAJOR 1)
 
 # Minor version number
-set(VERSION_MINOR 8)
+set(VERSION_MINOR 10)
 
 # Micro version number
 set(VERSION_MICRO 0)
@@ -1366,7 +1359,7 @@ set(VERSION_MICRO 0)
 set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO})
 
 # svn revision number
-set(VERSION_SVNREV 2007)
+#set(VERSION_SVNREV 2007)
 
 
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${PROJECT_BINARY_DIR}/config.h)
@@ -1387,7 +1380,7 @@ FortranCInterface_HEADER(${CMAKE_CURRENT_BINARY_DIR}/FC.h MACRO_NAMESPACE "FC_")
 #FortranCInterface_VERIFY(CXX)
 endif()
 ################################ end of Fortran processing ##############################
-find_library(M_LIBS libm.a)
+find_library(M_LIBS m)
 
 # Generate flags for adios lib creation which depends on the packages we found
 # ADIOSLIB_* for compiling libadios.a and libadiosf.a, and linking codes with those
@@ -1397,18 +1390,18 @@ find_library(M_LIBS libm.a)
 # ADIOSREADLIB_SEQ_* for codes using libadiosread_nompi.a
 # adios_config will contain flags for users' code linking based on these flags
 # EXTRA flags are used for compiling adios stuff, which need not go into adios_config for user codes
-set(ADIOSLIB_EXTRA_CPPFLAGS "${MACRODEFFLAG}_FILE_OFFSET_BITS=64 ${MACRODEFFLAG}_LARGEFILE_SOURCE ${MACRODEFFLAG}_LARGEFILE64_SOURCE ${MACRODEFFLAG}_GNU_SOURCE")
+set(ADIOSLIB_EXTRA_CPPFLAGS "${MACRODEFFLAG}_FILE_OFFSET_BITS=64 ${MACRODEFFLAG}_LARGEFILE_SOURCE ${MACRODEFFLAG}_LARGEFILE64_SOURCE ${MACRODEFFLAG}_GNU_SOURCE ${CPPFLAGS}")
 #message("${ADIOSLIB_EXTRA_CPPFLAGS}")
-set(ADIOSLIB_LDADD ${MXML_LIBS})
+set(ADIOSLIB_LDADD "")
 set(ADIOSLIB_CFLAGS "")
-set(ADIOSLIB_CPPFLAGS "${MXML_CPPFLAGS}")
+set(ADIOSLIB_CPPFLAGS "")
 #message("ADIOSLIB_CPPFLAGS is ${ADIOSLIB_CPPFLAGS}")
-set(ADIOSLIB_SEQ_CPPFLAGS "${MACRODEFFLAG}_NOMPI ${MXML_CPPFLAGS}")
+set(ADIOSLIB_SEQ_CPPFLAGS "${MACRODEFFLAG}_NOMPI")
 set(ADIOSLIB_SEQ_CFLAGS "")
-set(ADIOSLIB_SEQ_LDADD ${MXML_LIBS})
-set(ADIOSLIB_INT_CPPFLAGS "${MACRODEFFLAG}_NOMPI ${MXML_CPPFLAGS}")
+set(ADIOSLIB_SEQ_LDADD "")
+set(ADIOSLIB_INT_CPPFLAGS "${MACRODEFFLAG}_NOMPI")
 set(ADIOSLIB_INT_CFLAGS "")
-set(ADIOSLIB_INT_LDADD ${MXML_LIBS})
+set(ADIOSLIB_INT_LDADD "")
 set(ADIOSREADLIB_CPPFLAGS "")
 set(ADIOSREADLIB_CFLAGS "")
 set(ADIOSREADLIB_LDADD "")
@@ -1480,12 +1473,12 @@ if(HAVE_NSSI)
   set(ADIOSLIB_SEQ_CPPFLAGS "${ADIOSLIB_SEQ_CPPFLAGS} ${NSSI_CPPFLAGS}")
   set(ADIOSLIB_SEQ_CFLAGS "${ADIOSLIB_SEQ_CFLAGS} ${NSSI_CFLAGS}")
   set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${NSSI_LIBS})
-  set(ADIOSREADLIB_CPPFLAGS "${ADIOSREADLIB_CPPFLAGS} ${MXML_CPPFLAGS} ${NSSI_CPPFLAGS}")
-  set(ADIOSREADLIB_CFLAGS "${ADIOSREADLIB_CFLAGS} ${MXML_CPPFLAGS} ${NSSI_CFLAGS}")
-  set(ADIOSREADLIB_LDADD ${ADIOSREADLIB_LDADD} ${MXML_LIBS} ${NSSI_LIBS})
-  set(ADIOSREADLIB_SEQ_CPPFLAGS "${ADIOSREADLIB_SEQ_CPPFLAGS} ${MXML_CPPFLAGS} ${NSSI_CPPFLAGS}")
-  set(ADIOSREADLIB_SEQ_CFLAGS "${ADIOSREADLIB_SEQ_CFLAGS} ${MXML_CPPFLAGS} ${NSSI_CFLAGS}")
-  set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${MXML_LIBS} ${NSSI_LIBS})
+  set(ADIOSREADLIB_CPPFLAGS "${ADIOSREADLIB_CPPFLAGS} ${NSSI_CPPFLAGS}")
+  set(ADIOSREADLIB_CFLAGS "${ADIOSREADLIB_CFLAGS} ${NSSI_CFLAGS}")
+  set(ADIOSREADLIB_LDADD ${ADIOSREADLIB_LDADD} ${NSSI_LIBS})
+  set(ADIOSREADLIB_SEQ_CPPFLAGS "${ADIOSREADLIB_SEQ_CPPFLAGS} ${NSSI_CPPFLAGS}")
+  set(ADIOSREADLIB_SEQ_CFLAGS "${ADIOSREADLIB_SEQ_CFLAGS} ${NSSI_CFLAGS}")
+  set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${NSSI_LIBS})
 endif()
 
 if(HAVE_NC4PAR)
@@ -1725,23 +1718,6 @@ if(HAVE_ALACRITY)
   set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${ALACRITY_LIBS})
 endif()
 
-if(HAVE_RIDCOMPRESS)
-  set(ADIOSLIB_CPPFLAGS "${ADIOSLIB_CPPFLAGS}-DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}")
-  set(ADIOSLIB_CFLAGS "${ADIOSLIB_CFLAGS} ${RIDCOMPRESS_CFLAGS}")
-  set(ADIOSLIB_LDADD ${ADIOSLIB_LDADD} ${RIDCOMPRESS_LIBS})
-  set(ADIOSLIB_SEQ_CPPFLAGS "${ADIOSLIB_SEQ_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}")
-  set(ADIOSLIB_SEQ_CFLAGS "${ADIOSLIB_SEQ_CFLAGS} ${RIDCOMPRESS_CFLAGS}")
-  set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${RIDCOMPRESS_LIBS})
-  set(ADIOSLIB_INT_CPPFLAGS "${ADIOSLIB_INT_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}")
-  set(ADIOSLIB_INT_CFLAGS "${ADIOSLIB_INT_CFLAGS} ${RIDCOMPRESS_CFLAGS}")
-  set(ADIOSLIB_INT_LDADD ${ADIOSLIB_INT_LDADD} ${RIDCOMPRESS_LIBS})
-  set(ADIOSREADLIB_CPPFLAGS "${ADIOSREADLIB_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}")
-  set(ADIOSREADLIB_CFLAGS "${ADIOSREADLIB_CFLAGS} ${RIDCOMPRESS_CFLAGS}")
-  set(ADIOSREADLIB_LDADD ${ADIOSREADLIB_LDADD} ${RIDCOMPRESS_LIBS})
-  set(ADIOSREADLIB_SEQ_CPPFLAGS "${ADIOSREADLIB_SEQ_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}")
-  set(ADIOSREADLIB_SEQ_CFLAGS "${ADIOSREADLIB_SEQ_CFLAGS} ${RIDCOMPRESS_CFLAGS}")
-  set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${RIDCOMPRESS_LIBS})
-endif()
 
 if(HAVE_FASTBIT)
   set(ADIOSLIB_CPPFLAGS "${ADIOSLIB_CPPFLAGS} -DFASTBIT ${FASTBIT_CPPFLAGS}")
@@ -1761,23 +1737,6 @@ if(HAVE_FASTBIT)
   set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${FASTBIT_LIBS})
 endif()
 
-if(HAVE_NCSU_TIMER)
-  set(ADIOSLIB_CPPFLAGS "${ADIOSLIB_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}")
-  set(ADIOSLIB_CFLAGS "${ADIOSLIB_CFLAGS} ${TIMER_CFLAGS}")
-  set(ADIOSLIB_LDADD ${ADIOSLIB_LDADD} ${TIMER_LIBS})
-  set(ADIOSLIB_SEQ_CPPFLAGS "${ADIOSLIB_SEQ_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}")
-  set(ADIOSLIB_SEQ_CFLAGS "${ADIOSLIB_SEQ_CFLAGS} ${TIMER_CFLAGS}")
-  set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${TIMER_LIBS})
-  set(ADIOSLIB_INT_CPPFLAGS "${ADIOSLIB_INT_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}")
-  set(ADIOSLIB_INT_CFLAGS "${ADIOSLIB_INT_CFLAGS} ${TIMER_CFLAGS}")
-  set(ADIOSLIB_INT_LDADD ${ADIOSLIB_INT_LDADD} ${TIMER_LIBS})
-  set(ADIOSREADLIB_CPPFLAGS "${ADIOSREADLIB_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}")
-  set(ADIOSREADLIB_CFLAGS "${ADIOSREADLIB_CFLAGS} ${TIMER_CFLAGS}")
-  set(ADIOSREADLIB_LDADD ${ADIOSREADLIB_LDADD} ${TIMER_LIBS})
-  set(ADIOSREADLIB_SEQ_CPPFLAGS "${ADIOSREADLIB_SEQ_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}")
-  set(ADIOSREADLIB_SEQ_CFLAGS "${ADIOSREADLIB_SEQ_CFLAGS} ${TIMER_CFLAGS}")
-  set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${TIMER_LIBS})
-endif()
 
 set(ADIOSLIB_LDADD ${ADIOSLIB_LDADD} ${M_LIBS})
 set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${M_LIBS})
@@ -1797,8 +1756,6 @@ set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${M_LIBS})
 
 #add_definitions(-DO_LARGEFILE=0)
 
-add_subdirectory(src)
-
 get_property(_LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES)
 message(STATUS "${_LANGUAGES_}")
 
@@ -1814,13 +1771,23 @@ string(REGEX REPLACE ";" " " ADIOSLIB_INT_LDADD_M "${ADIOSLIB_INT_LDADD}")
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/adios_config.flags.cmake ${CMAKE_CURRENT_BINARY_DIR}/adios_config.flags @ONLY)
 #####################end of processing adios_config.flags.in #####################
 #####################start processing adios_config.flags.in #####################
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/adios_config.in ${CMAKE_CURRENT_BINARY_DIR}/adios_config @ONLY)
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/adios_config.makesrc.in ${CMAKE_CURRENT_BINARY_DIR}/adios_config @ONLY)
 #####################end of processing adios_config.flags.in #####################
 install(FILES ${CMAKE_BINARY_DIR}/adios_config.flags DESTINATION ${sysconfdir})
 install(PROGRAMS ${CMAKE_BINARY_DIR}/adios_config DESTINATION ${bindir})
 install(FILES ${PROJECT_SOURCE_DIR}/scripts/FindADIOS.cmake DESTINATION ${sysconfdir}) 
 #install(FILES ${PROJECT_SOURCE_DIR}/adios_git_status DESTINATION ${sysconfdir})
 
+
+################ Add EXTRA_LIBS to LIBS now, e.g. internal mxml library not needed for linking ###########
+
+if (NOT BUILD_MXML)
+  set(ADIOSLIB_LDADD     ${ADIOSLIB_LDADD}     ${MXML_LIBS})
+  set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${MXML_LIBS})
+  set(ADIOSLIB_INT_LDADD ${ADIOSLIB_INT_LDADD} ${MXML_LIBS})
+endif()
+
+add_subdirectory(src)
 add_subdirectory(utils)
 add_subdirectory(tests)
 add_subdirectory(examples)
@@ -1850,7 +1817,8 @@ message("      - CFLAGS   = ${CFLAGS}")
 message("      - CXXFLAGS = ${CXXFLAGS}")
 message("      - FCFLAGS  = ${FCFLAGS}")
 message("      - LIBS     = ${LIBS}")
-message("      - MPILIBS = ${MPILIBS}")
+message("      - MPILIBS  = ${MPILIBS}")
+message("")
 
 if(ADIOS_TIMERS)
  message("  - ADIOS Timers Enabled")
@@ -1864,16 +1832,18 @@ else()
   message("  - ADIOS Timer Events Disabled")
 endif()
 
-if(HAVE_MXML)
-  message("  - MXML")
-  message("      - MXML_CFLAGS = ${MXML_CFLAGS}")
-  message("      - MXML_CPPFLAGS = ${MXML_CPPFLAGS}")
-  message("      - MXML_LIBS = ${MXML_LIBS}")
-  message("")
-else()
-  message("")
-  message("  - No MXML")
-endif()
+if(BUILD_MXML)
+  message("  - MXML -- Build with ADIOS")
+else(BUILD_MXML)
+  if(HAVE_MXML)
+    message("  - MXML")
+    message("      - MXML INCLUDE DIR = ${MXML_INCLUDE_DIR}")
+    message("      - MXML_LIBS = ${MXML_LIBS}")
+    message("")
+  else(HAVE_MXML)
+    message("  - No MXML")
+  endif(HAVE_MXML)
+endif(BUILD_MXML)
 
 if(HAVE_LUSTRE)
   message("  - LUSTRE")
@@ -1883,7 +1853,6 @@ if(HAVE_LUSTRE)
   message("")
 else()
   message("  - No LUSTRE")
-  message("")
 endif()
 
 if(HAVE_FGR)
@@ -1891,10 +1860,8 @@ if(HAVE_FGR)
     message("      - FGR_CFLAGS = ${FGR_CFLAGS}")
     message("      - FGR_CPPFLAGS = ${FGR_CPPFLAGS}")
     message("      - FGR_LIBS = ${FGR_LIBS}")
-    message("")
 else()
   message("  - No FGR")
-  message("")
 endif()
 
 if(HAVE_GLIB)
@@ -1902,10 +1869,8 @@ if(HAVE_GLIB)
   message("      - GLIB_CFLAGS = ${GLIB_CFLAGS}")
   message("      - GLIB_CPPFLAGS = ${GLIB_CPPFLAGS}")
   message("      - GLIB_LIBS = ${GLIB_LIBS}")
-  message("")
 else()
   message("  - No GLIB")
-  message("")
 endif()
 
 message("  - Networking library for staging methods:")
@@ -1949,7 +1914,6 @@ if(HAVE_DATASPACES)
   message("")
 else()
   message("  - No DATASPACES to build DATASPACES transport method")
-  message("")
 endif()
 
 if(HAVE_DIMES)
@@ -1960,7 +1924,6 @@ if(HAVE_DIMES)
   message("")
 else()
   message("  - No DIMES to build DIMES transport method")
-  message("")
 endif()
 
 if(HAVE_PHDF5)
@@ -1971,7 +1934,6 @@ if(HAVE_PHDF5)
   message("")
 else()
   message("  - No PHDF5 to build PHDF5 transport method")
-  message("")
 endif()
 
 if(HAVE_HDF5)
@@ -1982,7 +1944,6 @@ if(HAVE_HDF5)
   message("")
 else()
   message("  - No HDF5")
-  message("")
 endif()
 
 if(HAVE_NC4PAR)
@@ -1993,7 +1954,6 @@ if(HAVE_NC4PAR)
   message("")
 else()
   message("  - No NETCDF 4 Parallel to build NC4 transport method")
-  message("")
 endif()
 
 if(HAVE_NETCDF)
@@ -2003,8 +1963,7 @@ if(HAVE_NETCDF)
   message("      - NETCDF_LIBS = ${NETCDF_LIBS}")
   message("")
 else()
-  message("  - No NSSI to build NSSI transport method")
-  message("")
+  message("  - No NetCDF")
 endif()
 
 if(HAVE_FLEXPATH)
@@ -2082,6 +2041,7 @@ if(HAVE_FASTBIT)
   message("      - FASTBIT_CFLAGS = ${FASTBIT_CFLAGS}")
   message("      - FASTBIT_CPPFLAGS = ${FASTBIT_CPPFLAGS}")
   message("      - FASTBIT_LIBS = ${FASTBIT_LIBS}")
+  message("")
 else()
   message("  - No FASTBIT to build FASTBIT query method")
 endif()
@@ -2096,25 +2056,6 @@ else()
   message("  - No ALACRITY to build ALACRITY transform & query method")
 endif()
 
-if(HAVE_RIDCOMPRESS)
-  message("  - RIDCOMPRESS")
-  message("      - RIDCOMPRESS_CFLAGS = $RIDCOMPRESS_CFLAGS")
-  message("      - RIDCOMPRESS_CPPFLAGS = $RIDCOMPRESS_CPPFLAGS")
-  message("      - RIDCOMPRESS_LIBS = $RIDCOMPRESS_LIBS")
-else()
-  message("  - No RIDCOMPRESS to build RIDCOMPRESS transform method")
-endif()
-
-if(HAVE_NCSU_TIMER)
-  message("  - NCSU timer lib")
-  message("      - TIMER_CFLAGS = ${TIMER_CFLAGS}")
-  message("      - TIMER_CPPFLAGS = ${TIMER_CPPFLAGS}")
-  message("      - TIMER_LIBS = ${TIMER_LIBS}")
-message("")
-else()
-  message("  - No NCSU timer lib")
-endif()
-
 if(HAVE_BGQ)
   message("  - BGQ METHOD is enabled")
 else()
@@ -2123,3 +2064,4 @@ endif()
 
 message("")
 message("  - Install path = ${prefix}")
+message("")
diff --git a/COPYING b/COPYING
index 69bb532..a827741 100644
--- a/COPYING
+++ b/COPYING
@@ -23,3 +23,12 @@ Additional BSD Notice
 
 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 UT-BATTELLE, LLC. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or UT-BATTELLE, LLC, and shall not be used for advertising or product endorsement purposes.
 
+
+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
+   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.
+
diff --git a/Makefile.am b/Makefile.am
index 8d17845..959abb1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,15 +1,21 @@
 ACLOCAL_AMFLAGS=-I config
 
-SUBDIRS=src utils tests examples
+SUBDIRS = src utils tests 
+if HAVE_MPI
+    SUBDIRS += examples
+endif
 
 EXTRA_DIST = runconf \
+	     README.md \
              KNOWN_BUGS \
-             adios_config.in \
+             adios_config.makesrc.in \
+             adios_config.flags.makesrc.in \
              adios_config.flags.cmake \
              scripts/create.nssi.config.sh \
              scripts/kill.nssi.staging.sh \
              scripts/start.nssi.staging.sh \
-	     scripts/FindADIOS.cmake
+	         scripts/FindADIOS.cmake \
+             src/mxml/cmake_try_longlong.c
 
 #             wrappers/matlab/Makefile \
 #             wrappers/matlab/adios.m \
@@ -39,20 +45,53 @@ sysconf_DATA = scripts/FindADIOS.cmake
 #	    echo "Error: svnversion command not found"; \
 #	fi 
 #	cp adios_config.flags $(DESTDIR)$(bindir)
+
         
 install-data-hook:
-	echo "SRCDIR=\"$(PWD)\"" >> adios_config.flags; \
-	if git rev-parse --git-dir &>/dev/null; then \
-	    echo "GITLOG=\"`git log -n 1 --format=\"Last commit on %ad hash %h\"`\"" > adios_git_status; \
-	    echo "read -d '' GITSTAT <<'_EOF_'" >> adios_git_status; \
-	    git status -uno >> adios_git_status; \
-	    echo "_EOF_" >> adios_git_status; \
+	(cd $(top_srcdir); \
+	if git rev-parse &>/dev/null; then \
+	    echo "GITLOG=\"`git log -n 1 --format=\"Last commit on %ad hash %h\"`\"" > $(abs_top_builddir)/adios_git_status; \
+	    echo "read -d '' GITSTAT <<'_EOF_'" >> $(abs_top_builddir)/adios_git_status; \
+	    git status -uno >> $(abs_top_builddir)/adios_git_status; \
+	    echo "_EOF_" >> $(abs_top_builddir)/adios_git_status; \
 	else \
-	    echo "GITLOG=\"git log not available\"" >> adios_git_status; \
-	    echo "GITSTAT=\"git status not available\"" >> adios_git_status; \
+	    echo "GITLOG=\"git log not available\"" >> $(abs_top_builddir)/adios_git_status; \
+	    echo "GITSTAT=\"git status not available\"" >> $(abs_top_builddir)/adios_git_status; \
 	    echo "Note: git command not found or $(PWD) is not a git repository."; \
-	fi 
+	fi) 
 	$(INSTALL_DATA) adios_config.flags $(DESTDIR)$(sysconfdir)
 	$(INSTALL_DATA) adios_git_status $(DESTDIR)$(sysconfdir)
-        
-CLEANFILES = 
+ 
+CLEANFILES = adios_config adios_config.flags adios_config.makesrc adios_config.flags.makesrc
+
+#
+# Extra targets to generate adios_config and adios_config.flags
+#
+edit = sed \
+	-e 's|%libdir[%]|$(libdir)|g' \
+	-e 's|%includedir[%]|$(includedir)|g' \
+	-e 's|%sysconfdir[%]|$(sysconfdir)|g' \
+	-e 's|%prefix[%]|$(prefix)|g' \
+	-e 's|%VERSION[%]|$(VERSION)|g' \
+	-e 's|%srcdir[%]|$(abs_top_srcdir)|g' \
+	-e 's|%builddir[%]|$(abs_top_builddir)|g'
+     
+adios_config adios_config.flags: Makefile
+	rm -f $@ $@.tmp
+	test -f ./$@.makesrc; \
+	$(edit) $@.makesrc >$@.tmp
+	
+	chmod +x $@.tmp
+	chmod a-w $@.tmp
+	mv $@.tmp $@
+
+adios_config: adios_config.makesrc adios_config.flags
+adios_config.flags: adios_config.flags.makesrc
+
+README: README.md
+	cat $< > $@
+
+dist-hook:
+	rm -f README
+	rm -f $(distdir)/README
+
diff --git a/Makefile.in b/Makefile.in
index faf39c7..38e526b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -17,6 +16,51 @@
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,20 +79,27 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
- at HAVE_NSSI_TRUE@am__append_1 = scripts/create.nssi.config.sh \
+ at HAVE_MPI_TRUE@am__append_1 = examples
+ at HAVE_NSSI_TRUE@am__append_2 = scripts/create.nssi.config.sh \
 @HAVE_NSSI_TRUE@                   scripts/kill.nssi.staging.sh  \
 @HAVE_NSSI_TRUE@                   scripts/start.nssi.staging.sh
 
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/adios_config.flags.in \
-	$(srcdir)/adios_config.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure \
-	$(top_srcdir)/src/public/adios_version.h.in \
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
+	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/configure $(am__configure_deps) \
+	$(srcdir)/config.h.in \
 	$(top_srcdir)/utils/skel/lib/skel_have_adios_timing.py.in \
-	AUTHORS COPYING ChangeLog INSTALL NEWS TODO config/compile \
-	config/config.guess config/config.sub config/depcomp \
-	config/install-sh config/ltmain.sh config/missing
+	$(srcdir)/adios_config.flags.makesrc.in \
+	$(srcdir)/adios_config.makesrc.in \
+	$(top_srcdir)/src/public/adios_version.h.in COPYING TODO \
+	config/compile config/config.guess config/config.sub \
+	config/depcomp config/install-sh config/missing \
+	config/ltmain.sh $(top_srcdir)/config/compile \
+	$(top_srcdir)/config/config.guess \
+	$(top_srcdir)/config/config.sub \
+	$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
+	$(top_srcdir)/config/missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -71,14 +122,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -95,7 +144,8 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = utils/skel/lib/skel_have_adios_timing.py \
-	adios_config adios_config.flags src/public/adios_version.h
+	adios_config.flags.makesrc adios_config.makesrc \
+	src/public/adios_version.h
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -118,33 +168,82 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sysconfdir)"
 SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(sysconf_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
+CSCOPE = cscope
+DIST_SUBDIRS = src utils tests examples
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -172,12 +271,16 @@ am__relativize = \
   reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -202,6 +305,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -210,6 +314,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -242,6 +348,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -295,17 +402,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -336,6 +446,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -356,10 +467,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -368,9 +482,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -382,6 +493,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -416,14 +528,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -433,15 +548,18 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ACLOCAL_AMFLAGS = -I config
-SUBDIRS = src utils tests examples
+SUBDIRS = src utils tests $(am__append_1)
 EXTRA_DIST = runconf \
+	     README.md \
              KNOWN_BUGS \
-             adios_config.in \
+             adios_config.makesrc.in \
+             adios_config.flags.makesrc.in \
              adios_config.flags.cmake \
              scripts/create.nssi.config.sh \
              scripts/kill.nssi.staging.sh \
              scripts/start.nssi.staging.sh \
-	     scripts/FindADIOS.cmake
+	         scripts/FindADIOS.cmake \
+             src/mxml/cmake_try_longlong.c
 
 
 #             wrappers/matlab/Makefile \
@@ -452,14 +570,27 @@ EXTRA_DIST = runconf \
 #             wrappers/matlab/adiosclosec.c \
 #             wrappers/matlab/adiosopenc.c \
 #             wrappers/matlab/adiosreadc.c 
-bin_SCRIPTS = adios_config $(am__append_1)
+bin_SCRIPTS = adios_config $(am__append_2)
 sysconf_DATA = scripts/FindADIOS.cmake
-CLEANFILES = 
+CLEANFILES = adios_config adios_config.flags adios_config.makesrc adios_config.flags.makesrc
+
+#
+# Extra targets to generate adios_config and adios_config.flags
+#
+edit = sed \
+	-e 's|%libdir[%]|$(libdir)|g' \
+	-e 's|%includedir[%]|$(includedir)|g' \
+	-e 's|%sysconfdir[%]|$(sysconfdir)|g' \
+	-e 's|%prefix[%]|$(prefix)|g' \
+	-e 's|%VERSION[%]|$(VERSION)|g' \
+	-e 's|%srcdir[%]|$(abs_top_srcdir)|g' \
+	-e 's|%builddir[%]|$(abs_top_builddir)|g'
+
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
@@ -495,10 +626,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -512,16 +641,19 @@ distclean-hdr:
 	-rm -f config.h stamp-h1
 utils/skel/lib/skel_have_adios_timing.py: $(top_builddir)/config.status $(top_srcdir)/utils/skel/lib/skel_have_adios_timing.py.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
-adios_config: $(top_builddir)/config.status $(srcdir)/adios_config.in
+adios_config.flags.makesrc: $(top_builddir)/config.status $(srcdir)/adios_config.flags.makesrc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
-adios_config.flags: $(top_builddir)/config.status $(srcdir)/adios_config.flags.in
+adios_config.makesrc: $(top_builddir)/config.status $(srcdir)/adios_config.makesrc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 src/public/adios_version.h: $(top_builddir)/config.status $(top_srcdir)/src/public/adios_version.h.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -549,9 +681,7 @@ uninstall-binSCRIPTS:
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -563,8 +693,11 @@ distclean-libtool:
 	-rm -f libtool config.lt
 install-sysconfDATA: $(sysconf_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
 	@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -578,27 +711,28 @@ uninstall-sysconfDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sysconfdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sysconfdir)" && rm -f $$files
+	dir='$(DESTDIR)$(sysconfdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -613,57 +747,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -679,12 +768,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -696,15 +780,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -713,9 +793,31 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
@@ -751,13 +853,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -777,6 +876,9 @@ distdir: $(DISTFILES)
 	      || exit 1; \
 	  fi; \
 	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
 	-test -n "$(am__skip_mode_fix)" \
 	|| find "$(distdir)" -type d ! -perm -755 \
 		-exec chmod u+rwx,go+rx {} \; -o \
@@ -786,36 +888,42 @@ distdir: $(DISTFILES)
 	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
 
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
 
 dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-zip: distdir
 	-rm -f $(distdir).zip
 	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -826,8 +934,8 @@ distcheck: dist
 	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
 	*.tar.xz*) \
 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
@@ -837,9 +945,9 @@ distcheck: dist
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
-	chmod -R a-w $(distdir); chmod u+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_inst
 	chmod a-w $(distdir)
 	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -847,6 +955,7 @@ distcheck: dist
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -870,13 +979,21 @@ distcheck: dist
 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
 	  && cd "$$am__cwd" \
 	  || exit 1
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -910,10 +1027,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -997,27 +1119,27 @@ ps-am:
 
 uninstall-am: uninstall-binSCRIPTS uninstall-sysconfDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-	ctags-recursive install-am install-data-am install-strip \
-	tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-	distcheck distclean distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-binSCRIPTS install-data \
-	install-data-am install-data-hook 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 \
-	install-sysconfDATA installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags tags-recursive uninstall uninstall-am \
-	uninstall-binSCRIPTS uninstall-sysconfDATA
+.MAKE: $(am__recursive_targets) all install-am install-data-am \
+	install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	clean-libtool cscope cscopelist-am ctags ctags-am dist \
+	dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
+	dist-tarZ dist-xz dist-zip distcheck distclean \
+	distclean-generic distclean-hdr distclean-libtool \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binSCRIPTS install-data install-data-am \
+	install-data-hook 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 install-sysconfDATA \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binSCRIPTS \
+	uninstall-sysconfDATA
 
 
 #install-data-hook:
@@ -1031,20 +1153,39 @@ uninstall-am: uninstall-binSCRIPTS uninstall-sysconfDATA
 #	cp adios_config.flags $(DESTDIR)$(bindir)
 
 install-data-hook:
-	echo "SRCDIR=\"$(PWD)\"" >> adios_config.flags; \
-	if git rev-parse --git-dir &>/dev/null; then \
-	    echo "GITLOG=\"`git log -n 1 --format=\"Last commit on %ad hash %h\"`\"" > adios_git_status; \
-	    echo "read -d '' GITSTAT <<'_EOF_'" >> adios_git_status; \
-	    git status -uno >> adios_git_status; \
-	    echo "_EOF_" >> adios_git_status; \
+	(cd $(top_srcdir); \
+	if git rev-parse &>/dev/null; then \
+	    echo "GITLOG=\"`git log -n 1 --format=\"Last commit on %ad hash %h\"`\"" > $(abs_top_builddir)/adios_git_status; \
+	    echo "read -d '' GITSTAT <<'_EOF_'" >> $(abs_top_builddir)/adios_git_status; \
+	    git status -uno >> $(abs_top_builddir)/adios_git_status; \
+	    echo "_EOF_" >> $(abs_top_builddir)/adios_git_status; \
 	else \
-	    echo "GITLOG=\"git log not available\"" >> adios_git_status; \
-	    echo "GITSTAT=\"git status not available\"" >> adios_git_status; \
+	    echo "GITLOG=\"git log not available\"" >> $(abs_top_builddir)/adios_git_status; \
+	    echo "GITSTAT=\"git status not available\"" >> $(abs_top_builddir)/adios_git_status; \
 	    echo "Note: git command not found or $(PWD) is not a git repository."; \
-	fi 
+	fi) 
 	$(INSTALL_DATA) adios_config.flags $(DESTDIR)$(sysconfdir)
 	$(INSTALL_DATA) adios_git_status $(DESTDIR)$(sysconfdir)
 
+adios_config adios_config.flags: Makefile
+	rm -f $@ $@.tmp
+	test -f ./$@.makesrc; \
+	$(edit) $@.makesrc >$@.tmp
+
+	chmod +x $@.tmp
+	chmod a-w $@.tmp
+	mv $@.tmp $@
+
+adios_config: adios_config.makesrc adios_config.flags
+adios_config.flags: adios_config.flags.makesrc
+
+README: README.md
+	cat $< > $@
+
+dist-hook:
+	rm -f README
+	rm -f $(distdir)/README
+
 # 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.
 .NOEXPORT:
diff --git a/NEWS b/NEWS
index 3543935..af13359 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,19 @@
+1.10.0 Release July 2016
+    - Fortran API for inquiring selections
+    - bprecover utility
+      - recover a BP file which has a damaged index data
+    - adios_group_size() optional now
+    - --without-mpi option in configure to build only the sequential libraries
+    - Python/Numpy wrapper improvements:
+      - Support both python 2 and python 3
+      - Read options with point and block selection 
+      - Group management on reading
+      - Support auto completion with ipython
+    - fix: bpmeta does not skip any subfiles when used with threads
+    - fix: Better xml processing to allow for multiple text lines as parameters for a method
+    - fix: Builds on OS X, both clang and gcc supported
+    - fix: support adios_inq_var_stat() in streaming mode
+
 1.9.0 Release Jul 2015
     - Array attributes are supported
       - e.g axes = {"X","Y","Z"}
diff --git a/README b/README.md
similarity index 100%
rename from README
rename to README.md
diff --git a/aclocal.m4 b/aclocal.m4
index 17bfa5a..877a246 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.14 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -11,15 +11,16 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -31,10 +32,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.14'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.14], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -50,22 +51,22 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.14])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -84,7 +85,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -110,22 +111,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -144,16 +142,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 10
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -163,7 +159,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -176,12 +172,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -189,8 +186,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -229,16 +227,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -247,16 +245,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -304,7 +302,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -314,34 +312,39 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -354,7 +357,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -366,21 +369,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -398,7 +399,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
+# is enabled.  FIXME.  This creates each '.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -408,18 +409,21 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 16
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -432,7 +436,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -461,31 +465,40 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
@@ -496,34 +509,78 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
 			     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES(CC)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
 
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -545,7 +602,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -564,16 +621,14 @@ if test x"${install_sh}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -590,20 +645,17 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_MAINTAINER_MODE([DEFAULT-MODE])
 # ----------------------------------
 # Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless `enable' is passed literally.
-# For symmetry, `disable' may be passed as well.  Anyway, the user
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
 # can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
 [m4_case(m4_default([$1], [disable]),
@@ -611,13 +663,14 @@ AC_DEFUN([AM_MAINTAINER_MODE],
        [disable], [m4_define([am_maintainer_other], [enable])],
        [m4_define([am_maintainer_other], [enable])
         m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
   AC_ARG_ENABLE([maintainer-mode],
-[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer],
-      [USE_MAINTAINER_MODE=$enableval],
-      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
   AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
@@ -625,18 +678,14 @@ AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of
 ]
 )
 
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -654,7 +703,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -679,52 +728,14 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -732,11 +743,10 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -749,63 +759,35 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
 
 # _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -816,24 +798,317 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# ---------------------------------------------------------------------------
+# Adds support for distributing Python modules and packages.  To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable.  To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+#
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+#
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+#
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
+# numbers and dots only.
+AC_DEFUN([AM_PATH_PYTHON],
+ [
+  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
+  dnl supported. (2.0 was released on October 16, 2000).
+  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
+ python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
+
+  AC_ARG_VAR([PYTHON], [the Python interpreter])
+
+  m4_if([$1],[],[
+    dnl No version check is needed.
+    # Find any Python interpreter.
+    if test -z "$PYTHON"; then
+      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
+    fi
+    am_display_PYTHON=python
+  ], [
+    dnl A version check is needed.
+    if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
+      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+			      [AC_MSG_RESULT([yes])],
+			      [AC_MSG_RESULT([no])
+			       AC_MSG_ERROR([Python interpreter is too old])])
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+	[am_cv_pathless_PYTHON],[
+	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+	  test "$am_cv_pathless_PYTHON" = none && break
+	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+	done])
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+	PYTHON=:
+      else
+        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
+  ])
+
+  if test "$PYTHON" = :; then
+  dnl Run any user-specified action, or abort.
+    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+  else
+
+  dnl Query Python for its version number.  Getting [:3] seems to be
+  dnl the best way to do this; it's what "site.py" does in the standard
+  dnl library.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+  dnl Use the values of $prefix and $exec_prefix for the corresponding
+  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
+  dnl distinct variables so they can be overridden if need be.  However,
+  dnl general consensus is that you shouldn't need this ability.
+
+  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+  dnl At times (like when building shared libraries) you may want
+  dnl to know which OS platform Python thinks this is.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
+  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+  # Just factor out some code duplication.
+  am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x.  See automake bug#10227.
+try:
+    import sysconfig
+except ImportError:
+    can_use_sysconfig = 0
+else:
+    can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+    from platform import python_implementation
+    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
+        can_use_sysconfig = 0
+except ImportError:
+    pass"
+
+  dnl Set up 4 directories:
+
+  dnl pythondir -- where to install python scripts.  This is the
+  dnl   site-packages directory, not the python standard library
+  dnl   directory like in previous automake betas.  This behavior
+  dnl   is more consistent with lispdir.m4 for example.
+  dnl Query distutils for this directory.
+  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+    [am_cv_python_pythondir],
+    [if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	  ;;
+       esac
+       ;;
+     esac
+    ])
+  AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
+  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
+  dnl   more consistent with the rest of automake.
+
+  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+  dnl pyexecdir -- directory for installing python extension modules
+  dnl   (shared libraries)
+  dnl Query distutils for this directory.
+  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+    [am_cv_python_pyexecdir],
+    [if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	   ;;
+       esac
+       ;;
+     esac
+    ])
+  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+  dnl Run any user-specified action.
+  $2
+  fi
+
+])
+
+
+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
+ [prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -844,32 +1119,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -879,9 +1162,85 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -889,34 +1248,32 @@ AC_MSG_RESULT(yes)])
 
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -924,24 +1281,22 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
 # AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -951,75 +1306,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
@@ -1045,14 +1439,12 @@ m4_include([config/ac_isobar.m4])
 m4_include([config/ac_lustre.m4])
 m4_include([config/ac_mxml.m4])
 m4_include([config/ac_nc4par.m4])
-m4_include([config/ac_ncsu_timer.m4])
 m4_include([config/ac_netcdf.m4])
 m4_include([config/ac_nssi.m4])
 m4_include([config/ac_pablo.m4])
 m4_include([config/ac_pami.m4])
 m4_include([config/ac_phdf5.m4])
 m4_include([config/ac_portals.m4])
-m4_include([config/ac_ridcompress.m4])
 m4_include([config/ac_szip.m4])
 m4_include([config/ac_zlib.m4])
 m4_include([config/acx_mpi.m4])
diff --git a/adios_config.flags.cmake b/adios_config.flags.cmake
index 37706e1..fe6ef5a 100755
--- a/adios_config.flags.cmake
+++ b/adios_config.flags.cmake
@@ -2,38 +2,42 @@
 # Configuration values from configure script
 #
 
+# Source directory
+SRCDIR="@PROJECT_SOURCE_DIR@"
+BUILDDIR="@PROJECT_BINARY_DIR@"
+
 # Install directory
 ADIOS_DIR="@prefix@"
 
 # Flags to build code using ADIOS write API (and read API)
 ADIOS_INC="-I${ADIOS_DIR}/include @ADIOSLIB_CPPFLAGS@ @ADIOSLIB_CFLAGS@"
-ADIOS_CLIB="${ADIOS_DIR}/lib/adios @ADIOSLIB_LDADD_M@ @LDFLAGS@ @LIBS@"
-ADIOS_FLIB="${ADIOS_DIR}/lib/adiosf @ADIOSLIB_LDADD_M@ @LDFLAGS@ @LIBS@"
-ADIOS_V1_FLIB="${ADIOS_DIR}/lib/adiosf_v1 @ADIOSLIB_LDADD_M@ @LIBS@"
+ADIOS_CLIB="${ADIOS_DIR}/lib/libadios.a @MXML_LIBS@ @ADIOSLIB_LDADD_M@ @LDFLAGS@ @LIBS@"
+ADIOS_FLIB="${ADIOS_DIR}/lib/libadiosf.a @MXML_LIBS@ @ADIOSLIB_LDADD_M@ @LDFLAGS@ @LIBS@"
+ADIOS_V1_FLIB="${ADIOS_DIR}/lib/libadiosf_v1.a @MXML_LIBS@ @ADIOSLIB_LDADD_M@ @LIBS@"
 
 # Flags to build code using ADIOS read API only
 ADIOSREAD_INC="-I${ADIOS_DIR}/include @ADIOSREADLIB_CPPFLAGS@ @ADIOSREADLIB_CFLAGS@"
 ADIOSREAD_V1_INC="-I${ADIOS_DIR}/include @MACRODEFFLAG at ADIOS_USE_READ_API_1 @ADIOSREADLIB_CPPFLAGS@ @ADIOSREADLIB_CFLAGS@"
-ADIOSREAD_CLIB="${ADIOS_DIR}/lib/adiosread @ADIOSREADLIB_LDADD_M@"
-ADIOSREAD_FLIB="${ADIOS_DIR}/lib/adiosreadf @ADIOSREADLIB_LDADD_M@"
-ADIOSREAD_V1_FLIB="${ADIOS_DIR}/lib/adiosreadf_v1 @ADIOSREADLIB_LDADD_M@"
+ADIOSREAD_CLIB="${ADIOS_DIR}/lib/libadiosread.a @ADIOSREADLIB_LDADD_M@"
+ADIOSREAD_FLIB="${ADIOS_DIR}/lib/libadiosreadf.a @ADIOSREADLIB_LDADD_M@"
+ADIOSREAD_V1_FLIB="${ADIOS_DIR}/lib/libadiosreadf_v1.a @ADIOSREADLIB_LDADD_M@"
 
 # Flags to build code using ADIOS read API only in a sequential code (no MPI)
 ADIOSREAD_SEQ_INC="-I${ADIOS_DIR}/include @ADIOSREADLIB_SEQ_CPPFLAGS@ @ADIOSREADLIB_SEQ_CFLAGS@"
 ADIOSREAD_SEQ_V1_INC="-I${ADIOS_DIR}/include @MACRODEFFLAG at ADIOS_USE_READ_API_1 @ADIOSREADLIB_SEQ_CPPFLAGS@ @ADIOSREADLIB_SEQ_CFLAGS@"
-ADIOSREAD_SEQ_CLIB="${ADIOS_DIR}/lib/adiosread_nompi @ADIOSREADLIB_SEQ_LDADD_M@"
-ADIOSREAD_SEQ_FLIB="${ADIOS_DIR}/lib/adiosreadf_nompi @ADIOSREADLIB_SEQ_LDADD_M@"
-ADIOSREAD_SEQ_V1_FLIB="${ADIOS_DIR}/lib/adiosreadf_nompi_v1 @ADIOSREADLIB_SEQ_LDADD_M@"
+ADIOSREAD_SEQ_CLIB="${ADIOS_DIR}/lib/libadiosread_nompi.a @ADIOSREADLIB_SEQ_LDADD_M@"
+ADIOSREAD_SEQ_FLIB="${ADIOS_DIR}/lib/libadiosreadf_nompi.a @ADIOSREADLIB_SEQ_LDADD_M@"
+ADIOSREAD_SEQ_V1_FLIB="${ADIOS_DIR}/lib/libadiosreadf_nompi_v1.a @ADIOSREADLIB_SEQ_LDADD_M@"
 
 #Flags to build code using ADIOS write API in a sequential code (no MPI)
 ADIOS_SEQ_INC="-I${ADIOS_DIR}/include @ADIOSLIB_SEQ_CPPFLAGS@ @ADIOSLIB_SEQ_CFLAGS@"
-ADIOS_SEQ_CLIB="${ADIOS_DIR}/lib/adios_nompi @ADIOSLIB_SEQ_LDADD_M@ @LIBS@"
-ADIOS_SEQ_FLIB="${ADIOS_DIR}/lib/adiosf_nompi @ADIOSLIB_SEQ_LDADD_M@ @LIBS@"
-ADIOS_SEQ_V1_FLIB="${ADIOS_DIR}/lib/adiosf_nompi_v1 @ADIOSLIB_SEQ_LDADD_M@ @LIBS@"
+ADIOS_SEQ_CLIB="${ADIOS_DIR}/lib/libadios_nompi.a @MXML_LIBS@ @ADIOSLIB_SEQ_LDADD_M@ @LIBS@"
+ADIOS_SEQ_FLIB="${ADIOS_DIR}/lib/libadiosf_nompi.a @MXML_LIBS@ @ADIOSLIB_SEQ_LDADD_M@ @LIBS@"
+ADIOS_SEQ_V1_FLIB="${ADIOS_DIR}/lib/libadiosf_nompi_v1.a @MXML_LIBS@ @ADIOSLIB_SEQ_LDADD_M@ @LIBS@"
 
 #The following flags are not used. It is only for internal utilities of ADIOS, using libadios_internal_nompi.a
 ADIOS_INT_INC="-I${ADIOS_DIR}/include @ADIOSLIB_INT_CPPFLAGS@ @ADIOSLIB_INT_CFLAGS@"
-ADIOS_INT_CLIB="${ADIOS_DIR}/lib/adios_internal_nompi @ADIOSLIB_INT_LDADD_M@ @LIBS@"
+ADIOS_INT_CLIB="${ADIOS_DIR}/lib/libadios_internal_nompi.a @MXML_LIBS@ @ADIOSLIB_INT_LDADD_M@ @LIBS@"
 
 VERSIONSTRING="@VERSION@"
 
diff --git a/adios_config.flags.in b/adios_config.flags.in
deleted file mode 100755
index a3d5f88..0000000
--- a/adios_config.flags.in
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Configuration values from configure script
-#
-
-# Install directory
-ADIOS_DIR="@prefix@"
-
-# Flags to build code using ADIOS write API (and read API)
-ADIOS_INC="-I${ADIOS_DIR}/include @ADIOSLIB_CPPFLAGS@ @ADIOSLIB_CFLAGS@"
-ADIOS_CLIB="-L${ADIOS_DIR}/lib -ladios @ADIOSLIB_LDFLAGS@ @ADIOSLIB_LDADD@ @LDFLAGS@ @LIBS@"
-ADIOS_FLIB="-L${ADIOS_DIR}/lib -ladiosf @ADIOSLIB_LDFLAGS@ @ADIOSLIB_LDADD@ @LDFLAGS@ @LIBS@"
-ADIOS_V1_FLIB="-L${ADIOS_DIR}/lib -ladiosf_v1 @ADIOSLIB_LDFLAGS@ @ADIOSLIB_LDADD@ @LDFLAGS@ @LIBS@"
-
-# Flags to build code using ADIOS read API only
-ADIOSREAD_INC="-I${ADIOS_DIR}/include @ADIOSREADLIB_CPPFLAGS@ @ADIOSREADLIB_CFLAGS@"
-ADIOSREAD_V1_INC="-I${ADIOS_DIR}/include @MACRODEFFLAG at ADIOS_USE_READ_API_1 @ADIOSREADLIB_CPPFLAGS@ @ADIOSREADLIB_CFLAGS@"
-ADIOSREAD_CLIB="-L${ADIOS_DIR}/lib -ladiosread @ADIOSREADLIB_LDFLAGS@ @ADIOSREADLIB_LDADD@"
-ADIOSREAD_FLIB="-L${ADIOS_DIR}/lib -ladiosreadf @ADIOSREADLIB_LDFLAGS@ @ADIOSREADLIB_LDADD@"
-ADIOSREAD_V1_FLIB="-L${ADIOS_DIR}/lib -ladiosreadf_v1 @ADIOSREADLIB_LDFLAGS@ @ADIOSREADLIB_LDADD@"
-
-# Flags to build code using ADIOS read API only in a sequential code (no MPI)
-ADIOSREAD_SEQ_INC="-I${ADIOS_DIR}/include @ADIOSREADLIB_SEQ_CPPFLAGS@ @ADIOSREADLIB_SEQ_CFLAGS@"
-ADIOSREAD_SEQ_V1_INC="-I${ADIOS_DIR}/include @MACRODEFFLAG at ADIOS_USE_READ_API_1 @ADIOSREADLIB_SEQ_CPPFLAGS@ @ADIOSREADLIB_SEQ_CFLAGS@"
-ADIOSREAD_SEQ_CLIB="-L${ADIOS_DIR}/lib -ladiosread_nompi @ADIOSREADLIB_SEQ_LDFLAGS@ @ADIOSREADLIB_SEQ_LDADD@"
-ADIOSREAD_SEQ_FLIB="-L${ADIOS_DIR}/lib -ladiosreadf_nompi @ADIOSREADLIB_SEQ_LDFLAGS@ @ADIOSREADLIB_SEQ_LDADD@"
-ADIOSREAD_SEQ_V1_FLIB="-L${ADIOS_DIR}/lib -ladiosreadf_nompi_v1 @ADIOSREADLIB_SEQ_LDFLAGS@ @ADIOSREADLIB_SEQ_LDADD@"
-
-#Flags to build code using ADIOS write API in a sequential code (no MPI)
-ADIOS_SEQ_INC="-I${ADIOS_DIR}/include @ADIOSLIB_SEQ_CPPFLAGS@ @ADIOSLIB_SEQ_CFLAGS@"
-ADIOS_SEQ_CLIB="-L${ADIOS_DIR}/lib -ladios_nompi @ADIOSLIB_SEQ_LDFLAGS@ @ADIOSLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
-ADIOS_SEQ_FLIB="-L${ADIOS_DIR}/lib -ladiosf_nompi @ADIOSLIB_SEQ_LDFLAGS@ @ADIOSLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
-ADIOS_SEQ_V1_FLIB="-L${ADIOS_DIR}/lib -ladiosf_nompi_v1 @ADIOSLIB_SEQ_LDFLAGS@ @ADIOSLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
-
-#The following flags are not used. It is only for internal utilities of ADIOS, using libadios_internal_nompi.a
-ADIOS_INT_INC="-I${ADIOS_DIR}/include @ADIOSLIB_INT_CPPFLAGS@ @ADIOSLIB_INT_CFLAGS@"
-ADIOS_INT_CLIB="-L${ADIOS_DIR}/lib -ladios_internal_nompi @ADIOSLIB_INT_LDFLAGS@ @ADIOSLIB_INT_LDADD@ @LDFLAGS@ @LIBS@"
-
-VERSIONSTRING="@VERSION@"
-
diff --git a/adios_config.flags.makesrc.in b/adios_config.flags.makesrc.in
new file mode 100755
index 0000000..a72416b
--- /dev/null
+++ b/adios_config.flags.makesrc.in
@@ -0,0 +1,45 @@
+#
+# Configuration values generated by configure and then make
+#
+#  strings @xxx@ are replaced by configure
+#  strings %yyy% are replaced by make
+
+# Source directory
+SRCDIR="%srcdir%"
+BUILDDIR="%builddir%"
+
+# Install directory
+ADIOS_DIR="%prefix%"
+
+# Flags to build code using ADIOS write API (and read API)
+ADIOS_INC="-I%includedir% @ADIOSLIB_CPPFLAGS@ @ADIOSLIB_CFLAGS@"
+ADIOS_CLIB="-L%libdir% -ladios @ADIOSLIB_LDFLAGS@ @ADIOSLIB_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOS_FLIB="-L%libdir% -ladiosf @ADIOSLIB_LDFLAGS@ @ADIOSLIB_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOS_V1_FLIB="-L%libdir% -ladiosf_v1 @ADIOSLIB_LDFLAGS@ @ADIOSLIB_LDADD@ @LDFLAGS@ @LIBS@"
+
+# Flags to build code using ADIOS read API only
+ADIOSREAD_INC="-I%includedir% @ADIOSREADLIB_CPPFLAGS@ @ADIOSREADLIB_CFLAGS@"
+ADIOSREAD_V1_INC="-I%includedir% @MACRODEFFLAG at ADIOS_USE_READ_API_1 @ADIOSREADLIB_CPPFLAGS@ @ADIOSREADLIB_CFLAGS@"
+ADIOSREAD_CLIB="-L%libdir% -ladiosread @ADIOSREADLIB_LDFLAGS@ @ADIOSREADLIB_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOSREAD_FLIB="-L%libdir% -ladiosreadf @ADIOSREADLIB_LDFLAGS@ @ADIOSREADLIB_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOSREAD_V1_FLIB="-L%libdir% -ladiosreadf_v1 @ADIOSREADLIB_LDFLAGS@ @ADIOSREADLIB_LDADD@ @LDFLAGS@ @LIBS@"
+
+# Flags to build code using ADIOS read API only in a sequential code (no MPI)
+ADIOSREAD_SEQ_INC="-I%includedir% @ADIOSREADLIB_SEQ_CPPFLAGS@ @ADIOSREADLIB_SEQ_CFLAGS@"
+ADIOSREAD_SEQ_V1_INC="-I%includedir% @MACRODEFFLAG at ADIOS_USE_READ_API_1 @ADIOSREADLIB_SEQ_CPPFLAGS@ @ADIOSREADLIB_SEQ_CFLAGS@"
+ADIOSREAD_SEQ_CLIB="-L%libdir% -ladiosread_nompi @ADIOSREADLIB_SEQ_LDFLAGS@ @ADIOSREADLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOSREAD_SEQ_FLIB="-L%libdir% -ladiosreadf_nompi @ADIOSREADLIB_SEQ_LDFLAGS@ @ADIOSREADLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOSREAD_SEQ_V1_FLIB="-L%libdir% -ladiosreadf_nompi_v1 @ADIOSREADLIB_SEQ_LDFLAGS@ @ADIOSREADLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
+
+#Flags to build code using ADIOS write API in a sequential code (no MPI)
+ADIOS_SEQ_INC="-I%includedir% @ADIOSLIB_SEQ_CPPFLAGS@ @ADIOSLIB_SEQ_CFLAGS@"
+ADIOS_SEQ_CLIB="-L%libdir% -ladios_nompi @ADIOSLIB_SEQ_LDFLAGS@ @ADIOSLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOS_SEQ_FLIB="-L%libdir% -ladiosf_nompi @ADIOSLIB_SEQ_LDFLAGS@ @ADIOSLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
+ADIOS_SEQ_V1_FLIB="-L%libdir% -ladiosf_nompi_v1 @ADIOSLIB_SEQ_LDFLAGS@ @ADIOSLIB_SEQ_LDADD@ @LDFLAGS@ @LIBS@"
+
+#The following flags are not used. It is only for internal utilities of ADIOS, using libadios_internal_nompi.a
+ADIOS_INT_INC="-I%includedir% @ADIOSLIB_INT_CPPFLAGS@ @ADIOSLIB_INT_CFLAGS@"
+ADIOS_INT_CLIB="-L%libdir% -ladios_internal_nompi @ADIOSLIB_INT_LDFLAGS@ @ADIOSLIB_INT_LDADD@ @LDFLAGS@ @LIBS@"
+
+VERSIONSTRING="@VERSION@"
+
diff --git a/adios_config.in b/adios_config.makesrc.in
similarity index 78%
rename from adios_config.in
rename to adios_config.makesrc.in
index 78df456..69e96da 100755
--- a/adios_config.in
+++ b/adios_config.makesrc.in
@@ -82,7 +82,9 @@ do
         v) echo "$VERSIONSTRING"; 
            exit 0;;
         i) echo "ADIOS $VERSIONSTRING"; 
-           echo "Installed from source directory: $SRCDIR"; 
+           echo "Installed from "
+           echo "  source directory: $SRCDIR"; 
+           echo "  build directory:  $BUILDDIR"; 
            if [ ! -z "$GITLOG" ]; then echo "$GITLOG"; fi 
            if [ ! -z "$GITSTAT" ]; then echo "Git status of source directory:"; echo "$GITSTAT"; fi 
            exit 0;;
@@ -100,9 +102,10 @@ if [ $NFLAGS_ASKED == 0 ]; then
     PRINT_METHODS=yes
 fi
 
-#if [ "$OPT_SEQ" == "yes" ]; then
-#    OPT_READ=yes
-#fi
+
+if [ -z "@HAVE_MPI_FALSE@" ]; then
+    OPT_SEQ=yes
+fi
 
 # Print requested values
 if [ "$PRINT_DIR" == "yes" ]; then
@@ -198,41 +201,41 @@ if [ "$PRINT_METHODS" == "yes" ]; then
     if [ "$OPT_SEQ" == "yes" ]; then
         if [ "$OPT_READ" == "yes" ]; then
             # ADIOSREAD + SEQ
-            if [ -x ${MYDIR}/list_methods_readonly_nompi ]; then
-                ${MYDIR}/list_methods_readonly_nompi
-            elif [ -x ./utils/list_methods/list_methods_readonly_nompi ]; then
-                ./utils/list_methods/list_methods_readonly_nompi
+            if [ -x ${MYDIR}/adios_list_methods_readonly_nompi ]; then
+                ${MYDIR}/adios_list_methods_readonly_nompi
+            elif [ -x ./utils/adios_list_methods/adios_list_methods_readonly_nompi ]; then
+                ./utils/adios_list_methods/adios_list_methods_readonly_nompi
             else
-                echo "ERROR: cannot find executable list_methods_readonly_nompi"
+                echo "ERROR: cannot find executable adios_list_methods_readonly_nompi"
             fi
         else
             # ADIOS + SEQ
-            if [ -x ${MYDIR}/list_methods_nompi ]; then
-                ${MYDIR}/list_methods_nompi
-            elif [ -x ./utils/list_methods/list_methods_nompi ]; then
-                ./utils/list_methods/list_methods_nompi
+            if [ -x ${MYDIR}/adios_list_methods_nompi ]; then
+                ${MYDIR}/adios_list_methods_nompi
+            elif [ -x ./utils/adios_list_methods/adios_list_methods_nompi ]; then
+                ./utils/adios_list_methods/adios_list_methods_nompi
             else
-               echo "ERROR: cannot find executable list_methods_nompi"
+               echo "ERROR: cannot find executable adios_list_methods_nompi"
             fi
         fi
     else
         if [ "$OPT_READ" == "yes" ]; then
             # ADIOSREAD
-            if [ -x ${MYDIR}/list_methods_readonly ]; then
-                ${MYDIR}/list_methods_readonly
-            elif [ -x ./utils/list_methods/list_methods_readonly ]; then
-                ./utils/list_methods/list_methods_readonly
+            if [ -x ${MYDIR}/adios_list_methods_readonly ]; then
+                ${MYDIR}/adios_list_methods_readonly
+            elif [ -x ./utils/adios_list_methods/adios_list_methods_readonly ]; then
+                ./utils/adios_list_methods/adios_list_methods_readonly
             else
-                echo "ERROR: cannot find executable list_methods_readonly"
+                echo "ERROR: cannot find executable adios_list_methods_readonly"
             fi
         else
             # ADIOS
-            if [ -x ${MYDIR}/list_methods ]; then
-                ${MYDIR}/list_methods
-            elif [ -x ./utils/list_methods/list_methods ]; then
-                ./utils/list_methods/list_methods
+            if [ -x ${MYDIR}/adios_list_methods ]; then
+                ${MYDIR}/adios_list_methods
+            elif [ -x ./utils/adios_list_methods/adios_list_methods ]; then
+                ./utils/adios_list_methods/adios_list_methods
             else
-               echo "ERROR: cannot find executable list_methods"
+               echo "ERROR: cannot find executable adios_list_methods"
             fi
         fi
     fi
diff --git a/cmake_init b/cmake_init
index 22f4ed0..5f77d1c 100755
--- a/cmake_init
+++ b/cmake_init
@@ -27,7 +27,6 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
     module unload pgi gcc intel pathscale
     module unload python
     module load PE-$TARGET
-    module load mxml
     module load python
     module load szip
     module load bzip2
@@ -44,7 +43,7 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
     export INSTALL_PREFIX="/ccs/home/jya/ADIOS/sith.$TARGET"
     export APLOD_DIR="/ccs/proj/e2e/ncsu/sith.gnu"
     export ISOBAR_DIR="/ccs/proj/e2e/ncsu/sith.gnu"
-    export ALACRITY_DIR
+    export ALACRITY_DIR="/ccs/proj/e2e/pnorbert/ALACRITY-ADIOS/synced/build.sith/build.gnu" 
     export NCSU_TIMER_DIR
     if [ "$TARGET" == "pgi" ]; then
         module load hdf5/1.8.10
@@ -66,7 +65,7 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
 
         export DATASPACES_DIR="/ccs/proj/e2e/dataspaces/sith/$TARGET"
         export FLEXPATH_DIR="/ccs/proj/e2e/chaos/sith/$TARGET"
-        export FASTBIT_DIR="/sw/redhat6/fastbit/svn/rhel6_gnu4.7.2"
+        export FASTBIT_DIR="/sw/redhat6/fastbit/svn/rhel6_gnu4.8.2"
     elif [ "$TARGET" == "gnu" ]; then
         module load hdf5/1.8.10
         export SEQ_HDF5_DIR=$HDF5_DIR
@@ -86,7 +85,7 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
 #        module unload netcdf/4.1.3_par
 #        export DATASPACES_DIR="/ccs/proj/e2e/dataspaces/sith/$TARGET"
         export FLEXPATH_DIR="/ccs/proj/e2e/chaos/sith/$TARGET"
-        export FASTBIT_DIR="/sw/redhat6/fastbit/svn/rhel6_gnu4.7.2"
+        export FASTBIT_DIR="/sw/redhat6/fastbit/svn/rhel6_gnu4.8.2"
     elif [ "$TARGET" == "intel" ]; then
         module load hdf5/1.8.10
         export SEQ_HDF5_DIR=$HDF5_DIR
@@ -132,7 +131,6 @@ elif [ `hostname | cut -c 1-4` == "lens" ]; then
     module unload PE-pathscale
     module unload pgi
     module load PE-$TARGET
-    module load mxml
     # Use both seq hdf5 (for utils) and 
     #   parallel hdf5 (for PHDF5 method)
 #    module load hdf5/1.8.6
@@ -195,7 +193,6 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         module unload netcdf
         module unload netcdf-hdf5parallel
         module unload hdf5-parallel
-        module unload mxml
         module unload PrgEnv-gnu
         module unload PrgEnv-pgi
         module unload PrgEnv-intel
@@ -207,7 +204,6 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         export CRAYPE_LINK_TYPE=static
         module load cray-mpich
         module load szip
-        module load mxml
         export CRAY_UGNI_DIR="/opt/cray/ugni/4.0-1.0401.5928.9.5.gem"
         export CRAY_PMI_DIR="/opt/cray/pmi/4.0.1-1.0000.9421.73.3.gem"
         export LUSTRE_DIR="/usr/lib64"
@@ -230,7 +226,6 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         module unload netcdf
         module unload hdf5-parallel
         module unload netcdf-hdf5parallel
-        module unload mxml
         module unload PrgEnv-gnu
         module unload PrgEnv-pgi
         module unload PrgEnv-intel
@@ -242,7 +237,6 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         export CRAYPE_LINK_TYPE=static
         module load cray-mpich
         module load cray-netcdf-hdf5parallel
-        module load mxml
         module load szip
 
         unset EXTRA_LIBS
@@ -254,15 +248,15 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         export LUSTRE_DIR=/usr/lib64
         export BZIP2_DIR=${SYSROOT_DIR}/usr
         if [ "$TARGET" == "pgi" ]; then
-            module load dataspaces/1.4.0
+            module load dataspaces/1.6.0
             export DATASPACES_LIBDIR=${DATASPACES_DIR}/lib
             export LDFLAGS="-pgcpplibs -Wl,-Bstatic" 
 #            export FLEXPATH_DIR="/ccs/proj/e2e/chaos/titan/$TAGET"
-            export EXTRA_LIBS="/opt/gcc/4.8.2/snos/lib64/libstdc++.a"
+            export EXTRA_LIBS="/opt/gcc/4.9.0/snos/lib64/libstdc++.a"
         elif [ "$TARGET" == "gnu" ]; then
             # currently dependencies are not available for > 4.7.2
             module load gcc/4.7.2
-            module load dataspaces/1.4.0
+            module load dataspaces/1.6.0
             export DATASPACES_DIR=$DATASPACES_DIR
             export FLEXPATH_DIR="/ccs/proj/e2e/chaos/titan/gnu"
 #            module load fastbit/svn
@@ -282,7 +276,7 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         export CFLAGS="-g -fPIC -O0"
         export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK -DDART_DO_VERSIONING"
         export adios_timers=ON
-        export INSTALL_PREFIX="/ccs/home/jya/ADIOS/titan.$TARGET" 
+        export INSTALL_PREFIX="/ccs/proj/e2e/pnorbert/ADIOS/titan.cmake.$TARGET" 
     fi
     
 
@@ -300,7 +294,6 @@ elif [ `hostname | cut -c 1-4` == "eos-" ]; then
       module unload netcdf
       module unload netcdf-hdf5parallel
       module unload hdf5-parallel
-      module unload mxml
       module unload PrgEnv-gnu
       module unload PrgEnv-pgi
       module unload PrgEnv-intel
@@ -310,7 +303,6 @@ elif [ `hostname | cut -c 1-4` == "eos-" ]; then
       module load cmake
       export CRAYPE_LINK_TYPE=static
       module load cray-mpich
-      module load mxml
       export BUILD_WRITE=ON
       export BUILD_FORTRAN=ON
       if [ "$TARGET" == "pgi" ]; then
@@ -328,7 +320,6 @@ elif [ `hostname | cut -c 1-4` == "eos-" ]; then
           unset LDFLAGS 
           unset EXTRA_LIBS 
       fi
-      module load mxml
       module load pmi
       export CFLAGS="-g -fPIC"
       export INSTALL_PREFIX="/ccs/home/jya/ADIOS/eos.$TARGET"
@@ -361,14 +352,13 @@ elif [ `hostname | cut -c 1-7` == "chester" ]; then
       export CRAYPE_LINK_TYPE=static
       module load cray-mpich
       module load cray-netcdf-hdf5parallel
-      module load mxml
       module load szip
       module load pmi
       module load ugni
       export PAR_HDF5_DIR=$HDF5_DIR
       export PAR_HDF5_LIBS=${HDF5_DIR}/lib/libhdf5_parallel.a
-      export PAR_NC_DIR=${NETCDF_DIR}
-      export PAR_NC_LIBS=${NETCDF_DIR}/lib/libnetcdf_parallel.a
+      #export PAR_NC_DIR=${NETCDF_DIR}
+      #export PAR_NC_LIBS=${NETCDF_DIR}/lib/libnetcdf_parallel.a
       export LUSTRE_DIR=/usr/lib64
       export BZIP2_DIR=${SYSROOT_DIR}/usr
       export CRAY_PMI_DIR=$(echo "${CRAY_PMI_POST_LINK_OPTS}" | sed 's|.*-L\([^ ]*\)/lib64.*|\1|')
@@ -406,7 +396,6 @@ elif [ "x"`hostname -f | cut -c 8-15` == "xintrepid" ]; then
     export CFLAGS=""
 #    export FC=xlf90
 #    export CC=xlc_r
-    export MXML_DIR = /home/jya/mxml
 
     
 elif [ `hostname | cut -c 1-4` == "nid0" ]; then
@@ -506,7 +495,6 @@ elif [ `hostname | cut -c 1-6` == "kraken" ]; then
     fi
 
     module load szip
-    module load mxml
     module load subversion
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK" 
     export CFLAGS="-fPIC -g -O0" 
@@ -518,23 +506,44 @@ elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ];
     # Mac #
     #######
     echo "Configure on Mac"
-    # Installed MacPorts and GCC4.4 and OpenMPI 1.4.2 ports 
-    # But should work with default mpicc and gcc, using --disable-fortran
-#    export CC=/opt/local/bin/gcc-mp-4.4
-#    export FC=/opt/local/bin/gfortran-mp-4.4
-#    export CXX=/opt/local/bin/g++-mp-4.4
-    export CC=/opt/local/bin/openmpicc
-    export FC=/opt/local/bin/openmpif90
-    export CXX=/opt/local/bin/openmpicxx
-    CFLAGS="-g -DO_LARGEFILE=0 -fno-common" 
+    # 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
+    #
+    USE_GCC5=false
+    if [ $USE_GCC5 == "true" ]; then
+        # If want to use gcc/gfortran 5.3.0
+        export OMPI_CC=/usr/local/bin/gcc-5
+        export OMPI_CXX=/usr/local/bin/g++-5
+        export OMPI_FC=/usr/local/bin/gfortran
+        export ALACRITY_DIR="/opt/alacrity/gcc5"
+        unset FASTBIT_DIR
+        echo "Configure using gcc-5"
+    else
+        # If want to use clang C/C++ and gfortran 5.3.0
+        unset OMPI_CC
+        unset OMPI_CXX
+        unset OMPI_FC
+        export FASTBIT_DIR="/opt/fastbit"
+        export ALACRITY_DIR="/opt/alacrity/clang"
+        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
+    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"
-#        --with-mxml=/opt/mxml \
-#        --with-netcdf=/opt/netcdf \
-#        --with-phdf5=/opt/hdf5 \
-#        --with-hdf5=/opt/hdf5.seq
+    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
+    unset SEQ_NC_LIBS
+    unset PAR_NC_DIR
+    unset PAR_NC_LIBS
 
 
 elif [ `hostname | cut -c 1-7` == "ubuntu" ]; then
@@ -579,7 +588,6 @@ elif [ `hostname | cut -c 1-7` == "esimmon" ]; then
     export INSTALL_PREFIX="/opt/adios/1.5.0"
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-g -fPIC"
-    export MXML_DIR=/opt/mxml
     export SEQ_HDF5_DIR=/opt/hdf5
     export SEQ_HDF5_LIBS="-L/opt/hdf5/lib -lhdf5_hl -lhdf5 -lm"
     export PAR_HDF5_DIR=/opt/phdf5
@@ -589,6 +597,23 @@ elif [ `hostname | cut -c 1-7` == "esimmon" ]; then
     export PAR_NC_DIR=/opt/nc4par
     export PAR_NC_LIBS="-L/opt/nc4par/lib -lnetcdf"
 
+elif [ `hostname | cut -c 1-9` == "PC0098504" ]; then
+
+    #######################
+    #      Linux PC       # 
+    #######################
+    echo "Configure on Linux PC."
+    export BUILD_WRITE=ON
+    export BUILD_FORTRAN=ON
+    export adios_timers=ON
+    export CC=mpicc
+    export CXX=mpicxx
+    export FC=mpif90
+    export INSTALL_PREFIX="/opt/adios/1.10"
+    export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
+    export CFLAGS="-g -O0 -fPIC -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast"
+    export LDFLAGS="-lpthread"
+
 elif [ `hostname | cut -c 1-7` == "adiosVM" ]; then
 
     #######################
@@ -601,16 +626,22 @@ elif [ `hostname | cut -c 1-7` == "adiosVM" ]; then
     export CC=mpicc
     export CXX=mpicxx
     export FC=mpif90
-    export INSTALL_PREFIX="/opt/adios/1.9"
+    export INSTALL_PREFIX="/opt/adios/1.10"
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-g -O0 -fPIC -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast"
-    export MXML_DIR=/opt/mxml/2.9
-    export SEQ_HDF5_DIR=/opt/hdf5-1.8.12
-    export SEQ_HDF5_LIBS="-L/opt/hdf5-1.8.12/lib -lhdf5_hl -lhdf5 -lm"
-    export PAR_HDF5_DIR=/opt/hdf5-1.8.12-parallel
-    export PAR_HDF5_LIBS="-L/opt/hdf5-1.8.12-parallel/lib -lhdf5_hl -lhdf5 -lm"
-    export SEQ_NC_DIR=/opt/netcdf-3.6.3
-    export SEQ_NC_LIBS="-L/opt/netcdf-3.6.3/lib -lnetcdf"
+    export BZIP2_DIR="/usr/lib"
+    export SZIP_DIR="/opt/szip"
+    export ISOBAR_DIR="/opt/isobar"
+    export FLEXPATH_DIR="/opt/chaos"
+    export DATASPACES_DIR="/opt/dataspaces"
+    export FASTBIT_DIR="/opt/fastbit"
+    export ALACRITY_DIR="/opt/alacrity"
+    export SEQ_HDF5_DIR=/opt/hdf5-1.8.17
+    export SEQ_HDF5_LIBS="-L/opt/hdf5-1.8.17/lib -lhdf5_hl -lhdf5 -lm"
+    export PAR_HDF5_DIR=/opt/hdf5-1.8.17-parallel
+    export PAR_HDF5_LIBS="-L/opt/hdf5-1.8.17-parallel/lib -lhdf5_hl -lhdf5 -lm"
+    export SEQ_NC_DIR=/opt/netcdf-4.4.0
+    export SEQ_NC_LIBS="-L/opt/netcdf-4.4.0/lib -lnetcdf"
 else
     echo "Could not determine what machine is this."
     echo "This script is for configuring adios on the authors' machines."
diff --git a/config.h.cmake b/config.h.cmake
index aa81544..9fb2cfc 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -43,6 +43,9 @@
 /* Define to 1 if you have the `clock_gettime' function. */
 #cmakedefine HAVE_CLOCK_GETTIME 1
 
+/* Define to 1 if you have the `clock_get_time' function. */
+#cmakedefine HAVE_CLOCK_GET_TIME 1
+
 /* Define if you have CRAY_PMI. */
 #cmakedefine HAVE_CRAY_PMI 1
 
@@ -250,6 +253,10 @@
 
 /*  to 1 if you have the `strncpy' function. */
 #cmakedefine HAVE_STRNCPY 1
+#cmakedefine HAVE_STRDUP 1
+#cmakedefine HAVE_SNPRINTF 1
+#cmakedefine HAVE_VSNPRINTF 1
+#cmakedefine HAVE_LONG_LONG 1
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #cmakedefine HAVE_SYS_STAT_H 1
diff --git a/config.h.in b/config.h.in
index 19ad6ba..1c33776 100644
--- a/config.h.in
+++ b/config.h.in
@@ -47,6 +47,9 @@
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
+/* Define to 1 if you have the `clock_get_time' function. */
+#undef HAVE_CLOCK_GET_TIME
+
 /* Define if you have CRAY_PMI. */
 #undef HAVE_CRAY_PMI
 
@@ -131,6 +134,9 @@
 /* Define to 1 if you have the `rt' library (-lrt). */
 #undef HAVE_LIBRT
 
+/* Have long long int, a type may be used by MXML */
+#undef HAVE_LONG_LONG
+
 /* Define if you have LUSTRE. */
 #undef HAVE_LUSTRE
 
@@ -158,9 +164,6 @@
 /* Define if you have NC4PAR. */
 #undef HAVE_NC4PAR
 
-/* Define if you have libtimer */
-#undef HAVE_NCSU_TIMER
-
 /* Define if you have NETCDF. */
 #undef HAVE_NETCDF
 
@@ -230,18 +233,21 @@
 /* Define to 1 if the system has the type `ptl_time_t'. */
 #undef HAVE_PTL_TIME_T
 
-/* Define if you have RIDCOMPRESS. */
-#undef HAVE_RIDCOMPRESS
-
 /* Define to 1 if you have the `sched_yield' function. */
 #undef HAVE_SCHED_YIELD
 
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
 /* Define to 1 if you have the `strerror' function. */
 #undef HAVE_STRERROR
 
@@ -257,6 +263,9 @@
 /* Define to 1 if you have the `strncpy' function. */
 #undef HAVE_STRNCPY
 
+/* Define to 1 if strtold exists and conforms to C99. */
+#undef HAVE_STRTOLD
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
@@ -269,31 +278,30 @@
 /* Define to 1 if you have the <szlib.h> header file. */
 #undef HAVE_SZLIB_H
 
-/* Define to 1 if you have the <timer.h> header file. */
-#undef HAVE_TIMER_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 ZLIB. */
 #undef HAVE_ZLIB
 
 /* Define to 1 if you have the <zlib.h> header file. */
 #undef HAVE_ZLIB_H
 
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
 #undef LT_OBJDIR
 
+/* MXML version string */
+#undef MXML_VERSION
+
 /* Datatap is disabled */
 #undef NO_DATATAP
 
 /* Flexpath is disabled */
 #undef NO_FLEXPATH
 
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
 /* Name of package */
 #undef PACKAGE
 
@@ -309,6 +317,9 @@
 /* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
@@ -319,8 +330,17 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
-/* Need to use MPI compiler for sequential utils */
-#undef USE_PARALLEL_COMPILER
+/* Need to use MPI compiler for sequential NetCDF utils */
+#undef USE_PARALLEL_HDF5_FOR_UTILS
 
 /* Version number of package */
 #undef VERSION
+
+/* Define if you use CYGWIN. */
+#undef __USE_LINUX_IOCTL_DEFS
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
diff --git a/config/ac_alacrity.m4 b/config/ac_alacrity.m4
index 7be64ec..e12ed51 100755
--- a/config/ac_alacrity.m4
+++ b/config/ac_alacrity.m4
@@ -24,7 +24,7 @@ AM_CONDITIONAL(HAVE_ALACRITY,true)
 AC_ARG_WITH([alacrity],
         [  --with-alacrity=DIR      Location of ALACRITY library],
         [ALACRITY_LDFLAGS="-L$withval/lib";
-         ALACRITY_LIBS="-lalacrity";
+         ALACRITY_LIBS="-lalacrity -lridcompress -lstdc++";
          ALACRITY_CPPFLAGS="-I$withval/include";],
         [with_alacrity=no])
 
diff --git a/config/ac_fastbit.m4 b/config/ac_fastbit.m4
index c8d9b43..2bfc9ac 100644
--- a/config/ac_fastbit.m4
+++ b/config/ac_fastbit.m4
@@ -13,7 +13,7 @@ dnl If the lib was specified, verify that it exists and can compile
 if test "x$with_fastbit" != xno; then
     FASTBIT_CPPFLAGS="-I$with_fastbit/include/fastbit"
     FASTBIT_LDFLAGS="-L$with_fastbit/lib"
-    FASTBIT_LIBS="-lfastbit"
+    FASTBIT_LIBS="-lfastbit -lstdc++"
 
     saveCPPFLAGS="$CPPFLAGS"
     saveLDFLAGS="$LDFLAGS"
diff --git a/config/ac_mxml.m4 b/config/ac_mxml.m4
index 7290f18..1626d00 100644
--- a/config/ac_mxml.m4
+++ b/config/ac_mxml.m4
@@ -23,9 +23,9 @@ ac_with_mxml=no
 dnl By default assume mxml is installed in system location
 AC_ARG_WITH(mxml,
         [  --with-mxml=DIR      Location of Mini-XML library],
-        [:])
+        [:],[with_mxml=no])
 
-dnl If --without-mxml was given give an error
+dnl If --without-mxml or nothing given, then return
 if test "x$with_mxml" == "xno"; then
 
     AM_CONDITIONAL(HAVE_MXML,false)
@@ -78,7 +78,7 @@ if test "x$ac_with_mxml" == "xyes"; then
     if test -z "$MXML_LIBS"; then
         MXML_LIBS="-lmxml"
     fi
-    LIBS="$LIBS ${MXML_LIBS}"
+    LIBS="${MXML_LIBS} ${LIBS}"
 
 
     AC_CHECK_HEADERS(mxml.h,
@@ -110,7 +110,7 @@ if test "x$ac_with_mxml" == "xyes"; then
             dnl Check for the Mini-XML library and headers
             AC_REQUIRE([ACX_PTHREAD])
             LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
-            LIBS="$LIBS $PTHREAD_LIBS"
+            LIBS="${MXML_LIBS} ${PTHREAD_LIBS} ${save_LIBS}"
             AC_MSG_CHECKING([if mxml code can be linked using pthreads])
             AC_TRY_LINK([#include "mxml.h"],
             [mxml_node_t * n; 
diff --git a/config/ac_nc4par.m4 b/config/ac_nc4par.m4
index 1de4b44..bddf281 100644
--- a/config/ac_nc4par.m4
+++ b/config/ac_nc4par.m4
@@ -20,6 +20,11 @@ if test "x$with_nc4par" == "xno"; then
 
    AM_CONDITIONAL(HAVE_NC4PAR,false)
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   AC_MSG_NOTICE([    skip NetCDF 4 Parallel because we don't build parallel])
+   AM_CONDITIONAL(HAVE_NC4PAR,false)
+
 else
 
     ac_use_cray_netcdf=no
diff --git a/config/ac_ncsu_timer.m4 b/config/ac_ncsu_timer.m4
deleted file mode 100644
index c313aaa..0000000
--- a/config/ac_ncsu_timer.m4
+++ /dev/null
@@ -1,61 +0,0 @@
-AC_DEFUN([AX_NCSU_LIBTIMER], [
-
-AM_CONDITIONAL(HAVE_NCSU_TIMER,false)
-
-dnl Enable the --with-timer=path configure argument
-AC_ARG_WITH(
-  [timer],
-  [AS_HELP_STRING(
-    [--with-timer=DIR],
-    [Location of the timer library]
-  ),[],
-  [with_timer=no]]dnl
-)
-
-dnl If the timer lib was specified, verify that it exists and can compile
-if test "x$with_timer" != xno -a "x$with_timer" != x; then
-    AM_CONDITIONAL(HAVE_NCSU_TIMER,true)
-
-    TIMER_CPPFLAGS="-I$with_timer/include"
-    TIMER_LDFLAGS="-L$with_timer/lib"
-    TIMER_LIBS="-ltimer -lm"
-
-    saveLIB="$LIB"
-    saveLDFLAGS="$LDFLAGS"
-    saveCPPFLAGS="$CPPFLAGS"
-    LIB="$LIB $TIMER_LIBS"
-    LDFLAGS="$LDFLAGS $TIMER_LDFLAGS"
-    CPPFLAGS="$CPPFLAGS $TIMER_CPPFLAGS"
-
-    AC_CHECK_HEADERS(
-      [timer.h],
-      [],
-      [AC_MSG_FAILURE(
-        [Cannot find timer.h from the timer lib. Make sure it has been properly installed at the path specified ($with_timer).]dnl
-      )]dnl
-    )
-
-    AC_CHECK_LIB(
-      [timer],
-      [timer_init],
-      [AC_DEFINE(
-        [HAVE_NCSU_TIMER],
-        [1],
-        [Define if you have libtimer]
-      )],
-      [AC_MSG_FAILURE(
-        [Cannot successfully link with the timer lib. Make sure it has been properly installed at the path specified ($with_timer).]dnl
-      )],
-      [-lm]dnl
-    )
-
-    LIBS="$saveLIBS"
-    LDFLAGS="$saveLDFLAGS"
-    CPPFLAGS="$saveCPPFLAGS"
-
-    AC_SUBST(TIMER_CPPFLAGS)
-    AC_SUBST(TIMER_LDFLAGS)
-    AC_SUBST(TIMER_LIBS)
-fi
-
-]) dnl End of DEFUN
diff --git a/config/ac_phdf5.m4 b/config/ac_phdf5.m4
index 6b86d69..eed103b 100644
--- a/config/ac_phdf5.m4
+++ b/config/ac_phdf5.m4
@@ -37,6 +37,11 @@ if test "x$with_phdf5" == "xno"; then
 
    AM_CONDITIONAL(HAVE_PHDF5,false)
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   AC_MSG_NOTICE([    skip Parallel HDF5 because we don't build parallel])
+   AM_CONDITIONAL(HAVE_PHDF5,false)
+
 else
 
     ac_use_cray_hdf5=no  dnl will set to yes if we will use CRAY_HDF5_DIR below
diff --git a/config/ac_ridcompress.m4 b/config/ac_ridcompress.m4
deleted file mode 100755
index d444420..0000000
--- a/config/ac_ridcompress.m4
+++ /dev/null
@@ -1,73 +0,0 @@
-#
-#
-# AC_RIDCOMPRESS
-#
-#
-#
-dnl @synopsis AC_RIDCOMPRESS
-dnl
-dnl This macro test if RIDCOMPRESS is to be used.
-dnl Use in C code:
-dnl     #ifdef RIDCOMPRESS
-dnl     #include "pfordelta-c-interface.h"
-dnl     #endif
-dnl
-dnl @version 1.0
-dnl @author David A. Boyuka II
-dnl
-AC_DEFUN([AC_RIDCOMPRESS],[
-
-AC_MSG_NOTICE([=== checking for RIDCOMPRESS ===])
-
-AM_CONDITIONAL(HAVE_RIDCOMPRESS,true)
-
-AC_ARG_WITH([ridcompress],
-        [  --with-ridcompress=DIR      Location of RIDCOMPRESS library],
-        [RIDCOMPRESS_LDFLAGS="-L$withval/ -L$withval/lib";
-         RIDCOMPRESS_LIBS="-lridcompress -lstdc++";
-         RIDCOMPRESS_CPPFLAGS="-I$withval/ -I$withval/include";],
-        [with_RIDCOMPRESS=no])
-
-if test "x$with_RIDCOMPRESS" == "xno"; then
-
-   AM_CONDITIONAL(HAVE_RIDCOMPRESS,false)
-
-else
-
-    save_CPPFLAGS="$CPPFLAGS"
-    save_LIBS="$LIBS"
-    save_LDFLAGS="$LDFLAGS"
-    LIBS="$LIBS $RIDCOMPRESS_LIBS"
-    LDFLAGS="$LDFLAGS $RIDCOMPRESS_LDFLAGS"
-    CPPFLAGS="$CPPFLAGS $RIDCOMPRESS_CPPFLAGS"
-
-    dnl if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
-    dnl        AC_CHECK_HEADERS(pfordelta-c-interface.h,
-    dnl                ,
-    dnl                [AM_CONDITIONAL(HAVE_RIDCOMPRESS,false)])
-    dnl fi
-
-    # Check for the RIDCOMPRESS library and headers
-    dnl AC_TRY_COMPILE([struct obd_uuid {char uuid[40];};int fd, num_ost;struct obd_uuid uuids[1024];],
-    dnl        [llapi_lov_get_uuids(fd, uuids, &num_ost);],
-    dnl        [RIDCOMPRESS_LIBS="-lRIDCOMPRESS"],
-    dnl        [AM_CONDITIONAL(HAVE_RIDCOMPRESS,false)])
-
-    LIBS="$save_LIBS"
-    LDFLAGS="$save_LDFLAGS"
-    CPPFLAGS="$save_CPPFLAGS"
-
-    AC_SUBST(RIDCOMPRESS_LIBS)
-    AC_SUBST(RIDCOMPRESS_LDFLAGS)
-    AC_SUBST(RIDCOMPRESS_CPPFLAGS)
-
-    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-    if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
-            ifelse([$1],,[AC_DEFINE(HAVE_RIDCOMPRESS,1,[Define if you have RIDCOMPRESS.])],[$1])
-            :
-    else
-            $2
-            :
-    fi
-fi
-])dnl AC_RIDCOMPRESS
diff --git a/config/acx_mpi.m4 b/config/acx_mpi.m4
index 191d0b8..d974834 100644
--- a/config/acx_mpi.m4
+++ b/config/acx_mpi.m4
@@ -76,112 +76,121 @@ AC_PREREQ(2.50) dnl for AC_LANG_CASE
 
 AM_CONDITIONAL(HAVE_MPI,true)
 
-AC_ARG_WITH(mpi,
-            [  --with-mpi=<location of MPI installation>],
-            [MPI_DIR=$withval])
+dnl If --without-mpi was given set HAVE_MPI to false and do nothing more
+dnl Or if nothing was given, by default we don't try to find it anymore
+if test "x$with_mpi" == "xno"; then
 
-AC_LANG_CASE([C], [
-	AC_REQUIRE([AC_PROG_CC])
-	AC_ARG_VAR(MPICC,[MPI C compiler command])
-	AC_CHECK_PROGS(MPICC, mpicc hcc mpxlc_r mpxlc mpcc cmpicc, $CC)
-	acx_mpi_save_CC="$CC"
-	CC="$MPICC"
-	AC_SUBST(MPICC)
-],
-[C++], [
-	AC_REQUIRE([AC_PROG_CXX])
-	AC_ARG_VAR(MPICXX,[MPI C++ compiler command])
-	AC_CHECK_PROGS(MPICXX, mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++, $CXX)
-	acx_mpi_save_CXX="$CXX"
-	CXX="$MPICXX"
-	AC_SUBST(MPICXX)
-],
-[Fortran 77], [
-	AC_REQUIRE([AC_PROG_F77])
-	AC_ARG_VAR(MPIF77,[MPI Fortran 77 compiler command])
-	AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf_r mpxlf mpf77 cmpifc, $F77)
-	acx_mpi_save_F77="$F77"
-	F77="$MPIF77"
-	AC_SUBST(MPIF77)
-],
-[Fortran], [
-	AC_REQUIRE([AC_PROG_FC])
-	AC_ARG_VAR(MPIFC,[MPI Fortran compiler command])
-	AC_CHECK_PROGS(MPIFC, mpif90 mpxlf95_r mpxlf90_r mpxlf95 mpxlf90 mpf90 cmpif90c, $FC)
-	acx_mpi_save_FC="$FC"
-	FC="$MPIFC"
-	AC_SUBST(MPIFC)
-])
+   AM_CONDITIONAL(HAVE_MPI,false)
 
-if test x = x"$MPILIBS"; then
-	AC_LANG_CASE([C], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
-		[C++], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
-		[Fortran 77], [AC_MSG_CHECKING([for MPI_Init])
-			AC_LINK_IFELSE([AC_LANG_PROGRAM([],[      call MPI_Init])],[MPILIBS=" "
-				AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])],
-		[Fortran], [AC_MSG_CHECKING([for MPI_Init])
-			AC_LINK_IFELSE([AC_LANG_PROGRAM([],[      call MPI_Init])],[MPILIBS=" "
-				AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])])
-fi
-AC_LANG_CASE([Fortran 77], [
-	if test x = x"$MPILIBS"; then
-		AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"])
-	fi
-	if test x = x"$MPILIBS"; then
-		AC_CHECK_LIB(fmpich, MPI_Init, [MPILIBS="-lfmpich"])
-	fi
-],
-[Fortran], [
-	if test x = x"$MPILIBS"; then
-		AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"])
-	fi
-	if test x = x"$MPILIBS"; then
-		AC_CHECK_LIB(mpichf90, MPI_Init, [MPILIBS="-lmpichf90"])
-	fi
-])
-if test x = x"$MPILIBS"; then
-	AC_CHECK_LIB(mpi, MPI_Init, [MPILIBS="-lmpi"])
-fi
-if test x = x"$MPILIBS"; then
-	AC_CHECK_LIB(mpich, MPI_Init, [MPILIBS="-lmpich"])
-fi
-
-dnl We have to use AC_TRY_COMPILE and not AC_CHECK_HEADER because the
-dnl latter uses $CPP, not $CC (which may be mpicc).
-AC_LANG_CASE([C], [if test x != x"$MPILIBS"; then
-	AC_MSG_CHECKING([for mpi.h])
-	AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
-		AC_MSG_RESULT(no)])
-fi],
-[C++], [if test x != x"$MPILIBS"; then
-	AC_MSG_CHECKING([for mpi.h])
-	AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
-		AC_MSG_RESULT(no)])
-fi],
-[Fortran 77], [if test x != x"$MPILIBS"; then
-	AC_MSG_CHECKING([for mpif.h])
-	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[      include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS=""
-		AC_MSG_RESULT(no)])
-fi],
-[Fortran], [if test x != x"$MPILIBS"; then
-	AC_MSG_CHECKING([for mpif.h])
-	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[      include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS=""
-		AC_MSG_RESULT(no)])
-fi])
-
-AC_LANG_CASE([C], [CC="$acx_mpi_save_CC"],
-	[C++], [CXX="$acx_mpi_save_CXX"],
-	[Fortran 77], [F77="$acx_mpi_save_F77"],
-	[Fortran], [FC="$acx_mpi_save_FC"])
-
-AC_SUBST(MPILIBS)
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x = x"$MPILIBS"; then
-        $2
-        :
 else
-        ifelse([$1],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$1])
-        :
+
+    AC_ARG_WITH(mpi,
+                [  --with-mpi=<location of MPI installation>],
+                [MPI_DIR=$withval])
+    
+    AC_LANG_CASE([C], [
+    	AC_REQUIRE([AC_PROG_CC])
+    	AC_ARG_VAR(MPICC,[MPI C compiler command])
+    	AC_CHECK_PROGS(MPICC, mpicc hcc mpxlc_r mpxlc mpcc cmpicc, $CC)
+    	acx_mpi_save_CC="$CC"
+    	CC="$MPICC"
+    	AC_SUBST(MPICC)
+    ],
+    [C++], [
+    	AC_REQUIRE([AC_PROG_CXX])
+    	AC_ARG_VAR(MPICXX,[MPI C++ compiler command])
+    	AC_CHECK_PROGS(MPICXX, mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++, $CXX)
+    	acx_mpi_save_CXX="$CXX"
+    	CXX="$MPICXX"
+    	AC_SUBST(MPICXX)
+    ],
+    [Fortran 77], [
+    	AC_REQUIRE([AC_PROG_F77])
+    	AC_ARG_VAR(MPIF77,[MPI Fortran 77 compiler command])
+    	AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf_r mpxlf mpf77 cmpifc, $F77)
+    	acx_mpi_save_F77="$F77"
+    	F77="$MPIF77"
+    	AC_SUBST(MPIF77)
+    ],
+    [Fortran], [
+    	AC_REQUIRE([AC_PROG_FC])
+    	AC_ARG_VAR(MPIFC,[MPI Fortran compiler command])
+    	AC_CHECK_PROGS(MPIFC, mpif90 mpxlf95_r mpxlf90_r mpxlf95 mpxlf90 mpf90 cmpif90c, $FC)
+    	acx_mpi_save_FC="$FC"
+    	FC="$MPIFC"
+    	AC_SUBST(MPIFC)
+    ])
+    
+    if test x = x"$MPILIBS"; then
+    	AC_LANG_CASE([C], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
+    		[C++], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
+    		[Fortran 77], [AC_MSG_CHECKING([for MPI_Init])
+    			AC_LINK_IFELSE([AC_LANG_PROGRAM([],[      call MPI_Init])],[MPILIBS=" "
+    				AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])],
+    		[Fortran], [AC_MSG_CHECKING([for MPI_Init])
+    			AC_LINK_IFELSE([AC_LANG_PROGRAM([],[      call MPI_Init])],[MPILIBS=" "
+    				AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])])
+    fi
+    AC_LANG_CASE([Fortran 77], [
+    	if test x = x"$MPILIBS"; then
+    		AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"])
+    	fi
+    	if test x = x"$MPILIBS"; then
+    		AC_CHECK_LIB(fmpich, MPI_Init, [MPILIBS="-lfmpich"])
+    	fi
+    ],
+    [Fortran], [
+    	if test x = x"$MPILIBS"; then
+    		AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"])
+    	fi
+    	if test x = x"$MPILIBS"; then
+    		AC_CHECK_LIB(mpichf90, MPI_Init, [MPILIBS="-lmpichf90"])
+    	fi
+    ])
+    if test x = x"$MPILIBS"; then
+    	AC_CHECK_LIB(mpi, MPI_Init, [MPILIBS="-lmpi"])
+    fi
+    if test x = x"$MPILIBS"; then
+    	AC_CHECK_LIB(mpich, MPI_Init, [MPILIBS="-lmpich"])
+    fi
+    
+    dnl We have to use AC_TRY_COMPILE and not AC_CHECK_HEADER because the
+    dnl latter uses $CPP, not $CC (which may be mpicc).
+    AC_LANG_CASE([C], [if test x != x"$MPILIBS"; then
+    	AC_MSG_CHECKING([for mpi.h])
+    	AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
+    		AC_MSG_RESULT(no)])
+    fi],
+    [C++], [if test x != x"$MPILIBS"; then
+    	AC_MSG_CHECKING([for mpi.h])
+    	AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
+    		AC_MSG_RESULT(no)])
+    fi],
+    [Fortran 77], [if test x != x"$MPILIBS"; then
+    	AC_MSG_CHECKING([for mpif.h])
+    	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[      include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS=""
+    		AC_MSG_RESULT(no)])
+    fi],
+    [Fortran], [if test x != x"$MPILIBS"; then
+    	AC_MSG_CHECKING([for mpif.h])
+    	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[      include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS=""
+    		AC_MSG_RESULT(no)])
+    fi])
+    
+    AC_LANG_CASE([C], [CC="$acx_mpi_save_CC"],
+    	[C++], [CXX="$acx_mpi_save_CXX"],
+    	[Fortran 77], [F77="$acx_mpi_save_F77"],
+    	[Fortran], [FC="$acx_mpi_save_FC"])
+    
+    AC_SUBST(MPILIBS)
+    
+    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+    if test x = x"$MPILIBS"; then
+            $2
+            :
+    else
+            ifelse([$1],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$1])
+            :
+    fi
 fi
 ])dnl ACX_MPI
diff --git a/config/compile b/config/compile
index c0096a7..a85b723 100755
--- a/config/compile
+++ b/config/compile
@@ -1,10 +1,9 @@
 #! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2009-10-06.20; # UTC
+scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey at cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -29,21 +28,224 @@ scriptversion=2009-10-06.20; # UTC
 # bugs to <bug-automake at gnu.org> or send patches to
 # <automake-patches at gnu.org>.
 
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
     cat <<\EOF
 Usage: compile [--help] [--version] PROGRAM [ARGS]
 
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
 arguments, and rename the output as expected.
 
 If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
 
 Report bugs to <bug-automake at gnu.org>.
 EOF
@@ -53,11 +255,13 @@ EOF
     echo "compile $scriptversion"
     exit $?
     ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
 esac
 
 ofile=
 cfile=
-eat=
 
 for arg
 do
@@ -66,8 +270,8 @@ do
   else
     case $1 in
       -o)
-	# configure might choose to run compile as `compile cc -o foo foo.c'.
-	# So we strip `-o arg' only if arg is an object.
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
 	eat=1
 	case $2 in
 	  *.o | *.obj)
@@ -94,10 +298,10 @@ do
 done
 
 if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
+  # If no '-o' option was seen then we might have been invoked from a
   # pattern rule where we don't need one.  That is ok -- this is a
   # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
+  # '.c' file was seen then we are probably linking.  That is also
   # ok.
   exec "$@"
 fi
@@ -106,7 +310,7 @@ fi
 cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
 
 # Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
 lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
diff --git a/config/depcomp b/config/depcomp
index df8eea7..fc98710 100755
--- a/config/depcomp
+++ b/config/depcomp
@@ -1,10 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,9 +27,9 @@ scriptversion=2009-04-28.21; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -40,11 +39,11 @@ as side-effects.
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake at gnu.org>.
@@ -57,6 +56,66 @@ EOF
     ;;
 esac
 
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -69,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
 
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -80,18 +142,32 @@ if test "$depmode" = hp; then
 fi
 
 if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
-   depmode=msvisualcpp
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
 fi
 
 case "$depmode" in
@@ -114,8 +190,7 @@ gcc3)
   done
   "$@"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -123,13 +198,17 @@ gcc3)
   ;;
 
 gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -137,31 +216,31 @@ gcc)
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
+## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -179,8 +258,7 @@ sgi)
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -188,43 +266,41 @@ sgi)
 
   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     echo "$object : \\" > "$depfile"
-
     # Clip off the initial element (the dependent).  Don't try to be
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
+    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
-
     # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
   else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile"
   ;;
 
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -237,9 +313,7 @@ aix)
     "$@" -M
   fi
   stat=$?
-
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -248,44 +322,100 @@ aix)
   do
     test -f "$tmpdepfile" && break
   done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
   fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
+  # and will wrap long lines using '\' :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
 
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -297,8 +427,8 @@ icc)
   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
   # Some versions of the HPUX 10.20 sed can't process this invocation
   # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -309,9 +439,8 @@ hp2)
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from  "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -322,8 +451,7 @@ hp2)
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -333,77 +461,107 @@ hp2)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
     sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
   else
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
 
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
@@ -422,7 +580,7 @@ dashmstdout)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,18 +600,18 @@ dashmstdout)
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
+  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -503,12 +661,15 @@ makedepend)
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -525,7 +686,7 @@ cpp)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -544,10 +705,10 @@ cpp)
     esac
   done
 
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -579,23 +740,23 @@ msvisualcpp)
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
+        set fnord "$@"
+        shift
+        shift
+        ;;
     *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
     esac
   done
   "$@" -E 2>/dev/null |
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
diff --git a/config/libtool.m4 b/config/libtool.m4
index 671cde1..a3bc337 100644
--- a/config/libtool.m4
+++ b/config/libtool.m4
@@ -1,7 +1,6 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -9,35 +8,30 @@
 # modifications, as long as this notice is preserved.
 
 m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
 #
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
 #
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ])
 
-# serial 56 LT_INIT
+# serial 58 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -65,7 +59,8 @@ esac
 # LT_INIT([OPTIONS])
 # ------------------
 AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
 AC_BEFORE([$0], [LT_LANG])dnl
 AC_BEFORE([$0], [LT_OUTPUT])dnl
 AC_BEFORE([$0], [LTDL_INIT])dnl
@@ -82,11 +77,13 @@ AC_REQUIRE([LTVERSION_VERSION])dnl
 AC_REQUIRE([LTOBSOLETE_VERSION])dnl
 m4_require([_LT_PROG_LTMAIN])dnl
 
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
 dnl Parse OPTIONS
 _LT_SET_OPTIONS([$0], [$1])
 
 # This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
 
 # Always use our own libtool.
 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -106,26 +103,43 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
 dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
 
 
+# _LT_PREPARE_CC_BASENAME
+# -----------------------
+m4_defun([_LT_PREPARE_CC_BASENAME], [
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in @S|@*""; do
+      case $cc_temp in
+        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+])# _LT_PREPARE_CC_BASENAME
+
+
 # _LT_CC_BASENAME(CC)
 # -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
+# but that macro is also expanded into generated libtool script, which
+# arranges for $SED and $ECHO to be set by different means.
 m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+[m4_require([_LT_PREPARE_CC_BASENAME])dnl
+AC_REQUIRE([_LT_DECL_SED])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+func_cc_basename $1
+cc_basename=$func_cc_basename_result
 ])
 
 
 # _LT_FILEUTILS_DEFAULTS
 # ----------------------
 # It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
 m4_defun([_LT_FILEUTILS_DEFAULTS],
 [: ${CP="cp -f"}
 : ${MV="mv -f"}
@@ -138,6 +152,11 @@ m4_defun([_LT_FILEUTILS_DEFAULTS],
 m4_defun([_LT_SETUP],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -160,68 +179,54 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
 dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
 m4_require([_LT_CMD_RELOAD])dnl
 m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+m4_require([_LT_CMD_TRUNCATE])dnl
 
 _LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
 # commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 ])
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
 _LT_CHECK_OBJDIR
 
 m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
 
 case $host_os in
 aix3*)
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
+  if test set != "${COLLECT_NAMES+set}"; then
     COLLECT_NAMES=
     export COLLECT_NAMES
   fi
   ;;
 esac
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
 # Global variables:
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
 
 # Set sane defaults for various variables
 test -z "$CC" && CC=cc
@@ -250,16 +255,38 @@ _LT_CONFIG_COMMANDS
 ])# _LT_SETUP
 
 
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
 # _LT_PROG_LTMAIN
 # ---------------
-# Note that this code is called both from `configure', and `config.status'
+# Note that this code is called both from 'configure', and 'config.status'
 # now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
 # so we pass a copy along to make sure it has a sensible value anyway.
 m4_defun([_LT_PROG_LTMAIN],
 [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
 _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
 ])# _LT_PROG_LTMAIN
 
 
@@ -269,7 +296,7 @@ ltmain="$ac_aux_dir/ltmain.sh"
 
 # So that we can recreate a full libtool script including additional
 # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
+# in macros and then make a single call at the end using the 'libtool'
 # label.
 
 
@@ -404,11 +431,11 @@ m4_define([_lt_decl_all_varnames],
 
 # _LT_CONFIG_STATUS_DECLARE([VARNAME])
 # ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'.  VARNAME
 # must have a single quote delimited value for this to work.
 m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
 
 
 # _LT_CONFIG_STATUS_DECLARATIONS
@@ -418,7 +445,7 @@ m4_define([_LT_CONFIG_STATUS_DECLARE],
 # embedded single quotes properly.  In configure, this macro expands
 # each variable declared with _LT_DECL (and _LT_TAGDECL) into:
 #
-#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
 m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
 [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
     [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
@@ -429,7 +456,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
 # Output comment and list of tags supported by the script
 m4_defun([_LT_LIBTOOL_TAGS],
 [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
+available_tags='_LT_TAGS'dnl
 ])
 
 
@@ -457,7 +484,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
 # _LT_LIBTOOL_CONFIG_VARS
 # -----------------------
 # Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
 # script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
 # section) are produced by _LT_LIBTOOL_TAG_VARS.
 m4_defun([_LT_LIBTOOL_CONFIG_VARS],
@@ -483,8 +510,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
 # Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
 # variables for single and double quote escaping we saved from calls
 # to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'.  Finally, any additional code accumulated
 # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
 m4_defun([_LT_CONFIG_COMMANDS],
 [AC_PROVIDE_IFELSE([LT_OUTPUT],
@@ -517,12 +544,20 @@ LTCC='$LTCC'
 LTCFLAGS='$LTCFLAGS'
 compiler='$compiler_DEFAULT'
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
 # Quote evaled strings.
 for var in lt_decl_all_varnames([[ \
 ]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -533,9 +568,9 @@ done
 # Double-quote double-evaled strings.
 for var in lt_decl_all_varnames([[ \
 ]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -543,16 +578,38 @@ for var in lt_decl_all_varnames([[ \
     esac
 done
 
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
 _LT_OUTPUT_LIBTOOL_INIT
 ])
 
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# '#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
 
 # LT_OUTPUT
 # ---------
@@ -562,20 +619,11 @@ _LT_OUTPUT_LIBTOOL_INIT
 AC_DEFUN([LT_OUTPUT],
 [: ${CONFIG_LT=./config.lt}
 AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
 
 cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
+lt_cl_silent=false
 exec AS_MESSAGE_LOG_FD>>config.log
 {
   echo
@@ -583,7 +631,7 @@ exec AS_MESSAGE_LOG_FD>>config.log
 } >&AS_MESSAGE_LOG_FD
 
 lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
+'$as_me' creates a local libtool stub from the current configuration,
 for use in further configure time tests before the real libtool is
 generated.
 
@@ -601,11 +649,11 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
-while test $[#] != 0
+while test 0 != $[#]
 do
   case $[1] in
     --version | --v* | -V )
@@ -618,10 +666,10 @@ do
       lt_cl_silent=: ;;
 
     -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
 
     *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
   esac
   shift
 done
@@ -646,15 +694,13 @@ chmod +x "$CONFIG_LT"
 # appending to config.log, which fails on DOS, as config.log is still kept
 # open by configure.  Here we exec the FD to /dev/null, effectively closing
 # config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
-  lt_cl_success=:
-  test "$silent" = yes &&
-    lt_config_lt_args="$lt_config_lt_args --quiet"
-  exec AS_MESSAGE_LOG_FD>/dev/null
-  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-  exec AS_MESSAGE_LOG_FD>>config.log
-  $lt_cl_success || AS_EXIT(1)
-fi
+lt_cl_success=:
+test yes = "$silent" &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
 ])# LT_OUTPUT
 
 
@@ -669,27 +715,31 @@ m4_defun([_LT_CONFIG],
 _LT_CONFIG_SAVE_COMMANDS([
   m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
   m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
+    # See if we are running on zsh, and set the options that allow our
     # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
+    if test -n "${ZSH_VERSION+set}"; then
       setopt NO_GLOB_SUBST
     fi
 
-    cfgfile="${ofile}T"
+    cfgfile=${ofile}T
     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     $RM "$cfgfile"
 
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
 _LT_COPYING
 _LT_LIBTOOL_TAGS
 
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
 # ### BEGIN LIBTOOL CONFIG
 _LT_LIBTOOL_CONFIG_VARS
 _LT_LIBTOOL_TAG_VARS
@@ -697,13 +747,24 @@ _LT_LIBTOOL_TAG_VARS
 
 _LT_EOF
 
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_PREPARE_MUNGE_PATH_LIST
+_LT_PREPARE_CC_BASENAME
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -717,15 +778,10 @@ _LT_EOF
   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
   # text mode, it properly converts lines to CR/LF.  This bash problem
   # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_XSI_SHELLFNS
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
 
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
+   mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
 ],
@@ -742,7 +798,6 @@ _LT_EOF
 [m4_if([$1], [], [
     PACKAGE='$PACKAGE'
     VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
     RM='$RM'
     ofile='$ofile'], [])
 ])dnl /_LT_CONFIG_SAVE_COMMANDS
@@ -770,6 +825,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],			[_LT_LANG(C)],
   [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
   [Java],		[_LT_LANG(GCJ)],
   [Fortran 77],		[_LT_LANG(F77)],
   [Fortran],		[_LT_LANG(FC)],
@@ -791,6 +847,31 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -821,6 +902,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -831,11 +916,13 @@ AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
 AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
 AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
 AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
 dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
 dnl AC_DEFUN([AC_LIBTOOL_F77], [])
 dnl AC_DEFUN([AC_LIBTOOL_FC], [])
 dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
 
 
 # _LT_TAG_COMPILER
@@ -909,7 +996,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 
     AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
       [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
+      if test -z "$LT_MULTI_MODULE"; then
 	# By default we will add the -single_module flag. You can override
 	# by either setting the environment variable LT_MULTI_MODULE
 	# non-empty at configure time, or by adding -multi_module to the
@@ -921,7 +1008,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -929,6 +1022,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=no
@@ -938,36 +1032,64 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
       AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
 	[lt_cv_ld_exported_symbols_list=yes],
 	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
+	LDFLAGS=$save_LDFLAGS
+    ])
+
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
     ])
     case $host_os in
     rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
     darwin*) # darwin 5.x on
       # if running on 10.5 or later, the deployment target defaults
       # to the OS version, if on x86, and 10.4, the deployment
       # target defaults to 10.4. Don't you love it?
       case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
 	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]][[,.]]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
 	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
       _lt_dar_single_mod='$single_module'
     fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
     else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
     fi
-    if test "$DSYMUTIL" != ":"; then
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
       _lt_dsymutil='~$DSYMUTIL $lib || :'
     else
       _lt_dsymutil=
@@ -977,8 +1099,8 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 ])
 
 
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -987,23 +1109,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_automatic, $1)=yes
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  if test yes = "$lt_cv_ld_force_load"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
   _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
     m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+[   if test yes != "$lt_cv_apple_cc_single_mod"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     fi
 ],[])
   else
@@ -1011,234 +1139,176 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   fi
 ])
 
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
 # Links a minimal program and checks the executable
 # for the system default hardcoded library path. In most cases,
 # this is /usr/lib:/lib, but when the MPI compilers are used
 # the location of the communication and MPI libs are included too.
 # If we don't find anything, use the default library path according
 # to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
 m4_defun([_LT_SYS_MODULE_PATH_AIX],
 [m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
 ])# _LT_SYS_MODULE_PATH_AIX
 
 
 # _LT_SHELL_INIT(ARG)
 # -------------------
 m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
 
 
 # _LT_PROG_ECHO_BACKSLASH
 # -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
 m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
 else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
 fi
 
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
 
-	  if test "$prev" != 'sed 50q "[$]0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
+case $ECHO in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
 
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
 
-AC_SUBST(lt_ECHO)
-])
 _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
 ])# _LT_PROG_ECHO_BACKSLASH
 
 
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+  [Search for dependent libraries within DIR (or the compiler's sysroot
+   if not specified).])],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+   if test yes = "$GCC"; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([$with_sysroot])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and where our libraries should be installed.])])
+
 # _LT_ENABLE_LOCK
 # ---------------
 m4_defun([_LT_ENABLE_LOCK],
 [AC_ARG_ENABLE([libtool-lock],
   [AS_HELP_STRING([--disable-libtool-lock],
     [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
 
 # Some flags need to be propagated to the compiler or linker for good
 # libtool support.
 case $host in
 ia64-*-hpux*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
-	HPUX_IA64_MODE="32"
+	HPUX_IA64_MODE=32
 	;;
       *ELF-64*)
-	HPUX_IA64_MODE="64"
+	HPUX_IA64_MODE=64
 	;;
     esac
   fi
   rm -rf conftest*
   ;;
 *-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
       case `/usr/bin/file conftest.$ac_objext` in
 	*32-bit*)
 	  LD="${LD-ld} -melf32bsmip"
@@ -1267,9 +1337,46 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
@@ -1279,9 +1386,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -1300,7 +1417,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -1318,25 +1438,39 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 
 *-*-sco3.2v5*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
+  SAVE_CFLAGS=$CFLAGS
   CFLAGS="$CFLAGS -belf"
   AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
     [AC_LANG_PUSH(C)
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
      AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+  if test yes != "$lt_cv_cc_needs_belf"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
+    CFLAGS=$SAVE_CFLAGS
   fi
   ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
+*-*solaris*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=${LD-ld}_sol2
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -1350,18 +1484,51 @@ sparc*-*solaris*)
   ;;
 esac
 
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
 ])# _LT_ENABLE_LOCK
 
 
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	AC_TRY_EVAL([lt_ar_try])
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
 # _LT_CMD_OLD_ARCHIVE
 # -------------------
 m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
+[_LT_PROG_AR
 
 AC_CHECK_TOOL(STRIP, strip, :)
 test -z "$STRIP" && STRIP=:
@@ -1379,19 +1546,28 @@ old_postuninstall_cmds=
 
 if test -n "$RANLIB"; then
   case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+  bitrig* | openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 _LT_DECL([], [old_postinstall_cmds], [2])
 _LT_DECL([], [old_postuninstall_cmds], [2])
 _LT_TAGDECL([], [old_archive_cmds], [2],
     [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
 ])# _LT_CMD_OLD_ARCHIVE
 
 
@@ -1406,7 +1582,7 @@ AC_CACHE_CHECK([$1], [$2],
   [$2=no
    m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
+   lt_compiler_flag="$3"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -1416,15 +1592,15 @@ AC_CACHE_CHECK([$1], [$2],
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        $2=yes
@@ -1433,7 +1609,7 @@ AC_CACHE_CHECK([$1], [$2],
    $RM conftest*
 ])
 
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
     m4_if([$5], , :, [$5])
 else
     m4_if([$6], , :, [$6])
@@ -1455,7 +1631,7 @@ AC_DEFUN([_LT_LINKER_OPTION],
 m4_require([_LT_DECL_SED])dnl
 AC_CACHE_CHECK([$1], [$2],
   [$2=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $3"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -1464,7 +1640,7 @@ AC_CACHE_CHECK([$1], [$2],
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          $2=yes
@@ -1474,10 +1650,10 @@ AC_CACHE_CHECK([$1], [$2],
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 ])
 
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
     m4_if([$4], , :, [$4])
 else
     m4_if([$5], , :, [$5])
@@ -1498,7 +1674,7 @@ AC_DEFUN([LT_CMD_MAX_LEN],
 AC_MSG_CHECKING([the maximum length of command line arguments])
 AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   i=0
-  teststring="ABCD"
+  teststring=ABCD
 
   case $build_os in
   msdosdjgpp*)
@@ -1527,13 +1703,18 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1552,6 +1733,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1578,22 +1764,23 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
       # Make teststring a little bigger before we do anything with it.
       # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
+      for i in 1 2 3 4 5 6 7 8; do
         teststring=$teststring$teststring
       done
       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test 17 != "$i" # 1/2 MB should be enough
       do
         i=`expr $i + 1`
         teststring=$teststring$teststring
@@ -1609,7 +1796,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   esac
 ])
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
   AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
 else
   AC_MSG_RESULT(none)
@@ -1637,13 +1824,13 @@ m4_defun([_LT_HEADER_DLFCN],
 # ----------------------------------------------------------------
 m4_defun([_LT_TRY_DLOPEN_SELF],
 [m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
+if test yes = "$cross_compiling"; then :
   [$4]
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
+[#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -1684,7 +1871,13 @@ else
 #  endif
 #endif
 
-void fnord() { int i=42;}
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -1693,7 +1886,11 @@ int main ()
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
       /* dlclose (self); */
     }
   else
@@ -1702,7 +1899,7 @@ int main ()
   return status;
 }]
 _LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+  if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -1723,7 +1920,7 @@ rm -fr conftest*
 # ------------------
 AC_DEFUN([LT_SYS_DLOPEN_SELF],
 [m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
+if test yes != "$enable_dlopen"; then
   enable_dlopen=unknown
   enable_dlopen_self=unknown
   enable_dlopen_self_static=unknown
@@ -1733,44 +1930,52 @@ else
 
   case $host_os in
   beos*)
-    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen=load_add_on
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ;;
 
   mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen=LoadLibrary
     lt_cv_dlopen_libs=
     ;;
 
   cygwin*)
-    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen=dlopen
     lt_cv_dlopen_libs=
     ;;
 
   darwin*)
-  # if libdl is installed we need to link against it
+    # if libdl is installed we need to link against it
     AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+    lt_cv_dlopen=dyld
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ])
     ;;
 
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
   *)
     AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
+	  [lt_cv_dlopen=shl_load],
       [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	    [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
 	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
+	      [lt_cv_dlopen=dlopen],
 	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
 	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+		  [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
 	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+		    [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
 	      ])
 	    ])
 	  ])
@@ -1779,21 +1984,21 @@ else
     ;;
   esac
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
+  if test no = "$lt_cv_dlopen"; then
     enable_dlopen=no
+  else
+    enable_dlopen=yes
   fi
 
   case $lt_cv_dlopen in
   dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-    save_LDFLAGS="$LDFLAGS"
+    save_LDFLAGS=$LDFLAGS
     wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-    save_LIBS="$LIBS"
+    save_LIBS=$LIBS
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     AC_CACHE_CHECK([whether a program can dlopen itself],
@@ -1803,7 +2008,7 @@ else
 	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
     ])
 
-    if test "x$lt_cv_dlopen_self" = xyes; then
+    if test yes = "$lt_cv_dlopen_self"; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
 	  lt_cv_dlopen_self_static, [dnl
@@ -1813,9 +2018,9 @@ else
       ])
     fi
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
     ;;
   esac
 
@@ -1869,16 +2074,16 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
@@ -1907,8 +2112,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS],
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 _LT_COMPILER_C_O([$1])
 
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
   AC_MSG_CHECKING([if we can lock with hard links])
   hard_links=yes
@@ -1918,8 +2123,8 @@ if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" !=
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+  if test no = "$hard_links"; then
+    AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
     need_locks=warn
   fi
 else
@@ -1946,8 +2151,8 @@ objdir=$lt_cv_objdir
 _LT_DECL([], [objdir], [0],
          [The name of the directory that contains temporary libtool files])dnl
 m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+  [Define to the sub-directory where libtool stores uninstalled libraries.])
 ])# _LT_CHECK_OBJDIR
 
 
@@ -1959,15 +2164,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
 _LT_TAGVAR(hardcode_action, $1)=
 if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
    test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+   test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
 
   # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+  if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+     test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
     # Linking always hardcodes the temporary library directory.
     _LT_TAGVAR(hardcode_action, $1)=relink
   else
@@ -1981,12 +2186,12 @@ else
 fi
 AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
 
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+   test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -2010,7 +2215,7 @@ else
 # FIXME - insert some real tests, host_os isn't really good enough
   case $host_os in
   darwin*)
-    if test -n "$STRIP" ; then
+    if test -n "$STRIP"; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
       AC_MSG_RESULT([yes])
@@ -2028,6 +2233,47 @@ _LT_DECL([], [striplib], [1])
 ])# _LT_CMD_STRIPLIB
 
 
+# _LT_PREPARE_MUNGE_PATH_LIST
+# ---------------------------
+# Make sure func_munge_path_list() is defined correctly.
+m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
+[[# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x at S|@2 in
+    x)
+        ;;
+    *:)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
+        ;;
+    x:*)
+        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\"
+        ;;
+    *)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+]])# _LT_PREPARE_PATH_LIST
+
+
 # _LT_SYS_DYNAMIC_LINKER([TAG])
 # -----------------------------
 # PORTME Fill in your ld.so characteristics
@@ -2037,47 +2283,63 @@ m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
 m4_if([$1],
 	[], [
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
   esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
     # if the path contains ";" then we assume it to be the separator
     # otherwise default to the standard path separator (i.e. ":") - it is
     # assumed that no part of a normal pathname contains ";" but that should
     # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
   # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
+  # and add multilib dir if necessary...
   lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
   for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
       test -d "$lt_sys_path" && \
 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
   for (lt_i = NF; lt_i > 0; lt_i--) {
     if ($lt_i != "" && $lt_i != ".") {
       if ($lt_i == "..") {
         lt_count++;
       } else {
         if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
+          lt_foo = "/" $lt_i lt_foo;
         } else {
           lt_count--;
         }
@@ -2087,14 +2349,20 @@ BEGIN {RS=" "; FS="/|\n";} {
   if (lt_foo != "") { lt_freq[[lt_foo]]++; }
   if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
 }'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi])
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -2111,56 +2379,109 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
+[User-defined run-time library search path.])
+
 case $host_os in
 aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[[4-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[[01]] | aix4.[[01]].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a[(]lib.so.V[)]'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -2170,27 +2491,27 @@ amigaos*)
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -2202,16 +2523,17 @@ bsdi[[45]]*)
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -2227,37 +2549,84 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
+        # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
       ;;
     esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -2267,8 +2636,8 @@ darwin* | rhapsody*)
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -2278,18 +2647,14 @@ m4_if([$1], [],[
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -2297,25 +2662,26 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2334,13 +2700,16 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
 
@@ -2357,14 +2726,15 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -2372,8 +2742,8 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -2382,20 +2752,22 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
 interix[[3-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -2406,16 +2778,16 @@ irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -2434,8 +2806,8 @@ irix5* | irix6* | nonstopux*)
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
   hardcode_into_libs=yes
   ;;
 
@@ -2444,39 +2816,66 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
   # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-       [shlibpath_overrides_runpath=yes])])
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+	 [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Add ABI-specific directories to the system library path.
-  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -2493,12 +2892,12 @@ netbsd*)
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -2507,8 +2906,8 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -2517,58 +2916,68 @@ newsos6)
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
   else
-    shlibpath_overrides_runpath=yes
+    need_version=yes
   fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -2576,11 +2985,11 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -2590,20 +2999,20 @@ solaris*)
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -2624,24 +3033,24 @@ sysv4 | sysv4.3*)
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -2656,19 +3065,19 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -2677,20 +3086,30 @@ uts4*)
   ;;
 esac
 AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
 _LT_DECL([], [variables_saved_for_relink], [1],
     [Variables whose values should be saved in libtool wrapper scripts and
     restored at link time])
@@ -2708,6 +3127,8 @@ _LT_DECL([], [library_names_spec], [1],
     The last name is the one that the linker finds with -lNAME]])
 _LT_DECL([], [soname_spec], [1],
     [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
 _LT_DECL([], [postinstall_cmds], [2],
     [Command to use after installation of a shared archive])
 _LT_DECL([], [postuninstall_cmds], [2],
@@ -2721,39 +3142,41 @@ _LT_DECL([], [hardcode_into_libs], [0],
     [Whether we should hardcode library paths into libraries])
 _LT_DECL([], [sys_lib_search_path_spec], [2],
     [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
+_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
+    [Detected run-time system search path for libraries])
+_LT_DECL([], [configure_time_lt_sys_library_path], [2],
+    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
 ])# _LT_SYS_DYNAMIC_LINKER
 
 
 # _LT_PATH_TOOL_PREFIX(TOOL)
 # --------------------------
-# find a file program which can recognize shared library
+# find a file program that can recognize shared library
 AC_DEFUN([_LT_PATH_TOOL_PREFIX],
 [m4_require([_LT_DECL_EGREP])dnl
 AC_MSG_CHECKING([for $1])
 AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
 [case $MAGIC_CMD in
 [[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
 dnl $ac_dummy forces splitting on constant user-supplied paths.
 dnl POSIX.2 word splitting is done only on the output of word expansions,
 dnl not every word.  This closes a longstanding sh security hole.
   ac_dummy="m4_if([$2], , $PATH, [$2])"
   for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+    if test -f "$ac_dir/$1"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
 	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
@@ -2776,11 +3199,11 @@ _LT_EOF
       break
     fi
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
 esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
   AC_MSG_RESULT($MAGIC_CMD)
 else
@@ -2798,7 +3221,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
 
 # _LT_PATH_MAGIC
 # --------------
-# find a file program which can recognize a shared library
+# find a file program that can recognize a shared library
 m4_defun([_LT_PATH_MAGIC],
 [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
 if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -2820,20 +3243,21 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
 
 AC_ARG_WITH([gnu-ld],
     [AS_HELP_STRING([--with-gnu-ld],
 	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
+    [test no = "$withval" || with_gnu_ld=yes],
     [with_gnu_ld=no])dnl
 
 ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
   AC_MSG_CHECKING([for ld used by $CC])
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
+    # gcc leaves a trailing carriage return, which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -2847,7 +3271,7 @@ if test "$GCC" = yes; then
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
 	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD="$ac_prog"
+      test -z "$LD" && LD=$ac_prog
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -2858,37 +3282,37 @@ if test "$GCC" = yes; then
     with_gnu_ld=unknown
     ;;
   esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
   AC_MSG_CHECKING([for GNU ld])
 else
   AC_MSG_CHECKING([for non-GNU ld])
 fi
 AC_CACHE_VAL(lt_cv_path_LD,
 [if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD=$ac_dir/$ac_prog
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
+	test no != "$with_gnu_ld" && break
 	;;
       *)
-	test "$with_gnu_ld" != yes && break
+	test yes != "$with_gnu_ld" && break
 	;;
       esac
     fi
   done
-  IFS="$lt_save_ifs"
+  IFS=$lt_save_ifs
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
 fi])
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
 if test -n "$LD"; then
   AC_MSG_RESULT($LD)
 else
@@ -2941,19 +3365,61 @@ case $reload_flag in
 esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
   darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
     ;;
 esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
 ])# _LT_CMD_RELOAD
 
 
+# _LT_PATH_DD
+# -----------
+# find a working dd
+m4_defun([_LT_PATH_DD],
+[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
+[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi])
+rm -f conftest.i conftest2.i conftest.out])
+])# _LT_PATH_DD
+
+
+# _LT_CMD_TRUNCATE
+# ----------------
+# find command to truncate a binary pipe
+m4_defun([_LT_CMD_TRUNCATE],
+[m4_require([_LT_PATH_DD])
+AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
+_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
+  [Command to truncate a binary pipe])
+])# _LT_CMD_TRUNCATE
+
+
 # _LT_CHECK_MAGIC_METHOD
 # ----------------------
 # how to check for library dependencies
@@ -2969,13 +3435,13 @@ lt_cv_deplibs_check_method='unknown'
 # Need to set the preceding variable on all platforms that support
 # interlibrary dependencies.
 # 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
 # 'pass_all' -- all dependencies passed with no checks.
 # 'test_compile' -- check by making test program.
 # 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
 
 case $host_os in
 aix[[4-9]]*)
@@ -3006,12 +3472,13 @@ mingw* | pw32*)
     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     lt_cv_file_magic_cmd='func_win32_libid'
   else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
     lt_cv_file_magic_cmd='$OBJDUMP -f'
   fi
   ;;
 
-cegcc)
+cegcc*)
   # use the weaker test based on 'objdump'. See mingw*.
   lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
   lt_cv_file_magic_cmd='$OBJDUMP -f'
@@ -3037,7 +3504,7 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
+haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -3049,11 +3516,11 @@ hpux10.20* | hpux11*)
     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
     ;;
   hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
     lt_cv_file_magic_test_file=/usr/lib/libc.sl
     ;;
   esac
@@ -3074,8 +3541,8 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -3097,8 +3564,8 @@ newos6*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
   else
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
@@ -3151,8 +3618,26 @@ sysv4 | sysv4.3*)
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 esac
 ])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -3160,7 +3645,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 _LT_DECL([], [deplibs_check_method], [1],
     [Method to check whether dependent libraries are shared objects])
 _LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method == "file_magic"])
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
 ])# _LT_CHECK_MAGIC_METHOD
 
 
@@ -3172,33 +3661,38 @@ AC_DEFUN([LT_PATH_NM],
 AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
 [if test -n "$NM"; then
   # Let the user override the test.
-  lt_cv_path_NM="$NM"
+  lt_cv_path_NM=$NM
 else
-  lt_nm_to_check="${ac_tool_prefix}nm"
+  lt_nm_to_check=${ac_tool_prefix}nm
   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     lt_nm_to_check="$lt_nm_to_check nm"
   fi
   for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
 	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
 	#   nm: unknown option "B" ignored
 	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
 	  lt_cv_path_NM="$tmp_nm -B"
-	  break
+	  break 2
 	  ;;
 	*)
 	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
 	  */dev/null*)
 	    lt_cv_path_NM="$tmp_nm -p"
-	    break
+	    break 2
 	    ;;
 	  *)
 	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -3209,18 +3703,30 @@ else
 	esac
       fi
     done
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
   done
   : ${lt_cv_path_NM=no}
 fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
   AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
   fi
 fi
 test -z "$NM" && NM=nm
@@ -3230,13 +3736,13 @@ _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
 AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
   [lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
   cat conftest.out >&AS_MESSAGE_LOG_FD
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -3251,6 +3757,82 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AM_PROG_NM], [])
 dnl AC_DEFUN([AC_PROG_NM], [])
 
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+  test DEF = "`$SED -n dnl
+    -e '\''s/^[[	 ]]*//'\'' dnl Strip leading whitespace
+    -e '\''/^\(;.*\)*$/d'\'' dnl      Delete empty lines and comments
+    -e '\''s/^\(EXPORTS\|LIBRARY\)\([[	 ]].*\)*$/DEF/p'\'' dnl
+    -e q dnl                          Only consider the first "real" line
+    $1`" dnl
+])# _LT_DLL_DEF_P
+
 
 # LT_LIB_M
 # --------
@@ -3259,15 +3841,15 @@ AC_DEFUN([LT_LIB_M],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
 case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
   # These system don't have libm, or don't need it
   ;;
 *-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
   AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
   ;;
 *)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  AC_CHECK_LIB(m, cos, LIBM=-lm)
   ;;
 esac
 AC_SUBST([LIBM])
@@ -3286,8 +3868,13 @@ m4_defun([_LT_COMPILER_NO_RTTI],
 
 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
 
-if test "$GCC" = yes; then
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
 
   _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
     lt_cv_prog_compiler_rtti_exceptions,
@@ -3304,6 +3891,7 @@ _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
 m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([LT_PATH_NM])dnl
 AC_REQUIRE([LT_PATH_LD])dnl
 m4_require([_LT_DECL_SED])dnl
@@ -3332,7 +3920,7 @@ cygwin* | mingw* | pw32* | cegcc*)
   symcode='[[ABCDGISTW]]'
   ;;
 hpux*)
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     symcode='[[ABCDEGRST]]'
   fi
   ;;
@@ -3365,14 +3953,44 @@ case `$NM -V 2>&1` in
   symcode='[[ABCDGIRSTW]]' ;;
 esac
 
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -3390,24 +4008,29 @@ for ac_symprfx in "" "_"; do
 
   # Write the raw and C identifiers.
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
     # Also find C++ and __fastcall symbols from MSVC++,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
 "     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx]"
   else
     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -3429,7 +4052,7 @@ _LT_EOF
   if AC_TRY_EVAL(ac_compile); then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
 	mv -f "$nlist"T "$nlist"
@@ -3441,6 +4064,18 @@ _LT_EOF
       if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
 	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
 	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t at _DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t at _DLSYM_CONST
+#else
+# define LT@&t at _DLSYM_CONST const
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -3452,7 +4087,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-const struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -3460,7 +4095,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] =
 {
   { "@PROGRAM@", (void *) 0 },
 _LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
 	  cat <<\_LT_EOF >> conftest.$ac_ext
   {0, (void *) 0}
 };
@@ -3478,15 +4113,15 @@ static const void *lt_preloaded_setup() {
 _LT_EOF
 	  # Now try linking the two files.
 	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS=conftstm.$ac_objext
 	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	  if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
 	    pipe_works=yes
 	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
 	else
 	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
 	fi
@@ -3503,7 +4138,7 @@ _LT_EOF
   rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
+  if test yes = "$pipe_works"; then
     break
   else
     lt_cv_sys_global_symbol_pipe=
@@ -3519,16 +4154,29 @@ else
   AC_MSG_RESULT(ok)
 fi
 
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
 _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
     [Take the output of nm and produce a listing of raw symbols and C names])
 _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
     [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+    [Transform the output of nm into a list of symbols to manually relocate])
 _LT_DECL([global_symbol_to_c_name_address],
     [lt_cv_sys_global_symbol_to_c_name_address], [1],
     [Transform the output of nm in a C name address pair])
 _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
     [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
     [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+    [The name lister interface])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
 ]) # _LT_CMD_GLOBAL_SYMBOLS
 
 
@@ -3540,20 +4188,20 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)=
 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
 _LT_TAGVAR(lt_prog_compiler_static, $1)=
 
-AC_MSG_CHECKING([for $compiler option to produce PIC])
 m4_if([$1], [CXX], [
   # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
+  if test yes = "$GXX"; then
     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
 
     case $host_os in
     aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
 
     amigaos*)
@@ -3564,8 +4212,8 @@ m4_if([$1], [CXX], [
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -3581,6 +4229,11 @@ m4_if([$1], [CXX], [
       # (--disable-auto-import) libraries
       m4_if([$1], [GCJ], [],
 	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -3591,6 +4244,11 @@ m4_if([$1], [CXX], [
       # DJGPP does not support shared libraries at all
       _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
     interix[[3-9]]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
@@ -3625,7 +4283,7 @@ m4_if([$1], [CXX], [
     case $host_os in
       aix[[4-9]]*)
 	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	  # AIX 5 now supports IA64 processor
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	else
@@ -3640,6 +4298,12 @@ m4_if([$1], [CXX], [
 	  ;;
 	esac
 	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	m4_if([$1], [GCJ], [],
+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+	;;
       dgux*)
 	case $cc_basename in
 	  ec++*)
@@ -3660,14 +4324,14 @@ m4_if([$1], [CXX], [
 	case $cc_basename in
 	  CC*)
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
 	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
 	    fi
 	    ;;
 	  aCC*)
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
 	    case $host_cpu in
 	    hppa*64*|ia64*)
 	      # +Z the default
@@ -3696,7 +4360,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -3704,7 +4368,7 @@ m4_if([$1], [CXX], [
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
 	    ;;
 	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    # old Intel C++ for x86_64, which still supported -KPIC.
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
@@ -3729,8 +4393,8 @@ m4_if([$1], [CXX], [
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
 	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
@@ -3792,7 +4456,7 @@ m4_if([$1], [CXX], [
 	;;
       solaris*)
 	case $cc_basename in
-	  CC*)
+	  CC* | sunCC*)
 	    # Sun C++ 4.2, 5.x and Centerline C++
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -3849,17 +4513,18 @@ m4_if([$1], [CXX], [
   fi
 ],
 [
-  if test "$GCC" = yes; then
+  if test yes = "$GCC"; then
     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
 
     case $host_os in
       aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
 
     amigaos*)
@@ -3870,8 +4535,8 @@ m4_if([$1], [CXX], [
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -3888,6 +4553,11 @@ m4_if([$1], [CXX], [
       # (--disable-auto-import) libraries
       m4_if([$1], [GCJ], [],
 	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -3896,6 +4566,12 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
     hpux*)
       # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
@@ -3938,12 +4614,21 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
     esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
+      ;;
+    esac
   else
     # PORTME Check for flag to pass linker flags through the system compiler.
     case $host_os in
     aix*)
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       else
@@ -3951,11 +4636,30 @@ m4_if([$1], [CXX], [
       fi
       ;;
 
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      esac
+      ;;
+
     mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       m4_if([$1], [GCJ], [],
 	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -3971,7 +4675,7 @@ m4_if([$1], [CXX], [
 	;;
       esac
       # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
       ;;
 
     irix5* | irix6* | nonstopux*)
@@ -3980,9 +4684,9 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
+      # old Intel for x86_64, which still supported -KPIC.
       ecc*)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4001,7 +4705,19 @@ m4_if([$1], [CXX], [
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
 	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
+      nagfor*)
+	# NAG Fortran compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@@ -4013,25 +4729,40 @@ m4_if([$1], [CXX], [
         # All Alpha code is PIC.
         _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
 	  ;;
 	esac
 	;;
@@ -4063,7 +4794,7 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       case $cc_basename in
-      f77* | f90* | f95*)
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
       *)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
@@ -4083,7 +4814,7 @@ m4_if([$1], [CXX], [
       ;;
 
     sysv4*MP*)
-      if test -d /usr/nec ;then
+      if test -d /usr/nec; then
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
@@ -4112,7 +4843,7 @@ m4_if([$1], [CXX], [
   fi
 ])
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     _LT_TAGVAR(lt_prog_compiler_pic, $1)=
     ;;
@@ -4120,9 +4851,11 @@ case $host_os in
     _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
     ;;
 esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
 
 #
 # Check to make sure the PIC flag actually works.
@@ -4141,6 +4874,8 @@ fi
 _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
 	[Additional compiler flags for building library objects])
 
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
 #
 # Check to make sure the static flag actually works.
 #
@@ -4161,6 +4896,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
 m4_defun([_LT_LINKER_SHLIBS],
 [AC_REQUIRE([LT_PATH_LD])dnl
 AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_DECL_SED])dnl
@@ -4169,27 +4905,41 @@ m4_require([_LT_TAG_COMPILER])dnl
 AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
 m4_if([$1], [CXX], [
   _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   case $host_os in
   aix[[4-9]]*)
     # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
+    _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
+    ;;
   cygwin* | mingw* | cegcc*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    case $cc_basename in
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    ;;
   esac
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
 ], [
   runpath_var=
   _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -4204,7 +4954,6 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4220,9 +4969,9 @@ m4_if([$1], [CXX], [
   # included in the symbol list
   _LT_TAGVAR(include_expsyms, $1)=
   # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
   _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
@@ -4238,7 +4987,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
@@ -4246,30 +4995,57 @@ dnl Note also adjust exclude_expsyms for C++ above.
     # we just hope/assume this is gcc and not c89 (= MSVC++)
     with_gnu_ld=yes
     ;;
-  openbsd*)
+  openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
-  if test "$with_gnu_ld" = yes; then
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
+    wlarc='$wl'
 
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     else
       _LT_TAGVAR(whole_archive_flag_spec, $1)=
     fi
     supports_anon_versioning=no
-    case `$LD -v 2>&1` in
+    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -4281,15 +5057,16 @@ dnl Note also adjust exclude_expsyms for C++ above.
     case $host_os in
     aix[[3-9]]*)
       # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
+      if test ia64 != "$host_cpu"; then
 	_LT_TAGVAR(ld_shlibs, $1)=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, is reported
 *** to be unable to reliably create shared libraries on AIX.
 *** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
 _LT_EOF
       fi
@@ -4299,7 +5076,7 @@ _LT_EOF
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             _LT_TAGVAR(archive_expsym_cmds, $1)=''
         ;;
       m68k)
@@ -4315,7 +5092,7 @@ _LT_EOF
 	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
 	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
 	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4325,61 +5102,97 @@ _LT_EOF
       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       # as there is no search path for DLLs.
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_TAGVAR(always_export_symbols, $1)=no
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
     interix[[3-9]]*)
       _LT_TAGVAR(hardcode_direct, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       # Instead, shared libraries are loaded at an image base (0x10000000 by
       # default) and relocated if they conflict, which is a slow very memory
       # consuming and fragmenting process.  To avoid this, we pick a random,
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
+      if test linux-dietlibc = "$host_os"; then
 	case $cc_basename in
 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
 	esac
       fi
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
+	 && test no = "$tmp_diet"
       then
-	tmp_addflag=
+	tmp_addflag=' $pic_flag'
 	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
         pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -4390,39 +5203,47 @@ _LT_EOF
 	lf95*)				# Lahey Fortran 8.1
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
 	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
 	  tmp_sharedflag='-qmkshrobj'
 	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
 	  tmp_sharedflag='-G' ;;
 	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 
-        if test "x$supports_anon_versioning" = xyes; then
+        if test yes = "$supports_anon_versioning"; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
 	case $cc_basename in
-	xlf*)
+	tcc*)
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
 	  ;;
 	esac
@@ -4436,8 +5257,8 @@ _LT_EOF
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -4455,8 +5276,8 @@ _LT_EOF
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4468,7 +5289,7 @@ _LT_EOF
 	_LT_TAGVAR(ld_shlibs, $1)=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
 *** reliably create shared libraries on SCO systems.  Therefore, libtool
 *** is disabling shared libraries support.  We urge you to upgrade GNU
 *** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
@@ -4483,9 +5304,9 @@ _LT_EOF
 	  # DT_RUNPATH tag from executables and libraries.  But doing so
 	  # requires that you compile everything twice, which is a pain.
 	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	  else
 	    _LT_TAGVAR(ld_shlibs, $1)=no
 	  fi
@@ -4502,15 +5323,15 @@ _LT_EOF
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
     esac
 
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+    if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
       runpath_var=
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       _LT_TAGVAR(export_dynamic_flag_spec, $1)=
@@ -4526,7 +5347,7 @@ _LT_EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	_LT_TAGVAR(hardcode_direct, $1)=unsupported
@@ -4534,32 +5355,57 @@ _LT_EOF
       ;;
 
     aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# On IA64, the linker does run time linking by default, so we don't
 	# have to do anything special.
 	aix_use_runtimelinking=no
 	exp_sym_flag='-Bexport'
-	no_entry_flag=""
+	no_entry_flag=
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
 	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
 	fi
 	aix_use_runtimelinking=no
 
 	# Test if we are trying to use run time linking or normal
 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
 	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
 	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
 	    aix_use_runtimelinking=yes
 	    break
 	  fi
 	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
 	  ;;
 	esac
 
@@ -4578,13 +5424,21 @@ _LT_EOF
       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+      _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+	;;
+      esac
 
-      if test "$GCC" = yes; then
+      if test yes = "$GCC"; then
 	case $host_os in aix4.[[012]]|aix4.[[012]].*)
 	# We only want to do this on AIX 4.2 and lower, the check
 	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -4603,56 +5457,80 @@ _LT_EOF
 	  ;;
 	esac
 	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
 	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
       else
 	# not using gcc
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
 	  else
-	    shared_flag='${wl}-bM:SRE'
+	    shared_flag='$wl-bM:SRE'
 	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
 	fi
       fi
 
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
 	# Warning - without using the other runtime loading flags (-brtl),
 	# -berok will link without error, but may produce a broken library.
 	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
       else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	if test ia64 = "$host_cpu"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
 	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	 _LT_SYS_MODULE_PATH_AIX([$1])
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  fi
 	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 3 [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
 	fi
       fi
       ;;
@@ -4661,7 +5539,7 @@ _LT_EOF
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             _LT_TAGVAR(archive_expsym_cmds, $1)=''
         ;;
       m68k)
@@ -4681,24 +5559,69 @@ _LT_EOF
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	_LT_TAGVAR(always_export_symbols, $1)=yes
+	_LT_TAGVAR(file_list_spec, $1)='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	# FIXME: Should let the user specify the lib program.
+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
       ;;
 
     dgux*)
@@ -4707,10 +5630,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -4723,7 +5642,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -4732,41 +5651,40 @@ _LT_EOF
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
     freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
     hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(hardcode_direct, $1)=yes
 
       # hardcode_minus_L: Not really in the search PATH,
       # but as the default location of the library.
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
       ;;
 
     hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 	# hardcode_minus_L: Not really in the search PATH,
 	# but as the default location of the library.
 	_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -4774,33 +5692,40 @@ _LT_EOF
       ;;
 
     hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+      if test yes,no = "$GCC,$with_gnu_ld"; then
 	case $host_cpu in
 	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
 	case $host_cpu in
 	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	m4_if($1, [], [
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  _LT_LINKER_OPTION([if $CC understands -b],
+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
 	  ;;
 	esac
       fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
 	case $host_cpu in
@@ -4811,7 +5736,7 @@ _LT_EOF
 	*)
 	  _LT_TAGVAR(hardcode_direct, $1)=yes
 	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 
 	  # hardcode_minus_L: Not really in the search PATH,
 	  # but as the default location of the library.
@@ -4822,28 +5747,53 @@ _LT_EOF
       ;;
 
     irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	# Try to use the -exported_symbol ld option, if it does not
 	# work, assume that -exports_file does not work either and
 	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
+	# This should be the same for all languages, so no per-tag cache variable.
+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+	  [lt_cv_irix_exported_symbol],
+	  [save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   AC_LINK_IFELSE(
+	     [AC_LANG_SOURCE(
+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+			      [C++], [[int foo (void) { return 0; }]],
+			      [Fortran 77], [[
+      subroutine foo
+      end]],
+			      [Fortran], [[
+      subroutine foo
+      end]])])],
+	      [lt_cv_irix_exported_symbol=yes],
+	      [lt_cv_irix_exported_symbol=no])
+           LDFLAGS=$save_LDFLAGS])
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(inherit_rpath, $1)=yes
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
     netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
@@ -4858,7 +5808,7 @@ _LT_EOF
     newsos6)
       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
@@ -4866,27 +5816,19 @@ _LT_EOF
     *nto* | *qnx*)
       ;;
 
-    openbsd*)
+    openbsd* | bitrig*)
       if test -f /usr/libexec/ld.so; then
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
 	fi
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
@@ -4897,33 +5839,53 @@ _LT_EOF
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       ;;
 
     osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
       else
 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       ;;
 
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       else
 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -4934,24 +5896,24 @@ _LT_EOF
 
     solaris*)
       _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
 	case `$CC -V 2>&1` in
 	*"Compilers 5.0"*)
 	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
 	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
 	  ;;
 	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  wlarc='$wl'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
 	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
 	  ;;
 	esac
       fi
@@ -4961,11 +5923,11 @@ _LT_EOF
       solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       *)
 	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
 	# but is careful enough not to reorder.
 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	if test yes = "$GCC"; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 	else
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
 	fi
@@ -4975,10 +5937,10 @@ _LT_EOF
       ;;
 
     sunos4*)
-      if test "x$host_vendor" = xsequent; then
+      if test sequent = "$host_vendor"; then
 	# Use $CC to link under sequent, because it throws in some extra .o
 	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       else
 	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -5027,43 +5989,43 @@ _LT_EOF
       ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
     sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
+      # Note: We CANNOT use -z defs as we might desire, because we do not
       # link with -lc, and that would cause any symbols used from libc to
       # always be unresolved, which means just about no library would
       # ever link correctly.  If we're not using GNU ld we use -z text
       # though, which does catch some bad symbols but isn't as heavy-handed
       # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -5078,17 +6040,17 @@ _LT_EOF
       ;;
     esac
 
-    if test x$host_vendor = xsni; then
+    if test sni = "$host_vendor"; then
       case $host in
       sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
 	;;
       esac
     fi
   fi
 ])
 AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
 
 _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
 
@@ -5105,7 +6067,7 @@ x|xyes)
   # Assume -lc should be added
   _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $_LT_TAGVAR(archive_cmds, $1) in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -5114,36 +6076,38 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-        _LT_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-        then
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+	[$RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+	  _LT_TAGVAR(allow_undefined_flag, $1)=
+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+	  then
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	  else
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  fi
+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
       ;;
     esac
   fi
@@ -5180,18 +6144,15 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
     DIR into the resulting binary])
 _LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
     DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    "absolute", i.e impossible to change by setting $shlibpath_var if the
     library is relocated])
 _LT_TAGDECL([], [hardcode_minus_L], [0],
     [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
@@ -5208,8 +6169,6 @@ _LT_TAGDECL([], [inherit_rpath], [0],
     to runtime path list])
 _LT_TAGDECL([], [link_all_deplibs], [0],
     [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
 _LT_TAGDECL([], [always_export_symbols], [0],
     [Set to "yes" if exported symbols are required])
 _LT_TAGDECL([], [export_symbols_cmds], [2],
@@ -5220,6 +6179,8 @@ _LT_TAGDECL([], [include_expsyms], [1],
     [Symbols that must always be exported])
 _LT_TAGDECL([], [prelink_cmds], [2],
     [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
 _LT_TAGDECL([], [file_list_spec], [1],
     [Specify filename containing input files])
 dnl FIXME: Not yet implemented
@@ -5232,10 +6193,10 @@ dnl    [Compiler flag to generate thread safe objects])
 # ------------------------
 # Ensure that the configuration variables for a C compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_C_CONFIG],
 [m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
+lt_save_CC=$CC
 AC_LANG_PUSH(C)
 
 # Source file extension for C test sources.
@@ -5275,18 +6236,18 @@ if test -n "$compiler"; then
   LT_SYS_DLOPEN_SELF
   _LT_CMD_STRIPLIB
 
-  # Report which library types will actually be built
+  # Report what library types will actually be built
   AC_MSG_CHECKING([if libtool supports shared libraries])
   AC_MSG_RESULT([$can_build_shared])
 
   AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
+  test no = "$can_build_shared" && enable_shared=no
 
   # On AIX, shared libraries and static libraries use the same namespace, and
   # are all built from PIC.
   case $host_os in
   aix3*)
-    test "$enable_shared" = yes && enable_static=no
+    test yes = "$enable_shared" && enable_static=no
     if test -n "$RANLIB"; then
       archive_cmds="$archive_cmds~\$RANLIB \$lib"
       postinstall_cmds='$RANLIB $lib'
@@ -5294,8 +6255,12 @@ if test -n "$compiler"; then
     ;;
 
   aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
     fi
     ;;
   esac
@@ -5303,47 +6268,32 @@ if test -n "$compiler"; then
 
   AC_MSG_CHECKING([whether to build static libraries])
   # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
+  test yes = "$enable_shared" || enable_static=yes
   AC_MSG_RESULT([$enable_static])
 
   _LT_CONFIG($1)
 fi
 AC_LANG_POP
-CC="$lt_save_CC"
+CC=$lt_save_CC
 ])# _LT_LANG_C_CONFIG
 
 
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
 # _LT_LANG_CXX_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a C++ compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
 
 AC_LANG_PUSH(C++)
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
@@ -5355,7 +6305,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -5365,6 +6314,8 @@ _LT_TAGVAR(module_cmds, $1)=
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -5380,7 +6331,7 @@ _LT_TAGVAR(objext, $1)=$objext
 # the CXX compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="int some_variable = 0;"
 
@@ -5396,6 +6347,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 
   # Allow CC to be a program name with arguments.
   lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
   lt_save_LD=$LD
   lt_save_GCC=$GCC
   GCC=$GXX
@@ -5413,6 +6365,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   fi
   test -z "${LDCXX+set}" || LD=$LDCXX
   CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
   compiler=$CC
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
@@ -5420,35 +6373,35 @@ if test "$_lt_caught_CXX_error" != yes; then
   if test -n "$compiler"; then
     # We don't want -fno-exception when compiling C++ code, so set the
     # no_builtin_flag separately
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
     else
       _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
     fi
 
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       # Set up default GNU C++ configuration
 
       LT_PATH_LD
 
       # Check if GNU C++ uses GNU ld as the underlying linker, since the
       # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      if test yes = "$with_gnu_ld"; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
 
         # If archive_cmds runs LD, not CC, wlarc should be empty
         # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
         #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
+        wlarc='$wl'
 
         # ancient GNU ld didn't support --whole-archive et. al.
         if eval "`$CC -print-prog-name=ld` --help 2>&1" |
 	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
         else
           _LT_TAGVAR(whole_archive_flag_spec, $1)=
         fi
@@ -5467,7 +6420,7 @@ if test "$_lt_caught_CXX_error" != yes; then
       # Commands to make compiler produce verbose output that lists
       # what "hidden" libraries, object files and flags are used when
       # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
     else
       GXX=no
@@ -5484,18 +6437,30 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=no
         ;;
       aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
+        if test ia64 = "$host_cpu"; then
           # On IA64, the linker does run time linking by default, so we don't
           # have to do anything special.
           aix_use_runtimelinking=no
           exp_sym_flag='-Bexport'
-          no_entry_flag=""
+          no_entry_flag=
         else
           aix_use_runtimelinking=no
 
           # Test if we are trying to use run time linking or normal
           # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
           case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
 	    for ld_flag in $LDFLAGS; do
 	      case $ld_flag in
@@ -5505,6 +6470,13 @@ if test "$_lt_caught_CXX_error" != yes; then
 	        ;;
 	      esac
 	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
 	    ;;
           esac
 
@@ -5523,13 +6495,21 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+        _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          _LT_TAGVAR(hardcode_direct, $1)=no
+          _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+          ;;
+        esac
 
-        if test "$GXX" = yes; then
+        if test yes = "$GXX"; then
           case $host_os in aix4.[[012]]|aix4.[[012]].*)
           # We only want to do this on AIX 4.2 and lower, the check
           # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -5547,59 +6527,84 @@ if test "$_lt_caught_CXX_error" != yes; then
 	  fi
           esac
           shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
 	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
         else
           # not using gcc
-          if test "$host_cpu" = ia64; then
+          if test ia64 = "$host_cpu"; then
 	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	  # chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
           else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
 	    else
-	      shared_flag='${wl}-bM:SRE'
+	      shared_flag='$wl-bM:SRE'
 	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
           fi
         fi
 
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
         # It seems that -bexpall does not export symbols beginning with
         # underscore (_), so it is better to generate a list of symbols to
 	# export.
         _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
           # Warning - without using the other runtime loading flags (-brtl),
           # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # The "-G" linker flag allows undefined symbols.
+          _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
-          _LT_SYS_MODULE_PATH_AIX
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
 
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
         else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+          if test ia64 = "$host_cpu"; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
 	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
           else
 	    # Determine the default libpath from the value encoded in an
 	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    _LT_SYS_MODULE_PATH_AIX([$1])
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
 	    # Warning - without using the other run time loading flags,
 	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    fi
 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# [...]
+	    else
+	      # used by -dlpreopen to get the symbols
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
           fi
         fi
         ;;
@@ -5609,7 +6614,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
 	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
 	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 	else
 	  _LT_TAGVAR(ld_shlibs, $1)=no
 	fi
@@ -5625,32 +6630,108 @@ if test "$_lt_caught_CXX_error" != yes; then
         ;;
 
       cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-        # as there is no search path for DLLs.
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-        _LT_TAGVAR(always_export_symbols, $1)=no
-        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    cp $export_symbols $output_objdir/$soname.def;
-          else
-	    echo EXPORTS > $output_objdir/$soname.def;
-	    cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          _LT_TAGVAR(ld_shlibs, $1)=no
-        fi
-        ;;
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=yes
+	  _LT_TAGVAR(file_list_spec, $1)='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=.dll
+	  # FIXME: Setting linknames here is a bad hack.
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	  # Don't use ranlib
+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=no
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	  ;;
+	esac
+	;;
       darwin* | rhapsody*)
         _LT_DARWIN_LINKER_FEATURES($1)
 	;;
 
+      os2*)
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	shrext_cmds=.dll
+	_LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+
       dgux*)
         case $cc_basename in
           ec++*)
@@ -5669,7 +6750,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -5685,13 +6766,15 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
         ;;
 
-      gnu*)
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
         ;;
 
       hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
         _LT_TAGVAR(hardcode_direct, $1)=yes
         _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
 				             # but as the default
@@ -5703,7 +6786,7 @@ if test "$_lt_caught_CXX_error" != yes; then
             _LT_TAGVAR(ld_shlibs, $1)=no
             ;;
           aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             # Commands to make compiler produce verbose output that lists
             # what "hidden" libraries, object files and flags are used when
             # linking a shared library.
@@ -5712,11 +6795,11 @@ if test "$_lt_caught_CXX_error" != yes; then
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            if test yes = "$GXX"; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               _LT_TAGVAR(ld_shlibs, $1)=no
@@ -5726,15 +6809,15 @@ if test "$_lt_caught_CXX_error" != yes; then
         ;;
 
       hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        if test no = "$with_gnu_ld"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
 	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
           case $host_cpu in
             hppa*64*|ia64*)
               ;;
             *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
               ;;
           esac
         fi
@@ -5760,13 +6843,13 @@ if test "$_lt_caught_CXX_error" != yes; then
           aCC*)
 	    case $host_cpu in
 	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	    esac
 	    # Commands to make compiler produce verbose output that lists
@@ -5777,20 +6860,20 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
 	        case $host_cpu in
 	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	        esac
 	      fi
@@ -5805,22 +6888,22 @@ if test "$_lt_caught_CXX_error" != yes; then
       interix[[3-9]]*)
 	_LT_TAGVAR(hardcode_direct, $1)=no
 	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
 	# Instead, shared libraries are loaded at an image base (0x10000000 by
 	# default) and relocated if they conflict, which is a slow very memory
 	# consuming and fragmenting process.  To avoid this, we pick a random,
 	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
 	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
 	;;
       irix5* | irix6*)
         case $cc_basename in
           CC*)
 	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -5829,22 +6912,22 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
 	      fi
 	    fi
 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
 	    ;;
         esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -5852,8 +6935,8 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
 	    # Commands to make compiler produce verbose output that lists
 	    # what "hidden" libraries, object files and flags are used when
 	    # linking a shared library.
@@ -5862,10 +6945,10 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -5879,59 +6962,59 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # earlier do not add the objects themselves.
 	    case `$CC -V 2>&1` in
 	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	      *)  # Version 8.0 or newer
 	        tmp_idyn=
 	        case $host_cpu in
 		  ia64*) tmp_idyn=' -i_dynamic';;
 		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	    esac
 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
 	    ;;
           pgCC* | pgcpp*)
             # Portland Group C++ compiler
 	    case `$CC -V` in
-	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
 	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-		$RANLIB $oldlib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
 	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
-	    *) # Version 6 will use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	    *) # Version 6 and above use weak symbols
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
 	    esac
 
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
             ;;
 	  cxx*)
 	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
 
 	    runpath_var=LD_RUN_PATH
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -5945,18 +7028,18 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
 	    ;;
-	  xl*)
+	  xl* | mpixl* | bgxl*)
 	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
 	    fi
 	    ;;
 	  *)
@@ -5964,16 +7047,16 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    *Sun\ C*)
 	      # Sun C++ 5.9
 	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	      _LT_TAGVAR(compiler_needs_object, $1)=yes
 
 	      # Not sure whether something based on
 	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
 	      # would be better.
-	      output_verbose_link_cmd='echo'
+	      output_verbose_link_cmd='func_echo_all'
 
 	      # Archives containing C++ object files must be created using
 	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -6025,24 +7108,19 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
 	;;
 
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
+      openbsd* | bitrig*)
 	if test -f /usr/libexec/ld.so; then
 	  _LT_TAGVAR(hardcode_direct, $1)=yes
 	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
 	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
 	  fi
-	  output_verbose_link_cmd=echo
+	  output_verbose_link_cmd=func_echo_all
 	else
 	  _LT_TAGVAR(ld_shlibs, $1)=no
 	fi
@@ -6056,9 +7134,9 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
 	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
 	    # Archives containing C++ object files must be created using
@@ -6076,17 +7154,17 @@ if test "$_lt_caught_CXX_error" != yes; then
           cxx*)
 	    case $host in
 	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
 		;;
 	      *)
 	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
 	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
 		;;
 	    esac
@@ -6101,27 +7179,27 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
 	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
 	      case $host in
 	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	      esac
 
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
 	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
 	      # Commands to make compiler produce verbose output that lists
 	      # what "hidden" libraries, object files and flags are used when
 	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
 	    else
 	      # FIXME: insert proper C++ library support
@@ -6157,13 +7235,13 @@ if test "$_lt_caught_CXX_error" != yes; then
 
       solaris*)
         case $cc_basename in
-          CC*)
+          CC* | sunCC*)
 	    # Sun C++ 4.2, 5.x and Centerline C++
             _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
 	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
 	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -6171,14 +7249,14 @@ if test "$_lt_caught_CXX_error" != yes; then
 	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
 	      *)
 		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
+		# but understands '-z linker_flag'.
 	        # Supported since Solaris 2.6 (maybe 2.5.1?)
 		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
 	        ;;
 	    esac
 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
 
-	    output_verbose_link_cmd='echo'
+	    output_verbose_link_cmd='func_echo_all'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -6188,42 +7266,42 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    ;;
           gcx*)
 	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 
 	    # The C++ compiler must be used to create the archive.
 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
 	    ;;
           *)
 	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
 	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
 	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      fi
 
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
 	      case $host_os in
 		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
 		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 		  ;;
 	      esac
 	    fi
@@ -6232,48 +7310,52 @@ if test "$_lt_caught_CXX_error" != yes; then
         ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       runpath_var='LD_RUN_PATH'
 
       case $cc_basename in
         CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
       esac
       ;;
 
       sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
+	# Note: We CANNOT use -z defs as we might desire, because we do not
 	# link with -lc, and that would cause any symbols used from libc to
 	# always be unresolved, which means just about no library would
 	# ever link correctly.  If we're not using GNU ld we use -z text
 	# though, which does catch some bad symbols but isn't as heavy-handed
 	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+	_LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
 	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
 	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
 	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
 	runpath_var='LD_RUN_PATH'
 
 	case $cc_basename in
           CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+              '"$_LT_TAGVAR(old_archive_cmds, $1)"
+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+              '"$_LT_TAGVAR(reload_cmds, $1)"
 	    ;;
 	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    ;;
 	esac
       ;;
@@ -6304,10 +7386,10 @@ if test "$_lt_caught_CXX_error" != yes; then
     esac
 
     AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+    test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
 
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
+    _LT_TAGVAR(GCC, $1)=$GXX
+    _LT_TAGVAR(LD, $1)=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -6325,6 +7407,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   fi # test -n "$compiler"
 
   CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
   LDCXX=$LD
   LD=$lt_save_LD
   GCC=$lt_save_GCC
@@ -6333,12 +7416,36 @@ if test "$_lt_caught_CXX_error" != yes; then
   lt_cv_path_LD=$lt_save_path_LD
   lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
   lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
 
 AC_LANG_POP
 ])# _LT_LANG_CXX_CONFIG
 
 
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case @S|@2 in
+  .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+
 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
 # ---------------------------------
 # Figure out "hidden" library dependencies from verbose
@@ -6347,6 +7454,7 @@ AC_LANG_POP
 # objects, libraries and library flags.
 m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
 # Dependencies to place before and after the object being linked:
 _LT_TAGVAR(predep_objects, $1)=
 _LT_TAGVAR(postdep_objects, $1)=
@@ -6396,7 +7504,20 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
 dnl Parse the compiler output and extract the necessary
 dnl objects, libraries and library flags.
 if AC_TRY_EVAL(ac_compile); then
@@ -6408,29 +7529,38 @@ if AC_TRY_EVAL(ac_compile); then
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
+    case $prev$p in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
        # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
 	 prev=$p
 	 continue
-       else
-	 prev=
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
 	   # Internal compiler library paths should come after those
 	   # provided the user.  The postdeps already come after the
 	   # user supplied libs so there is no need to process them.
 	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	     _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
 	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
 	   fi
 	   ;;
 	 # The "-l" case would never come before the object being
@@ -6438,13 +7568,15 @@ if AC_TRY_EVAL(ac_compile); then
 	 esac
        else
 	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+	   _LT_TAGVAR(postdeps, $1)=$prev$p
 	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
 	 fi
        fi
+       prev=
        ;;
 
+    *.lto.$objext) ;; # Ignore GCC LTO objects
     *.$objext)
        # This assumes that the test object file only shows up
        # once in the compiler output.
@@ -6453,15 +7585,15 @@ if AC_TRY_EVAL(ac_compile); then
 	 continue
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
+       if test no = "$pre_test_object_deps_done"; then
 	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
+	   _LT_TAGVAR(predep_objects, $1)=$p
 	 else
 	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
 	 fi
        else
 	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
+	   _LT_TAGVAR(postdep_objects, $1)=$p
 	 else
 	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
 	 fi
@@ -6480,6 +7612,7 @@ else
 fi
 
 $RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
 # PORTME: override above test on systems where it is broken
 m4_if([$1], [CXX],
@@ -6491,51 +7624,6 @@ interix[[3-9]]*)
   _LT_TAGVAR(postdep_objects,$1)=
   _LT_TAGVAR(postdeps,$1)=
   ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 esac
 ])
 
@@ -6544,7 +7632,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in
 esac
  _LT_TAGVAR(compiler_lib_search_dirs, $1)=
 if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
 fi
 _LT_TAGDECL([], [compiler_lib_search_dirs], [1],
     [The directories searched by this compiler when creating a shared library])
@@ -6560,32 +7648,16 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1],
 ])# _LT_SYS_HIDDEN_LIBDEPS
 
 
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
 # _LT_LANG_F77_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a Fortran 77 compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test no = "$F77"; then
+  _lt_disable_F77=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6595,7 +7667,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -6604,6 +7675,8 @@ _LT_TAGVAR(module_cmds, $1)=
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -6619,7 +7692,7 @@ _LT_TAGVAR(objext, $1)=$objext
 # the F77 compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
+if test yes != "$_lt_disable_F77"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -6641,9 +7714,11 @@ if test "$_lt_disable_F77" != yes; then
   _LT_LINKER_BOILERPLATE
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
+  lt_save_CC=$CC
   lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
   compiler=$CC
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
@@ -6653,21 +7728,25 @@ if test "$_lt_disable_F77" != yes; then
     AC_MSG_RESULT([$can_build_shared])
 
     AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
+    test no = "$can_build_shared" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test "$enable_shared" = yes && enable_static=no
+        test yes = "$enable_shared" && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
 	fi
         ;;
     esac
@@ -6675,11 +7754,11 @@ if test "$_lt_disable_F77" != yes; then
 
     AC_MSG_CHECKING([whether to build static libraries])
     # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
+    test yes = "$enable_shared" || enable_static=yes
     AC_MSG_RESULT([$enable_static])
 
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
+    _LT_TAGVAR(GCC, $1)=$G77
+    _LT_TAGVAR(LD, $1)=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -6696,39 +7775,25 @@ if test "$_lt_disable_F77" != yes; then
   fi # test -n "$compiler"
 
   GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_F77" != yes
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
 
 AC_LANG_POP
 ])# _LT_LANG_F77_CONFIG
 
 
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
 # _LT_LANG_FC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for a Fortran compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test no = "$FC"; then
+  _lt_disable_FC=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6738,7 +7803,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -6747,6 +7811,8 @@ _LT_TAGVAR(module_cmds, $1)=
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -6762,7 +7828,7 @@ _LT_TAGVAR(objext, $1)=$objext
 # the FC compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
+if test yes != "$_lt_disable_FC"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -6784,9 +7850,11 @@ if test "$_lt_disable_FC" != yes; then
   _LT_LINKER_BOILERPLATE
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
+  lt_save_CC=$CC
   lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
   compiler=$CC
   GCC=$ac_cv_fc_compiler_gnu
 
@@ -6798,21 +7866,25 @@ if test "$_lt_disable_FC" != yes; then
     AC_MSG_RESULT([$can_build_shared])
 
     AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
+    test no = "$can_build_shared" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test "$enable_shared" = yes && enable_static=no
+        test yes = "$enable_shared" && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
 	fi
         ;;
     esac
@@ -6820,11 +7892,11 @@ if test "$_lt_disable_FC" != yes; then
 
     AC_MSG_CHECKING([whether to build static libraries])
     # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
+    test yes = "$enable_shared" || enable_static=yes
     AC_MSG_RESULT([$enable_static])
 
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
+    _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+    _LT_TAGVAR(LD, $1)=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -6842,8 +7914,9 @@ if test "$_lt_disable_FC" != yes; then
   fi # test -n "$compiler"
 
   GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_FC"
 
 AC_LANG_POP
 ])# _LT_LANG_FC_CONFIG
@@ -6853,7 +7926,7 @@ AC_LANG_POP
 # --------------------------
 # Ensure that the configuration variables for the GNU Java Compiler compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_GCJ_CONFIG],
 [AC_REQUIRE([LT_PROG_GCJ])dnl
 AC_LANG_SAVE
@@ -6879,19 +7952,23 @@ _LT_COMPILER_BOILERPLATE
 _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
 lt_save_GCC=$GCC
 GCC=yes
 CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
 _LT_CC_BASENAME([$compiler])
 
 # GCJ did not exist at the time GCC didn't implicitly link libc in.
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 
 ## CAVEAT EMPTOR:
 ## There is no encapsulation within the following macros, do not change
@@ -6911,15 +7988,87 @@ fi
 AC_LANG_RESTORE
 
 GCC=$lt_save_GCC
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_RC_CONFIG],
 [AC_REQUIRE([LT_PROG_RC])dnl
 AC_LANG_SAVE
@@ -6935,7 +8084,7 @@ _LT_TAGVAR(objext, $1)=$objext
 lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
 
 # Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
+lt_simple_link_test_code=$lt_simple_compile_test_code
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_TAG_COMPILER
@@ -6945,10 +8094,12 @@ _LT_COMPILER_BOILERPLATE
 _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
 lt_save_GCC=$GCC
 GCC=
 CC=${RC-"windres"}
+CFLAGS=
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
 _LT_CC_BASENAME([$compiler])
@@ -6961,7 +8112,8 @@ fi
 
 GCC=$lt_save_GCC
 AC_LANG_RESTORE
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_RC_CONFIG
 
 
@@ -6971,7 +8123,7 @@ AC_DEFUN([LT_PROG_GCJ],
 [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
   [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
     [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
       AC_SUBST(GCJFLAGS)])])[]dnl
 ])
 
@@ -6981,6 +8133,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
@@ -7020,6 +8179,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
 AC_SUBST([OBJDUMP])
 ])
 
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
 
 # _LT_DECL_SED
 # ------------
@@ -7066,7 +8234,7 @@ lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
 # along with /bin/sed that truncates output.
 for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
+  test ! -f "$lt_ac_sed" && continue
   cat /dev/null > conftest.in
   lt_ac_count=0
   echo $ECHO_N "0123456789$ECHO_C" >conftest.in
@@ -7083,9 +8251,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
     $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
     cmp -s conftest.out conftest.nl || break
     # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
+    test 10 -lt "$lt_ac_count" && break
     lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
+    if test "$lt_ac_count" -gt "$lt_ac_max"; then
       lt_ac_max=$lt_ac_count
       lt_cv_path_SED=$lt_ac_sed
     fi
@@ -7109,27 +8277,7 @@ dnl AC_DEFUN([LT_AC_PROG_SED], [])
 # Find out whether the shell is Bourne or XSI compatible,
 # or has some other useful features.
 m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   lt_unset=unset
 else
   lt_unset=false
@@ -7153,208 +8301,69 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
 ])# _LT_CHECK_SHELL_FEATURES
 
 
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine what file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
     ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]+=\$[2]"
-}
-_LT_EOF
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
     ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
     ;;
-  esac
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
 ])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/config/ltmain.sh b/config/ltmain.sh
old mode 100755
new mode 100644
index a72f2fd..0f0a2da
--- a/config/ltmain.sh
+++ b/config/ltmain.sh
@@ -1,9 +1,12 @@
-# Generated from ltmain.m4sh.
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+##               by inline-source v2014-01-03.01
 
-# ltmain.sh (GNU libtool) 2.2.6b
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -23,598 +26,2112 @@
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#     --config             show all configuration variables
-#     --debug              enable verbose shell tracing
-# -n, --dry-run            display commands without modifying any files
-#     --features           display basic configuration information and exit
-#     --mode=MODE          use operation mode MODE
-#     --preserve-dup-deps  don't remove duplicate dependency libraries
-#     --quiet, --silent    don't print informational messages
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long help message
-#
-# MODE must be one of the following:
-#
-#       clean              remove files from the build directory
-#       compile            compile a source file into a libtool object
-#       execute            automatically set library path, then run a program
-#       finish             complete the installation of libtool libraries
-#       install            install libraries or executables
-#       link               create a library or an executable
-#       uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION=2.4.6
+package_revision=2.4.6
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
 #
-#       host-triplet:	$host
-#       shell:		$SHELL
-#       compiler:		$LTCC
-#       compiler flags:		$LTCFLAGS
-#       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.6b
-#       automake:		$automake_version
-#       autoconf:		$autoconf_version
+#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
 #
-# Report bugs to <bug-libtool at gnu.org>.
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
 
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION=2.2.6b
-TIMESTAMP=""
-package_revision=1.3017
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
 fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
 
-# NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
 do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+  eval "if test set = \"\${$_G_var+set}\"; then
+          save_$_G_var=\$$_G_var
+          $_G_var=C
+	  export $_G_var
+	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
 	fi"
 done
 
-$lt_unset CDPATH
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp	$nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+    test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+    _G_progs_list=$1
+    _G_check_func=$2
+    _G_PATH=${3-"$PATH"}
+
+    _G_path_prog_max=0
+    _G_path_prog_found=false
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
+    for _G_dir in $_G_PATH; do
+      IFS=$_G_save_IFS
+      test -z "$_G_dir" && _G_dir=.
+      for _G_prog_name in $_G_progs_list; do
+        for _exeext in '' .EXE; do
+          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+          func_executable_p "$_G_path_prog" || continue
+          case `"$_G_path_prog" --version 2>&1` in
+            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+            *)     $_G_check_func $_G_path_prog
+		   func_path_progs_result=$func_check_prog_result
+		   ;;
+          esac
+          $_G_path_prog_found && break 3
+        done
+      done
+    done
+    IFS=$_G_save_IFS
+    test -z "$func_path_progs_result" && {
+      echo "no acceptable sed could be found in \$PATH" >&2
+      exit 1
+    }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+  for _G_i in 1 2 3 4 5 6 7; do
+    _G_sed_script=$_G_sed_script$nl$_G_sed_script
+  done
+  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+  _G_sed_script=
+
+  func_check_prog_sed ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo '' >> conftest.nl
+      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  rm -f conftest.sed
+  SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+  func_check_prog_grep ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    _G_path_prog_max=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo 'GREP' >> conftest.nl
+      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
 
+  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  GREP=$func_path_progs_result
+}
 
 
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
 
+# All uppercase variable names are used for environment variables.  These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
 
 : ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
 : ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/bin/sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
 
-# Global variables:
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same.  If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion.  Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+  s/$_G_bs4/&\\
+/g
+  s/^$_G_bs2$_G_dollar/$_G_bs&/
+  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+  s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
 EXIT_SUCCESS=0
 EXIT_FAILURE=1
 EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
 EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
 
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
 
-# Generated shell functions inserted here.
+# By convention, finish your script with:
+#
+#    exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
 
 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
 # is ksh but when the shell is invoked as "sh" and the current value of
 # the _XPG environment variable is not equal to 1 (one), the special
 # positional parameter $0, within a function call, is the name of the
 # function.
-progpath="$0"
-
-# The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-case $progname in
-  -*) progname=./$progname ;;
-esac
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
 
-# Make sure we have an absolute path for reexecution:
+# Make sure we have an absolute progpath for reexecution:
 case $progpath in
   [\\/]*|[A-Za-z]:\\*) ;;
   *[\\/]*)
-     progdir=$func_dirname_result
+     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
      progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
+     progpath=$progdir/$progname
      ;;
   *)
-     save_IFS="$IFS"
-     IFS=:
+     _G_IFS=$IFS
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
-       IFS="$save_IFS"
+       IFS=$_G_IFS
        test -x "$progdir/$progname" && break
      done
-     IFS="$save_IFS"
+     IFS=$_G_IFS
      test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
+     progpath=$progdir/$progname
      ;;
 esac
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
 
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
+
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
 
-# Standard options:
 opt_dry_run=false
-opt_help=false
 opt_quiet=false
 opt_verbose=false
-opt_warning=:
 
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
+# Categories 'all' and 'none' are always available.  Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'.  Set
+# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+    $debug_cmd
+
+    test -t 1 && {
+      # COLORTERM and USE_ANSI_COLORS environment variables take
+      # precedence, because most terminfo databases neglect to describe
+      # whether color sequences are supported.
+      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+      if test 1 = "$USE_ANSI_COLORS"; then
+        # Standard ANSI escape sequences
+        tc_reset=''
+        tc_bold='';   tc_standout=''
+        tc_red='';   tc_green=''
+        tc_blue='';  tc_cyan=''
+      else
+        # Otherwise trust the terminfo database after all.
+        test -n "`tput sgr0 2>/dev/null`" && {
+          tc_reset=`tput sgr0`
+          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+          tc_standout=$tc_bold
+          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+        }
+      fi
+    }
+
+    require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+  # We should try to minimise forks, especially on Windows where they are
+  # unreasonably slow, so skip the feature probes when bash or zsh are
+  # being used:
+  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+    : ${_G_HAVE_ARITH_OP="yes"}
+    : ${_G_HAVE_XSI_OPS="yes"}
+    # The += operator was introduced in bash 3.1
+    case $BASH_VERSION in
+      [12].* | 3.0 | 3.0*) ;;
+      *)
+        : ${_G_HAVE_PLUSEQ_OP="yes"}
+        ;;
+    esac
+  fi
+
+  # _G_HAVE_PLUSEQ_OP
+  # Can be empty, in which case the shell is probed, "yes" if += is
+  # useable or anything else if it does not work.
+  test -z "$_G_HAVE_PLUSEQ_OP" \
+    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+    && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_append ()
+  {
+    $debug_cmd
+
+    eval "$1+=\$2"
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_append ()
+  {
+    $debug_cmd
+
+    eval "$1=\$$1\$2"
+  }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+  eval 'func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1+=\\ \$func_quote_for_eval_result"
+  }'
+else
+  func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+  }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE.  For example:
+#
+#   func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+    $debug_cmd
+
+    eval _G_current_value='`$ECHO $'$1'`'
+    _G_delim=`expr "$2" : '\(.\)'`
+
+    case $_G_delim$_G_current_value$_G_delim in
+      *"$2$_G_delim"*) ;;
+      *) func_append "$@" ;;
+    esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+  test -z "$_G_HAVE_ARITH_OP" \
+    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+    && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+  eval 'func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=`expr "$@"`
+  }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+        */*) func_dirname_result=${1%/*}$2 ;;
+        *  ) func_dirname_result=$3        ;;
+      esac'
+
+else
+  # ...otherwise fall back to using sed.
+  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
+      if test "X$func_dirname_result" = "X$1"; then
+        func_dirname_result=$3
+      else
+        func_append func_dirname_result "$2"
+      fi'
+fi
+
+eval 'func_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+    $debug_cmd
+
+    '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+    '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
 func_echo ()
 {
-    $ECHO "$progname${mode+: }$mode: $*"
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname: $_G_line"
+    done
+    IFS=$func_echo_IFS
 }
 
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
 {
-    $opt_verbose && func_echo ${1+"$@"}
+    $ECHO "$*"
+}
 
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    _G_infix=$1; shift
+    _G_indent=$_G_infix
+    _G_prefix="$progname: $_G_infix: "
+    _G_message=$*
+
+    # Strip color escape sequences before counting printable length
+    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+    do
+      test -n "$_G_tc" && {
+        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+      }
+    done
+    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
+
+    func_echo_infix_1_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_infix_1_IFS
+      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+      _G_prefix=$_G_indent
+    done
+    IFS=$func_echo_infix_1_IFS
 }
 
-# func_error arg...
+
+# func_error ARG...
+# -----------------
 # Echo program name prefixed message to standard error.
 func_error ()
 {
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    $debug_cmd
+
+    func_error "$*"
+    exit $EXIT_FAILURE
 }
 
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $debug_cmd
+
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+  test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+  }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    $debug_cmd
+
+    _G_directory_path=$1
+    _G_dir_list=
+
+    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+      # Protect directory names starting with '-'
+      case $_G_directory_path in
+        -*) _G_directory_path=./$_G_directory_path ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$_G_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        _G_dir_list=$_G_directory_path:$_G_dir_list
+
+        # If the last portion added has no slash in it, the list is done
+        case $_G_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+      done
+      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+      func_mkdir_p_IFS=$IFS; IFS=:
+      for _G_dir in $_G_dir_list; do
+	IFS=$func_mkdir_p_IFS
+        # mkdir can fail with a 'File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$_G_dir" 2>/dev/null || :
+      done
+      IFS=$func_mkdir_p_IFS
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$_G_directory_path" || \
+        func_fatal_error "Failed to create '$1'"
+    fi
+}
+
+
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
+{
+    $debug_cmd
+
+    _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+    if test : = "$opt_dry_run"; then
+      # Return a directory name, but don't create it in dry-run mode
+      _G_tmpdir=$_G_template-$$
+    else
+
+      # If mktemp works, use that first and foremost
+      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$_G_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+        func_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$_G_tmpdir"
+        umask $func_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$_G_tmpdir" || \
+        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+    fi
+
+    $ECHO "$_G_tmpdir"
+}
+
+
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
+{
+    $debug_cmd
+
+    # These SED scripts presuppose an absolute path with a trailing slash.
+    _G_pathcar='s|^/\([^/]*\).*$|\1|'
+    _G_pathcdr='s|^/[^/]*||'
+    _G_removedotparts=':dotsl
+		s|/\./|/|g
+		t dotsl
+		s|/\.$|/|'
+    _G_collapseslashes='s|/\{1,\}|/|g'
+    _G_finalslash='s|/*$|/|'
+
+    # Start from root dir and reassemble the path.
+    func_normal_abspath_result=
+    func_normal_abspath_tpath=$1
+    func_normal_abspath_altnamespace=
+    case $func_normal_abspath_tpath in
+      "")
+        # Empty path, that just means $cwd.
+        func_stripname '' '/' "`pwd`"
+        func_normal_abspath_result=$func_stripname_result
+        return
+        ;;
+      # The next three entries are used to spot a run of precisely
+      # two leading slashes without using negated character classes;
+      # we take advantage of case's first-match behaviour.
+      ///*)
+        # Unusual form of absolute path, do nothing.
+        ;;
+      //*)
+        # Not necessarily an ordinary path; POSIX reserves leading '//'
+        # and for example Cygwin uses it to access remote file shares
+        # over CIFS/SMB, so we conserve a leading double slash if found.
+        func_normal_abspath_altnamespace=/
+        ;;
+      /*)
+        # Absolute path, do nothing.
+        ;;
+      *)
+        # Relative path, prepend $cwd.
+        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+        ;;
+    esac
+
+    # Cancel out all the simple stuff to save iterations.  We also want
+    # the path to end with a slash for ease of parsing, so make sure
+    # there is one (and only one) here.
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+    while :; do
+      # Processed it all yet?
+      if test / = "$func_normal_abspath_tpath"; then
+        # If we ascended to the root using ".." the result may be empty now.
+        if test -z "$func_normal_abspath_result"; then
+          func_normal_abspath_result=/
+        fi
+        break
+      fi
+      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcar"`
+      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcdr"`
+      # Figure out what to do with it
+      case $func_normal_abspath_tcomponent in
+        "")
+          # Trailing empty path component, ignore it.
+          ;;
+        ..)
+          # Parent dir; strip last assembled component from result.
+          func_dirname "$func_normal_abspath_result"
+          func_normal_abspath_result=$func_dirname_result
+          ;;
+        *)
+          # Actual path component, append it.
+          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+          ;;
+      esac
+    done
+    # Restore leading double-slash if one was found on entry.
+    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+    $debug_cmd
+
+    $opt_quiet || func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+    $debug_cmd
+
+    func_relative_path_result=
+    func_normal_abspath "$1"
+    func_relative_path_tlibdir=$func_normal_abspath_result
+    func_normal_abspath "$2"
+    func_relative_path_tbindir=$func_normal_abspath_result
+
+    # Ascend the tree starting from libdir
+    while :; do
+      # check if we have found a prefix of bindir
+      case $func_relative_path_tbindir in
+        $func_relative_path_tlibdir)
+          # found an exact match
+          func_relative_path_tcancelled=
+          break
+          ;;
+        $func_relative_path_tlibdir*)
+          # found a matching prefix
+          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+          func_relative_path_tcancelled=$func_stripname_result
+          if test -z "$func_relative_path_result"; then
+            func_relative_path_result=.
+          fi
+          break
+          ;;
+        *)
+          func_dirname $func_relative_path_tlibdir
+          func_relative_path_tlibdir=$func_dirname_result
+          if test -z "$func_relative_path_tlibdir"; then
+            # Have to descend all the way to the root!
+            func_relative_path_result=../$func_relative_path_result
+            func_relative_path_tcancelled=$func_relative_path_tbindir
+            break
+          fi
+          func_relative_path_result=../$func_relative_path_result
+          ;;
+      esac
+    done
+
+    # Now calculate path; take care to avoid doubling-up slashes.
+    func_stripname '' '/' "$func_relative_path_result"
+    func_relative_path_result=$func_stripname_result
+    func_stripname '/' '/' "$func_relative_path_tcancelled"
+    if test -n "$func_stripname_result"; then
+      func_append func_relative_path_result "/$func_stripname_result"
+    fi
+
+    # Normalisation. If bindir is libdir, return '.' else relative path.
+    if test -n "$func_relative_path_result"; then
+      func_stripname './' '' "$func_relative_path_result"
+      func_relative_path_result=$func_stripname_result
+    fi
+
+    test -n "$func_relative_path_result" || func_relative_path_result=.
+
+    :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+#   i) func_quote_for_eval_result
+#      double-quoted, suitable for a subsequent eval
+#  ii) func_quote_for_eval_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.
+func_quote_for_eval ()
+{
+    $debug_cmd
+
+    func_quote_for_eval_unquoted_result=
+    func_quote_for_eval_result=
+    while test 0 -lt $#; do
+      case $1 in
+        *[\\\`\"\$]*)
+	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+        *)
+          _G_unquoted_arg=$1 ;;
+      esac
+      if test -n "$func_quote_for_eval_unquoted_result"; then
+	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+      else
+        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+      fi
+
+      case $_G_unquoted_arg in
+        # Double-quote args containing shell metacharacters to delay
+        # word splitting, command substitution and variable expansion
+        # for a subsequent eval.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+          _G_quoted_arg=\"$_G_unquoted_arg\"
+          ;;
+        *)
+          _G_quoted_arg=$_G_unquoted_arg
+	  ;;
+      esac
+
+      if test -n "$func_quote_for_eval_result"; then
+	func_append func_quote_for_eval_result " $_G_quoted_arg"
+      else
+        func_append func_quote_for_eval_result "$_G_quoted_arg"
+      fi
+      shift
+    done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    $debug_cmd
+
+    case $1 in
+      *[\\\`\"]*)
+	_G_arg=`$ECHO "$1" | $SED \
+	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        _G_arg=$1 ;;
+    esac
+
+    case $_G_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        _G_arg=\"$_G_arg\"
+        ;;
+    esac
+
+    func_quote_for_expand_result=$_G_arg
+}
+
+
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_stripname ()
+  {
+    $debug_cmd
+
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary variable first.
+    func_stripname_result=$3
+    func_stripname_result=${func_stripname_result#"$1"}
+    func_stripname_result=${func_stripname_result%"$2"}
+  }'
+else
+  func_stripname ()
+  {
+    $debug_cmd
+
+    case $2 in
+      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+    esac
+  }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    func_quote_for_expand "$_G_cmd"
+    eval "func_notquiet $func_quote_for_expand_result"
+
+    $opt_dry_run || {
+      eval "$_G_cmd"
+      _G_status=$?
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    $opt_quiet || {
+      func_quote_for_expand "$_G_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    $opt_dry_run || {
+      eval "$_G_user_locale
+	    $_G_cmd"
+      _G_status=$?
+      eval "$_G_safe_locale"
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_tr_sh
+# ----------
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+    $debug_cmd
+
+    case $1 in
+    [0-9]* | *[!a-zA-Z0-9_]*)
+      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+      ;;
+    * )
+      func_tr_sh_result=$1
+      ;;
+    esac
+}
+
+
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $debug_cmd
+
+    $opt_verbose && func_echo "$*"
+
+    :
+}
+
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+    $debug_cmd
+
+    # CATEGORY must be in the warning_categories list!
+    case " $warning_categories " in
+      *" $1 "*) ;;
+      *) func_internal_error "invalid warning category '$1'" ;;
+    esac
+
+    _G_category=$1
+    shift
+
+    case " $opt_warning_types " in
+      *" $_G_category "*) $warning_func ${1+"$@"} ;;
+    esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+    $debug_cmd
+
+    printf '%s\n%s\n' "$1" "$2" \
+      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2014-01-07.03; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+#   #!/bin/sh
+#   . relative/path/to/funclib.sh
+#   . relative/path/to/options-parser
+#   scriptversion=1.0
+#   func_options ${1+"$@"}
+#   eval set dummy "$func_options_result"; shift
+#   ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'.  Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+       --debug        enable verbose shell tracing
+   -W, --warnings=CATEGORY
+                      report the warnings falling in CATEGORY [all]
+   -v, --verbose      verbosely report processing
+       --version      print version information and exit
+   -h, --help         print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+       'all'          show all warnings
+       'none'         turn off all the warnings
+       'error'        warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code.  A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+    $debug_cmd
+
+    func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not accept hook functions." ;;
+    esac
+
+    eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+    $debug_cmd
+
+    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+    esac
+
+    eval _G_hook_fns=\$$1_hooks; shift
+
+    for _G_hook in $_G_hook_fns; do
+      eval $_G_hook '"$@"'
+
+      # store returned options list back into positional
+      # parameters for next 'cmd' execution.
+      eval _G_hook_result=\$${_G_hook}_result
+      eval set dummy "$_G_hook_result"; shift
+    done
+
+    func_quote_for_eval ${1+"$@"}
+    func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'.  Like this:
+#
+#    my_options_prep ()
+#    {
+#        $debug_cmd
+#
+#        # Extend the existing usage message.
+#        usage_message=$usage_message'
+#      -s, --silent       don'\''t print informational messages
+#    '
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_options_prep_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_options_prep my_options_prep
+#
+#
+#    my_silent_option ()
+#    {
+#        $debug_cmd
+#
+#        # Note that for efficiency, we parse as many options as we can
+#        # recognise in a loop before passing the remainder back to the
+#        # caller on the first unrecognised argument we encounter.
+#        while test $# -gt 0; do
+#          opt=$1; shift
+#          case $opt in
+#            --silent|-s) opt_silent=: ;;
+#            # Separate non-argument short options:
+#            -s*)         func_split_short_opt "$_G_opt"
+#                         set dummy "$func_split_short_opt_name" \
+#                             "-$func_split_short_opt_arg" ${1+"$@"}
+#                         shift
+#                         ;;
+#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
+#          esac
+#        done
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_silent_option_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_parse_options my_silent_option
+#
+#
+#    my_option_validation ()
+#    {
+#        $debug_cmd
+#
+#        $opt_silent && $opt_verbose && func_fatal_help "\
+#    '--silent' and '--verbose' options are mutually exclusive."
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_option_validation_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse.  It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
 {
-    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+    $debug_cmd
 
-    # bash bug again:
-    :
-}
+    func_options_prep ${1+"$@"}
+    eval func_parse_options \
+        ${func_options_prep_result+"$func_options_prep_result"}
+    eval func_validate_options \
+        ${func_parse_options_result+"$func_parse_options_result"}
 
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
+    eval func_run_hooks func_options \
+        ${func_validate_options_result+"$func_validate_options_result"}
 
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
+    # save modified positional parameters for caller
+    func_options_result=$func_run_hooks_result
 }
-help="Try \`$progname --help' for more information."  ## default
 
 
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters.  If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
 {
-    $GREP "$1" "$2" >/dev/null 2>&1
+    $debug_cmd
+
+    # Option defaults:
+    opt_verbose=false
+    opt_warning_types=
+
+    func_run_hooks func_options_prep ${1+"$@"}
+
+    # save modified positional parameters for caller
+    func_options_prep_result=$func_run_hooks_result
 }
 
 
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
 {
-    my_directory_path="$1"
-    my_dir_list=
+    $debug_cmd
 
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+    func_parse_options_result=
 
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
+    # this just eases exit handling
+    while test $# -gt 0; do
+      # Defer to hook functions for initial option parsing, so they
+      # get priority in the event of reusing an option name.
+      func_run_hooks func_parse_options ${1+"$@"}
 
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
+      # Adjust func_parse_options positional parameters to match
+      eval set dummy "$func_run_hooks_result"; shift
 
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
+      # Break out of the loop if we already parsed every option.
+      test $# -gt 0 || break
 
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --debug|-x)   debug_cmd='set -x'
+                      func_echo "enabling shell trace mode"
+                      $debug_cmd
+                      ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                      set dummy --warnings none ${1+"$@"}
+                      shift
+		      ;;
 
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
+        --warnings|--warning|-W)
+                      test $# = 0 && func_missing_arg $_G_opt && break
+                      case " $warning_categories $1" in
+                        *" $1 "*)
+                          # trailing space prevents matching last $1 above
+                          func_append_uniq opt_warning_types " $1"
+                          ;;
+                        *all)
+                          opt_warning_types=$warning_categories
+                          ;;
+                        *none)
+                          opt_warning_types=none
+                          warning_func=:
+                          ;;
+                        *error)
+                          opt_warning_types=$warning_categories
+                          warning_func=func_fatal_error
+                          ;;
+                        *)
+                          func_fatal_error \
+                             "unsupported warning category: '$1'"
+                          ;;
+                      esac
+                      shift
+                      ;;
+
+        --verbose|-v) opt_verbose=: ;;
+        --version)    func_version ;;
+        -\?|-h)       func_usage ;;
+        --help)       func_help ;;
+
+	# Separate optargs to long options (plugins may need this):
+	--*=*)        func_split_equals "$_G_opt"
+	              set dummy "$func_split_equals_lhs" \
+                          "$func_split_equals_rhs" ${1+"$@"}
+                      shift
+                      ;;
+
+       # Separate optargs to short options:
+        -W*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        # Separate non-argument short options:
+        -\?*|-h*|-v*|-x*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "-$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        --)           break ;;
+        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
+        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+      esac
+    done
 
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    func_parse_options_result=$func_quote_for_eval_result
 }
 
 
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
 {
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
+    $debug_cmd
 
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
+    # Display all warnings if -W was not given.
+    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
 
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+    func_run_hooks func_validate_options ${1+"$@"}
 
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
+    # Bail if the options were screwed!
+    $exit_cmd $EXIT_FAILURE
 
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
+    # save modified positional parameters for caller
+    func_validate_options_result=$func_run_hooks_result
+}
 
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
 
-    $ECHO "X$my_tmpdir" | $Xsed
-}
 
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
 
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
 {
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
+    $debug_cmd
 
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
+    eval \$ECHO \""Usage: $usage"\"
+    eval \$ECHO \""$fatal_help"\"
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
 }
 
 
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
+func_help ()
 {
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "X$1" | $Xsed \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
+    $debug_cmd
 
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
+    func_usage_message
+    $ECHO "$long_help_message"
+    exit 0
 }
 
 
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
+# func_missing_arg ARGNAME
+# ------------------------
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
 {
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
+    $debug_cmd
 
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
+    func_error "Missing argument for '$1'."
+    exit_cmd=exit
 }
 
 
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
 
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_equals ()
+  {
+      $debug_cmd
 
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
+      func_split_equals_lhs=${1%%=*}
+      func_split_equals_rhs=${1#*=}
+      test "x$func_split_equals_lhs" = "x$1" \
+        && func_split_equals_rhs=
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_equals ()
+  {
+      $debug_cmd
 
+      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+      func_split_equals_rhs=
+      test "x$func_split_equals_lhs" = "x$1" \
+        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+  }
+fi #func_split_equals
 
 
+# func_split_short_opt SHORTOPT
+# -----------------------------
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_short_opt ()
+  {
+      $debug_cmd
 
+      func_split_short_opt_arg=${1#??}
+      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+  }
+fi #func_split_short_opt
 
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
 
 # func_usage
+# ----------
 # Echo short help message to standard output and exit.
 func_usage ()
 {
-    $SED -n '/^# Usage:/,/# -h/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    $ECHO
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+    exit 0
 }
 
-# func_help
-# Echo long help message to standard output and exit.
-func_help ()
+
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    echo
+    $SED -n 's|^# ||
+        /^Written by/{
+          x;p;x
+        }
+	h
+	/^Written by/q' < "$progpath"
+    echo
+    eval \$ECHO \""$usage_message"\"
+}
+
+
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
 {
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-	p
-     }' < "$progpath"
+    $debug_cmd
+
+    printf '%s\n' "$progname $scriptversion"
+    $SED -n '
+        /(C)/!b go
+        :more
+        /\./!{
+          N
+          s|\n# | |
+          b more
+        }
+        :go
+        /^# Written by /,/# warranty; / {
+          s|^# ||
+          s|^# *$||
+          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+          p
+        }
+        /^# Written by / {
+          s|^# ||
+          p
+        }
+        /^warranty; /q' < "$progpath"
+
     exit $?
 }
 
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.6'
+
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
 {
-    func_error "missing argument for $1"
-    exit_cmd=exit
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+    done
+    IFS=$func_echo_IFS
 }
 
-exit_cmd=:
+
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
+{
+    $debug_cmd
+
+    $warning_func ${1+"$@"}
+}
 
 
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+       --config             show all configuration variables
+       --debug              enable verbose shell tracing
+   -n, --dry-run            display commands without modifying any files
+       --features           display basic configuration information and exit
+       --mode=MODE          use operation mode MODE
+       --no-warnings        equivalent to '-Wnone'
+       --preserve-dup-deps  don't remove duplicate dependency libraries
+       --quiet, --silent    don't print informational messages
+       --tag=TAG            use configuration variables from tag TAG
+   -v, --verbose            print more informational messages than default
+       --version            print version information
+   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
+   -h, --help, --help-all   print short, long, or detailed help message
+"
 
+# Additional text appended to 'usage_message' in response to '--help'.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
+
+MODE must be one of the following:
+
+       clean           remove files from the build directory
+       compile         compile a source file into a libtool object
+       execute         automatically set library path, then run a program
+       finish          complete the installation of libtool libraries
+       install         install libraries or executables
+       link            create a library or an executable
+       uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+       host-triplet:   $host
+       shell:          $SHELL
+       compiler:       $LTCC
+       compiler flags: $LTCFLAGS
+       linker:         $LD (gnu? $with_gnu_ld)
+       version:        $progname (GNU libtool) 2.4.6
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool at gnu.org>.
+GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
 
 
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
 
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
 
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_lo2o ()
+  {
+    case $1 in
+      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+      *   ) func_lo2o_result=$1               ;;
+    esac
+  }'
 
-# Global variables.
-# $mode is unset
-nonopt=
-execute_dlfiles=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
+  # func_xform LIBOBJ-OR-SOURCE
+  # ---------------------------
+  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+  # suffix to a '.lo' libtool-object suffix.
+  eval 'func_xform ()
+  {
+    func_xform_result=${1%.*}.lo
+  }'
+else
+  # ...otherwise fall back to using sed.
+  func_lo2o ()
+  {
+    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+  }
 
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
+  func_xform ()
+  {
+    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+  }
+fi
 
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
 
-# func_fatal_configuration arg...
+# func_fatal_configuration ARG...
+# -------------------------------
 # Echo program name prefixed message to standard error, followed by
 # a configuration failure hint, and exit.
 func_fatal_configuration ()
 {
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
+    func__fatal_error ${1+"$@"} \
+      "See the $PACKAGE documentation for more information." \
+      "Fatal configuration error."
 }
 
 
 # func_config
+# -----------
 # Display the configuration for all the tags in this script.
 func_config ()
 {
@@ -632,279 +2149,371 @@ func_config ()
     exit $?
 }
 
+
 # func_features
+# -------------
 # Display the features supported by this script.
 func_features ()
 {
-    $ECHO "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      $ECHO "enable shared libraries"
+    echo "host: $host"
+    if test yes = "$build_libtool_libs"; then
+      echo "enable shared libraries"
     else
-      $ECHO "disable shared libraries"
+      echo "disable shared libraries"
     fi
-    if test "$build_old_libs" = yes; then
-      $ECHO "enable static libraries"
+    if test yes = "$build_old_libs"; then
+      echo "enable static libraries"
     else
-      $ECHO "disable static libraries"
+      echo "disable static libraries"
     fi
 
     exit $?
 }
 
-# func_enable_tag tagname
+
+# func_enable_tag TAGNAME
+# -----------------------
 # Verify that TAGNAME is valid, and either flag an error and exit, or
 # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
 # variable here.
 func_enable_tag ()
 {
-  # Global variable:
-  tagname="$1"
+    # Global variable:
+    tagname=$1
 
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+    sed_extractcf=/$re_begincf/,/$re_endcf/p
 
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
+    # Validate tagname.
+    case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+        func_fatal_error "invalid tag name: $tagname"
+        ;;
+    esac
 
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
+    # Don't test for the "default" C tag, as we know it's
+    # there but not specially marked.
+    case $tagname in
+        CC) ;;
     *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
+        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	  taglist="$taglist $tagname"
+
+	  # Evaluate the configuration.  Be careful to quote the path
+	  # and the sed script, to avoid splitting on whitespace, but
+	  # also don't use non-portable quotes within backquotes within
+	  # quotes we have to do it in 2 steps:
+	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	  eval "$extractedcf"
+        else
+	  func_error "ignoring unknown tag $tagname"
+        fi
+        ;;
+    esac
+}
+
+
+# func_check_version_match
+# ------------------------
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+    if test "$package_revision" != "$macro_revision"; then
+      if test "$VERSION" != "$macro_version"; then
+        if test -z "$macro_version"; then
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        else
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        fi
       else
-	func_error "ignoring unknown tag $tagname"
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
       fi
+
+      exit $EXIT_MISMATCH
+    fi
+}
+
+
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+    $debug_mode
+
+    # Option defaults:
+    opt_config=false
+    opt_dlopen=
+    opt_dry_run=false
+    opt_help=false
+    opt_mode=
+    opt_preserve_dup_deps=false
+    opt_quiet=false
+
+    nonopt=
+    preserve_args=
+
+    # Shorthand for --mode=foo, only valid as the first argument
+    case $1 in
+    clean|clea|cle|cl)
+      shift; set dummy --mode clean ${1+"$@"}; shift
       ;;
-  esac
+    compile|compil|compi|comp|com|co|c)
+      shift; set dummy --mode compile ${1+"$@"}; shift
+      ;;
+    execute|execut|execu|exec|exe|ex|e)
+      shift; set dummy --mode execute ${1+"$@"}; shift
+      ;;
+    finish|finis|fini|fin|fi|f)
+      shift; set dummy --mode finish ${1+"$@"}; shift
+      ;;
+    install|instal|insta|inst|ins|in|i)
+      shift; set dummy --mode install ${1+"$@"}; shift
+      ;;
+    link|lin|li|l)
+      shift; set dummy --mode link ${1+"$@"}; shift
+      ;;
+    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+      shift; set dummy --mode uninstall ${1+"$@"}; shift
+      ;;
+    esac
+
+    # Pass back the list of options.
+    func_quote_for_eval ${1+"$@"}
+    libtool_options_prep_result=$func_quote_for_eval_result
 }
+func_add_hook func_options_prep libtool_options_prep
+
 
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
 {
+    $debug_cmd
+
+    # Perform our own loop to consume as many options as possible in
+    # each iteration.
+    while test $# -gt 0; do
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --dry-run|--dryrun|-n)
+                        opt_dry_run=:
+                        ;;
+
+        --config)       func_config ;;
+
+        --dlopen|-dlopen)
+                        opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+                        shift
+                        ;;
+
+        --preserve-dup-deps)
+                        opt_preserve_dup_deps=: ;;
+
+        --features)     func_features ;;
+
+        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
+
+        --help)         opt_help=: ;;
+
+        --help-all)     opt_help=': help-all' ;;
+
+        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_mode=$1
+                        case $1 in
+                          # Valid mode arguments:
+                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+                          # Catch anything else as an error
+                          *) func_error "invalid argument for $_G_opt"
+                             exit_cmd=exit
+                             break
+                             ;;
+                        esac
+                        shift
+                        ;;
+
+        --no-silent|--no-quiet)
+                        opt_quiet=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                        opt_warning=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-verbose)
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --silent|--quiet)
+                        opt_quiet=:
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_tag=$1
+                        func_append preserve_args " $_G_opt $1"
+                        func_enable_tag "$1"
+                        shift
+                        ;;
+
+        --verbose|-v)   opt_quiet=false
+                        opt_verbose=:
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+	# An option not handled by this hook function:
+        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
+      esac
+    done
 
-  # Shorthand for --mode=foo, only valid as the first argument
-  case $1 in
-  clean|clea|cle|cl)
-    shift; set dummy --mode clean ${1+"$@"}; shift
-    ;;
-  compile|compil|compi|comp|com|co|c)
-    shift; set dummy --mode compile ${1+"$@"}; shift
-    ;;
-  execute|execut|execu|exec|exe|ex|e)
-    shift; set dummy --mode execute ${1+"$@"}; shift
-    ;;
-  finish|finis|fini|fin|fi|f)
-    shift; set dummy --mode finish ${1+"$@"}; shift
-    ;;
-  install|instal|insta|inst|ins|in|i)
-    shift; set dummy --mode install ${1+"$@"}; shift
-    ;;
-  link|lin|li|l)
-    shift; set dummy --mode link ${1+"$@"}; shift
-    ;;
-  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-    shift; set dummy --mode uninstall ${1+"$@"}; shift
-    ;;
-  esac
 
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
-    opt="$1"
-    shift
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
+
+
+
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+    # save first non-option argument
+    if test 0 -lt $#; then
+      nonopt=$1
+      shift
+    fi
 
-    case $opt in
-      --config)		func_config					;;
-
-      --debug)		preserve_args="$preserve_args $opt"
-			func_echo "enabling shell trace mode"
-			opt_debug='set -x'
-			$opt_debug
-			;;
-
-      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			execute_dlfiles="$execute_dlfiles $1"
-			shift
-			;;
-
-      --dry-run | -n)	opt_dry_run=:					;;
-      --features)       func_features					;;
-      --finish)		mode="finish"					;;
-
-      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			case $1 in
-			  # Valid mode arguments:
-			  clean)	;;
-			  compile)	;;
-			  execute)	;;
-			  finish)	;;
-			  install)	;;
-			  link)		;;
-			  relink)	;;
-			  uninstall)	;;
-
-			  # Catch anything else as an error
-			  *) func_error "invalid argument for $opt"
-			     exit_cmd=exit
-			     break
-			     ;;
-		        esac
-
-			mode="$1"
-			shift
-			;;
-
-      --preserve-dup-deps)
-			opt_duplicate_deps=:				;;
-
-      --quiet|--silent)	preserve_args="$preserve_args $opt"
-			opt_silent=:
-			;;
-
-      --verbose| -v)	preserve_args="$preserve_args $opt"
-			opt_silent=false
-			;;
-
-      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			preserve_args="$preserve_args $opt $1"
-			func_enable_tag "$1"	# tagname is set here
-			shift
-			;;
-
-      # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-			func_opt_split "$opt"
-			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-			shift
-			;;
-
-      -\?|-h)		func_usage					;;
-      --help)		opt_help=:					;;
-      --version)	func_version					;;
-
-      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
-
-      *)		nonopt="$opt"
-			break
-			;;
+    # preserve --debug
+    test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+    case $host in
+      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+        # don't eliminate duplications in $postdeps and $predeps
+        opt_duplicate_compiler_generated_deps=:
+        ;;
+      *)
+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+        ;;
     esac
-  done
 
+    $opt_help || {
+      # Sanity checks first:
+      func_check_version_match
 
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
-      ;;
-  esac
+      test yes != "$build_libtool_libs" \
+        && test yes != "$build_old_libs" \
+        && func_fatal_configuration "not configured to build any kind of library"
 
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
+      # Darwin sucks
+      eval std_shrext=\"$shrext_cmds\"
 
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
+      # Only execute mode is allowed to have -dlopen flags.
+      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+        func_error "unrecognized option '-dlopen'"
+        $ECHO "$help" 1>&2
+        exit $EXIT_FAILURE
       fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
 
-    exit $EXIT_MISMATCH
-  fi
+      # Change the help message to a mode-specific one.
+      generic_help=$help
+      help="Try '$progname --help --mode=$opt_mode' for more information."
+    }
+
+    # Pass back the unparsed argument list
+    func_quote_for_eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_for_eval_result
 }
+func_add_hook func_validate_options libtool_validate_options
 
 
-## ----------- ##
-##    Main.    ##
-## ----------- ##
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
 
-$opt_help || {
-  # Sanity checks first:
-  func_check_version_match
 
-  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-    func_fatal_configuration "not configured to build any kind of library"
-  fi
 
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+## ----------- ##
+##    Main.    ##
+## ----------- ##
 
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
 
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
+# Global variables.
+extracted_archives=
+extracted_serial=0
 
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
 
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    func_error "unrecognized option \`-dlopen'"
-    $ECHO "$help" 1>&2
-    exit $EXIT_FAILURE
-  fi
 
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
 }
 
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
 
 # func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
 # This function is only a basic sanity check; it will hardly flush out
 # determined imposters.
 func_lalib_p ()
 {
     test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
 }
 
 # func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
 # This function implements the same check as func_lalib_p without
 # resorting to external programs.  To this end, it redirects stdin and
 # closes it afterwards, without saving the original file descriptor.
 # As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
+# fatal anyway.  Works if 'file' does not exist.
 func_lalib_unsafe_p ()
 {
     lalib_p=no
@@ -912,13 +2521,13 @@ func_lalib_unsafe_p ()
 	for lalib_p_l in 1 2 3 4
 	do
 	    read lalib_p_line
-	    case "$lalib_p_line" in
+	    case $lalib_p_line in
 		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
 	    esac
 	done
 	exec 0<&5 5<&-
     fi
-    test "$lalib_p" = yes
+    test yes = "$lalib_p"
 }
 
 # func_ltwrapper_script_p file
@@ -927,7 +2536,8 @@ func_lalib_unsafe_p ()
 # determined imposters.
 func_ltwrapper_script_p ()
 {
-    func_lalib_p "$1"
+    test -f "$1" &&
+      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
 }
 
 # func_ltwrapper_executable_p file
@@ -950,12 +2560,9 @@ func_ltwrapper_executable_p ()
 # temporary ltwrapper_script.
 func_ltwrapper_scriptname ()
 {
-    func_ltwrapper_scriptname_result=""
-    if func_ltwrapper_executable_p "$1"; then
-	func_dirname_and_basename "$1" "" "."
-	func_stripname '' '.exe' "$func_basename_result"
-	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-    fi
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
 }
 
 # func_ltwrapper_p file
@@ -974,11 +2581,13 @@ func_ltwrapper_p ()
 # FAIL_CMD may read-access the current command in variable CMD!
 func_execute_cmds ()
 {
-    $opt_debug
+    $debug_cmd
+
     save_ifs=$IFS; IFS='~'
     for cmd in $1; do
-      IFS=$save_ifs
+      IFS=$sp$nl
       eval cmd=\"$cmd\"
+      IFS=$save_ifs
       func_show_eval "$cmd" "${2-:}"
     done
     IFS=$save_ifs
@@ -990,10 +2599,11 @@ func_execute_cmds ()
 # Note that it is not necessary on cygwin/mingw to append a dot to
 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
 # behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
+# 'FILE.' does not work on cygwin managed mounts.
 func_source ()
 {
-    $opt_debug
+    $debug_cmd
+
     case $1 in
     */* | *\\*)	. "$1" ;;
     *)		. "./$1" ;;
@@ -1001,6 +2611,37 @@ func_source ()
 }
 
 
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case $lt_sysroot:$1 in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result='='$func_stripname_result
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
 # func_infer_tag arg
 # Infer tagged configuration to use if any are available and
 # if one wasn't chosen via the "--tag" command line option.
@@ -1009,32 +2650,37 @@ func_source ()
 # arg is usually of the form 'gcc ...'
 func_infer_tag ()
 {
-    $opt_debug
+    $debug_cmd
+
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
-        func_quote_for_eval "$arg"
-	CC_quoted="$CC_quoted $func_quote_for_eval_result"
+	func_append_quoted CC_quoted "$arg"
       done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
       case $@ in
       # Blanks in the command may have been stripped by the calling shell,
       # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
       # Blanks at the start of $base_compile will cause this to fail
       # if we don't check for them as well.
       *)
 	for z in $available_tags; do
 	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
 	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
 	    CC_quoted=
 	    for arg in $CC; do
 	      # Double-quote args containing other shell metacharacters.
-	      func_quote_for_eval "$arg"
-	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
+	      func_append_quoted CC_quoted "$arg"
 	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
 	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
 	      # The compiler in the base compile command matches
 	      # the one in the tagged configuration.
 	      # Assume this is the tagged configuration we want.
@@ -1049,7 +2695,7 @@ func_infer_tag ()
 	# line option must be used.
 	if test -z "$tagname"; then
 	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
+	  func_fatal_error "specify a tag with '--tag'"
 #	else
 #	  func_verbose "using $tagname tagged configuration"
 	fi
@@ -1059,51 +2705,570 @@ func_infer_tag ()
 }
 
 
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=$1
+    if test yes = "$build_libtool_libs"; then
+      write_lobj=\'$2\'
+    else
+      write_lobj=none
+    fi
+
+    if test yes = "$build_old_libs"; then
+      write_oldobj=\'$3\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "$write_libobj"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $debug_cmd
+
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result"; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $debug_cmd
+
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $debug_cmd
+
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $debug_cmd
+
+  if test -z "$2" && test -n "$1"; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  '$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result=$1
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $debug_cmd
+
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  '$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result=$3
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $debug_cmd
+
+  case $4 in
+  $1 ) func_to_host_path_result=$3$func_to_host_path_result
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via '$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $debug_cmd
+
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $debug_cmd
+
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result=$1
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_msys_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via '$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $debug_cmd
+
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd=func_convert_path_$func_stripname_result
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $debug_cmd
+
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result=$1
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_msys_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
 {
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
 
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
 
-# Name of the PIC object.
-pic_object=$write_lobj
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
 
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
 
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+  $debug_cmd
+
+  func_dll_def_p_tmp=`$SED -n \
+    -e 's/^[	 ]*//' \
+    -e '/^\(;.*\)*$/d' \
+    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
+    -e q \
+    "$1"`
+  test DEF = "$func_dll_def_p_tmp"
 }
 
+
 # func_mode_compile arg...
 func_mode_compile ()
 {
-    $opt_debug
+    $debug_cmd
+
     # Get the compilation command and the source file.
     base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
     suppress_opt=yes
     suppress_output=
     arg_mode=normal
@@ -1116,12 +3281,12 @@ func_mode_compile ()
       case $arg_mode in
       arg  )
 	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
+	lastarg=$arg
 	arg_mode=normal
 	;;
 
       target )
-	libobj="$arg"
+	libobj=$arg
 	arg_mode=normal
 	continue
 	;;
@@ -1131,18 +3296,18 @@ func_mode_compile ()
 	case $arg in
 	-o)
 	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
+	    func_fatal_error "you cannot specify '-o' more than once"
 	  arg_mode=target
 	  continue
 	  ;;
 
 	-pie | -fpie | -fPIE)
-          pie_flag="$pie_flag $arg"
+          func_append pie_flag " $arg"
 	  continue
 	  ;;
 
 	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later="$later $arg"
+	  func_append later " $arg"
 	  continue
 	  ;;
 
@@ -1160,18 +3325,17 @@ func_mode_compile ()
 	  func_stripname '-Wc,' '' "$arg"
 	  args=$func_stripname_result
 	  lastarg=
-	  save_ifs="$IFS"; IFS=','
+	  save_ifs=$IFS; IFS=,
 	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_quote_for_eval "$arg"
-	    lastarg="$lastarg $func_quote_for_eval_result"
+	    IFS=$save_ifs
+	    func_append_quoted lastarg "$arg"
 	  done
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
 	  func_stripname ' ' '' "$lastarg"
 	  lastarg=$func_stripname_result
 
 	  # Add the arguments to base_compile.
-	  base_compile="$base_compile $lastarg"
+	  func_append base_compile " $lastarg"
 	  continue
 	  ;;
 
@@ -1179,16 +3343,15 @@ func_mode_compile ()
 	  # Accept the current argument as the source file.
 	  # The previous "srcfile" becomes the current argument.
 	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
+	  lastarg=$srcfile
+	  srcfile=$arg
 	  ;;
 	esac  #  case $arg
 	;;
       esac    #  case $arg_mode
 
       # Aesthetically quote the previous argument.
-      func_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
+      func_append_quoted base_compile "$lastarg"
     done # for arg
 
     case $arg_mode in
@@ -1196,13 +3359,13 @@ func_mode_compile ()
       func_fatal_error "you must specify an argument for -Xcompile"
       ;;
     target)
-      func_fatal_error "you must specify a target with \`-o'"
+      func_fatal_error "you must specify a target with '-o'"
       ;;
     *)
       # Get the name of the library object.
       test -z "$libobj" && {
 	func_basename "$srcfile"
-	libobj="$func_basename_result"
+	libobj=$func_basename_result
       }
       ;;
     esac
@@ -1213,7 +3376,7 @@ func_mode_compile ()
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -1222,7 +3385,7 @@ func_mode_compile ()
     case $libobj in
     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
     *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      func_fatal_error "cannot determine name of library object from '$libobj'"
       ;;
     esac
 
@@ -1231,8 +3394,8 @@ func_mode_compile ()
     for arg in $later; do
       case $arg in
       -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
+	test yes = "$build_libtool_libs" \
+	  || func_fatal_configuration "cannot build a shared library"
 	build_old_libs=no
 	continue
 	;;
@@ -1258,17 +3421,17 @@ func_mode_compile ()
     func_quote_for_eval "$libobj"
     test "X$libobj" != "X$func_quote_for_eval_result" \
       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+      && func_warning "libobj name '$libobj' may not contain shell special characters."
     func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
+    objname=$func_basename_result
+    xdir=$func_dirname_result
+    lobj=$xdir$objdir/$objname
 
     test -z "$base_compile" && \
       func_fatal_help "you must specify a compilation command"
 
     # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
+    if test yes = "$build_old_libs"; then
       removelist="$obj $lobj $libobj ${libobj}T"
     else
       removelist="$lobj $libobj ${libobj}T"
@@ -1280,16 +3443,16 @@ func_mode_compile ()
       pic_mode=default
       ;;
     esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
       # non-PIC code in shared libraries is not supported
       pic_mode=default
     fi
 
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
+    if test no = "$compiler_c_o"; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+      lockfile=$output_obj.lock
     else
       output_obj=
       need_locks=no
@@ -1298,12 +3461,12 @@ func_mode_compile ()
 
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
+    if test yes = "$need_locks"; then
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
 	func_echo "Waiting for $lockfile to be removed"
 	sleep 2
       done
-    elif test "$need_locks" = warn; then
+    elif test warn = "$need_locks"; then
       if test -f "$lockfile"; then
 	$ECHO "\
 *** ERROR, $lockfile exists and contains:
@@ -1311,7 +3474,7 @@ func_mode_compile ()
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -1319,26 +3482,25 @@ compiler."
 	$opt_dry_run || $RM $removelist
 	exit $EXIT_FAILURE
       fi
-      removelist="$removelist $output_obj"
+      func_append removelist " $output_obj"
       $ECHO "$srcfile" > "$lockfile"
     fi
 
     $opt_dry_run || $RM $removelist
-    removelist="$removelist $lockfile"
+    func_append removelist " $lockfile"
     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
 
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
     func_quote_for_eval "$srcfile"
     qsrcfile=$func_quote_for_eval_result
 
     # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
+    if test yes = "$build_libtool_libs"; then
       # Without this assignment, base_compile gets emptied.
       fbsd_hideous_sh_bug=$base_compile
 
-      if test "$pic_mode" != no; then
+      if test no != "$pic_mode"; then
 	command="$base_compile $qsrcfile $pic_flag"
       else
 	# Don't build PIC code
@@ -1349,13 +3511,13 @@ compiler."
 
       if test -z "$output_obj"; then
 	# Place PIC objects in $objdir
-	command="$command -o $lobj"
+	func_append command " -o $lobj"
       fi
 
       func_show_eval_locale "$command"	\
           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
-      if test "$need_locks" = warn &&
+      if test warn = "$need_locks" &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
 	$ECHO "\
 *** ERROR, $lockfile contains:
@@ -1366,7 +3528,7 @@ $srcfile
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -1382,29 +3544,29 @@ compiler."
       fi
 
       # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
+      if test yes = "$suppress_opt"; then
 	suppress_output=' >/dev/null 2>&1'
       fi
     fi
 
     # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
+    if test yes = "$build_old_libs"; then
+      if test yes != "$pic_mode"; then
 	# Don't build PIC code
 	command="$base_compile $qsrcfile$pie_flag"
       else
 	command="$base_compile $qsrcfile $pic_flag"
       fi
-      if test "$compiler_c_o" = yes; then
-	command="$command -o $obj"
+      if test yes = "$compiler_c_o"; then
+	func_append command " -o $obj"
       fi
 
       # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
+      func_append command "$suppress_output"
       func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
-      if test "$need_locks" = warn &&
+      if test warn = "$need_locks" &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
 	$ECHO "\
 *** ERROR, $lockfile contains:
@@ -1415,7 +3577,7 @@ $srcfile
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -1435,7 +3597,7 @@ compiler."
       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
 
       # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
+      if test no != "$need_locks"; then
 	removelist=$lockfile
         $RM "$lockfile"
       fi
@@ -1445,13 +3607,13 @@ compiler."
 }
 
 $opt_help || {
-test "$mode" = compile && func_mode_compile ${1+"$@"}
+  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
 }
 
 func_mode_help ()
 {
     # We need to display help for each of the modes.
-    case $mode in
+    case $opt_mode in
       "")
         # Generic help is extracted from the usage comments
         # at the start of this file.
@@ -1465,7 +3627,7 @@ func_mode_help ()
 Remove files from the build directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
 to RM.
 
 If FILE is a libtool library, object or program, all the files associated
@@ -1482,17 +3644,18 @@ This mode accepts the following additional options:
 
   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
   -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a '.o' file suitable for static linking
+  -static           only build a '.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
 
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
 from the given SOURCEFILE.
 
 The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
         ;;
 
       execute)
@@ -1505,7 +3668,7 @@ This mode accepts the following additional options:
 
   -dlopen FILE      add the directory containing FILE to the library path
 
-This mode sets the library path environment variable according to \`-dlopen'
+This mode sets the library path environment variable according to '-dlopen'
 flags.
 
 If any of the ARGS are libtool executable wrappers, then they are translated
@@ -1524,7 +3687,7 @@ Complete the installation of libtool libraries.
 Each LIBDIR is a directory that contains libtool libraries.
 
 The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
+the '--dry-run' option if you just want to see what would be executed."
         ;;
 
       install)
@@ -1534,11 +3697,11 @@ the \`--dry-run' option if you just want to see what would be executed."
 Install executables or libraries.
 
 INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
+either the 'install' or 'cp' program.
 
 The following components of INSTALL-COMMAND are treated specially:
 
-  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
 
 The rest of the components are interpreted as arguments to that command (only
 BSD-compatible install options are recognized)."
@@ -1558,7 +3721,9 @@ The following components of LINK-COMMAND are treated specially:
 
   -all-static       do not do any dynamic linking at all
   -avoid-version    do not add a version suffix if possible
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -export-symbols SYMFILE
@@ -1572,7 +3737,8 @@ The following components of LINK-COMMAND are treated specially:
   -no-install       link a not-installable executable
   -no-undefined     declare that a library does not refer to external symbols
   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -objectlist FILE  use a list of object files found in FILE to specify objects
+  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
   -precious-files-regex REGEX
                     don't remove output files matching REGEX
   -release RELEASE  specify package release information
@@ -1586,21 +3752,26 @@ The following components of LINK-COMMAND are treated specially:
   -version-info CURRENT[:REVISION[:AGE]]
                     specify library version info [each variable defaults to 0]
   -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
 
-All other options (arguments beginning with \`-') are ignored.
+All other options (arguments beginning with '-') are ignored.
 
-Every other argument is treated as a filename.  Files ending in \`.la' are
+Every other argument is treated as a filename.  Files ending in '.la' are
 treated as uninstalled libtool libraries, other files are standard or library
 object files.
 
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
 required, except when creating a convenience library.
 
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
 
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
 is created, otherwise an executable program is created."
         ;;
 
@@ -1611,7 +3782,7 @@ is created, otherwise an executable program is created."
 Remove libraries from an installation directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
 to RM.
 
 If FILE is a libtool library, all the files associated with it are deleted.
@@ -1619,40 +3790,70 @@ Otherwise, only FILE itself is deleted using RM."
         ;;
 
       *)
-        func_fatal_help "invalid operation mode \`$mode'"
+        func_fatal_help "invalid operation mode '$opt_mode'"
         ;;
     esac
 
-    $ECHO
-    $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
+    echo
+    $ECHO "Try '$progname --help' for more information about other modes."
 }
 
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test : = "$opt_help"; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    $SED '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
 
 
 # func_mode_execute arg...
 func_mode_execute ()
 {
-    $opt_debug
+    $debug_cmd
+
     # The first argument is the command name.
-    cmd="$nonopt"
+    cmd=$nonopt
     test -z "$cmd" && \
       func_fatal_help "you must specify a COMMAND"
 
     # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
+    for file in $opt_dlopen; do
       test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
+	|| func_fatal_help "'$file' is not a file"
 
       dir=
       case $file in
       *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+	  || func_fatal_help "'$lib' is not a valid libtool archive"
 
 	# Read the libtool library.
 	dlname=
@@ -1663,18 +3864,18 @@ func_mode_execute ()
 	if test -z "$dlname"; then
 	  # Warn if it was a shared library.
 	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	    func_warning "'$file' was not linked with '-export-dynamic'"
 	  continue
 	fi
 
 	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 
 	if test -f "$dir/$objdir/$dlname"; then
-	  dir="$dir/$objdir"
+	  func_append dir "/$objdir"
 	else
 	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
 	  fi
 	fi
 	;;
@@ -1682,18 +3883,18 @@ func_mode_execute ()
       *.lo)
 	# Just add the directory containing the .lo file.
 	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 	;;
 
       *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
 	continue
 	;;
       esac
 
       # Get the absolute pathname.
       absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
+      test -n "$absdir" && dir=$absdir
 
       # Now add the directory to shlibpath_var.
       if eval "test -z \"\$$shlibpath_var\""; then
@@ -1705,34 +3906,41 @@ func_mode_execute ()
 
     # This variable tells wrapper scripts just to set shlibpath_var
     # rather than running their programs.
-    libtool_execute_magic="$magic"
+    libtool_execute_magic=$magic
 
     # Check if any of the arguments is a wrapper script.
     args=
     for file
     do
       case $file in
-      -*) ;;
+      -* | *.la | *.lo ) ;;
       *)
 	# Do a test to see if this is really a libtool program.
 	if func_ltwrapper_script_p "$file"; then
 	  func_source "$file"
 	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
+	  file=$progdir/$program
 	elif func_ltwrapper_executable_p "$file"; then
 	  func_ltwrapper_scriptname "$file"
 	  func_source "$func_ltwrapper_scriptname_result"
 	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
+	  file=$progdir/$program
 	fi
 	;;
       esac
       # Quote arguments (to preserve shell metacharacters).
-      func_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
+      func_append_quoted args "$file"
     done
 
-    if test "X$opt_dry_run" = Xfalse; then
+    if $opt_dry_run; then
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    else
       if test -n "$shlibpath_var"; then
 	# Export the shlibpath_var.
 	eval "export $shlibpath_var"
@@ -1749,34 +3957,64 @@ func_mode_execute ()
       done
 
       # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	$ECHO "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
+      exec_cmd=\$cmd$args
     fi
 }
 
-test "$mode" = execute && func_mode_execute ${1+"$@"}
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
 
 
 # func_mode_finish arg...
 func_mode_finish ()
 {
-    $opt_debug
-    libdirs="$nonopt"
+    $debug_cmd
+
+    libs=
+    libdirs=
     admincmds=
 
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "'$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument '$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
 
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       for libdir in $libdirs; do
 	if test -n "$finish_cmds"; then
 	  # Do each command in the finish commands.
@@ -1786,73 +4024,77 @@ func_mode_finish ()
 	if test -n "$finish_eval"; then
 	  # Do the single finish_eval.
 	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
        $cmds"
 	fi
       done
     fi
 
     # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
+    $opt_quiet && exit $EXIT_SUCCESS
 
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $ECHO "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $ECHO "   $libdir"
-    done
-    $ECHO
-    $ECHO "If you ever happen to want to link against installed libraries"
-    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
-    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $ECHO "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $ECHO "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $ECHO "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the '$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
 
-      $ECHO "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $ECHO "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $ECHO
+	$ECHO "   - use the '$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
+      fi
+      echo
 
-    $ECHO "See any operating system documentation about shared libraries for"
-    case $host in
-      solaris2.[6789]|solaris2.1[0-9])
-        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	$ECHO "pages."
-	;;
-      *)
-        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
-        ;;
-    esac
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
     exit $EXIT_SUCCESS
 }
 
-test "$mode" = finish && func_mode_finish ${1+"$@"}
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
 
 
 # func_mode_install arg...
 func_mode_install ()
 {
-    $opt_debug
+    $debug_cmd
+
     # There may be an optional sh(1) argument at the beginning of
     # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
        # Allow the use of GNU shtool's install command.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+       case $nonopt in *shtool*) :;; *) false;; esac
+    then
       # Aesthetically quote it.
       func_quote_for_eval "$nonopt"
       install_prog="$func_quote_for_eval_result "
@@ -1866,7 +4108,12 @@ func_mode_install ()
     # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
     func_quote_for_eval "$arg"
-    install_prog="$install_prog$func_quote_for_eval_result"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
 
     # We need to accept at least all the BSD install flags.
     dest=
@@ -1874,23 +4121,24 @@ func_mode_install ()
     opts=
     prev=
     install_type=
-    isdir=no
+    isdir=false
     stripme=
+    no_mode=:
     for arg
     do
+      arg2=
       if test -n "$dest"; then
-	files="$files $dest"
+	func_append files " $dest"
 	dest=$arg
 	continue
       fi
 
       case $arg in
-      -d) isdir=yes ;;
+      -d) isdir=: ;;
       -f)
-	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
 	;;
       -g | -m | -o)
 	prev=$arg
@@ -1904,6 +4152,10 @@ func_mode_install ()
       *)
 	# If the previous option needed an argument, then skip it.
 	if test -n "$prev"; then
+	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
 	  prev=
 	else
 	  dest=$arg
@@ -1914,14 +4166,25 @@ func_mode_install ()
 
       # Aesthetically quote the argument.
       func_quote_for_eval "$arg"
-      install_prog="$install_prog $func_quote_for_eval_result"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
     done
 
     test -z "$install_prog" && \
       func_fatal_help "you must specify an install program"
 
     test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
+      func_fatal_help "the '$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
 
     if test -z "$files"; then
       if test -z "$dest"; then
@@ -1936,19 +4199,19 @@ func_mode_install ()
     dest=$func_stripname_result
 
     # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
+    test -d "$dest" && isdir=:
+    if $isdir; then
+      destdir=$dest
       destname=
     else
       func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
+      destdir=$func_dirname_result
+      destname=$func_basename_result
 
       # Not a directory, so check to see that there is only one file specified.
       set dummy $files; shift
       test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
+	func_fatal_help "'$dest' is not a directory"
     fi
     case $destdir in
     [\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -1957,7 +4220,7 @@ func_mode_install ()
 	case $file in
 	*.lo) ;;
 	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  func_fatal_help "'$destdir' must be an absolute directory name"
 	  ;;
 	esac
       done
@@ -1966,7 +4229,7 @@ func_mode_install ()
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic="$magic"
+    libtool_install_magic=$magic
 
     staticlibs=
     future_libdirs=
@@ -1977,13 +4240,16 @@ func_mode_install ()
       case $file in
       *.$libext)
 	# Do the static libraries later.
-	staticlibs="$staticlibs $file"
+	func_append staticlibs " $file"
 	;;
 
       *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
+	  || func_fatal_help "'$file' is not a valid libtool archive"
 
 	library_names=
 	old_library=
@@ -1994,23 +4260,23 @@ func_mode_install ()
 	if test "X$destdir" = "X$libdir"; then
 	  case "$current_libdirs " in
 	  *" $libdir "*) ;;
-	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  *) func_append current_libdirs " $libdir" ;;
 	  esac
 	else
 	  # Note the libdir as a future libdir.
 	  case "$future_libdirs " in
 	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  *) func_append future_libdirs " $libdir" ;;
 	  esac
 	fi
 
 	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	dir="$dir$objdir"
+	dir=$func_dirname_result
+	func_append dir "$objdir"
 
 	if test -n "$relink_command"; then
 	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
 
 	  # Don't allow the user to place us outside of our expected
 	  # location b/c this prevents finding dependent libraries that
@@ -2019,38 +4285,45 @@ func_mode_install ()
 	  # are installed into $libdir/../bin (currently, that works fine)
 	  # but it's something to keep an eye on.
 	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
 
 	  if test -n "$inst_prefix_dir"; then
 	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
 	  else
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
 	  fi
 
-	  func_warning "relinking \`$file'"
+	  func_warning "relinking '$file'"
 	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
 	fi
 
 	# See the names of the shared library.
 	set dummy $library_names; shift
 	if test -n "$1"; then
-	  realname="$1"
+	  realname=$1
 	  shift
 
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
+	  srcname=$realname
+	  test -n "$relink_command" && srcname=${realname}T
 
 	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
 	      'exit $?'
-	  tstripme="$stripme"
+	  tstripme=$stripme
 	  case $host_os in
 	  cygwin* | mingw* | pw32* | cegcc*)
 	    case $realname in
 	    *.dll.a)
-	      tstripme=""
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  os2*)
+	    case $realname in
+	    *_dll.a)
+	      tstripme=
 	      ;;
 	    esac
 	    ;;
@@ -2061,7 +4334,7 @@ func_mode_install ()
 
 	  if test "$#" -gt 0; then
 	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # Try 'ln -sf' first, because the 'ln' binary might depend on
 	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
 	    # so we also need to try rm && ln -s.
 	    for linkname
@@ -2072,18 +4345,18 @@ func_mode_install ()
 	  fi
 
 	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
+	  lib=$destdir/$realname
 	  func_execute_cmds "$postinstall_cmds" 'exit $?'
 	fi
 
 	# Install the pseudo-library for information purposes.
 	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
+	name=$func_basename_result
+	instname=$dir/${name}i
 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
 
 	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
 	;;
 
       *.lo)
@@ -2091,11 +4364,11 @@ func_mode_install ()
 
 	# Figure out destination file name, if it wasn't already specified.
 	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
+	  destfile=$destdir/$destname
 	else
 	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
 	fi
 
 	# Deduce the name of the destination old-style object file.
@@ -2105,11 +4378,11 @@ func_mode_install ()
 	  staticdest=$func_lo2o_result
 	  ;;
 	*.$objext)
-	  staticdest="$destfile"
+	  staticdest=$destfile
 	  destfile=
 	  ;;
 	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  func_fatal_help "cannot copy a libtool object to '$destfile'"
 	  ;;
 	esac
 
@@ -2118,7 +4391,7 @@ func_mode_install ()
 	  func_show_eval "$install_prog $file $destfile" 'exit $?'
 
 	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
+	if test yes = "$build_old_libs"; then
 	  # Deduce the name of the old-style object file.
 	  func_lo2o "$file"
 	  staticobj=$func_lo2o_result
@@ -2130,23 +4403,23 @@ func_mode_install ()
       *)
 	# Figure out destination file name, if it wasn't already specified.
 	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
+	  destfile=$destdir/$destname
 	else
 	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
 	fi
 
 	# If the file is missing, and there is a .exe on the end, strip it
 	# because it is most likely a libtool script we actually want to
 	# install
-	stripped_ext=""
+	stripped_ext=
 	case $file in
 	  *.exe)
 	    if test ! -f "$file"; then
 	      func_stripname '' '.exe' "$file"
 	      file=$func_stripname_result
-	      stripped_ext=".exe"
+	      stripped_ext=.exe
 	    fi
 	    ;;
 	esac
@@ -2174,19 +4447,19 @@ func_mode_install ()
 
 	  # Check the variables that should have been set.
 	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
 
-	  finalize=yes
+	  finalize=:
 	  for lib in $notinst_deplibs; do
 	    # Check to see that each library is installed.
 	    libdir=
 	    if test -f "$lib"; then
 	      func_source "$lib"
 	    fi
-	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
 	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
+	      func_warning "'$lib' has not been installed in '$libdir'"
+	      finalize=false
 	    fi
 	  done
 
@@ -2194,34 +4467,34 @@ func_mode_install ()
 	  func_source "$wrapper"
 
 	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
+	  if test no = "$fast_install" && test -n "$relink_command"; then
 	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
+	      if $finalize; then
 	        tmpdir=`func_mktempdir`
 		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
+		file=$func_basename_result
+	        outputname=$tmpdir/$file
 	        # Replace the output file specification.
-	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
-	        $opt_silent || {
+	        $opt_quiet || {
 	          func_quote_for_expand "$relink_command"
 		  eval "func_echo $func_quote_for_expand_result"
 	        }
 	        if eval "$relink_command"; then :
 	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
+		  func_error "error: relink '$file' with the above command before installing it"
 		  $opt_dry_run || ${RM}r "$tmpdir"
 		  continue
 	        fi
-	        file="$outputname"
+	        file=$outputname
 	      else
-	        func_warning "cannot relink \`$file'"
+	        func_warning "cannot relink '$file'"
 	      fi
 	    }
 	  else
 	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
 	  fi
 	fi
 
@@ -2253,15 +4526,17 @@ func_mode_install ()
 
     for file in $staticlibs; do
       func_basename "$file"
-      name="$func_basename_result"
+      name=$func_basename_result
 
       # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
+      oldlib=$destdir/$name
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -2269,18 +4544,18 @@ func_mode_install ()
     done
 
     test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
+      func_warning "remember to run '$progname --finish$future_libdirs'"
 
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
     else
       exit $EXIT_SUCCESS
     fi
 }
 
-test "$mode" = install && func_mode_install ${1+"$@"}
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
 
 
 # func_generate_dlsyms outputname originator pic_p
@@ -2288,16 +4563,17 @@ test "$mode" = install && func_mode_install ${1+"$@"}
 # a dlpreopen symbol table.
 func_generate_dlsyms ()
 {
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    $debug_cmd
+
+    my_outputname=$1
+    my_originator=$2
+    my_pic_p=${3-false}
+    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
     my_dlsyms=
 
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
       if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
+	my_dlsyms=${my_outputname}S.c
       else
 	func_error "not configured to extract global symbols from dlpreopened files"
       fi
@@ -2308,7 +4584,7 @@ func_generate_dlsyms ()
       "") ;;
       *.c)
 	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
+	nlist=$output_objdir/$my_outputname.nm
 
 	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
 
@@ -2316,26 +4592,45 @@ func_generate_dlsyms ()
 	func_verbose "creating $output_objdir/$my_dlsyms"
 
 	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
 
 #ifdef __cplusplus
 extern \"C\" {
 #endif
 
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
 /* External symbol declarations for the compiler. */\
 "
 
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
+	if test yes = "$dlself"; then
+	  func_verbose "generating symbol list for '$output'"
 
 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
 
 	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	  for progfile in $progfiles; do
-	    func_verbose "extracting global C symbols from \`$progfile'"
-	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
 	  done
 
 	  if test -n "$exclude_expsyms"; then
@@ -2354,10 +4649,10 @@ extern \"C\" {
 
 	  # Prepare the list of exported symbols
 	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
+	    export_symbols=$output_objdir/$outputname.exp
 	    $opt_dry_run || {
 	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
 	      case $host in
 	      *cygwin* | *mingw* | *cegcc* )
                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
@@ -2367,11 +4662,11 @@ extern \"C\" {
 	    }
 	  else
 	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
 	      eval '$MV "$nlist"T "$nlist"'
 	      case $host in
-	        *cygwin | *mingw* | *cegcc* )
+	        *cygwin* | *mingw* | *cegcc* )
 	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
 	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
 	          ;;
@@ -2381,13 +4676,55 @@ extern \"C\" {
 	fi
 
 	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_verbose "extracting global C symbols from '$dlprefile'"
 	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-	  $opt_dry_run || {
-	    eval '$ECHO ": $name " >> "$nlist"'
-	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	  }
+	  name=$func_basename_result
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname"; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename=$func_basename_result
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename"; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
 	done
 
 	$opt_dry_run || {
@@ -2415,39 +4752,46 @@ extern \"C\" {
 	  if test -f "$nlist"S; then
 	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
 	  else
-	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  func_show_eval '$RM "${nlist}I"'
+	  if test -n "$global_symbol_to_import"; then
+	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
 	  fi
 
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+	  echo >> "$output_objdir/$my_dlsyms" "\
 
 /* The mapping between symbol names and symbols.  */
 typedef struct {
   const char *name;
   void *address;
 } lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];\
 "
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc* )
-	    $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */"
-	    lt_dlsym_const= ;;
-	  *osf5*)
-	    echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
-	    lt_dlsym_const= ;;
-	  *)
-	    lt_dlsym_const=const ;;
-	  esac
 
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+  for (; symbol->name; ++symbol)
+    {"
+	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+	    echo >> "$output_objdir/$my_dlsyms" "\
+    }
+}"
+	  fi
+	  echo >> "$output_objdir/$my_dlsyms" "\
+LT_DLSYM_CONST lt_dlsymlist
 lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
+{ {\"$my_originator\", (void *) 0},"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+  {\"@INIT@\", (void *) &lt_syminit},"
+	  fi
 
 	  case $need_lib_prefix in
 	  no)
@@ -2457,7 +4801,7 @@ lt_${my_prefix}_LTX_preloaded_symbols[] =
 	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
 	    ;;
 	  esac
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+	  echo >> "$output_objdir/$my_dlsyms" "\
   {0, (void *) 0}
 };
 
@@ -2484,14 +4828,12 @@ static const void *lt_preloaded_setup() {
 	  # linked before any other PIC object.  But we must not use
 	  # pic_flag when linking with -static.  The problem exists in
 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
 	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
+	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
 	    ;;
 	  esac
 	  ;;
@@ -2500,7 +4842,7 @@ static const void *lt_preloaded_setup() {
 	for arg in $LTCFLAGS; do
 	  case $arg in
 	  -pie | -fpie | -fPIE) ;;
-	  *) symtab_cflags="$symtab_cflags $arg" ;;
+	  *) func_append symtab_cflags " $arg" ;;
 	  esac
 	done
 
@@ -2508,28 +4850,28 @@ static const void *lt_preloaded_setup() {
 	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
 
 	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
 
 	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	symfileobj=$output_objdir/${my_outputname}S.$objext
 	case $host in
 	*cygwin* | *mingw* | *cegcc* )
 	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
 	  else
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
 	  fi
 	  ;;
 	*)
-	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
 	  ;;
 	esac
 	;;
       *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	func_fatal_error "unknown suffix for '$my_dlsyms'"
 	;;
       esac
     else
@@ -2538,38 +4880,81 @@ static const void *lt_preloaded_setup() {
       # really was required.
 
       # Nullify the symbol file.
-      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
     fi
 }
 
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
 # func_win32_libid arg
 # return the library type of file 'arg'
 #
 # Need a lot of goo to handle *both* DLLs and import libs
 # Has to be a shell function in order to 'eat' the argument
 # that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
 func_win32_libid ()
 {
-  $opt_debug
-  win32_libid_type="unknown"
+  $debug_cmd
+
+  win32_libid_type=unknown
   win32_fileres=`file -L $1 2>/dev/null`
   case $win32_fileres in
   *ar\ archive\ import\ library*) # definitely import
     win32_libid_type="x86 archive import"
     ;;
   *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
-	$SED -n -e '
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      case $nm_interface in
+      "MS dumpbin")
+	if func_cygming_ms_implib_p "$1" ||
+	   func_cygming_gnu_implib_p "$1"
+	then
+	  win32_nmres=import
+	else
+	  win32_nmres=
+	fi
+	;;
+      *)
+	func_to_tool_file "$1" func_convert_file_msys_to_w32
+	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	  $SED -n -e '
 	    1,100{
 		/ I /{
-		    s,.*,import,
+		    s|.*|import|
 		    p
 		    q
 		}
 	    }'`
+	;;
+      esac
       case $win32_nmres in
       import*)  win32_libid_type="x86 archive import";;
       *)        win32_libid_type="x86 archive static";;
@@ -2590,15 +4975,131 @@ func_win32_libid ()
   $ECHO "$win32_libid_type"
 }
 
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $debug_cmd
+
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $debug_cmd
+
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive that possess that section. Heuristic: eliminate
+    # all those that have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $debug_cmd
+
+  if func_cygming_gnu_implib_p "$1"; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1"; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=
+  fi
+}
 
 
 # func_extract_an_archive dir oldlib
 func_extract_an_archive ()
 {
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+    $debug_cmd
+
+    f_ex_an_ar_dir=$1; shift
+    f_ex_an_ar_oldlib=$1
+    if test yes = "$lock_old_archive_extraction"; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test yes = "$lock_old_archive_extraction"; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
      :
     else
@@ -2610,22 +5111,23 @@ func_extract_an_archive ()
 # func_extract_archives gentop oldlib ...
 func_extract_archives ()
 {
-    $opt_debug
-    my_gentop="$1"; shift
+    $debug_cmd
+
+    my_gentop=$1; shift
     my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
+    my_oldobjs=
+    my_xlib=
+    my_xabs=
+    my_xdir=
 
     for my_xlib in $my_oldlibs; do
       # Extract the objects.
       case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
 	*) my_xabs=`pwd`"/$my_xlib" ;;
       esac
       func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
+      my_xlib=$func_basename_result
       my_xlib_u=$my_xlib
       while :; do
         case " $extracted_archives " in
@@ -2637,7 +5139,7 @@ func_extract_archives ()
 	esac
       done
       extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
+      my_xdir=$my_gentop/$my_xlib_u
 
       func_mkdir_p "$my_xdir"
 
@@ -2650,26 +5152,27 @@ func_extract_archives ()
 	  cd $my_xdir || exit $?
 	  darwin_archive=$my_xabs
 	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
+	  func_basename "$darwin_archive"
+	  darwin_base_archive=$func_basename_result
 	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
 	  if test -n "$darwin_arches"; then
 	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
 	    darwin_arch=
 	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	    for darwin_arch in  $darwin_arches; do
+	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
 	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
 	    done # $darwin_arches
             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
 	    darwin_file=
 	    darwin_files=
 	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
 	      $LIPO -create -output "$darwin_file" $darwin_files
 	    done # $darwin_filelist
 	    $RM -rf unfat-$$
@@ -2684,31 +5187,36 @@ func_extract_archives ()
         func_extract_an_archive "$my_xdir" "$my_xabs"
 	;;
       esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
-    func_extract_archives_result="$my_oldobjs"
+    func_extract_archives_result=$my_oldobjs
 }
 
 
-
-# func_emit_wrapper_part1 [arg=no]
+# func_emit_wrapper [arg=no]
 #
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
-{
-	func_emit_wrapper_part1_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part1_arg1=$1
-	fi
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory where it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=${1-no}
 
 	$ECHO "\
 #! $SHELL
 
 # $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # The $output program cannot be directly executed until all the libtool
 # libraries that it depends on are installed.
@@ -2718,7 +5226,6 @@ func_emit_wrapper_part1 ()
 
 # Sed substitution that helps us do robust quoting.  It backslashifies
 # metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
 sed_quote_subst='$sed_quote_subst'
 
 # Be Bourne compatible
@@ -2749,31 +5256,135 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then
 else
   # When we are sourced in execute mode, \$file and \$ECHO are already set.
   if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
 "
-	$ECHO "\
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
 
   # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
   test \"x\$thisdir\" = \"x\$file\" && thisdir=.
 
   # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
   while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
 
     # If there was a directory component, then change thisdir.
     if test \"x\$destdir\" != \"x\$file\"; then
@@ -2783,30 +5394,13 @@ else
       esac
     fi
 
-    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
   done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
-	func_emit_wrapper_part2_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part2_arg1=$1
-	fi
-
-	$ECHO "\
 
   # Usually 'no', except on cygwin/mingw when embedded into
   # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
   if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
     # special case for '.'
     if test \"\$thisdir\" = \".\"; then
@@ -2814,7 +5408,7 @@ func_emit_wrapper_part2 ()
     fi
     # remove .libs from thisdir
     case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
     $objdir )   thisdir=. ;;
     esac
   fi
@@ -2824,13 +5418,13 @@ func_emit_wrapper_part2 ()
   test -n \"\$absdir\" && thisdir=\"\$absdir\"
 "
 
-	if test "$fast_install" = yes; then
+	if test yes = "$fast_install"; then
 	  $ECHO "\
   program=lt-'$outputname'$exeext
   progdir=\"\$thisdir/$objdir\"
 
   if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
 
     file=\"\$\$-\$program\"
@@ -2847,7 +5441,7 @@ func_emit_wrapper_part2 ()
     if test -n \"\$relink_command\"; then
       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
       else
-	$ECHO \"\$relink_command_output\" >&2
+	\$ECHO \"\$relink_command_output\" >&2
 	$RM \"\$progdir/\$file\"
 	exit 1
       fi
@@ -2869,261 +5463,48 @@ func_emit_wrapper_part2 ()
 
   if test -f \"\$progdir/\$program\"; then"
 
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
 	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
 	  $ECHO "\
     # Add our own library path to $shlibpath_var
     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
 
     # Some systems cannot cope with colon-terminated $shlibpath_var
     # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
 
     export $shlibpath_var
 "
 	fi
 
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
 	$ECHO "\
     if test \"\$libtool_execute_magic\" != \"$magic\"; then
       # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2* | *-cegcc*)
-	  $ECHO "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-	  ;;
-
-	*)
-	  $ECHO "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-	  ;;
-	esac
-	$ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
+      func_exec_program \${1+\"\$@\"}
     fi
   else
     # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
   fi
 fi\
 "
 }
-# end: func_emit_wrapper_part2
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
-	fi
-
-	# split this up so that func_emit_cwrapperexe_src
-	# can call each part independently.
-	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
-	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin.  Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
-  func_to_host_path_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        case $build in
-          *mingw* ) # actually, msys
-            # awkward: cmd appends spaces to result
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_path_tmp1=`cygpath -w "$1"`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # Unfortunately, winepath does not exit with a non-zero
-            # error code, so we are forced to check the contents of
-            # stdout. On the other hand, if the command is not
-            # found, the shell will set an exit code of 127 and print
-            # *an error message* to stdout. So we must check for both
-            # error code of zero AND non-empty stdout, which explains
-            # the odd construction:
-            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-                $SED -e "$lt_sed_naive_backslashify"`
-            else
-              # Allow warning below.
-              func_to_host_path_result=""
-            fi
-            ;;
-        esac
-        if test -z "$func_to_host_path_result" ; then
-          func_error "Could not determine host path corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback:
-          func_to_host_path_result="$1"
-        fi
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_path
 
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
-  func_to_host_pathlist_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        # Remove leading and trailing path separator characters from
-        # ARG. msys behavior is inconsistent here, cygpath turns them
-        # into '.;' and ';.', and winepath ignores them completely.
-        func_to_host_pathlist_tmp2="$1"
-        # Once set for this call, this variable should not be
-        # reassigned. It is used in tha fallback case.
-        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
-          $SED -e 's|^:*||' -e 's|:*$||'`
-        case $build in
-          *mingw* ) # Actually, msys.
-            # Awkward: cmd appends spaces to result.
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # unfortunately, winepath doesn't convert pathlists
-            func_to_host_pathlist_result=""
-            func_to_host_pathlist_oldIFS=$IFS
-            IFS=:
-            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-              IFS=$func_to_host_pathlist_oldIFS
-              if test -n "$func_to_host_pathlist_f" ; then
-                func_to_host_path "$func_to_host_pathlist_f"
-                if test -n "$func_to_host_path_result" ; then
-                  if test -z "$func_to_host_pathlist_result" ; then
-                    func_to_host_pathlist_result="$func_to_host_path_result"
-                  else
-                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
-                  fi
-                fi
-              fi
-              IFS=:
-            done
-            IFS=$func_to_host_pathlist_oldIFS
-            ;;
-        esac
-        if test -z "$func_to_host_pathlist_result" ; then
-          func_error "Could not determine the host path(s) corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback. This may break if $1 contains DOS-style drive
-          # specifications. The fix is not to complicate the expression
-          # below, but for the user to provide a working wine installation
-          # with winepath so that path translation in the cross-to-mingw
-          # case works properly.
-          lt_replace_pathsep_nix_to_dos="s|:|;|g"
-          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-            $SED -e "$lt_replace_pathsep_nix_to_dos"`
-        fi
-        # Now, add the leading and trailing path separators back
-        case "$1" in
-          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-            ;;
-        esac
-        case "$1" in
-          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
-            ;;
-        esac
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_pathlist
 
 # func_emit_cwrapperexe_src
 # emit the source code for a wrapper executable on stdout
@@ -3134,38 +5515,30 @@ func_emit_cwrapperexe_src ()
 	cat <<EOF
 
 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 
    The $output program cannot be directly executed until all the libtool
    libraries that it depends on are installed.
 
    This wrapper executable should never be moved out of the build directory.
    If it is, it will not operate correctly.
-
-   Currently, it simply execs the wrapper *script* "$SHELL $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
 */
 EOF
 	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #ifdef _MSC_VER
 # include <direct.h>
 # include <process.h>
 # include <io.h>
-# define setmode _setmode
 #else
 # include <unistd.h>
 # include <stdint.h>
 # ifdef __CYGWIN__
 #  include <io.h>
-#  define HAVE_SETENV
-#  ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-#  endif
 # endif
 #endif
 #include <malloc.h>
@@ -3177,9 +5550,45 @@ int setenv (const char *, const char *, int);
 #include <fcntl.h>
 #include <sys/stat.h>
 
-#if defined(PATH_MAX)
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* declarations of non-ANSI functions */
+#if defined __MINGW32__
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined __CYGWIN__
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined other_platform || defined ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined _MSC_VER
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+#elif defined __MINGW32__
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined __CYGWIN__
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined other platforms ... */
+#endif
+
+#if defined PATH_MAX
 # define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
+#elif defined MAXPATHLEN
 # define LT_PATHMAX MAXPATHLEN
 #else
 # define LT_PATHMAX 1024
@@ -3192,21 +5601,14 @@ int setenv (const char *, const char *, int);
 # define S_IXGRP 0
 #endif
 
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#endif
-
+/* path handling portability macros */
 #ifndef DIR_SEPARATOR
 # define DIR_SEPARATOR '/'
 # define PATH_SEPARATOR ':'
 #endif
 
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+  defined __OS2__
 # define HAVE_DOS_BASED_FILE_SYSTEM
 # define FOPEN_WB "wb"
 # ifndef DIR_SEPARATOR_2
@@ -3230,10 +5632,6 @@ int setenv (const char *, const char *, int);
 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
 #endif /* PATH_SEPARATOR_2 */
 
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
 #ifndef FOPEN_WB
 # define FOPEN_WB "w"
 #endif
@@ -3243,25 +5641,16 @@ int setenv (const char *, const char *, int);
 
 #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
 #define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
+  if (stale) { free (stale); stale = 0; } \
 } while (0)
 
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
-    va_list args;
-    va_start (args, fmt);
-    (void) vfprintf (stderr, fmt, args);
-    va_end (args);
-}
+#if defined LT_DEBUGWRAPPER
+static int lt_debug = 1;
 #else
-# define LTWRAPPER_DEBUGPRINTF(args)
+static int lt_debug = 0;
 #endif
 
-const char *program_name = NULL;
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
 
 void *xmalloc (size_t num);
 char *xstrdup (const char *string);
@@ -3271,41 +5660,32 @@ char *chase_symlinks (const char *pathspec);
 int make_executable (const char *path);
 int check_executable (const char *path);
 char *strendzap (char *str, const char *pat);
-void lt_fatal (const char *message, ...);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
 void lt_setenv (const char *name, const char *value);
 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
 void lt_update_exe_path (const char *name, const char *value);
 void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
-EOF
-
-	    func_emit_wrapper_part1 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-	    cat <<EOF
-
-static const char *script_text_part2 =
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
 EOF
-	    func_emit_wrapper_part2 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
 
 	    cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
 const char * LIB_PATH_VARNAME = "$shlibpath_var";
 EOF
 
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_pathlist "$temp_rpath"
+	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
 	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
 EOF
 	    else
 	      cat <<"EOF"
@@ -3314,10 +5694,10 @@ EOF
 	    fi
 
 	    if test -n "$dllsearchpath"; then
-              func_to_host_pathlist "$dllsearchpath:"
+              func_to_host_path "$dllsearchpath:"
 	      cat <<EOF
 const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
 EOF
 	    else
 	      cat <<"EOF"
@@ -3326,7 +5706,7 @@ const char * EXE_PATH_VALUE   = "";
 EOF
 	    fi
 
-	    if test "$fast_install" = yes; then
+	    if test yes = "$fast_install"; then
 	      cat <<EOF
 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
 EOF
@@ -3340,24 +5720,10 @@ EOF
 	    cat <<"EOF"
 
 #define LTWRAPPER_OPTION_PREFIX         "--lt-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
 
-static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
 static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
 static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
 
 int
 main (int argc, char *argv[])
@@ -3369,21 +5735,24 @@ main (int argc, char *argv[])
   char *actual_cwrapper_name;
   char *target_name;
   char *lt_argv_zero;
-  intptr_t rval = 127;
+  int rval = 127;
 
   int i;
 
   program_name = (char *) xstrdup (base_name (argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+  newargz = XMALLOC (char *, (size_t) argc + 1);
 
-  /* very simple arg parsing; don't want to rely on getopt */
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
   for (i = 1; i < argc; i++)
     {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
+      if (STREQ (argv[i], dumpscript_opt))
 	{
 EOF
-	    case "$host" in
+	    case $host in
 	      *mingw* | *cygwin* )
 		# make stdout use "unix" line endings
 		echo "          setmode(1,_O_BINARY);"
@@ -3391,25 +5760,57 @@ EOF
 	      esac
 
 	    cat <<"EOF"
-	  printf ("%s", script_text_part1);
-	  printf ("%s", script_text_part2);
+	  lt_dump_script (stdout);
 	  return 0;
 	}
+      if (STREQ (argv[i], debug_opt))
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (STREQ (argv[i], ltwrapper_option_prefix))
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
     }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
 
-  newargz = XMALLOC (char *, argc + 1);
   tmp_pathspec = find_executable (argv[0]);
   if (tmp_pathspec == NULL)
-    lt_fatal ("Couldn't find %s", argv[0]);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-			  tmp_pathspec));
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
 
   actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
-			  actual_cwrapper_path));
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
   XFREE (tmp_pathspec);
 
-  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
   strendzap (actual_cwrapper_path, actual_cwrapper_name);
 
   /* wrapper name transforms */
@@ -3427,8 +5828,9 @@ EOF
   target_name = tmp_pathspec;
   tmp_pathspec = 0;
 
-  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
-			  target_name));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
 EOF
 
 	    cat <<EOF
@@ -3478,80 +5880,19 @@ EOF
 
   lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
   lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
   lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
 
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
-      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal ("Unrecognized option in %s namespace: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
   for (i = 0; i < newargc; i++)
     {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
     }
 
 EOF
@@ -3560,11 +5901,14 @@ EOF
 	      mingw*)
 		cat <<"EOF"
   /* execv doesn't actually work on mingw as expected on unix */
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  newargz = prepare_spawn (newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   if (rval == -1)
     {
       /* failed to start process */
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
       return 127;
     }
   return rval;
@@ -3586,7 +5930,7 @@ xmalloc (size_t num)
 {
   void *p = (void *) malloc (num);
   if (!p)
-    lt_fatal ("Memory exhausted");
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
 
   return p;
 }
@@ -3603,7 +5947,7 @@ base_name (const char *name)
 {
   const char *base;
 
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
   /* Skip over the disk name in MSDOS pathnames. */
   if (isalpha ((unsigned char) name[0]) && name[1] == ':')
     name += 2;
@@ -3620,8 +5964,8 @@ check_executable (const char *path)
 {
   struct stat st;
 
-  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
   if ((!path) || (!*path))
     return 0;
 
@@ -3638,8 +5982,8 @@ make_executable (const char *path)
   int rval = 0;
   struct stat st;
 
-  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
   if ((!path) || (!*path))
     return 0;
 
@@ -3662,17 +6006,17 @@ find_executable (const char *wrapper)
   const char *p_next;
   /* static buffer for getcwd */
   char tmp[LT_PATHMAX + 1];
-  int tmp_len;
+  size_t tmp_len;
   char *concat_name;
 
-  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
-			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
 
   if ((wrapper == NULL) || (*wrapper == '\0'))
     return NULL;
 
   /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
     {
       concat_name = xstrdup (wrapper);
@@ -3690,7 +6034,7 @@ find_executable (const char *wrapper)
 	    return concat_name;
 	  XFREE (concat_name);
 	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
     }
 #endif
 
@@ -3713,13 +6057,14 @@ find_executable (const char *wrapper)
 	      for (q = p; *q; q++)
 		if (IS_PATH_SEPARATOR (*q))
 		  break;
-	      p_len = q - p;
+	      p_len = (size_t) (q - p);
 	      p_next = (*q == '\0' ? q : q + 1);
 	      if (p_len == 0)
 		{
 		  /* empty path: current directory */
 		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal ("getcwd failed");
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
 		  tmp_len = strlen (tmp);
 		  concat_name =
 		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
@@ -3744,7 +6089,8 @@ find_executable (const char *wrapper)
     }
   /* Relative path | not found in path: prepend cwd */
   if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
   tmp_len = strlen (tmp);
   concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
   memcpy (concat_name, tmp, tmp_len);
@@ -3770,8 +6116,9 @@ chase_symlinks (const char *pathspec)
   int has_symlinks = 0;
   while (strlen (tmp_pathspec) && !has_symlinks)
     {
-      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
-			      tmp_pathspec));
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
       if (lstat (tmp_pathspec, &s) == 0)
 	{
 	  if (S_ISLNK (s.st_mode) != 0)
@@ -3793,8 +6140,9 @@ chase_symlinks (const char *pathspec)
 	}
       else
 	{
-	  char *errstr = strerror (errno);
-	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
 	}
     }
   XFREE (tmp_pathspec);
@@ -3807,7 +6155,8 @@ chase_symlinks (const char *pathspec)
   tmp_pathspec = realpath (pathspec, buf);
   if (tmp_pathspec == 0)
     {
-      lt_fatal ("Could not follow symlinks for %s", pathspec);
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
     }
   return xstrdup (tmp_pathspec);
 #endif
@@ -3827,17 +6176,31 @@ strendzap (char *str, const char *pat)
   if (patlen <= len)
     {
       str += len - patlen;
-      if (strcmp (str, pat) == 0)
+      if (STREQ (str, pat))
 	*str = '\0';
     }
   return str;
 }
 
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
 static void
-lt_error_core (int exit_status, const char *mode,
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
 	       const char *message, va_list ap)
 {
-  fprintf (stderr, "%s: %s: ", program_name, mode);
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
   vfprintf (stderr, message, ap);
   fprintf (stderr, ".\n");
 
@@ -3846,27 +6209,39 @@ lt_error_core (int exit_status, const char *mode,
 }
 
 void
-lt_fatal (const char *message, ...)
+lt_fatal (const char *file, int line, const char *message, ...)
 {
   va_list ap;
   va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
   va_end (ap);
 }
 
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
 void
 lt_setenv (const char *name, const char *value)
 {
-  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
   {
 #ifdef HAVE_SETENV
     /* always make a copy, for consistency with !HAVE_SETENV */
     char *str = xstrdup (value);
     setenv (name, str, 1);
 #else
-    int len = strlen (name) + 1 + strlen (value) + 1;
+    size_t len = strlen (name) + 1 + strlen (value) + 1;
     char *str = XMALLOC (char, len);
     sprintf (str, "%s=%s", name, value);
     if (putenv (str) != EXIT_SUCCESS)
@@ -3877,131 +6252,48 @@ lt_setenv (const char *name, const char *value)
   }
 }
 
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
 {
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
+  char *new_value;
+  if (orig_value && *orig_value)
     {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+      size_t orig_value_len = strlen (orig_value);
+      size_t add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
     }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
+  else
     {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+      new_value = xstrdup (add);
     }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
+  return new_value;
 }
 
 void
 lt_update_exe_path (const char *name, const char *value)
 {
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
 
   if (name && *name && value && *value)
     {
       char *new_value = lt_extend_str (getenv (name), value, 0);
       /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+      size_t len = strlen (new_value);
+      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
         {
-          new_value[len-1] = '\0';
+          new_value[--len] = '\0';
         }
       lt_setenv (name, new_value);
       XFREE (new_value);
@@ -4011,9 +6303,9 @@ lt_update_exe_path (const char *name, const char *value)
 void
 lt_update_lib_path (const char *name, const char *value)
 {
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
 
   if (name && *name && value && *value)
     {
@@ -4023,25 +6315,192 @@ lt_update_lib_path (const char *name, const char *value)
     }
 }
 
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
 
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
 EOF
 }
 # end: func_emit_cwrapperexe_src
 
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $debug_cmd
+
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
 # func_mode_link arg...
 func_mode_link ()
 {
-    $opt_debug
+    $debug_cmd
+
     case $host in
     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
+      # what system we are compiling for in order to pass an extra
       # flag for every libtool invocation.
       # allow_undefined=no
 
       # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
+      # to make a dll that has undefined symbols, in which case not
       # even a static library is built.  For now, we need to specify
       # -no-undefined on the libtool link line when we can be certain
       # that all symbols are satisfied, otherwise we get a static library.
@@ -4072,6 +6531,7 @@ func_mode_link ()
     new_inherited_linker_flags=
 
     avoid_version=no
+    bindir=
     dlfiles=
     dlprefiles=
     dlself=no
@@ -4084,10 +6544,11 @@ func_mode_link ()
     module=no
     no_install=no
     objs=
+    os2dllname=
     non_pic_objects=
     precious_files_regex=
     prefer_static_libs=no
-    preload=no
+    preload=false
     prev=
     prevarg=
     release=
@@ -4099,7 +6560,7 @@ func_mode_link ()
     vinfo=
     vinfo_number=no
     weak_libs=
-    single_module="${wl}-single_module"
+    single_module=$wl-single_module
     func_infer_tag $base_compile
 
     # We need to know -static, to get the right output filenames.
@@ -4107,15 +6568,15 @@ func_mode_link ()
     do
       case $arg in
       -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
+	test yes != "$build_libtool_libs" \
+	  && func_fatal_configuration "cannot build a shared library"
 	build_old_libs=no
 	break
 	;;
       -all-static | -static | -static-libtool-libs)
 	case $arg in
 	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
 	    func_warning "complete static linking is impossible in this configuration"
 	  fi
 	  if test -n "$link_static_flag"; then
@@ -4148,7 +6609,7 @@ func_mode_link ()
 
     # Go through the arguments, transforming them on the way.
     while test "$#" -gt 0; do
-      arg="$1"
+      arg=$1
       shift
       func_quote_for_eval "$arg"
       qarg=$func_quote_for_eval_unquoted_result
@@ -4164,17 +6625,22 @@ func_mode_link ()
 	esac
 
 	case $prev in
+	bindir)
+	  bindir=$arg
+	  prev=
+	  continue
+	  ;;
 	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
+	  $preload || {
 	    # Add the symbol object into the linking commands.
 	    func_append compile_command " @SYMFILE@"
 	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
+	    preload=:
+	  }
 	  case $arg in
 	  *.la | *.lo) ;;  # We handle these cases below.
 	  force)
-	    if test "$dlself" = no; then
+	    if test no = "$dlself"; then
 	      dlself=needless
 	      export_dynamic=yes
 	    fi
@@ -4182,9 +6648,9 @@ func_mode_link ()
 	    continue
 	    ;;
 	  self)
-	    if test "$prev" = dlprefiles; then
+	    if test dlprefiles = "$prev"; then
 	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
 	      dlself=yes
 	    else
 	      dlself=needless
@@ -4194,10 +6660,10 @@ func_mode_link ()
 	    continue
 	    ;;
 	  *)
-	    if test "$prev" = dlfiles; then
-	      dlfiles="$dlfiles $arg"
+	    if test dlfiles = "$prev"; then
+	      func_append dlfiles " $arg"
 	    else
-	      dlprefiles="$dlprefiles $arg"
+	      func_append dlprefiles " $arg"
 	    fi
 	    prev=
 	    continue
@@ -4205,14 +6671,14 @@ func_mode_link ()
 	  esac
 	  ;;
 	expsyms)
-	  export_symbols="$arg"
+	  export_symbols=$arg
 	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
+	    || func_fatal_error "symbol file '$arg' does not exist"
 	  prev=
 	  continue
 	  ;;
 	expsyms_regex)
-	  export_symbols_regex="$arg"
+	  export_symbols_regex=$arg
 	  prev=
 	  continue
 	  ;;
@@ -4221,7 +6687,7 @@ func_mode_link ()
 	    *-*-darwin*)
 	      case "$deplibs " in
 		*" $qarg.ltframework "*) ;;
-		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
 		   ;;
 	      esac
 	      ;;
@@ -4230,7 +6696,13 @@ func_mode_link ()
 	  continue
 	  ;;
 	inst_prefix)
-	  inst_prefix_dir="$arg"
+	  inst_prefix_dir=$arg
+	  prev=
+	  continue
+	  ;;
+	mllvm)
+	  # Clang does not use LLVM to link, so we can simply discard any
+	  # '-mllvm $arg' options when doing the link step.
 	  prev=
 	  continue
 	  ;;
@@ -4240,7 +6712,7 @@ func_mode_link ()
 	    moreargs=
 	    for fil in `cat "$save_arg"`
 	    do
-#	      moreargs="$moreargs $fil"
+#	      func_append moreargs " $fil"
 	      arg=$fil
 	      # A libtool-controlled object.
 
@@ -4254,22 +6726,22 @@ func_mode_link ()
 
 		if test -z "$pic_object" ||
 		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
+		   test none = "$pic_object" &&
+		   test none = "$non_pic_object"; then
+		  func_fatal_error "cannot find name of object for '$arg'"
 		fi
 
 		# Extract subdirectory from the argument.
 		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
+		xdir=$func_dirname_result
 
-		if test "$pic_object" != none; then
+		if test none != "$pic_object"; then
 		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
+		  pic_object=$xdir$pic_object
 
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles="$dlfiles $pic_object"
+		  if test dlfiles = "$prev"; then
+		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+		      func_append dlfiles " $pic_object"
 		      prev=
 		      continue
 		    else
@@ -4279,31 +6751,31 @@ func_mode_link ()
 		  fi
 
 		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
+		  if test dlprefiles = "$prev"; then
 		    # Preload the old-style object.
-		    dlprefiles="$dlprefiles $pic_object"
+		    func_append dlprefiles " $pic_object"
 		    prev=
 		  fi
 
 		  # A PIC object.
 		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
+		  arg=$pic_object
 		fi
 
 		# Non-PIC object.
-		if test "$non_pic_object" != none; then
+		if test none != "$non_pic_object"; then
 		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
+		  non_pic_object=$xdir$non_pic_object
 
 		  # A standard non-PIC object
 		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
+		  if test -z "$pic_object" || test none = "$pic_object"; then
+		    arg=$non_pic_object
 		  fi
 		else
 		  # If the PIC object exists, use it instead.
 		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
+		  non_pic_object=$pic_object
 		  func_append non_pic_objects " $non_pic_object"
 		fi
 	      else
@@ -4311,7 +6783,7 @@ func_mode_link ()
 		if $opt_dry_run; then
 		  # Extract subdirectory from the argument.
 		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
+		  xdir=$func_dirname_result
 
 		  func_lo2o "$arg"
 		  pic_object=$xdir$objdir/$func_lo2o_result
@@ -4319,24 +6791,29 @@ func_mode_link ()
 		  func_append libobjs " $pic_object"
 		  func_append non_pic_objects " $non_pic_object"
 	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
+		  func_fatal_error "'$arg' is not a valid libtool object"
 		fi
 	      fi
 	    done
 	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
+	    func_fatal_error "link input file '$arg' does not exist"
 	  fi
 	  arg=$save_arg
 	  prev=
 	  continue
 	  ;;
+	os2dllname)
+	  os2dllname=$arg
+	  prev=
+	  continue
+	  ;;
 	precious_regex)
-	  precious_files_regex="$arg"
+	  precious_files_regex=$arg
 	  prev=
 	  continue
 	  ;;
 	release)
-	  release="-$arg"
+	  release=-$arg
 	  prev=
 	  continue
 	  ;;
@@ -4348,48 +6825,48 @@ func_mode_link ()
 	    func_fatal_error "only absolute run-paths are allowed"
 	    ;;
 	  esac
-	  if test "$prev" = rpath; then
+	  if test rpath = "$prev"; then
 	    case "$rpath " in
 	    *" $arg "*) ;;
-	    *) rpath="$rpath $arg" ;;
+	    *) func_append rpath " $arg" ;;
 	    esac
 	  else
 	    case "$xrpath " in
 	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
+	    *) func_append xrpath " $arg" ;;
 	    esac
 	  fi
 	  prev=
 	  continue
 	  ;;
 	shrext)
-	  shrext_cmds="$arg"
+	  shrext_cmds=$arg
 	  prev=
 	  continue
 	  ;;
 	weak)
-	  weak_libs="$weak_libs $arg"
+	  func_append weak_libs " $arg"
 	  prev=
 	  continue
 	  ;;
 	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
 	  prev=
 	  func_append compile_command " $qarg"
 	  func_append finalize_command " $qarg"
 	  continue
 	  ;;
 	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
+	  func_append compiler_flags " $qarg"
 	  prev=
 	  func_append compile_command " $qarg"
 	  func_append finalize_command " $qarg"
 	  continue
 	  ;;
 	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $wl$qarg"
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
 	  prev=
 	  func_append compile_command " $wl$qarg"
 	  func_append finalize_command " $wl$qarg"
@@ -4403,7 +6880,7 @@ func_mode_link ()
 	esac
       fi # test -n "$prev"
 
-      prevarg="$arg"
+      prevarg=$arg
 
       case $arg in
       -all-static)
@@ -4417,7 +6894,7 @@ func_mode_link ()
 
       -allow-undefined)
 	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+	func_fatal_error "'-allow-undefined' must not be used because it is the default"
 	;;
 
       -avoid-version)
@@ -4425,6 +6902,11 @@ func_mode_link ()
 	continue
 	;;
 
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
       -dlopen)
 	prev=dlfiles
 	continue
@@ -4444,7 +6926,7 @@ func_mode_link ()
 	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
 	  func_fatal_error "more than one -exported-symbols argument is not allowed"
 	fi
-	if test "X$arg" = "X-export-symbols"; then
+	if test X-export-symbols = "X$arg"; then
 	  prev=expsyms
 	else
 	  prev=expsyms_regex
@@ -4475,44 +6957,51 @@ func_mode_link ()
 	;;
 
       -L*)
-	func_stripname '-L' '' "$arg"
-	dir=$func_stripname_result
-	if test -z "$dir"; then
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
 	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
+	    func_fatal_error "require no space between '-L' and '$1'"
 	  else
-	    func_fatal_error "need path for \`-L' option"
+	    func_fatal_error "need path for '-L' option"
 	  fi
 	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
 	# We need an absolute path.
 	case $dir in
 	[\\/]* | [A-Za-z]:[\\/]*) ;;
 	*)
 	  absdir=`cd "$dir" && pwd`
 	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
+	    func_fatal_error "cannot determine absolute directory name of '$dir'"
+	  dir=$absdir
 	  ;;
 	esac
 	case "$deplibs " in
-	*" -L$dir "*) ;;
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
 	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
 	  ;;
 	esac
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$dir:"*) ;;
 	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  *) func_append dllsearchpath ":$dir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
 	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  *) func_append dllsearchpath ":$testbindir";;
 	  esac
 	  ;;
 	esac
@@ -4520,43 +7009,48 @@ func_mode_link ()
 	;;
 
       -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # These systems don't actually have a C or math library (as such)
 	    continue
 	    ;;
 	  *-*-os2*)
 	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
 	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs System.ltframework"
+	    func_append deplibs " System.ltframework"
 	    continue
 	    ;;
 	  *-*-sco3.2v5* | *-*-sco5v6*)
 	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
 	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  esac
-	elif test "X$arg" = "X-lc_r"; then
+	elif test X-lc_r = "X$arg"; then
 	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
 	   # Do not include libc_r directly, use -pthread flag.
 	   continue
 	   ;;
 	 esac
 	fi
-	deplibs="$deplibs $arg"
+	func_append deplibs " $arg"
+	continue
+	;;
+
+      -mllvm)
+	prev=mllvm
 	continue
 	;;
 
@@ -4568,27 +7062,28 @@ func_mode_link ()
       # Tru64 UNIX uses -model [arg] to determine the layout of C++
       # classes, name mangling, and exception handling.
       # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot)
-	compiler_flags="$compiler_flags $arg"
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
 	prev=xcompiler
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	compiler_flags="$compiler_flags $arg"
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
 	case "$new_inherited_linker_flags " in
 	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
 	esac
 	continue
 	;;
 
       -multi_module)
-	single_module="${wl}-multi_module"
+	single_module=$wl-multi_module
 	continue
 	;;
 
@@ -4602,8 +7097,8 @@ func_mode_link ()
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
 	  # The PATH hackery in wrapper scripts is required on Windows
 	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
+	  func_warning "'-no-install' is ignored for $host"
+	  func_warning "assuming '-no-fast-install' instead"
 	  fast_install=no
 	  ;;
 	*) no_install=yes ;;
@@ -4621,6 +7116,11 @@ func_mode_link ()
 	continue
 	;;
 
+      -os2dllname)
+	prev=os2dllname
+	continue
+	;;
+
       -o) prev=output ;;
 
       -precious-files-regex)
@@ -4649,13 +7149,17 @@ func_mode_link ()
 	# We need an absolute path.
 	case $dir in
 	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
 	*)
 	  func_fatal_error "only absolute run-paths are allowed"
 	  ;;
 	esac
 	case "$xrpath " in
 	*" $dir "*) ;;
-	*) xrpath="$xrpath $dir" ;;
+	*) func_append xrpath " $dir" ;;
 	esac
 	continue
 	;;
@@ -4704,14 +7208,14 @@ func_mode_link ()
 	func_stripname '-Wc,' '' "$arg"
 	args=$func_stripname_result
 	arg=
-	save_ifs="$IFS"; IFS=','
+	save_ifs=$IFS; IFS=,
 	for flag in $args; do
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
           func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 	func_stripname ' ' '' "$arg"
 	arg=$func_stripname_result
 	;;
@@ -4720,15 +7224,15 @@ func_mode_link ()
 	func_stripname '-Wl,' '' "$arg"
 	args=$func_stripname_result
 	arg=
-	save_ifs="$IFS"; IFS=','
+	save_ifs=$IFS; IFS=,
 	for flag in $args; do
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
           func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-	  linker_flags="$linker_flags $func_quote_for_eval_result"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 	func_stripname ' ' '' "$arg"
 	arg=$func_stripname_result
 	;;
@@ -4751,38 +7255,63 @@ func_mode_link ()
       # -msg_* for osf cc
       -msg_*)
 	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
 
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # @file GCC response files
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -stdlib=*            select c++ std lib with clang
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
         func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
         func_append compile_command " $arg"
         func_append finalize_command " $arg"
-        compiler_flags="$compiler_flags $arg"
+        func_append compiler_flags " $arg"
         continue
         ;;
 
+      -Z*)
+        if test os2 = "`expr $host : '.*\(os2\)'`"; then
+          # OS/2 uses -Zxxx to specify OS/2-specific options
+	  compiler_flags="$compiler_flags $arg"
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  case $arg in
+	  -Zlinker | -Zstack)
+	    prev=xcompiler
+	    ;;
+	  esac
+	  continue
+        else
+	  # Otherwise treat like 'Some other compiler flag' below
+	  func_quote_for_eval "$arg"
+	  arg=$func_quote_for_eval_result
+        fi
+	;;
+
       # Some other compiler flag.
       -* | +*)
         func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
 
       *.$objext)
 	# A standard object.
-	objs="$objs $arg"
+	func_append objs " $arg"
 	;;
 
       *.lo)
@@ -4798,22 +7327,22 @@ func_mode_link ()
 
 	  if test -z "$pic_object" ||
 	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
+	     test none = "$pic_object" &&
+	     test none = "$non_pic_object"; then
+	    func_fatal_error "cannot find name of object for '$arg'"
 	  fi
 
 	  # Extract subdirectory from the argument.
 	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
+	  xdir=$func_dirname_result
 
-	  if test "$pic_object" != none; then
+	  test none = "$pic_object" || {
 	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
+	    pic_object=$xdir$pic_object
 
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles="$dlfiles $pic_object"
+	    if test dlfiles = "$prev"; then
+	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+		func_append dlfiles " $pic_object"
 		prev=
 		continue
 	      else
@@ -4823,31 +7352,31 @@ func_mode_link ()
 	    fi
 
 	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
+	    if test dlprefiles = "$prev"; then
 	      # Preload the old-style object.
-	      dlprefiles="$dlprefiles $pic_object"
+	      func_append dlprefiles " $pic_object"
 	      prev=
 	    fi
 
 	    # A PIC object.
 	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
+	    arg=$pic_object
+	  }
 
 	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
+	  if test none != "$non_pic_object"; then
 	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
+	    non_pic_object=$xdir$non_pic_object
 
 	    # A standard non-PIC object
 	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
+	    if test -z "$pic_object" || test none = "$pic_object"; then
+	      arg=$non_pic_object
 	    fi
 	  else
 	    # If the PIC object exists, use it instead.
 	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
+	    non_pic_object=$pic_object
 	    func_append non_pic_objects " $non_pic_object"
 	  fi
 	else
@@ -4855,7 +7384,7 @@ func_mode_link ()
 	  if $opt_dry_run; then
 	    # Extract subdirectory from the argument.
 	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
+	    xdir=$func_dirname_result
 
 	    func_lo2o "$arg"
 	    pic_object=$xdir$objdir/$func_lo2o_result
@@ -4863,31 +7392,32 @@ func_mode_link ()
 	    func_append libobjs " $pic_object"
 	    func_append non_pic_objects " $non_pic_object"
 	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
+	    func_fatal_error "'$arg' is not a valid libtool object"
 	  fi
 	fi
 	;;
 
       *.$libext)
 	# An archive.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
 	continue
 	;;
 
       *.la)
 	# A libtool-controlled library.
 
-	if test "$prev" = dlfiles; then
+	func_resolve_sysroot "$arg"
+	if test dlfiles = "$prev"; then
 	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
+	  func_append dlfiles " $func_resolve_sysroot_result"
 	  prev=
-	elif test "$prev" = dlprefiles; then
+	elif test dlprefiles = "$prev"; then
 	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
+	  func_append dlprefiles " $func_resolve_sysroot_result"
 	  prev=
 	else
-	  deplibs="$deplibs $arg"
+	  func_append deplibs " $func_resolve_sysroot_result"
 	fi
 	continue
 	;;
@@ -4897,7 +7427,7 @@ func_mode_link ()
 	# Unknown arguments in both finalize_command and compile_command need
 	# to be aesthetically quoted because they are evaled later.
 	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
       esac # arg
 
@@ -4909,9 +7439,9 @@ func_mode_link ()
     done # argument parsing loop
 
     test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
+      func_fatal_help "the '$prevarg' option requires an argument"
 
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
       eval arg=\"$export_dynamic_flag_spec\"
       func_append compile_command " $arg"
       func_append finalize_command " $arg"
@@ -4920,20 +7450,25 @@ func_mode_link ()
     oldlibs=
     # calculate the name of the file, without its directory
     func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
+    outputname=$func_basename_result
+    libobjs_save=$libobjs
 
     if test -n "$shlibpath_var"; then
       # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
     else
       shlib_search_path=
     fi
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
     func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
+    output_objdir=$func_dirname_result$objdir
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
     # Create the object directory.
     func_mkdir_p "$output_objdir"
 
@@ -4954,15 +7489,15 @@ func_mode_link ()
     # Find all interdependent deplibs by searching for libraries
     # that are linked more than once (e.g. -la -lb -la)
     for deplib in $deplibs; do
-      if $opt_duplicate_deps ; then
+      if $opt_preserve_dup_deps; then
 	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	esac
       fi
-      libs="$libs $deplib"
+      func_append libs " $deplib"
     done
 
-    if test "$linkmode" = lib; then
+    if test lib = "$linkmode"; then
       libs="$predeps $libs $compiler_lib_search_path $postdeps"
 
       # Compute libraries that are listed more than once in $predeps
@@ -4972,9 +7507,9 @@ func_mode_link ()
       if $opt_duplicate_compiler_generated_deps; then
 	for pre_post_dep in $predeps $postdeps; do
 	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
 	  esac
-	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	  func_append pre_post_deps " $pre_post_dep"
 	done
       fi
       pre_post_deps=
@@ -4994,7 +7529,7 @@ func_mode_link ()
 	  case $file in
 	  *.la) ;;
 	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
 	    ;;
 	  esac
 	done
@@ -5002,7 +7537,7 @@ func_mode_link ()
     prog)
 	compile_deplibs=
 	finalize_deplibs=
-	alldeplibs=no
+	alldeplibs=false
 	newdlfiles=
 	newdlprefiles=
 	passes="conv scan dlopen dlpreopen link"
@@ -5014,82 +7549,85 @@ func_mode_link ()
     for pass in $passes; do
       # The preopen pass in lib mode reverses $deplibs; put it back here
       # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
+      if test lib,link = "$linkmode,$pass"; then
 	## FIXME: Find the place where the list is rebuilt in the wrong
 	##        order, and fix it there properly
         tmp_deplibs=
 	for deplib in $deplibs; do
 	  tmp_deplibs="$deplib $tmp_deplibs"
 	done
-	deplibs="$tmp_deplibs"
+	deplibs=$tmp_deplibs
       fi
 
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
+      if test lib,link = "$linkmode,$pass" ||
+	 test prog,scan = "$linkmode,$pass"; then
+	libs=$deplibs
 	deplibs=
       fi
-      if test "$linkmode" = prog; then
+      if test prog = "$linkmode"; then
 	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
+	dlopen) libs=$dlfiles ;;
+	dlpreopen) libs=$dlprefiles ;;
 	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
 	esac
       fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+      if test lib,dlpreopen = "$linkmode,$pass"; then
 	# Collect and forward deplibs of preopened libtool libs
 	for lib in $dlprefiles; do
 	  # Ignore non-libtool-libs
 	  dependency_libs=
+	  func_resolve_sysroot "$lib"
 	  case $lib in
-	  *.la)	func_source "$lib" ;;
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
 	  esac
 
 	  # Collect preopened libtool deplibs, except any this library
 	  # has declared as weak libs
 	  for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
 	    case " $weak_libs " in
 	    *" $deplib_base "*) ;;
-	    *) deplibs="$deplibs $deplib" ;;
+	    *) func_append deplibs " $deplib" ;;
 	    esac
 	  done
 	done
-	libs="$dlprefiles"
+	libs=$dlprefiles
       fi
-      if test "$pass" = dlopen; then
+      if test dlopen = "$pass"; then
 	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
+	save_deplibs=$deplibs
 	deplibs=
       fi
 
       for deplib in $libs; do
 	lib=
-	found=no
+	found=false
 	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	  if test "$linkmode,$pass" = "prog,link"; then
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	  if test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
-	    compiler_flags="$compiler_flags $deplib"
-	    if test "$linkmode" = lib ; then
+	    func_append compiler_flags " $deplib"
+	    if test lib = "$linkmode"; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
 		esac
 	    fi
 	  fi
 	  continue
 	  ;;
 	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
+	  if test lib != "$linkmode" && test prog != "$linkmode"; then
+	    func_warning "'-l' is ignored for archives/objects"
 	    continue
 	  fi
 	  func_stripname '-l' '' "$deplib"
 	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
+	  if test lib = "$linkmode"; then
 	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
 	  else
 	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
@@ -5097,31 +7635,22 @@ func_mode_link ()
 	  for searchdir in $searchdirs; do
 	    for search_ext in .la $std_shrext .so .a; do
 	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
+	      lib=$searchdir/lib$name$search_ext
 	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
+		if test .la = "$search_ext"; then
+		  found=:
 		else
-		  found=no
+		  found=false
 		fi
 		break 2
 	      fi
 	    done
 	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
+	  if $found; then
+	    # deplib is a libtool library
 	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
 	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 	      case " $predeps $postdeps " in
 	      *" $deplib "*)
 		if func_lalib_p "$lib"; then
@@ -5129,19 +7658,19 @@ func_mode_link ()
 		  old_library=
 		  func_source "$lib"
 		  for l in $old_library $library_names; do
-		    ll="$l"
+		    ll=$l
 		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
+		  if test "X$ll" = "X$old_library"; then # only static version available
+		    found=false
 		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
+		    ladir=$func_dirname_result
 		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
+		    if test prog,link = "$linkmode,$pass"; then
 		      compile_deplibs="$deplib $compile_deplibs"
 		      finalize_deplibs="$deplib $finalize_deplibs"
 		    else
 		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
 		    fi
 		    continue
 		  fi
@@ -5150,18 +7679,28 @@ func_mode_link ()
 	      *) ;;
 	      esac
 	    fi
+	  else
+	    # deplib doesn't seem to be a libtool library
+	    if test prog,link = "$linkmode,$pass"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
 	  fi
 	  ;; # -l
 	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
+	  if test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
 	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
+	    if test lib = "$linkmode"; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
 		esac
 	    fi
 	  fi
@@ -5171,47 +7710,53 @@ func_mode_link ()
 	  case $linkmode in
 	  lib)
 	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
+	    test conv = "$pass" && continue
 	    newdependency_libs="$deplib $newdependency_libs"
 	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  prog)
-	    if test "$pass" = conv; then
+	    if test conv = "$pass"; then
 	      deplibs="$deplib $deplibs"
 	      continue
 	    fi
-	    if test "$pass" = scan; then
+	    if test scan = "$pass"; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      compile_deplibs="$deplib $compile_deplibs"
 	      finalize_deplibs="$deplib $finalize_deplibs"
 	    fi
 	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
+	    func_warning "'-L' is ignored for archives/objects"
 	    ;;
 	  esac # linkmode
 	  continue
 	  ;; # -L
 	-R*)
-	  if test "$pass" = link; then
+	  if test link = "$pass"; then
 	    func_stripname '-R' '' "$deplib"
-	    dir=$func_stripname_result
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
 	    # Make sure the xrpath contains only unique directories.
 	    case "$xrpath " in
 	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
+	    *) func_append xrpath " $dir" ;;
 	    esac
 	  fi
 	  deplibs="$deplib $deplibs"
 	  continue
 	  ;;
-	*.la) lib="$deplib" ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
 	*.$libext)
-	  if test "$pass" = conv; then
+	  if test conv = "$pass"; then
 	    deplibs="$deplib $deplibs"
 	    continue
 	  fi
@@ -5222,40 +7767,40 @@ func_mode_link ()
 	    case " $dlpreconveniencelibs " in
 	    *" $deplib "*) ;;
 	    *)
-	      valid_a_lib=no
+	      valid_a_lib=false
 	      case $deplibs_check_method in
 		match_pattern*)
 		  set dummy $deplibs_check_method; shift
 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
 		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
+		    valid_a_lib=:
 		  fi
 		;;
 		pass_all)
-		  valid_a_lib=yes
+		  valid_a_lib=:
 		;;
 	      esac
-	      if test "$valid_a_lib" != yes; then
-		$ECHO
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
-		$ECHO "*** that it is just a static archive that I should not use here."
-	      else
-		$ECHO
+	      if $valid_a_lib; then
+		echo
 		$ECHO "*** Warning: Linking the shared library $output against the"
 		$ECHO "*** static library $deplib is not portable!"
 		deplibs="$deplib $deplibs"
+	      else
+		echo
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
 	      fi
 	      ;;
 	    esac
 	    continue
 	    ;;
 	  prog)
-	    if test "$pass" != link; then
+	    if test link != "$pass"; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      compile_deplibs="$deplib $compile_deplibs"
@@ -5266,38 +7811,36 @@ func_mode_link ()
 	  esac # linkmode
 	  ;; # *.$libext
 	*.lo | *.$objext)
-	  if test "$pass" = conv; then
+	  if test conv = "$pass"; then
 	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	  elif test prog = "$linkmode"; then
+	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
 	      # If there is no dlopen support or we're linking statically,
 	      # we need to preload.
-	      newdlprefiles="$newdlprefiles $deplib"
+	      func_append newdlprefiles " $deplib"
 	      compile_deplibs="$deplib $compile_deplibs"
 	      finalize_deplibs="$deplib $finalize_deplibs"
 	    else
-	      newdlfiles="$newdlfiles $deplib"
+	      func_append newdlfiles " $deplib"
 	    fi
 	  fi
 	  continue
 	  ;;
 	%DEPLIBS%)
-	  alldeplibs=yes
+	  alldeplibs=:
 	  continue
 	  ;;
 	esac # case $deplib
 
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
+	$found || test -f "$lib" \
+	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
+	  || func_fatal_error "'$lib' is not a valid libtool archive"
 
 	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
+	ladir=$func_dirname_result
 
 	dlname=
 	dlopen=
@@ -5318,44 +7861,44 @@ func_mode_link ()
 
 	# Convert "-framework foo" to "foo.ltframework"
 	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
 	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
 	    case " $new_inherited_linker_flags " in
 	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
 	    esac
 	  done
 	fi
-	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	if test lib,link = "$linkmode,$pass" ||
+	   test prog,scan = "$linkmode,$pass" ||
+	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
 	fi
 
-	if test "$pass" = conv; then
+	if test conv = "$pass"; then
 	  # Only check for convenience libraries
 	  deplibs="$lib $deplibs"
 	  if test -z "$libdir"; then
 	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
+	      func_fatal_error "cannot find name of link library for '$lib'"
 	    fi
 	    # It is a libtool convenience library, so add in its objects.
-	    convenience="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
+	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
+	    func_fatal_error "'$lib' is not a convenience library"
 	  fi
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    deplibs="$deplib $deplibs"
-	    if $opt_duplicate_deps ; then
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $deplib"
 	  done
 	  continue
 	fi # $pass = conv
@@ -5363,101 +7906,133 @@ func_mode_link ()
 
 	# Get the name of the library we link against.
 	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
+	if test -n "$old_library" &&
+	   { test yes = "$prefer_static_libs" ||
+	     test built,no = "$prefer_static_libs,$installed"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib=$l
+	  done
+	fi
 	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
+	  func_fatal_error "cannot find name of link library for '$lib'"
 	fi
 
 	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
+	if test dlopen = "$pass"; then
+	  test -z "$libdir" \
+	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
 	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
+	     test yes != "$dlopen_support" ||
+	     test no = "$build_libtool_libs"
+	  then
 	    # If there is no dlname, no dlopen support or we're linking
 	    # statically, we need to preload.  We also need to preload any
 	    # dependent libraries so libltdl's deplib preloader doesn't
 	    # bomb out in the load deplibs phase.
-	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	    func_append dlprefiles " $lib $dependency_libs"
 	  else
-	    newdlfiles="$newdlfiles $lib"
+	    func_append newdlfiles " $lib"
 	  fi
 	  continue
 	fi # $pass = dlopen
 
 	# We need an absolute path.
 	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
 	*)
 	  abs_ladir=`cd "$ladir" && pwd`
 	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "cannot determine absolute directory name of '$ladir'"
 	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
+	    abs_ladir=$ladir
 	  fi
 	  ;;
 	esac
 	func_basename "$lib"
-	laname="$func_basename_result"
+	laname=$func_basename_result
 
 	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
+	if test yes = "$installed"; then
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library '$lib' was moved."
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    libdir=$abs_ladir
 	  else
-	    dir="$libdir"
-	    absdir="$libdir"
+	    dir=$lt_sysroot$libdir
+	    absdir=$lt_sysroot$libdir
 	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
 	else
 	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
+	    dir=$ladir
+	    absdir=$abs_ladir
 	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
+	    func_append notinst_path " $abs_ladir"
 	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
+	    dir=$ladir/$objdir
+	    absdir=$abs_ladir/$objdir
 	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
+	    func_append notinst_path " $abs_ladir"
 	  fi
 	fi # $installed = yes
 	func_stripname 'lib' '.la' "$laname"
 	name=$func_stripname_result
 
 	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$newdlprefiles $dir/$old_library"
-	    # Keep a list of preopened convenience libraries to check
-	    # that they are being used correctly in the link pass.
-	    test -z "$libdir" && \
-		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	if test dlpreopen = "$pass"; then
+	  if test -z "$libdir" && test prog = "$linkmode"; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
 	  fi
+	  case $host in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
 	fi # $pass = dlpreopen
 
 	if test -z "$libdir"; then
 	  # Link the convenience library
-	  if test "$linkmode" = lib; then
+	  if test lib = "$linkmode"; then
 	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
+	  elif test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$dir/$old_library $compile_deplibs"
 	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
 	  else
@@ -5467,52 +8042,53 @@ func_mode_link ()
 	fi
 
 
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path="$newlib_search_path $ladir"
+	if test prog = "$linkmode" && test link != "$pass"; then
+	  func_append newlib_search_path " $ladir"
 	  deplibs="$lib $deplibs"
 
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
+	  linkalldeplibs=false
+	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
+	     test no = "$build_libtool_libs"; then
+	    linkalldeplibs=:
 	  fi
 
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    case $deplib in
 	    -L*) func_stripname '-L' '' "$deplib"
-	         newlib_search_path="$newlib_search_path $func_stripname_result"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
 		 ;;
 	    esac
 	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
+	    if $linkalldeplibs; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      # Need to hardcode shared library paths
 	      # or/and link against static libraries
 	      newdependency_libs="$deplib $newdependency_libs"
 	    fi
-	    if $opt_duplicate_deps ; then
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $deplib"
 	  done # for deplib
 	  continue
 	fi # $linkmode = prog...
 
-	if test "$linkmode,$pass" = "prog,link"; then
+	if test prog,link = "$linkmode,$pass"; then
 	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	     { { test no = "$prefer_static_libs" ||
+	         test built,yes = "$prefer_static_libs,$installed"; } ||
 	       test -z "$old_library"; }; then
 	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
 	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
+	      case $temp_rpath: in
 	      *"$absdir:"*) ;;
-	      *) temp_rpath="$temp_rpath$absdir:" ;;
+	      *) func_append temp_rpath "$absdir:" ;;
 	      esac
 	    fi
 
@@ -5524,7 +8100,7 @@ func_mode_link ()
 	    *)
 	      case "$compile_rpath " in
 	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
+	      *) func_append compile_rpath " $absdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5533,15 +8109,15 @@ func_mode_link ()
 	    *)
 	      case "$finalize_rpath " in
 	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
+	      *) func_append finalize_rpath " $libdir" ;;
 	      esac
 	      ;;
 	    esac
 	  fi # $linkmode,$pass = prog,link...
 
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
+	  if $alldeplibs &&
+	     { test pass_all = "$deplibs_check_method" ||
+	       { test yes = "$build_libtool_libs" &&
 		 test -n "$library_names"; }; }; then
 	    # We only need to search for static libraries
 	    continue
@@ -5550,20 +8126,20 @@ func_mode_link ()
 
 	link_static=no # Whether the deplib will be linked statically
 	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
+	if test built = "$use_static_libs" && test yes = "$installed"; then
 	  use_static_libs=no
 	fi
 	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
 	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
+	  *cygwin* | *mingw* | *cegcc* | *os2*)
 	      # No point in relinking DLLs because paths are not encoded
-	      notinst_deplibs="$notinst_deplibs $lib"
+	      func_append notinst_deplibs " $lib"
 	      need_relink=no
 	    ;;
 	  *)
-	    if test "$installed" = no; then
-	      notinst_deplibs="$notinst_deplibs $lib"
+	    if test no = "$installed"; then
+	      func_append notinst_deplibs " $lib"
 	      need_relink=yes
 	    fi
 	    ;;
@@ -5572,24 +8148,24 @@ func_mode_link ()
 
 	  # Warn about portability, can't link against -module's on some
 	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
+	  dlopenmodule=
 	  for dlpremoduletest in $dlprefiles; do
 	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
+	      dlopenmodule=$dlpremoduletest
 	      break
 	    fi
 	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    $ECHO
-	    if test "$linkmode" = prog; then
+	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
+	    echo
+	    if test prog = "$linkmode"; then
 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
 	    else
 	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
 	    fi
 	    $ECHO "*** $linklib is not portable!"
 	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
+	  if test lib = "$linkmode" &&
+	     test yes = "$hardcode_into_libs"; then
 	    # Hardcode the library path.
 	    # Skip directories that are in the system default run-time
 	    # search path.
@@ -5598,7 +8174,7 @@ func_mode_link ()
 	    *)
 	      case "$compile_rpath " in
 	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
+	      *) func_append compile_rpath " $absdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5607,7 +8183,7 @@ func_mode_link ()
 	    *)
 	      case "$finalize_rpath " in
 	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
+	      *) func_append finalize_rpath " $libdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -5617,43 +8193,43 @@ func_mode_link ()
 	    # figure out the soname
 	    set dummy $library_names
 	    shift
-	    realname="$1"
+	    realname=$1
 	    shift
 	    libname=`eval "\\$ECHO \"$libname_spec\""`
 	    # use dlname if we got it. it's perfectly good, no?
 	    if test -n "$dlname"; then
-	      soname="$dlname"
+	      soname=$dlname
 	    elif test -n "$soname_spec"; then
 	      # bleh windows
 	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
+	      *cygwin* | mingw* | *cegcc* | *os2*)
 	        func_arith $current - $age
 		major=$func_arith_result
-		versuffix="-$major"
+		versuffix=-$major
 		;;
 	      esac
 	      eval soname=\"$soname_spec\"
 	    else
-	      soname="$realname"
+	      soname=$realname
 	    fi
 
 	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
+	    soroot=$soname
 	    func_basename "$soroot"
-	    soname="$func_basename_result"
+	    soname=$func_basename_result
 	    func_stripname 'lib' '.dll' "$soname"
 	    newlib=libimp-$func_stripname_result.a
 
 	    # If the library has no export list, then create one now
 	    if test -f "$output_objdir/$soname-def"; then :
 	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_verbose "extracting exported symbol list from '$soname'"
 	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
 	    fi
 
 	    # Create $newlib
 	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
+	      func_verbose "generating import library for '$soname'"
 	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
 	    fi
 	    # make sure the library variables are pointing to the new library
@@ -5661,70 +8237,70 @@ func_mode_link ()
 	    linklib=$newlib
 	  fi # test -n "$old_archive_from_expsyms_cmds"
 
-	  if test "$linkmode" = prog || test "$mode" != relink; then
+	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    lib_linked=yes
 	    case $hardcode_action in
 	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
+	      if test no = "$hardcode_direct"; then
+		add=$dir/$linklib
 		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
 		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
+		    *-*-unixware7*) add_dir=-L$dir ;;
 		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
+		    # if the lib is a (non-dlopened) module then we cannot
 		    # link against it, someone is ignoring the earlier warnings
 		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
+			 $GREP ": [^:]* bundle" >/dev/null; then
 		      if test "X$dlopenmodule" != "X$lib"; then
 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  $ECHO
-			  $ECHO "*** And there doesn't seem to be a static archive available"
-			  $ECHO "*** The link will probably fail, sorry"
+			if test -z "$old_library"; then
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
 			else
-			  add="$dir/$old_library"
+			  add=$dir/$old_library
 			fi
 		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
+			add=$dir/$old_library
 		      fi
 		    fi
 		esac
-	      elif test "$hardcode_minus_L" = no; then
+	      elif test no = "$hardcode_minus_L"; then
 		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
+		*-*-sunos*) add_shlibpath=$dir ;;
 		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
+		add_dir=-L$dir
+		add=-l$name
+	      elif test no = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
 	      else
 		lib_linked=no
 	      fi
 	      ;;
 	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
+	      if test yes = "$hardcode_direct" &&
+	         test no = "$hardcode_direct_absolute"; then
+		add=$dir/$linklib
+	      elif test yes = "$hardcode_minus_L"; then
+		add_dir=-L$absdir
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
 		    [\\/]*)
-		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
 		      ;;
 		  esac
 		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
+		add=-l$name
+	      elif test yes = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
 	      else
 		lib_linked=no
 	      fi
@@ -5732,72 +8308,72 @@ func_mode_link ()
 	    *) lib_linked=no ;;
 	    esac
 
-	    if test "$lib_linked" != yes; then
+	    if test yes != "$lib_linked"; then
 	      func_fatal_configuration "unsupported hardcode properties"
 	    fi
 
 	    if test -n "$add_shlibpath"; then
 	      case :$compile_shlibpath: in
 	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
 	      esac
 	    fi
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
 	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
 	    else
 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
 	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
+	      if test yes != "$hardcode_direct" &&
+		 test yes != "$hardcode_minus_L" &&
+		 test yes = "$hardcode_shlibpath_var"; then
 		case :$finalize_shlibpath: in
 		*":$libdir:"*) ;;
-		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
 		esac
 	      fi
 	    fi
 	  fi
 
-	  if test "$linkmode" = prog || test "$mode" = relink; then
+	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
+	    if test yes = "$hardcode_direct" &&
+	       test no = "$hardcode_direct_absolute"; then
+	      add=$libdir/$linklib
+	    elif test yes = "$hardcode_minus_L"; then
+	      add_dir=-L$libdir
+	      add=-l$name
+	    elif test yes = "$hardcode_shlibpath_var"; then
 	      case :$finalize_shlibpath: in
 	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
 	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
+	      add=-l$name
+	    elif test yes = "$hardcode_automatic"; then
 	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
+		 test -f "$inst_prefix_dir$libdir/$linklib"; then
+		add=$inst_prefix_dir$libdir/$linklib
 	      else
-		add="$libdir/$linklib"
+		add=$libdir/$linklib
 	      fi
 	    else
 	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
+	      add_dir=-L$libdir
 	      # Try looking first in the location we're being installed to.
 	      if test -n "$inst_prefix_dir"; then
 		case $libdir in
 		  [\\/]*)
-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
 		    ;;
 		esac
 	      fi
-	      add="-l$name"
+	      add=-l$name
 	    fi
 
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
 	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
 	    else
@@ -5805,43 +8381,43 @@ func_mode_link ()
 	      test -n "$add" && deplibs="$add $deplibs"
 	    fi
 	  fi
-	elif test "$linkmode" = prog; then
+	elif test prog = "$linkmode"; then
 	  # Here we assume that one of hardcode_direct or hardcode_minus_L
 	  # is not unsupported.  This is valid on all known static and
 	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
+	  if test unsupported != "$hardcode_direct"; then
+	    test -n "$old_library" && linklib=$old_library
 	    compile_deplibs="$dir/$linklib $compile_deplibs"
 	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
 	  else
 	    compile_deplibs="-l$name -L$dir $compile_deplibs"
 	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
 	  fi
-	elif test "$build_libtool_libs" = yes; then
+	elif test yes = "$build_libtool_libs"; then
 	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
+	  if test pass_all != "$deplibs_check_method"; then
 	    # We're trying link a shared library against a static one
 	    # but the system doesn't support it.
 
 	    # Just print a warning and add the library to dependency_libs so
 	    # that the program can be linked against the static library.
-	    $ECHO
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    $ECHO "*** I have the capability to make that library automatically link in when"
-	    $ECHO "*** you link to this library.  But I can only do this if you have a"
-	    $ECHO "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      $ECHO "*** But as you try to build a module library, libtool will still create "
-	      $ECHO "*** a static module, that should work as long as the dlopening application"
-	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	    echo
+	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test yes = "$module"; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
 	      if test -z "$global_symbol_pipe"; then
-		$ECHO
-		$ECHO "*** However, this would only work if libtool was able to extract symbol"
-		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		$ECHO "*** not find such a program.  So, this module is probably useless."
-		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** 'nm' from GNU binutils and a full rebuild may help."
 	      fi
-	      if test "$build_old_libs" = no; then
+	      if test no = "$build_old_libs"; then
 		build_libtool_libs=module
 		build_old_libs=yes
 	      else
@@ -5854,11 +8430,11 @@ func_mode_link ()
 	  fi
 	fi # link shared/static library?
 
-	if test "$linkmode" = lib; then
+	if test lib = "$linkmode"; then
 	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
+	     { test yes != "$hardcode_into_libs" ||
+	       test yes = "$build_old_libs" ||
+	       test yes = "$link_static"; }; then
 	    # Extract -R from dependency_libs
 	    temp_deplibs=
 	    for libdir in $dependency_libs; do
@@ -5867,45 +8443,54 @@ func_mode_link ()
 	           temp_xrpath=$func_stripname_result
 		   case " $xrpath " in
 		   *" $temp_xrpath "*) ;;
-		   *) xrpath="$xrpath $temp_xrpath";;
+		   *) func_append xrpath " $temp_xrpath";;
 		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      *) func_append temp_deplibs " $libdir";;
 	      esac
 	    done
-	    dependency_libs="$temp_deplibs"
+	    dependency_libs=$temp_deplibs
 	  fi
 
-	  newlib_search_path="$newlib_search_path $absdir"
+	  func_append newlib_search_path " $absdir"
 	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
 	  # ... and its dependency_libs
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    newdependency_libs="$deplib $newdependency_libs"
-	    if $opt_duplicate_deps ; then
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $func_resolve_sysroot_result"
 	  done
 
-	  if test "$link_all_deplibs" != no; then
+	  if test no != "$link_all_deplibs"; then
 	    # Add the search paths of all dependency libraries
 	    for deplib in $dependency_libs; do
+	      path=
 	      case $deplib in
-	      -L*) path="$deplib" ;;
+	      -L*) path=$deplib ;;
 	      *.la)
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
 	        func_dirname "$deplib" "" "."
-		dir="$func_dirname_result"
+		dir=$func_dirname_result
 		# We need an absolute path.
 		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
 		*)
 		  absdir=`cd "$dir" && pwd`
 		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
+		    func_warning "cannot determine absolute directory name of '$dir'"
+		    absdir=$dir
 		  fi
 		  ;;
 		esac
@@ -5913,35 +8498,35 @@ func_mode_link ()
 		case $host in
 		*-*-darwin*)
 		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
+		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names"; then
+		    for tmp in $deplibrary_names; do
 		      depdepl=$tmp
 		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+		    if test -f "$absdir/$objdir/$depdepl"; then
+		      depdepl=$absdir/$objdir/$depdepl
+		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
                       if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
                       fi
-		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
 		      path=
 		    fi
 		  fi
 		  ;;
 		*)
-		  path="-L$absdir/$objdir"
+		  path=-L$absdir/$objdir
 		  ;;
 		esac
 		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
 		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		    func_fatal_error "'$deplib' is not a valid libtool archive"
 		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
+		    func_warning "'$deplib' seems to be moved"
 
-		  path="-L$absdir"
+		  path=-L$absdir
 		fi
 		;;
 	      esac
@@ -5953,38 +8538,38 @@ func_mode_link ()
 	  fi # link_all_deplibs != no
 	fi # linkmode = lib
       done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
+      if test link = "$pass"; then
+	if test prog = "$linkmode"; then
 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
 	else
-	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	fi
       fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
+      dependency_libs=$newdependency_libs
+      if test dlpreopen = "$pass"; then
 	# Link the dlpreopened libraries before other libraries
 	for deplib in $save_deplibs; do
 	  deplibs="$deplib $deplibs"
 	done
       fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
+      if test dlopen != "$pass"; then
+	test conv = "$pass" || {
 	  # Make sure lib_search_path contains only unique directories.
 	  lib_search_path=
 	  for dir in $newlib_search_path; do
 	    case "$lib_search_path " in
 	    *" $dir "*) ;;
-	    *) lib_search_path="$lib_search_path $dir" ;;
+	    *) func_append lib_search_path " $dir" ;;
 	    esac
 	  done
 	  newlib_search_path=
-	fi
+	}
 
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
+	if test prog,link = "$linkmode,$pass"; then
 	  vars="compile_deplibs finalize_deplibs"
+	else
+	  vars=deplibs
 	fi
 	for var in $vars dependency_libs; do
 	  # Add libraries to $var in reverse order
@@ -6033,71 +8618,102 @@ func_mode_link ()
 	    -L*)
 	      case " $tmp_libs " in
 	      *" $deplib "*) ;;
-	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      *) func_append tmp_libs " $deplib" ;;
 	      esac
 	      ;;
-	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    *) func_append tmp_libs " $deplib" ;;
 	    esac
 	  done
 	  eval $var=\"$tmp_libs\"
 	done # for var
       fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
       # Last step: remove runtime libs from dependency_libs
       # (they stay in deplibs)
       tmp_libs=
-      for i in $dependency_libs ; do
+      for i in $dependency_libs; do
 	case " $predeps $postdeps $compiler_lib_search_path " in
 	*" $i "*)
-	  i=""
+	  i=
 	  ;;
 	esac
-	if test -n "$i" ; then
-	  tmp_libs="$tmp_libs $i"
+	if test -n "$i"; then
+	  func_append tmp_libs " $i"
 	fi
       done
       dependency_libs=$tmp_libs
     done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
+    if test prog = "$linkmode"; then
+      dlfiles=$newdlfiles
     fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
+    if test prog = "$linkmode" || test lib = "$linkmode"; then
+      dlprefiles=$newdlprefiles
     fi
 
     case $linkmode in
     oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for archives"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
+	func_warning "'-l' and '-L' are ignored for archives" ;;
       esac
 
       test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
+	func_warning "'-rpath' is ignored for archives"
 
       test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
+	func_warning "'-R' is ignored for archives"
 
       test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
+	func_warning "'-version-info/-version-number' is ignored for archives"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
+	func_warning "'-release' is ignored for archives"
 
       test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
+	func_warning "'-export-symbols' is ignored for archives"
 
       # Now set the variables for building old libraries.
       build_libtool_libs=no
-      oldlibs="$output"
-      objs="$objs$old_deplibs"
+      oldlibs=$output
+      func_append objs "$old_deplibs"
       ;;
 
     lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
+      # Make sure we only generate libraries of the form 'libNAME.la'.
       case $outputname in
       lib*)
 	func_stripname 'lib' '.la' "$outputname"
@@ -6106,10 +8722,10 @@ func_mode_link ()
 	eval libname=\"$libname_spec\"
 	;;
       *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+	test no = "$module" \
+	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
 
-	if test "$need_lib_prefix" != no; then
+	if test no != "$need_lib_prefix"; then
 	  # Add the "lib" prefix for modules if required
 	  func_stripname '' '.la' "$outputname"
 	  name=$func_stripname_result
@@ -6123,31 +8739,31 @@ func_mode_link ()
       esac
 
       if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+	if test pass_all != "$deplibs_check_method"; then
+	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
 	else
-	  $ECHO
+	  echo
 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
 	  $ECHO "*** objects $objs is not portable!"
-	  libobjs="$libobjs $objs"
+	  func_append libobjs " $objs"
 	fi
       fi
 
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
+      test no = "$dlself" \
+	|| func_warning "'-dlopen self' is ignored for libtool libraries"
 
       set dummy $rpath
       shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
+      test 1 -lt "$#" \
+	&& func_warning "ignoring multiple '-rpath's for a libtool library"
 
-      install_libdir="$1"
+      install_libdir=$1
 
       oldlibs=
       if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
+	if test yes = "$build_libtool_libs"; then
 	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
+	  # Some compilers have problems with a '.al' extension so
 	  # convenience libraries should have the same extension an
 	  # archive normally would.
 	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
@@ -6156,20 +8772,20 @@ func_mode_link ()
 	fi
 
 	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
 
 	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
+	  func_warning "'-release' is ignored for convenience libraries"
       else
 
 	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
+	save_ifs=$IFS; IFS=:
 	set dummy $vinfo 0 0 0
 	shift
-	IFS="$save_ifs"
+	IFS=$save_ifs
 
 	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
+	  func_fatal_help "too many parameters to '-version-info'"
 
 	# convert absolute version numbers to libtool ages
 	# this retains compatibility with .la files and attempts
@@ -6177,41 +8793,42 @@ func_mode_link ()
 
 	case $vinfo_number in
 	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
+	  number_major=$1
+	  number_minor=$2
+	  number_revision=$3
 	  #
 	  # There are really only two kinds -- those that
 	  # use the current revision as the major version
 	  # and those that subtract age and use age as
 	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
+	  # that has an extra 1 added just for fun
 	  #
 	  case $version_type in
-	  darwin|linux|osf|windows|none)
+	  # correct linux to gnu/linux during the next big refactor
+	  darwin|freebsd-elf|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
+	    age=$number_minor
+	    revision=$number_revision
 	    ;;
-	  freebsd-aout|freebsd-elf|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
+	  freebsd-aout|qnx|sunos)
+	    current=$number_major
+	    revision=$number_minor
+	    age=0
 	    ;;
 	  irix|nonstopux)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
+	    age=$number_minor
+	    revision=$number_minor
 	    lt_irix_increment=no
 	    ;;
 	  esac
 	  ;;
 	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
+	  current=$1
+	  revision=$2
+	  age=$3
 	  ;;
 	esac
 
@@ -6219,30 +8836,30 @@ func_mode_link ()
 	case $current in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "CURRENT '$current' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $revision in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "REVISION '$revision' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $age in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "AGE '$age' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "AGE '$age' is greater than the current interface number '$current'"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	fi
 
 	# Calculate the version variables.
@@ -6257,26 +8874,36 @@ func_mode_link ()
 	  # verstring for coding it into the library header
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
+	  versuffix=$major.$age.$revision
 	  # Darwin ld doesn't like 0 for these options...
 	  func_arith $current + 1
 	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
 	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+          # On Darwin other compilers
+          case $CC in
+              nagfor*)
+                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+                  ;;
+              *)
+                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+                  ;;
+          esac
 	  ;;
 
 	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
+	  major=.$current
+	  versuffix=.$current.$revision
 	  ;;
 
 	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
 	  ;;
 
 	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
+	  if test no = "$lt_irix_increment"; then
 	    func_arith $current - $age
 	  else
 	    func_arith $current - $age + 1
@@ -6287,69 +8914,74 @@ func_mode_link ()
 	    nonstopux) verstring_prefix=nonstopux ;;
 	    *)         verstring_prefix=sgi ;;
 	  esac
-	  verstring="$verstring_prefix$major.$revision"
+	  verstring=$verstring_prefix$major.$revision
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$revision
-	  while test "$loop" -ne 0; do
+	  while test 0 -ne "$loop"; do
 	    func_arith $revision - $loop
 	    iface=$func_arith_result
 	    func_arith $loop - 1
 	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
+	    verstring=$verstring_prefix$major.$iface:$verstring
 	  done
 
-	  # Before this point, $major must not contain `.'.
+	  # Before this point, $major must not contain '.'.
 	  major=.$major
-	  versuffix="$major.$revision"
+	  versuffix=$major.$revision
 	  ;;
 
-	linux)
+	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
+	  versuffix=$major.$age.$revision
 	  ;;
 
 	osf)
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
+	  versuffix=.$current.$age.$revision
+	  verstring=$current.$age.$revision
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$age
-	  while test "$loop" -ne 0; do
+	  while test 0 -ne "$loop"; do
 	    func_arith $current - $loop
 	    iface=$func_arith_result
 	    func_arith $loop - 1
 	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
+	    verstring=$verstring:$iface.0
 	  done
 
 	  # Make executables depend on our current version.
-	  verstring="$verstring:${current}.0"
+	  func_append verstring ":$current.0"
 	  ;;
 
 	qnx)
-	  major=".$current"
-	  versuffix=".$current"
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sco)
+	  major=.$current
+	  versuffix=.$current
 	  ;;
 
 	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
+	  major=.$current
+	  versuffix=.$current.$revision
 	  ;;
 
 	windows)
 	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
+	  # extension on DOS 8.3 file systems.
 	  func_arith $current - $age
 	  major=$func_arith_result
-	  versuffix="-$major"
+	  versuffix=-$major
 	  ;;
 
 	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
+	  func_fatal_configuration "unknown library version type '$version_type'"
 	  ;;
 	esac
 
@@ -6363,42 +8995,45 @@ func_mode_link ()
 	    verstring=
 	    ;;
 	  *)
-	    verstring="0.0"
+	    verstring=0.0
 	    ;;
 	  esac
-	  if test "$need_version" = no; then
+	  if test no = "$need_version"; then
 	    versuffix=
 	  else
-	    versuffix=".0.0"
+	    versuffix=.0.0
 	  fi
 	fi
 
 	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
+	if test yes,no = "$avoid_version,$need_version"; then
 	  major=
 	  versuffix=
-	  verstring=""
+	  verstring=
 	fi
 
 	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
+	if test yes = "$allow_undefined"; then
+	  if test unsupported = "$allow_undefined_flag"; then
+	    if test yes = "$build_old_libs"; then
+	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+	      build_libtool_libs=no
+	    else
+	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+	    fi
 	  fi
 	else
 	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
+	  allow_undefined_flag=$no_undefined_flag
 	fi
 
       fi
 
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs="$libobjs $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
+      func_generate_dlsyms "$libname" "$libname" :
+      func_append libobjs " $symfileobj"
+      test " " = "$libobjs" && libobjs=
 
-      if test "$mode" != relink; then
+      if test relink != "$opt_mode"; then
 	# Remove our outputs, but don't remove object files since they
 	# may have been created when compiling PIC objects.
 	removelist=
@@ -6407,14 +9042,14 @@ func_mode_link ()
 	  case $p in
 	    *.$objext | *.gcno)
 	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+	       if test -n "$precious_files_regex"; then
 		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
 		 then
 		   continue
 		 fi
 	       fi
-	       removelist="$removelist $p"
+	       func_append removelist " $p"
 	       ;;
 	    *) ;;
 	  esac
@@ -6424,64 +9059,65 @@ func_mode_link ()
       fi
 
       # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
+	func_append oldlibs " $output_objdir/$libname.$libext"
 
 	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
       fi
 
       # Eliminate all temporary directories.
       #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
-      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
       #done
 
       if test -n "$xrpath"; then
 	# If the user specified any rpath flags, then add them.
 	temp_xrpath=
 	for libdir in $xrpath; do
-	  temp_xrpath="$temp_xrpath -R$libdir"
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
 	  case "$finalize_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
 	  dependency_libs="$temp_xrpath $dependency_libs"
 	fi
       fi
 
       # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
+      old_dlfiles=$dlfiles
       dlfiles=
       for lib in $old_dlfiles; do
 	case " $dlprefiles $dlfiles " in
 	*" $lib "*) ;;
-	*) dlfiles="$dlfiles $lib" ;;
+	*) func_append dlfiles " $lib" ;;
 	esac
       done
 
       # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
+      old_dlprefiles=$dlprefiles
       dlprefiles=
       for lib in $old_dlprefiles; do
 	case "$dlprefiles " in
 	*" $lib "*) ;;
-	*) dlprefiles="$dlprefiles $lib" ;;
+	*) func_append dlprefiles " $lib" ;;
 	esac
       done
 
-      if test "$build_libtool_libs" = yes; then
+      if test yes = "$build_libtool_libs"; then
 	if test -n "$rpath"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # these systems don't actually have a c library (as such)!
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C library is in the System framework
-	    deplibs="$deplibs System.ltframework"
+	    func_append deplibs " System.ltframework"
 	    ;;
 	  *-*-netbsd*)
 	    # Don't link with libc until the a.out ld.so is fixed.
@@ -6497,8 +9133,8 @@ func_mode_link ()
 	    ;;
 	  *)
 	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs="$deplibs -lc"
+	    if test yes = "$build_libtool_need_lc"; then
+	      func_append deplibs " -lc"
 	    fi
 	    ;;
 	  esac
@@ -6513,9 +9149,9 @@ func_mode_link ()
 	# I'm not sure if I'm treating the release correctly.  I think
 	# release should show up in the -l (ie -lgmp5) so we don't want to
 	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
+	release=
+	versuffix=
+	major=
 	newdeplibs=
 	droppeddeps=no
 	case $deplibs_check_method in
@@ -6544,35 +9180,35 @@ EOF
 	      -l*)
 		func_stripname -l '' "$i"
 		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		  case " $predeps $postdeps " in
 		  *" $i "*)
-		    newdeplibs="$newdeplibs $i"
-		    i=""
+		    func_append newdeplibs " $i"
+		    i=
 		    ;;
 		  esac
 		fi
-		if test -n "$i" ; then
+		if test -n "$i"; then
 		  libname=`eval "\\$ECHO \"$libname_spec\""`
 		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
 		  set dummy $deplib_matches; shift
 		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs="$newdeplibs $i"
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		    func_append newdeplibs " $i"
 		  else
 		    droppeddeps=yes
-		    $ECHO
+		    echo
 		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    $ECHO "*** I have the capability to make that library automatically link in when"
-		    $ECHO "*** you link to this library.  But I can only do this if you have a"
-		    $ECHO "*** shared version of the library, which I believe you do not have"
-		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
-		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
 		  fi
 		fi
 		;;
 	      *)
-		newdeplibs="$newdeplibs $i"
+		func_append newdeplibs " $i"
 		;;
 	      esac
 	    done
@@ -6587,43 +9223,43 @@ EOF
 		$opt_dry_run || $RM conftest
 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
 		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		    case " $predeps $postdeps " in
 		    *" $i "*)
-		      newdeplibs="$newdeplibs $i"
-		      i=""
+		      func_append newdeplibs " $i"
+		      i=
 		      ;;
 		    esac
 		  fi
-		  if test -n "$i" ; then
+		  if test -n "$i"; then
 		    libname=`eval "\\$ECHO \"$libname_spec\""`
 		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
 		    set dummy $deplib_matches; shift
 		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs="$newdeplibs $i"
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		      func_append newdeplibs " $i"
 		    else
 		      droppeddeps=yes
-		      $ECHO
+		      echo
 		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      $ECHO "*** I have the capability to make that library automatically link in when"
-		      $ECHO "*** you link to this library.  But I can only do this if you have a"
-		      $ECHO "*** shared version of the library, which you do not appear to have"
-		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
-		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
 		    fi
 		  fi
 		else
 		  droppeddeps=yes
-		  $ECHO
+		  echo
 		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $ECHO "*** make it link in!  You will probably need to install it or some"
-		  $ECHO "*** library that it depends on before this library will be fully"
-		  $ECHO "*** functional.  Installing it before continuing would be even better."
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
 		fi
 		;;
 	      *)
-		newdeplibs="$newdeplibs $i"
+		func_append newdeplibs " $i"
 		;;
 	      esac
 	    done
@@ -6637,18 +9273,30 @@ EOF
 	    -l*)
 	      func_stripname -l '' "$a_deplib"
 	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=
 		  ;;
 		esac
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  if test yes = "$want_nocaseglob"; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
 		  for potent_lib in $potential_libs; do
 		      # Follow soft links.
 		      if ls -lLd "$potent_lib" 2>/dev/null |
@@ -6660,33 +9308,33 @@ EOF
 		      # We might still enter an endless loop, since a link
 		      # loop can be closed while we follow links,
 		      # but so what?
-		      potlib="$potent_lib"
+		      potlib=$potent_lib
 		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
 			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
 			esac
 		      done
 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
 			 $SED -e 10q |
 			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$newdeplibs $a_deplib"
-			a_deplib=""
+			func_append newdeplibs " $a_deplib"
+			a_deplib=
 			break 2
 		      fi
 		  done
 		done
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		droppeddeps=yes
-		$ECHO
+		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib"; then
 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
 		else
 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -6696,7 +9344,7 @@ EOF
 	      ;;
 	    *)
 	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
+	      func_append newdeplibs " $a_deplib"
 	      ;;
 	    esac
 	  done # Gone through all deplibs.
@@ -6709,38 +9357,38 @@ EOF
 	    -l*)
 	      func_stripname -l '' "$a_deplib"
 	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=
 		  ;;
 		esac
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
 		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+		    potlib=$potent_lib # see symlink-check above in file_magic test
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
 		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$newdeplibs $a_deplib"
-		      a_deplib=""
+		      func_append newdeplibs " $a_deplib"
+		      a_deplib=
 		      break 2
 		    fi
 		  done
 		done
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		droppeddeps=yes
-		$ECHO
+		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib"; then
 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
 		else
 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -6750,32 +9398,32 @@ EOF
 	      ;;
 	    *)
 	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
+	      func_append newdeplibs " $a_deplib"
 	      ;;
 	    esac
 	  done # Gone through all deplibs.
 	  ;;
 	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
+	  newdeplibs=
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	    for i in $predeps $postdeps; do
 	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
 	    done
 	  fi
-	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
-	     $GREP . >/dev/null; then
-	    $ECHO
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
+	    if test none = "$deplibs_check_method"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
 	    else
-	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
 	    fi
-	    $ECHO "*** All declared inter-library dependencies are being dropped."
+	    echo "*** All declared inter-library dependencies are being dropped."
 	    droppeddeps=yes
-	  fi
+	    ;;
+	  esac
 	  ;;
 	esac
 	versuffix=$versuffix_save
@@ -6787,44 +9435,44 @@ EOF
 	case $host in
 	*-*-rhapsody* | *-*-darwin1.[012])
 	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
 	  ;;
 	esac
 
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    $ECHO
-	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+	if test yes = "$droppeddeps"; then
+	  if test yes = "$module"; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    $ECHO "*** a static module, that should work as long as the dlopening"
-	    $ECHO "*** application is linked with the -dlopen flag."
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
 	    if test -z "$global_symbol_pipe"; then
-	      $ECHO
-	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
-	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      $ECHO "*** not find such a program.  So, this module is probably useless."
-	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
 	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
+	    if test no = "$build_old_libs"; then
+	      oldlibs=$output_objdir/$libname.$libext
 	      build_libtool_libs=module
 	      build_old_libs=yes
 	    else
 	      build_libtool_libs=no
 	    fi
 	  else
-	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
-	    $ECHO "*** automatically added whenever a program is linked with this library"
-	    $ECHO "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      $ECHO
-	      $ECHO "*** Since this library must not contain undefined symbols,"
-	      $ECHO "*** because either the platform does not support them or"
-	      $ECHO "*** it was explicitly requested with -no-undefined,"
-	      $ECHO "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test no = "$allow_undefined"; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test no = "$build_old_libs"; then
+		oldlibs=$output_objdir/$libname.$libext
 		build_libtool_libs=module
 		build_old_libs=yes
 	      else
@@ -6839,9 +9487,9 @@ EOF
       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
       case $host in
 	*-*-darwin*)
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	  ;;
       esac
 
@@ -6854,7 +9502,7 @@ EOF
 	*)
 	  case " $deplibs " in
 	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
+	    func_append new_libs " -L$path/$objdir" ;;
 	  esac
 	  ;;
 	esac
@@ -6864,13 +9512,13 @@ EOF
 	-L*)
 	  case " $new_libs " in
 	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
+	  *) func_append new_libs " $deplib" ;;
 	  esac
 	  ;;
-	*) new_libs="$new_libs $deplib" ;;
+	*) func_append new_libs " $deplib" ;;
 	esac
       done
-      deplibs="$new_libs"
+      deplibs=$new_libs
 
       # All the library-specific variables (install_libdir is set above).
       library_names=
@@ -6878,62 +9526,65 @@ EOF
       dlname=
 
       # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	if test "$hardcode_into_libs" = yes; then
+      if test yes = "$build_libtool_libs"; then
+	# Remove $wl instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
+	if test yes = "$hardcode_into_libs"; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
 	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  rpath=$finalize_rpath
+	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
 	  for libdir in $rpath; do
 	    if test -n "$hardcode_libdir_flag_spec"; then
 	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
 		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
+		  hardcode_libdirs=$libdir
 		else
 		  # Just accumulate the unique libdirs.
 		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
 		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		    ;;
 		  *)
-		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		    ;;
 		  esac
 		fi
 	      else
 		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
+		func_append dep_rpath " $flag"
 	      fi
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
 	  # Substitute the hardcoded libdirs into the rpath.
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
+	    libdir=$hardcode_libdirs
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
 	    # We should set the runpath_var.
 	    rpath=
 	    for dir in $perm_rpath; do
-	      rpath="$rpath$dir:"
+	      func_append rpath "$dir:"
 	    done
 	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
 	  fi
 	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
 	fi
 
-	shlibpath="$finalize_shlibpath"
-	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	shlibpath=$finalize_shlibpath
+	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
 	if test -n "$shlibpath"; then
 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
 	fi
@@ -6943,34 +9594,34 @@ EOF
 	eval library_names=\"$library_names_spec\"
 	set dummy $library_names
 	shift
-	realname="$1"
+	realname=$1
 	shift
 
 	if test -n "$soname_spec"; then
 	  eval soname=\"$soname_spec\"
 	else
-	  soname="$realname"
+	  soname=$realname
 	fi
 	if test -z "$dlname"; then
 	  dlname=$soname
 	fi
 
-	lib="$output_objdir/$realname"
+	lib=$output_objdir/$realname
 	linknames=
 	for link
 	do
-	  linknames="$linknames $link"
+	  func_append linknames " $link"
 	done
 
 	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	test "X$libobjs" = "X " && libobjs=
 
 	delfiles=
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  delfiles="$delfiles $export_symbols"
+	  export_symbols=$output_objdir/$libname.uexp
+	  func_append delfiles " $export_symbols"
 	fi
 
 	orig_export_symbols=
@@ -6978,36 +9629,68 @@ EOF
 	cygwin* | mingw* | cegcc*)
 	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
 	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	    func_dll_def_p "$export_symbols" || {
 	      # and it's NOT already a .def file. Must figure out
 	      # which of the given symbols are data symbols and tag
 	      # them as such. So, trigger use of export_symbols_cmds.
 	      # export_symbols gets reassigned inside the "prepare
 	      # the list of exported symbols" if statement, so the
 	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
+	      orig_export_symbols=$export_symbols
 	      export_symbols=
 	      always_export_symbols=yes
-	    fi
+	    }
 	  fi
 	  ;;
 	esac
 
 	# Prepare the list of exported symbols
 	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
+	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for '$libname.la'"
+	    export_symbols=$output_objdir/$libname.exp
 	    $opt_dry_run || $RM $export_symbols
 	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $cmds; do
-	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      func_len " $cmd"
-	      len=$func_len_result
-	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	    save_ifs=$IFS; IFS='~'
+	    for cmd1 in $cmds; do
+	      IFS=$save_ifs
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test yes = "$try_normal_branch" \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=$output_objdir/$output_la.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
 		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
 		skipped_export=false
 	      else
 		# The command line is too long to execute in one step.
@@ -7018,8 +9701,8 @@ EOF
 		break
 	      fi
 	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	    IFS=$save_ifs
+	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
 	    fi
@@ -7027,21 +9710,21 @@ EOF
 	fi
 
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+	  tmp_export_symbols=$export_symbols
+	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	fi
 
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
 	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
 	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # 's' commands, which not all seds can handle. GNU sed should be fine
 	  # though. Also, the filter scales superlinearly with the number of
 	  # global variables. join(1) would be nice here, but unfortunately
 	  # isn't a blessed tool.
 	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
 	  export_symbols=$output_objdir/$libname.def
 	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	fi
@@ -7051,15 +9734,15 @@ EOF
 	  case " $convenience " in
 	  *" $test_deplib "*) ;;
 	  *)
-	    tmp_deplibs="$tmp_deplibs $test_deplib"
+	    func_append tmp_deplibs " $test_deplib"
 	    ;;
 	  esac
 	done
-	deplibs="$tmp_deplibs"
+	deplibs=$tmp_deplibs
 
 	if test -n "$convenience"; then
 	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
+	    test yes = "$compiler_needs_object" &&
 	    test -z "$libobjs"; then
 	    # extract the archives, so we have objects to list.
 	    # TODO: could optimize this to just extract one archive.
@@ -7070,27 +9753,27 @@ EOF
 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
 	    test "X$libobjs" = "X " && libobjs=
 	  else
-	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
+	    gentop=$output_objdir/${outputname}x
+	    func_append generated " $gentop"
 
 	    func_extract_archives $gentop $convenience
-	    libobjs="$libobjs $func_extract_archives_result"
+	    func_append libobjs " $func_extract_archives_result"
 	    test "X$libobjs" = "X " && libobjs=
 	  fi
 	fi
 
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
 	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags="$linker_flags $flag"
+	  func_append linker_flags " $flag"
 	fi
 
 	# Make a backup of the uninstalled library when relinking
-	if test "$mode" = relink; then
+	if test relink = "$opt_mode"; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
 	fi
 
 	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
+	if test yes = "$module" && test -n "$module_cmds"; then
 	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
 	    eval test_cmds=\"$module_expsym_cmds\"
 	    cmds=$module_expsym_cmds
@@ -7108,7 +9791,7 @@ EOF
 	  fi
 	fi
 
-	if test "X$skipped_export" != "X:" &&
+	if test : != "$skipped_export" &&
 	   func_len " $test_cmds" &&
 	   len=$func_len_result &&
 	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
@@ -7130,7 +9813,8 @@ EOF
 	    save_libobjs=$libobjs
 	  fi
 	  save_output=$output
-	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+	  func_basename "$output"
+	  output_la=$func_basename_result
 
 	  # Clear the reloadable object creation command queue and
 	  # initialize k to one.
@@ -7140,37 +9824,42 @@ EOF
 	  last_robj=
 	  k=1
 
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
+	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+	    output=$output_objdir/$output_la.lnkscript
 	    func_verbose "creating GNU ld script: $output"
-	    $ECHO 'INPUT (' > $output
+	    echo 'INPUT (' > $output
 	    for obj in $save_libobjs
 	    do
-	      $ECHO "$obj" >> $output
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
 	    done
-	    $ECHO ')' >> $output
-	    delfiles="$delfiles $output"
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
+	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+	    output=$output_objdir/$output_la.lnk
 	    func_verbose "creating linker input file list: $output"
 	    : > $output
 	    set x $save_libobjs
 	    shift
 	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
+	    if test yes = "$compiler_needs_object"; then
 	      firstobj="$1 "
 	      shift
 	    fi
 	    for obj
 	    do
-	      $ECHO "$obj" >> $output
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
 	    done
-	    delfiles="$delfiles $output"
-	    output=$firstobj\"$file_list_spec$output\"
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
 	  else
 	    if test -n "$save_libobjs"; then
 	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
+	      output=$output_objdir/$output_la-$k.$objext
 	      eval test_cmds=\"$reload_cmds\"
 	      func_len " $test_cmds"
 	      len0=$func_len_result
@@ -7182,25 +9871,27 @@ EOF
 		func_len " $obj"
 		func_arith $len + $func_len_result
 		len=$func_arith_result
-		if test "X$objlist" = X ||
+		if test -z "$objlist" ||
 		   test "$len" -lt "$max_cmd_len"; then
 		  func_append objlist " $obj"
 		else
 		  # The command $test_cmds is almost too long, add a
 		  # command to the queue.
-		  if test "$k" -eq 1 ; then
+		  if test 1 -eq "$k"; then
 		    # The first file doesn't have a previous command to add.
-		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
 		  else
 		    # All subsequent reloadable object files will link in
 		    # the last one created.
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
 		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  last_robj=$output_objdir/$output_la-$k.$objext
 		  func_arith $k + 1
 		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=$obj
+		  output=$output_objdir/$output_la-$k.$objext
+		  objlist=" $obj"
 		  func_len " $last_robj"
 		  func_arith $len0 + $func_len_result
 		  len=$func_arith_result
@@ -7210,19 +9901,20 @@ EOF
 	      # reloadable object file.  All subsequent reloadable object
 	      # files will link in the last one created.
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
 	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
 	      fi
-	      delfiles="$delfiles $output"
+	      func_append delfiles " $output"
 
 	    else
 	      output=
 	    fi
 
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
+	    ${skipped_export-false} && {
+	      func_verbose "generating symbol list for '$libname.la'"
+	      export_symbols=$output_objdir/$libname.exp
 	      $opt_dry_run || $RM $export_symbols
 	      libobjs=$output
 	      # Append the command to create the export file.
@@ -7231,16 +9923,16 @@ EOF
 	      if test -n "$last_robj"; then
 		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
 	      fi
-	    fi
+	    }
 
 	    test -n "$save_libobjs" &&
 	      func_verbose "creating a temporary reloadable object file: $output"
 
 	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
+	    save_ifs=$IFS; IFS='~'
 	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
+	      IFS=$save_ifs
+	      $opt_quiet || {
 		  func_quote_for_expand "$cmd"
 		  eval "func_echo $func_quote_for_expand_result"
 	      }
@@ -7248,7 +9940,7 @@ EOF
 		lt_exit=$?
 
 		# Restore the uninstalled library and exit
-		if test "$mode" = relink; then
+		if test relink = "$opt_mode"; then
 		  ( cd "$output_objdir" && \
 		    $RM "${realname}T" && \
 		    $MV "${realname}U" "$realname" )
@@ -7257,7 +9949,7 @@ EOF
 		exit $lt_exit
 	      }
 	    done
-	    IFS="$save_ifs"
+	    IFS=$save_ifs
 
 	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
@@ -7265,27 +9957,27 @@ EOF
 	    fi
 	  fi
 
-          if ${skipped_export-false}; then
+          ${skipped_export-false} && {
 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+	      tmp_export_symbols=$export_symbols
+	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	    fi
 
 	    if test -n "$orig_export_symbols"; then
 	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
 	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # 's' commands, which not all seds can handle. GNU sed should be fine
 	      # though. Also, the filter scales superlinearly with the number of
 	      # global variables. join(1) would be nice here, but unfortunately
 	      # isn't a blessed tool.
 	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
 	      export_symbols=$output_objdir/$libname.def
 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	    fi
-	  fi
+	  }
 
 	  libobjs=$output
 	  # Restore the value of output.
@@ -7299,7 +9991,7 @@ EOF
 	  # value of $libobjs for piecewise linking.
 
 	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test yes = "$module" && test -n "$module_cmds"; then
 	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
 	      cmds=$module_expsym_cmds
 	    else
@@ -7321,19 +10013,20 @@ EOF
 
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
-	  libobjs="$libobjs $func_extract_archives_result"
+	  func_append libobjs " $func_extract_archives_result"
 	  test "X$libobjs" = "X " && libobjs=
 	fi
 
-	save_ifs="$IFS"; IFS='~'
+	save_ifs=$IFS; IFS='~'
 	for cmd in $cmds; do
-	  IFS="$save_ifs"
+	  IFS=$sp$nl
 	  eval cmd=\"$cmd\"
-	  $opt_silent || {
+	  IFS=$save_ifs
+	  $opt_quiet || {
 	    func_quote_for_expand "$cmd"
 	    eval "func_echo $func_quote_for_expand_result"
 	  }
@@ -7341,7 +10034,7 @@ EOF
 	    lt_exit=$?
 
 	    # Restore the uninstalled library and exit
-	    if test "$mode" = relink; then
+	    if test relink = "$opt_mode"; then
 	      ( cd "$output_objdir" && \
 	        $RM "${realname}T" && \
 		$MV "${realname}U" "$realname" )
@@ -7350,10 +10043,10 @@ EOF
 	    exit $lt_exit
 	  }
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 
 	# Restore the uninstalled library and exit
-	if test "$mode" = relink; then
+	if test relink = "$opt_mode"; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
 	  if test -n "$convenience"; then
@@ -7373,39 +10066,39 @@ EOF
 	done
 
 	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
+	if test yes = "$module" || test yes = "$export_dynamic"; then
 	  # On all known operating systems, these are identical.
-	  dlname="$soname"
+	  dlname=$soname
 	fi
       fi
       ;;
 
     obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for objects"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
+	func_warning "'-l' and '-L' are ignored for objects" ;;
       esac
 
       test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
+	func_warning "'-rpath' is ignored for objects"
 
       test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
+	func_warning "'-R' is ignored for objects"
 
       test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
+	func_warning "'-version-info' is ignored for objects"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
+	func_warning "'-release' is ignored for objects"
 
       case $output in
       *.lo)
 	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
 
 	libobj=$output
 	func_lo2o "$libobj"
@@ -7413,7 +10106,7 @@ EOF
 	;;
       *)
 	libobj=
-	obj="$output"
+	obj=$output
 	;;
       esac
 
@@ -7426,28 +10119,33 @@ EOF
       # the extraction.
       reload_conv_objs=
       gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
+      # if reload_cmds runs $LD directly, get rid of -Wl from
+      # whole_archive_flag_spec and hope we can get by with turning comma
+      # into space.
+      case $reload_cmds in
+        *\$LD[\ \$]*) wl= ;;
+      esac
       if test -n "$convenience"; then
 	if test -n "$whole_archive_flag_spec"; then
 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
 	else
-	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
+	  gentop=$output_objdir/${obj}x
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $convenience
 	  reload_conv_objs="$reload_objs $func_extract_archives_result"
 	fi
       fi
 
+      # If we're not building shared, we need to use non_pic_objs
+      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
+
       # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
 
-      output="$obj"
+      output=$obj
       func_execute_cmds "$reload_cmds" 'exit $?'
 
       # Exit if we aren't doing a library object file.
@@ -7459,7 +10157,7 @@ EOF
 	exit $EXIT_SUCCESS
       fi
 
-      if test "$build_libtool_libs" != yes; then
+      test yes = "$build_libtool_libs" || {
 	if test -n "$gentop"; then
 	  func_show_eval '${RM}r "$gentop"'
 	fi
@@ -7469,12 +10167,12 @@ EOF
 	# $show "echo timestamp > $libobj"
 	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
 	exit $EXIT_SUCCESS
-      fi
+      }
 
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
+      if test -n "$pic_flag" || test default != "$pic_mode"; then
 	# Only do commands if we really have different PIC objects.
 	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
+	output=$libobj
 	func_execute_cmds "$reload_cmds" 'exit $?'
       fi
 
@@ -7491,22 +10189,20 @@ EOF
 	          output=$func_stripname_result.exe;;
       esac
       test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
+	func_warning "'-version-info' is ignored for programs"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
+	func_warning "'-release' is ignored for programs"
 
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+      $preload \
+	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
 
       case $host in
       *-*-rhapsody* | *-*-darwin1.[012])
 	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
 	;;
       esac
 
@@ -7514,17 +10210,17 @@ EOF
       *-*-darwin*)
 	# Don't allow lazy linking, it breaks C++ global constructors
 	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
+	if test CXX = "$tagname"; then
 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
 	    10.[0123])
-	      compile_command="$compile_command ${wl}-bind_at_load"
-	      finalize_command="$finalize_command ${wl}-bind_at_load"
+	      func_append compile_command " $wl-bind_at_load"
+	      func_append finalize_command " $wl-bind_at_load"
 	    ;;
 	  esac
 	fi
 	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	;;
       esac
 
@@ -7538,7 +10234,7 @@ EOF
 	*)
 	  case " $compile_deplibs " in
 	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
+	    func_append new_libs " -L$path/$objdir" ;;
 	  esac
 	  ;;
 	esac
@@ -7548,17 +10244,17 @@ EOF
 	-L*)
 	  case " $new_libs " in
 	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
+	  *) func_append new_libs " $deplib" ;;
 	  esac
 	  ;;
-	*) new_libs="$new_libs $deplib" ;;
+	*) func_append new_libs " $deplib" ;;
 	esac
       done
-      compile_deplibs="$new_libs"
+      compile_deplibs=$new_libs
 
 
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
 
       if test -n "$rpath$xrpath"; then
 	# If the user specified any rpath flags, then add them.
@@ -7566,7 +10262,7 @@ EOF
 	  # This is the magic to use -rpath.
 	  case "$finalize_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
       fi
@@ -7578,39 +10274,39 @@ EOF
 	if test -n "$hardcode_libdir_flag_spec"; then
 	  if test -n "$hardcode_libdir_separator"; then
 	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
+	      hardcode_libdirs=$libdir
 	    else
 	      # Just accumulate the unique libdirs.
 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		;;
 	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		;;
 	      esac
 	    fi
 	  else
 	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
+	    func_append rpath " $flag"
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$perm_rpath " in
 	  *" $libdir "*) ;;
-	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  *) func_append perm_rpath " $libdir" ;;
 	  esac
 	fi
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$libdir:"*) ;;
 	  ::) dllsearchpath=$libdir;;
-	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  *) func_append dllsearchpath ":$libdir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
 	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  *) func_append dllsearchpath ":$testbindir";;
 	  esac
 	  ;;
 	esac
@@ -7618,10 +10314,10 @@ EOF
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
 	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
+	libdir=$hardcode_libdirs
 	eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      compile_rpath="$rpath"
+      compile_rpath=$rpath
 
       rpath=
       hardcode_libdirs=
@@ -7629,82 +10325,86 @@ EOF
 	if test -n "$hardcode_libdir_flag_spec"; then
 	  if test -n "$hardcode_libdir_separator"; then
 	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
+	      hardcode_libdirs=$libdir
 	    else
 	      # Just accumulate the unique libdirs.
 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		;;
 	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		;;
 	      esac
 	    fi
 	  else
 	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
+	    func_append rpath " $flag"
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$finalize_perm_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
 	  esac
 	fi
       done
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
 	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
+	libdir=$hardcode_libdirs
 	eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      finalize_rpath="$rpath"
+      finalize_rpath=$rpath
 
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+      if test -n "$libobjs" && test yes = "$build_old_libs"; then
 	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       fi
 
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+      func_generate_dlsyms "$outputname" "@PROGRAM@" false
 
       # template prelinking step
       if test -n "$prelink_cmds"; then
 	func_execute_cmds "$prelink_cmds" 'exit $?'
       fi
 
-      wrappers_required=yes
+      wrappers_required=:
       case $host in
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=false
         ;;
-      *cegcc)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
+      *cygwin* | *mingw* )
+        test yes = "$build_libtool_libs" || wrappers_required=false
         ;;
       *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
+        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+          wrappers_required=false
         fi
         ;;
       esac
-      if test "$wrappers_required" = no; then
+      $wrappers_required || {
 	# Replace the output file specification.
-	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	link_command=$compile_command$compile_rpath
 
 	# We have no uninstalled library dependencies, so finalize right now.
 	exit_status=0
 	func_show_eval "$link_command" 'exit_status=$?'
 
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
 	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+	if test -f "$output_objdir/${outputname}S.$objext"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
 	fi
 
 	exit $exit_status
-      fi
+      }
 
       if test -n "$compile_shlibpath$finalize_shlibpath"; then
 	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
@@ -7720,7 +10420,7 @@ EOF
 	  # We should set the runpath_var.
 	  rpath=
 	  for dir in $perm_rpath; do
-	    rpath="$rpath$dir:"
+	    func_append rpath "$dir:"
 	  done
 	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
 	fi
@@ -7728,54 +10428,68 @@ EOF
 	  # We should set the runpath_var.
 	  rpath=
 	  for dir in $finalize_perm_rpath; do
-	    rpath="$rpath$dir:"
+	    func_append rpath "$dir:"
 	  done
 	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
 	fi
       fi
 
-      if test "$no_install" = yes; then
+      if test yes = "$no_install"; then
 	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
+	link_command=$compile_var$compile_command$compile_rpath
 	# Replace the output file specification.
-	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	# Delete the old output file.
 	$opt_dry_run || $RM $output
 	# Link the executable and exit
 	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
 	exit $EXIT_SUCCESS
       fi
 
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
+      case $hardcode_action,$fast_install in
+        relink,*)
+	  # Fast installation is not supported
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
 
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
+	  func_warning "this platform does not like uninstalled shared libraries"
+	  func_warning "'$output' will be relinked during installation"
+	  ;;
+        *,yes)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+          ;;
+	*,no)
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+          ;;
+	*,needless)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=
+          ;;
+      esac
 
       # Replace the output file specification.
-      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
 
       # Delete the old output files.
       $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
 
       func_show_eval "$link_command" 'exit $?'
 
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
       # Now create the wrapper script.
       func_verbose "creating $output"
 
@@ -7793,18 +10507,7 @@ EOF
 	  fi
 	done
 	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       fi
 
       # Only actually do things if not in dry run mode.
@@ -7828,8 +10531,8 @@ EOF
 	    func_dirname_and_basename "$output" "" "."
 	    output_name=$func_basename_result
 	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
+	    cwrappersource=$output_path/$objdir/lt-$output_name.c
+	    cwrapper=$output_path/$output_name.exe
 	    $RM $cwrappersource $cwrapper
 	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
@@ -7850,7 +10553,7 @@ EOF
 	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
 	    $opt_dry_run || {
 	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
+	      if test "x$build" = "x$host"; then
 		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
 	      else
 		func_emit_wrapper no > $func_ltwrapper_scriptname_result
@@ -7873,43 +10576,45 @@ EOF
     # See if we need to build an old-fashioned archive.
     for oldlib in $oldlibs; do
 
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
+      case $build_libtool_libs in
+        convenience)
+	  oldobjs="$libobjs_save $symfileobj"
+	  addlibs=$convenience
 	  build_libtool_libs=no
-	else
+	  ;;
+	module)
+	  oldobjs=$libobjs_save
+	  addlibs=$old_convenience
+	  build_libtool_libs=no
+          ;;
+	*)
 	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    oldobjs="$oldobjs $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
+	  $preload && test -f "$symfileobj" \
+	    && func_append oldobjs " $symfileobj"
+	  addlibs=$old_convenience
+	  ;;
+      esac
 
       if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
+	gentop=$output_objdir/${outputname}x
+	func_append generated " $gentop"
 
 	func_extract_archives $gentop $addlibs
-	oldobjs="$oldobjs $func_extract_archives_result"
+	func_append oldobjs " $func_extract_archives_result"
       fi
 
       # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
 	cmds=$old_archive_from_new_cmds
       else
 
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
-	  oldobjs="$oldobjs $func_extract_archives_result"
+	  func_append oldobjs " $func_extract_archives_result"
 	fi
 
 	# POSIX demands no paths to be encoded in archives.  We have
@@ -7925,9 +10630,9 @@ EOF
 	    done | sort | sort -uc >/dev/null 2>&1); then
 	  :
 	else
-	  $ECHO "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
+	  echo "copying selected object files to avoid basename conflicts..."
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
 	  func_mkdir_p "$gentop"
 	  save_oldobjs=$oldobjs
 	  oldobjs=
@@ -7935,7 +10640,7 @@ EOF
 	  for obj in $save_oldobjs
 	  do
 	    func_basename "$obj"
-	    objbase="$func_basename_result"
+	    objbase=$func_basename_result
 	    case " $oldobjs " in
 	    " ") oldobjs=$obj ;;
 	    *[\ /]"$objbase "*)
@@ -7951,18 +10656,30 @@ EOF
 		esac
 	      done
 	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      oldobjs="$oldobjs $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
 	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
+	    *) func_append oldobjs " $obj" ;;
 	    esac
 	  done
 	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
 	eval cmds=\"$old_archive_cmds\"
 
 	func_len " $cmds"
 	len=$func_len_result
 	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
 	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+	  cmds=$old_archive_cmds
 	else
 	  # the command line is too long to link in one step, link in parts
 	  func_verbose "using piecewise archive linking..."
@@ -7992,18 +10709,18 @@ EOF
 	    else
 	      # the above command should be used before it gets too long
 	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
+	      if test "$obj" = "$last_oldobj"; then
 		RANLIB=$save_RANLIB
 	      fi
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
 	      objlist=
 	      len=$len0
 	    fi
 	  done
 	  RANLIB=$save_RANLIB
 	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
+	  if test -z "$oldobjs"; then
 	    eval cmds=\"\$concat_cmds\"
 	  else
 	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
@@ -8020,7 +10737,7 @@ EOF
     case $output in
     *.la)
       old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      test yes = "$build_old_libs" && old_library=$libname.$libext
       func_verbose "creating $output"
 
       # Preserve any variables that may affect compiler behavior
@@ -8035,52 +10752,63 @@ EOF
 	fi
       done
       # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
+      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test yes = "$hardcode_automatic"; then
 	relink_command=
       fi
 
       # Only create the output if not a dry run.
       $opt_dry_run || {
 	for installed in no yes; do
-	  if test "$installed" = yes; then
+	  if test yes = "$installed"; then
 	    if test -z "$install_libdir"; then
 	      break
 	    fi
-	    output="$output_objdir/$outputname"i
+	    output=$output_objdir/${outputname}i
 	    # Replace all uninstalled libtool libraries with the installed ones
 	    newdependency_libs=
 	    for deplib in $dependency_libs; do
 	      case $deplib in
 	      *.la)
 		func_basename "$deplib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		name=$func_basename_result
+		func_resolve_sysroot "$deplib"
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs="$newdependency_libs $libdir/$name"
+		  func_fatal_error "'$deplib' is not a valid libtool archive"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
 		;;
-	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
 	      esac
 	    done
-	    dependency_libs="$newdependency_libs"
+	    dependency_libs=$newdependency_libs
 	    newdlfiles=
 
 	    for lib in $dlfiles; do
 	      case $lib in
 	      *.la)
 	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlfiles="$newdlfiles $libdir/$name"
+		  func_fatal_error "'$lib' is not a valid libtool archive"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
-	      *) newdlfiles="$newdlfiles $lib" ;;
+	      *) func_append newdlfiles " $lib" ;;
 	      esac
 	    done
-	    dlfiles="$newdlfiles"
+	    dlfiles=$newdlfiles
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
 	      case $lib in
@@ -8090,44 +10818,61 @@ EOF
 		# didn't already link the preopened objects directly into
 		# the library:
 		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlprefiles="$newdlprefiles $libdir/$name"
+		  func_fatal_error "'$lib' is not a valid libtool archive"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      esac
 	    done
-	    dlprefiles="$newdlprefiles"
+	    dlprefiles=$newdlprefiles
 	  else
 	    newdlfiles=
 	    for lib in $dlfiles; do
 	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
-	      newdlfiles="$newdlfiles $abs"
+	      func_append newdlfiles " $abs"
 	    done
-	    dlfiles="$newdlfiles"
+	    dlfiles=$newdlfiles
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
 	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
-	      newdlprefiles="$newdlprefiles $abs"
+	      func_append newdlprefiles " $abs"
 	    done
-	    dlprefiles="$newdlprefiles"
+	    dlprefiles=$newdlprefiles
 	  fi
 	  $RM $output
 	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
 	  tdlname=$dlname
 	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test -n "$bindir"; then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result/$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
 	  esac
 	  $ECHO > $output "\
 # $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -8141,7 +10886,7 @@ library_names='$library_names'
 # The name of the static archive.
 old_library='$old_library'
 
-# Linker flags that can not go in dependency_libs.
+# Linker flags that cannot go in dependency_libs.
 inherited_linker_flags='$new_inherited_linker_flags'
 
 # Libraries that this one depends upon.
@@ -8167,7 +10912,7 @@ dlpreopen='$dlprefiles'
 
 # Directory that this library needs to be installed in:
 libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
+	  if test no,yes = "$installed,$need_relink"; then
 	    $ECHO >> $output "\
 relink_command=\"$relink_command\""
 	  fi
@@ -8182,29 +10927,31 @@ relink_command=\"$relink_command\""
     exit $EXIT_SUCCESS
 }
 
-{ test "$mode" = link || test "$mode" = relink; } &&
-    func_mode_link ${1+"$@"}
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+  func_mode_link ${1+"$@"}
+fi
 
 
 # func_mode_uninstall arg...
 func_mode_uninstall ()
 {
-    $opt_debug
-    RM="$nonopt"
+    $debug_cmd
+
+    RM=$nonopt
     files=
-    rmforce=
+    rmforce=false
     exit_status=0
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic="$magic"
+    libtool_install_magic=$magic
 
     for arg
     do
       case $arg in
-      -f) RM="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
+      -f) func_append RM " $arg"; rmforce=: ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
       esac
     done
 
@@ -8213,24 +10960,23 @@ func_mode_uninstall ()
 
     rmdirs=
 
-    origobjdir="$objdir"
     for file in $files; do
       func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	objdir="$origobjdir"
+      dir=$func_dirname_result
+      if test . = "$dir"; then
+	odir=$objdir
       else
-	objdir="$dir/$origobjdir"
+	odir=$dir/$objdir
       fi
       func_basename "$file"
-      name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
+      name=$func_basename_result
+      test uninstall = "$opt_mode" && odir=$dir
 
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test clean = "$opt_mode"; then
 	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
 	esac
       fi
 
@@ -8242,11 +10988,11 @@ func_mode_uninstall ()
       elif test -d "$file"; then
 	exit_status=1
 	continue
-      elif test "$rmforce" = yes; then
+      elif $rmforce; then
 	continue
       fi
 
-      rmfiles="$file"
+      rmfiles=$file
 
       case $name in
       *.la)
@@ -8256,28 +11002,27 @@ func_mode_uninstall ()
 
 	  # Delete the libtool libraries and symlinks.
 	  for n in $library_names; do
-	    rmfiles="$rmfiles $objdir/$n"
+	    func_append rmfiles " $odir/$n"
 	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-	  case "$mode" in
+	  case $opt_mode in
 	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
+	    case " $library_names " in
 	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
 	    esac
-	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
 	    ;;
 	  uninstall)
 	    if test -n "$library_names"; then
 	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
 	    fi
 
 	    if test -n "$old_library"; then
 	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
 	    fi
 	    # FIXME: should reinstall the best remaining shared library.
 	    ;;
@@ -8293,21 +11038,19 @@ func_mode_uninstall ()
 	  func_source $dir/$name
 
 	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$pic_object"
+	  if test -n "$pic_object" && test none != "$pic_object"; then
+	    func_append rmfiles " $dir/$pic_object"
 	  fi
 
 	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
+	    func_append rmfiles " $dir/$non_pic_object"
 	  fi
 	fi
 	;;
 
       *)
-	if test "$mode" = clean ; then
+	if test clean = "$opt_mode"; then
 	  noexename=$name
 	  case $file in
 	  *.exe)
@@ -8317,7 +11060,7 @@ func_mode_uninstall ()
 	    noexename=$func_stripname_result
 	    # $file with .exe has already been added to rmfiles,
 	    # add $file without .exe
-	    rmfiles="$rmfiles $file"
+	    func_append rmfiles " $file"
 	    ;;
 	  esac
 	  # Do a test to see if this is a libtool program.
@@ -8326,7 +11069,7 @@ func_mode_uninstall ()
 	      func_ltwrapper_scriptname "$file"
 	      relink_command=
 	      func_source $func_ltwrapper_scriptname_result
-	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
 	    else
 	      relink_command=
 	      func_source $dir/$noexename
@@ -8334,12 +11077,12 @@ func_mode_uninstall ()
 
 	    # note $name still contains .exe if it was in $file originally
 	    # as does the version of $file that was added into $rmfiles
-	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
+	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+	    if test yes = "$fast_install" && test -n "$relink_command"; then
+	      func_append rmfiles " $odir/lt-$name"
 	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    if test "X$noexename" != "X$name"; then
+	      func_append rmfiles " $odir/lt-$noexename.c"
 	    fi
 	  fi
 	fi
@@ -8347,9 +11090,8 @@ func_mode_uninstall ()
       esac
       func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
-    objdir="$origobjdir"
 
-    # Try to remove the ${objdir}s in the directories where we deleted files
+    # Try to remove the $objdir's in the directories where we deleted files
     for dir in $rmdirs; do
       if test -d "$dir"; then
 	func_show_eval "rmdir $dir >/dev/null 2>&1"
@@ -8359,16 +11101,17 @@ func_mode_uninstall ()
     exit $exit_status
 }
 
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+  func_mode_uninstall ${1+"$@"}
+fi
 
-test -z "$mode" && {
-  help="$generic_help"
+test -z "$opt_mode" && {
+  help=$generic_help
   func_fatal_help "you must specify a MODE"
 }
 
 test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$mode'"
+  func_fatal_help "invalid operation mode '$opt_mode'"
 
 if test -n "$exec_cmd"; then
   eval exec "$exec_cmd"
@@ -8379,7 +11122,7 @@ exit $exit_status
 
 
 # The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
+# where we disable both kinds of libraries.  Given conflicting
 # choices, we go for a static library, that is the most portable,
 # since we can't tell whether shared libraries were disabled because
 # the user asked for that or because the platform doesn't support
@@ -8402,5 +11145,3 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
 # mode:shell-script
 # sh-indentation:2
 # End:
-# vi:sw=2
-
diff --git a/config/ltoptions.m4 b/config/ltoptions.m4
index 34151a3..94b0829 100644
--- a/config/ltoptions.m4
+++ b/config/ltoptions.m4
@@ -1,13 +1,14 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
 #
-#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
+#   Foundation, Inc.
 #   Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 6 ltoptions.m4
+# serial 8 ltoptions.m4
 
 # This is to help aclocal find these macros, as it can't see m4_define.
 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -28,7 +29,7 @@ m4_define([_LT_SET_OPTION],
 [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
 m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
         _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
+    [m4_warning([Unknown $1 option '$2'])])[]dnl
 ])
 
 
@@ -74,13 +75,15 @@ m4_if([$1],[LT_INIT],[
   dnl
   dnl If no reference was made to various pairs of opposing options, then
   dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
   dnl archives by default:
   _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
   _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
   _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
   _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
+		   [_LT_ENABLE_FAST_INSTALL])
+  _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
+		   [_LT_WITH_AIX_SONAME([aix])])
   ])
 ])# _LT_SET_OPTIONS
 
@@ -111,7 +114,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN],
 [_LT_SET_OPTION([LT_INIT], [dlopen])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
+put the 'dlopen' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -125,7 +128,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll],
 [enable_win32_dll=yes
 
 case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
   AC_CHECK_TOOL(AS, as, false)
   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
   AC_CHECK_TOOL(OBJDUMP, objdump, false)
@@ -133,13 +136,13 @@ case $host in
 esac
 
 test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [0], [Assembler program])dnl
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
 ])# win32-dll
 
 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
@@ -147,7 +150,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
 _LT_SET_OPTION([LT_INIT], [win32-dll])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
+put the 'win32-dll' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -156,9 +159,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
 
 # _LT_ENABLE_SHARED([DEFAULT])
 # ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
 m4_define([_LT_ENABLE_SHARED],
 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([shared],
@@ -171,14 +174,14 @@ AC_ARG_ENABLE([shared],
     *)
       enable_shared=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_shared=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
     [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
@@ -210,9 +213,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], [])
 
 # _LT_ENABLE_STATIC([DEFAULT])
 # ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
 m4_define([_LT_ENABLE_STATIC],
 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([static],
@@ -225,14 +228,14 @@ AC_ARG_ENABLE([static],
     *)
      enable_static=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_static=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
     [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
@@ -264,9 +267,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], [])
 
 # _LT_ENABLE_FAST_INSTALL([DEFAULT])
 # ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
 m4_define([_LT_ENABLE_FAST_INSTALL],
 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([fast-install],
@@ -279,14 +282,14 @@ AC_ARG_ENABLE([fast-install],
     *)
       enable_fast_install=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_fast_install=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
     [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
@@ -303,14 +306,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL],
 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
+the 'fast-install' option into LT_INIT's first parameter.])
 ])
 
 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
+the 'disable-fast-install' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -318,19 +321,85 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
 dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 
 
+# _LT_WITH_AIX_SONAME([DEFAULT])
+# ----------------------------------
+# implement the --with-aix-soname flag, and support the `aix-soname=aix'
+# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
+# is either `aix', `both' or `svr4'.  If omitted, it defaults to `aix'.
+m4_define([_LT_WITH_AIX_SONAME],
+[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
+shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[[5-9]]*,yes)
+  AC_MSG_CHECKING([which variant of shared library versioning to provide])
+  AC_ARG_WITH([aix-soname],
+    [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+      [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
+    [case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      AC_MSG_ERROR([Unknown argument to --with-aix-soname])
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname],
+    [AC_CACHE_VAL([lt_cv_with_aix_soname],
+      [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
+    with_aix_soname=$lt_cv_with_aix_soname])
+  AC_MSG_RESULT([$with_aix_soname])
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+_LT_DECL([], [shared_archive_member_spec], [0],
+    [Shared archive member basename, for filename based shared library versioning on AIX])dnl
+])# _LT_WITH_AIX_SONAME
+
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
+
+
 # _LT_WITH_PIC([MODE])
 # --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
 # LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for lt_pkg in $withval; do
+	IFS=$lt_save_ifs
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [pic_mode=m4_default([$1], [default])])
 
 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
 ])# _LT_WITH_PIC
@@ -343,7 +412,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE],
 [_LT_SET_OPTION([LT_INIT], [pic-only])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
+put the 'pic-only' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
diff --git a/config/ltsugar.m4 b/config/ltsugar.m4
index 9000a05..48bc934 100644
--- a/config/ltsugar.m4
+++ b/config/ltsugar.m4
@@ -1,6 +1,7 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Foundation, Inc.
 # Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -33,7 +34,7 @@ m4_define([_lt_join],
 # ------------
 # Manipulate m4 lists.
 # These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
+# Autoconf-2.59, which quotes differently.
 m4_define([lt_car], [[$1]])
 m4_define([lt_cdr],
 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@@ -44,7 +45,7 @@ m4_define([lt_unquote], $1)
 
 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
 # ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
 # Note that neither SEPARATOR nor STRING are expanded; they are appended
 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
diff --git a/config/ltversion.m4 b/config/ltversion.m4
index f3c5309..fa04b52 100644
--- a/config/ltversion.m4
+++ b/config/ltversion.m4
@@ -1,23 +1,23 @@
 # ltversion.m4 -- version numbers			-*- Autoconf -*-
 #
-#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# Generated from ltversion.in.
+# @configure_input@
 
-# serial 3017 ltversion.m4
+# serial 4179 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.2.6b])
-m4_define([LT_PACKAGE_REVISION], [1.3017])
+m4_define([LT_PACKAGE_VERSION], [2.4.6])
+m4_define([LT_PACKAGE_REVISION], [2.4.6])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6b'
-macro_revision='1.3017'
+[macro_version='2.4.6'
+macro_revision='2.4.6'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/config/lt~obsolete.m4 b/config/lt~obsolete.m4
index 637bb20..c6b26f8 100644
--- a/config/lt~obsolete.m4
+++ b/config/lt~obsolete.m4
@@ -1,17 +1,18 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
+#   Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 4 lt~obsolete.m4
+# serial 5 lt~obsolete.m4
 
 # These exist entirely to fool aclocal when bootstrapping libtool.
 #
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
 # which have later been changed to m4_define as they aren't part of the
 # exported API, or moved to Autoconf or Automake where they belong.
 #
@@ -25,7 +26,7 @@
 # included after everything else.  This provides aclocal with the
 # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
 # because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
 #
 # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
 # Yes, that means every name once taken will need to remain here until
@@ -77,7 +78,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
 m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
 m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
 m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
 m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
 m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
 m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
@@ -90,3 +90,10 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
 m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
 m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
 m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/config/missing b/config/missing
index 28055d2..f62bbae 100755
--- a/config/missing
+++ b/config/missing
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,69 +25,40 @@ scriptversion=2009-04-28.21; # UTC
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake at gnu.org>."
     exit $?
@@ -100,272 +70,141 @@ Send bug reports to <bug-automake at gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-exit 0
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/config/test-driver b/config/test-driver
new file mode 100755
index 0000000..53e19b8
--- /dev/null
+++ b/config/test-driver
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/configure b/configure
index ac27a96..f0ae781 100755
--- a/configure
+++ b/configure
@@ -1,19 +1,21 @@
 #! /bin/sh
 # From configure.ac Revision.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for adios 1.9.0.
+# Generated by GNU Autoconf 2.69 for adios 1.10.0.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -21,23 +23,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -45,7 +39,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -56,7 +56,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -79,13 +79,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -95,15 +88,16 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -115,12 +109,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -132,7 +130,301 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -146,8 +438,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
@@ -167,566 +463,115 @@ $as_echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
-  if test $as_have_required = yes &&	 (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
 }
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
 
-if as_func_ret_success; then
-  :
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
 fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  as_ln_s='cp -pR'
 fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  case $as_dir in
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-	   done;;
-       esac
-done
-IFS=$as_save_IFS
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
 
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
-      for as_shell in $as_candidate_shells $SHELL; do
-	 # Try only shells that exist, to save several forks.
-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 
-fi
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
+SHELL=${CONFIG_SHELL-/bin/sh}
 
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-	       as_have_required=yes
-	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
 
-fi
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-	done
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell bug-autoconf at gnu.org about your system,
-  echo including any error possibly output before this message.
-  echo This can help us improve future autoconf versions.
-  echo Configuration will now proceed without shell functions.
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-$*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "$0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
 #
 # Initializations.
@@ -739,14 +584,14 @@ cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
 
 # Identity of this package.
 PACKAGE_NAME='adios'
 PACKAGE_TARNAME='adios'
-PACKAGE_VERSION='1.9.0'
-PACKAGE_STRING='adios 1.9.0'
+PACKAGE_VERSION='1.10.0'
+PACKAGE_STRING='adios 1.10.0'
 PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
 
 ac_unique_file="configure.ac"
 # Factoring default headers for most tests.
@@ -792,6 +637,7 @@ LIBOBJS
 VERSION_MICRO
 VERSION_MINOR
 VERSION_MAJOR
+ADIOSLIB_EXTRA_LDFLAGS
 ADIOSLIB_EXTRA_CPPFLAGS
 ADIOSREADLIB_SEQ_LDADD
 ADIOSREADLIB_SEQ_LDFLAGS
@@ -815,9 +661,15 @@ ADIOSLIB_CFLAGS
 ADIOSLIB_CPPFLAGS
 HAVE_ICEE_FALSE
 HAVE_ICEE_TRUE
+HAVE_CYGWIN_FALSE
+HAVE_CYGWIN_TRUE
+BP2NCD_CC
+BP2H5_CC
 MACRODEFFLAG
-USE_PARALLEL_COMPILER_FALSE
-USE_PARALLEL_COMPILER_TRUE
+USE_PARALLEL_NETCDF_FOR_UTILS_FALSE
+USE_PARALLEL_NETCDF_FOR_UTILS_TRUE
+USE_PARALLEL_HDF5_FOR_UTILS_FALSE
+USE_PARALLEL_HDF5_FOR_UTILS_TRUE
 HAVE_DATATAP_FALSE
 HAVE_DATATAP_TRUE
 ADIOS_TIMER_EVENTS
@@ -831,21 +683,11 @@ RESEARCH_TRANSPORTS_FALSE
 RESEARCH_TRANSPORTS_TRUE
 HAVE_BGQ_FALSE
 HAVE_BGQ_TRUE
-TIMER_LIBS
-TIMER_LDFLAGS
-TIMER_CPPFLAGS
-HAVE_NCSU_TIMER_FALSE
-HAVE_NCSU_TIMER_TRUE
 FASTBIT_LIBS
 FASTBIT_LDFLAGS
 FASTBIT_CPPFLAGS
 HAVE_FASTBIT_FALSE
 HAVE_FASTBIT_TRUE
-RIDCOMPRESS_CPPFLAGS
-RIDCOMPRESS_LDFLAGS
-RIDCOMPRESS_LIBS
-HAVE_RIDCOMPRESS_FALSE
-HAVE_RIDCOMPRESS_TRUE
 ALACRITY_CPPFLAGS
 ALACRITY_LDFLAGS
 ALACRITY_LIBS
@@ -989,6 +831,19 @@ PAMI_CPPFLAGS
 PAMI_CFLAGS
 HAVE_PAMI_FALSE
 HAVE_PAMI_TRUE
+PYTHON_EXECUTABLE
+pkgpyexecdir
+pyexecdir
+pkgpythondir
+pythondir
+PYTHON_PLATFORM
+PYTHON_EXEC_PREFIX
+PYTHON_PREFIX
+PYTHON_VERSION
+PYTHON
+MXML_BUILD_LDFLAGS
+BUILD_MXML_FALSE
+BUILD_MXML_TRUE
 MXML_CPPFLAGS
 MXML_LDFLAGS
 MXML_LIBS
@@ -1000,14 +855,18 @@ HAVE_MXML_TRUE
 BUILD_WRITE_FALSE
 BUILD_WRITE_TRUE
 CXXCPP
+CPP
+LT_SYS_LIBRARY_PATH
 OTOOL64
 OTOOL
 LIPO
 NMEDIT
 DSYMUTIL
-lt_ECHO
+MANIFEST_TOOL
 RANLIB
+ac_ct_AR
 AR
+DLLTOOL
 OBJDUMP
 LN_S
 NM
@@ -1015,7 +874,15 @@ ac_ct_DUMPBIN
 DUMPBIN
 LD
 FGREP
+EGREP
+GREP
 SED
+LIBTOOL
+MPIFC
+FCLIBS
+ac_ct_FC
+FCFLAGS
+FC
 host_os
 host_vendor
 host_cpu
@@ -1024,12 +891,6 @@ build_os
 build_vendor
 build_cpu
 build
-LIBTOOL
-MPIFC
-FCLIBS
-ac_ct_FC
-FCFLAGS
-FC
 BUILD_FORTRAN_FALSE
 BUILD_FORTRAN_TRUE
 MPICXX
@@ -1043,12 +904,10 @@ CXXDEPMODE
 ac_ct_CXX
 CXXFLAGS
 CXX
-EGREP
-GREP
-CPP
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -1065,6 +924,10 @@ CC
 MAINT
 MAINTAINER_MODE_FALSE
 MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 am__untar
 am__tar
 AMTAR
@@ -1118,6 +981,7 @@ bindir
 program_transform_name
 prefix
 exec_prefix
+PACKAGE_URL
 PACKAGE_BUGREPORT
 PACKAGE_STRING
 PACKAGE_VERSION
@@ -1128,6 +992,7 @@ SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_silent_rules
 enable_maintainer_mode
 enable_dependency_tracking
 with_mpi
@@ -1136,7 +1001,9 @@ enable_shared
 enable_static
 with_pic
 enable_fast_install
+with_aix_soname
 with_gnu_ld
+with_sysroot
 enable_libtool_lock
 enable_write
 with_mxml
@@ -1199,9 +1066,7 @@ with_szip
 with_isobar
 with_aplod
 with_alacrity
-with_ridcompress
 with_fastbit
-with_timer
 with_bgq
 enable_research_transports
 enable_timers
@@ -1215,7 +1080,6 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
-CPP
 CXX
 CXXFLAGS
 CCC
@@ -1224,7 +1088,10 @@ MPICXX
 FC
 FCFLAGS
 MPIFC
-CXXCPP'
+LT_SYS_LIBRARY_PATH
+CPP
+CXXCPP
+PYTHON'
 
 
 # Initialize some variables set by options.
@@ -1287,8 +1154,9 @@ do
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1333,8 +1201,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1360,8 +1227,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1565,8 +1431,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1582,8 +1447,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1613,17 +1477,17 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
@@ -1632,7 +1496,7 @@ Try \`$0 --help' for more information." >&2
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1640,15 +1504,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
-   { (exit 1); exit 1; }; } ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1671,8 +1533,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1686,8 +1547,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1702,11 +1561,9 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { $as_echo "$as_me: error: working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1745,13 +1602,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1777,7 +1632,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.9.0 to adapt to many kinds of systems.
+\`configure' configures adios 1.10.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1791,7 +1646,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1847,7 +1702,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of adios 1.9.0:";;
+     short | recursive ) echo "Configuration of adios 1.10.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1855,11 +1710,16 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --disable-maintainer-mode  disable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --disable-fortran       disable Fortran test programs in ADIOS.
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --disable-maintainer-mode
+                          disable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --disable-fortran       disable building Fortran libraries.
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
@@ -1879,9 +1739,14 @@ Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-mpi=<location of MPI installation>
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
+  --with-aix-soname=aix|svr4|both
+                          shared library versioning (aka "SONAME") variant to
+                          provide on AIX, [default=aix].
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
+                          compiler's sysroot if not specified).
   --with-mxml=DIR      Location of Mini-XML library
   --with-mxml-libs=<linker flags for Mini-XML library>
   --with-pami=DIR      Location of IBM PAMI
@@ -1944,10 +1809,7 @@ Optional Packages:
   --with-isobar=DIR      Location of ISOBAR library
   --with-aplod=DIR      Location of APLOD library
   --with-alacrity=DIR      Location of ALACRITY library
-  --with-ridcompress=DIR      Location of RIDCOMPRESS library
   --with-fastbit=DIR      Location of the FastBit library
-  --with-timer=DIR        Location of the timer library,,
-  with_timer=no
   --with-bgq 	Whether to enable BGQ method or not
 
 Some influential environment variables:
@@ -1956,9 +1818,8 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   MPICC       MPI C compiler command
@@ -1966,11 +1827,16 @@ Some influential environment variables:
   FC          Fortran compiler command
   FCFLAGS     Fortran compiler flags
   MPIFC       MPI Fortran compiler command
+  LT_SYS_LIBRARY_PATH
+              User-defined run-time library search path.
+  CPP         C preprocessor
   CXXCPP      C++ preprocessor
+  PYTHON      the Python interpreter
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
+Report bugs to the package provider.
 _ACEOF
 ac_status=$?
 fi
@@ -2033,1934 +1899,1140 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-adios configure 1.9.0
-generated by GNU Autoconf 2.63
+adios configure 1.10.0
+generated by GNU Autoconf 2.69
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
-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.9.0, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
 
-  $ $0 $@
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
 
-_ACEOF
-exec 5>>config.log
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
 {
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+} # ac_fn_c_try_compile
 
-_ASUNAME
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  $as_echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-} >&5
+} # ac_fn_cxx_try_compile
 
-cat >&5 <<_ACEOF
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-## ----------- ##
-## Core tests. ##
-## ----------- ##
+} # ac_fn_c_try_link
 
-_ACEOF
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
 
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
 
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-    2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
-      ;;
-    esac
-  done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
 
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
+#undef $2
 
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
 
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
+} # ac_fn_c_check_func
 
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+} # ac_fn_cxx_try_link
 
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
 
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+#undef $2
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
 _ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$3=yes"
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  eval "$3=no"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test -r "$ac_site_file"; then
-    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
-  fi
-done
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
+} # ac_fn_cxx_check_func
+
+# ac_fn_fc_try_compile LINENO
+# ---------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_fc_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
   fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_fc_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
 else
-  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+	ac_retval=1
 fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_fc_try_compile
 
+# ac_fn_fc_try_link LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_fc_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_fc_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_fc_try_link
 
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_c_check_header_compile
 
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_c_try_cpp
 
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_c_try_run
 
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_cxx_try_cpp
 
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
 
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_c_check_header_mongrel
 
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
-   { (exit 1); exit 1; }; }
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#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 ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#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 ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+} # ac_fn_c_check_type
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
 
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_cxx_check_header_mongrel
+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
+generated by GNU Autoconf 2.69.  Invocation command line was
 
-ac_config_headers="$ac_config_headers config.h"
+  $ $0 $@
 
-am__api_version='1.11'
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
 
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-done
+    $as_echo "PATH: $as_dir"
+  done
 IFS=$as_save_IFS
 
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+} >&5
 
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+cat >&5 <<_ACEOF
 
-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
-$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
-$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
-   fi
+## ----------- ##
+## Core tests. ##
+## ----------- ##
 
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+_ACEOF
 
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
 
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
 do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
 done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
 
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
 
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
 
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
 
-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
-IFS=$as_save_IFS
-
-fi
-
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    test -d ./--version && rmdir ./--version
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
+ac_signal=0
 
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='adios'
- VERSION='1.9.0'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to disable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to disable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then
-  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
-  USE_MAINTAINER_MODE=yes
-fi
-
-  { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
-   if test $USE_MAINTAINER_MODE = yes; then
-  MAINTAINER_MODE_TRUE=
-  MAINTAINER_MODE_FALSE='#'
-else
-  MAINTAINER_MODE_TRUE='#'
-  MAINTAINER_MODE_FALSE=
-fi
-
-  MAINT=$MAINTAINER_MODE_TRUE
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { (ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
 
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$as_echo "/* confdefs.h */" > confdefs.h
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+# Predefined preprocessor variables.
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
 
-fi
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
 
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
 done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
 
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
 fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
 
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -3968,538 +3040,650 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
 
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ac_aux_dir=
+for ac_dir in config "$srcdir"/config; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
   fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+fi
 
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+am__api_version='1.14'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
     done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+    ;;
+esac
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
   done
+IFS=$as_save_IFS
 
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
+rm -rf conftest.one conftest.two conftest.dir
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
 
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
 else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
 fi
 
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
 fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-rm -f conftest.err conftest.$ac_ext
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  # Passes both tests.
-ac_preproc_ok=:
-break
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-rm -f conftest.err conftest.$ac_ext
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  break
 fi
-
-    done
-    ac_cv_prog_CPP=$CPP
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
+    STRIP=$ac_ct_STRIP
+  fi
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
+  STRIP="$ac_cv_prog_STRIP"
 fi
 
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
-else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
 fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
   done
-done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
 
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
 
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
 esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
 else
-  ac_cv_path_EGREP=$EGREP
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
 fi
 
-   fi
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
+rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
 
-{ $as_echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5
-$as_echo_n "checking for preprocessor stringizing operator... " >&6; }
-if test "${ac_cv_c_stringize+set}" = set; then
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='adios'
+ VERSION='1.10.0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#define x(y) #y
 
-char *s = x(teststring);
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "#teststring" >/dev/null 2>&1; then
-  ac_cv_c_stringize=no
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
-  ac_cv_c_stringize=yes
+  USE_MAINTAINER_MODE=yes
 fi
-rm -f conftest*
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5
-$as_echo "$ac_cv_c_stringize" >&6; }
-if test $ac_cv_c_stringize = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_STRINGIZE 1
-_ACEOF
+  MAINT=$MAINTAINER_MODE_TRUE
 
-fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 ac_ext=c
@@ -4510,9 +3694,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4523,24 +3707,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4550,9 +3734,9 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4563,24 +3747,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4589,7 +3773,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -4603,9 +3787,9 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4616,24 +3800,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4643,9 +3827,9 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4657,18 +3841,18 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
@@ -4687,10 +3871,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4702,9 +3886,9 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4715,24 +3899,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
 $as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4746,9 +3930,9 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4759,24 +3943,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
 $as_echo "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -4789,7 +3973,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -4800,106 +3984,315 @@ fi
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
 
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
 main ()
 {
-#ifndef __GNUC__
-       choke me
-#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_compiler_gnu=no
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
 if test $ac_compiler_gnu = yes; then
   GCC=yes
@@ -4908,20 +4301,16 @@ else
 fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4932,35 +4321,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4971,36 +4336,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
 
-	ac_c_werror_flag=$ac_save_c_werror_flag
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5011,42 +4352,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
 $as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -5063,23 +4379,18 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -5131,32 +4442,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
 	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -5167,37 +4455,162 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 $as_echo "none needed" >&6; } ;;
   xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 $as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
 
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -5231,16 +4644,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -5249,16 +4662,16 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -5297,7 +4710,7 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
@@ -5312,137 +4725,6 @@ else
 fi
 
 
-if test "x$CC" != xcc; then
-  { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
-  { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
-		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-   test -f conftest2.$ac_objext && { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
-then
-  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
-  if test "x$CC" != xcc; then
-    # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.$ac_ext >&5'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-      rm -f conftest2.*
-      if { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 test -f conftest2.$ac_objext && { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
-      then
-	# cc works too.
-	:
-      else
-	# cc exists but doesn't like -o.
-	eval ac_cv_prog_cc_${ac_cc}_c_o=no
-      fi
-    fi
-  fi
-else
-  eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define NO_MINUS_C_MINUS_O 1
-_ACEOF
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-
 
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -5458,9 +4740,9 @@ if test -z "$CXX"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then
+if ${ac_cv_prog_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CXX"; then
@@ -5471,24 +4753,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CXX=$ac_cv_prog_CXX
 if test -n "$CXX"; then
-  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
 $as_echo "$CXX" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5502,9 +4784,9 @@ if test -z "$CXX"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CXX"; then
@@ -5515,24 +4797,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
 if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
 $as_echo "$ac_ct_CXX" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -5545,7 +4827,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -5556,53 +4838,36 @@ fi
   fi
 fi
 # Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5616,37 +4881,16 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_cxx_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
 if test $ac_compiler_gnu = yes; then
   GXX=yes
@@ -5655,20 +4899,16 @@ else
 fi
 ac_test_CXXFLAGS=${CXXFLAGS+set}
 ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
 $as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then
+if ${ac_cv_prog_cxx_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_cxx_werror_flag=$ac_cxx_werror_flag
    ac_cxx_werror_flag=yes
    ac_cv_prog_cxx_g=no
    CXXFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5679,35 +4919,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_cxx_try_compile "$LINENO"; then :
   ac_cv_prog_cxx_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CXXFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5718,36 +4934,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_cxx_try_compile "$LINENO"; then :
 
-	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 	 CXXFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5758,42 +4950,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_cxx_try_compile "$LINENO"; then :
   ac_cv_prog_cxx_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
 $as_echo "$ac_cv_prog_cxx_g" >&6; }
 if test "$ac_test_CXXFLAGS" = set; then
   CXXFLAGS=$ac_save_CXXFLAGS
@@ -5818,17 +4985,18 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 depcc="$CXX"  am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
 $as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -5862,16 +5030,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -5880,16 +5048,16 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -5928,7 +5096,7 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
@@ -5952,6 +5120,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
  if true; then
   HAVE_MPI_TRUE=
   HAVE_MPI_FALSE='#'
@@ -5961,9 +5130,22 @@ else
 fi
 
 
+if test "x$with_mpi" == "xno"; then
+
+    if false; then
+  HAVE_MPI_TRUE=
+  HAVE_MPI_FALSE='#'
+else
+  HAVE_MPI_TRUE='#'
+  HAVE_MPI_FALSE=
+fi
+
+
+else
+
 
 # Check whether --with-mpi was given.
-if test "${with_mpi+set}" = set; then
+if test "${with_mpi+set}" = set; then :
   withval=$with_mpi; MPI_DIR=$withval
 fi
 
@@ -5971,13 +5153,13 @@ fi
 
 
 
-	for ac_prog in mpicc hcc mpxlc_r mpxlc mpcc cmpicc
+    	for ac_prog in mpicc hcc mpxlc_r mpxlc mpcc cmpicc
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_MPICC+set}" = set; then
+if ${ac_cv_prog_MPICC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$MPICC"; then
@@ -5988,24 +5170,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MPICC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 MPICC=$ac_cv_prog_MPICC
 if test -n "$MPICC"; then
-  { $as_echo "$as_me:$LINENO: result: $MPICC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5
 $as_echo "$MPICC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6014,116 +5196,28 @@ fi
 done
 test -n "$MPICC" || MPICC="$CC"
 
-	acx_mpi_save_CC="$CC"
-	CC="$MPICC"
-
-
-
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init" >&5
-$as_echo_n "checking for MPI_Init... " >&6; }
-if test "${ac_cv_func_MPI_Init+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define MPI_Init to an innocuous variant, in case <limits.h> declares MPI_Init.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define MPI_Init innocuous_MPI_Init
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char MPI_Init (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef MPI_Init
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char MPI_Init ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_MPI_Init || defined __stub___MPI_Init
-choke me
-#endif
+    	acx_mpi_save_CC="$CC"
+    	CC="$MPICC"
 
-int
-main ()
-{
-return MPI_Init ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_MPI_Init=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_cv_func_MPI_Init=no
-fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_MPI_Init" >&5
-$as_echo "$ac_cv_func_MPI_Init" >&6; }
-if test "x$ac_cv_func_MPI_Init" = x""yes; then
+    if test x = x"$MPILIBS"; then
+    	ac_fn_c_check_func "$LINENO" "MPI_Init" "ac_cv_func_MPI_Init"
+if test "x$ac_cv_func_MPI_Init" = xyes; then :
   MPILIBS=" "
 fi
 
-fi
+    fi
 
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; }
-if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpi_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6141,60 +5235,31 @@ return MPI_Init ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_mpi_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpi_MPI_Init=no
+  ac_cv_lib_mpi_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpi_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then :
   MPILIBS="-lmpi"
 fi
 
-fi
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5
+    fi
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; }
-if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpich_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpich  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6207,61 +5272,32 @@ char MPI_Init ();
 int
 main ()
 {
-return MPI_Init ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+return MPI_Init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_mpich_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpich_MPI_Init=no
+  ac_cv_lib_mpich_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpich_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then :
   MPILIBS="-lmpich"
 fi
 
-fi
+    fi
 
-if test x != x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for mpi.h" >&5
+            if test x != x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpi.h" >&5
 $as_echo_n "checking for mpi.h... " >&6; }
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -6272,59 +5308,35 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	MPILIBS=""
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
+  MPILIBS=""
+    		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
+    fi
 
-CC="$acx_mpi_save_CC"
+    CC="$acx_mpi_save_CC"
 
 
 
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x = x"$MPILIBS"; then
-        { { $as_echo "$as_me:$LINENO: error: could not find mpi library for C" >&5
-$as_echo "$as_me: error: could not find mpi library for C" >&2;}
-   { (exit 1); exit 1; }; }
-        :
-else
+    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+    if test x = x"$MPILIBS"; then
+            as_fn_error $? "could not find mpi library for C" "$LINENO" 5
+            :
+    else
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
-        :
+            :
+    fi
 fi
 
-
-ac_ext=cpp
+if test -z "${HAVE_MPI_TRUE}"; then
+    ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
@@ -6342,9 +5354,22 @@ else
 fi
 
 
+if test "x$with_mpi" == "xno"; then
+
+    if false; then
+  HAVE_MPI_TRUE=
+  HAVE_MPI_FALSE='#'
+else
+  HAVE_MPI_TRUE='#'
+  HAVE_MPI_FALSE=
+fi
+
+
+else
+
 
 # Check whether --with-mpi was given.
-if test "${with_mpi+set}" = set; then
+if test "${with_mpi+set}" = set; then :
   withval=$with_mpi; MPI_DIR=$withval
 fi
 
@@ -6352,13 +5377,13 @@ fi
 
 
 
-	for ac_prog in mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++
+    	for ac_prog in mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_MPICXX+set}" = set; then
+if ${ac_cv_prog_MPICXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$MPICXX"; then
@@ -6369,24 +5394,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MPICXX="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 MPICXX=$ac_cv_prog_MPICXX
 if test -n "$MPICXX"; then
-  { $as_echo "$as_me:$LINENO: result: $MPICXX" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICXX" >&5
 $as_echo "$MPICXX" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6395,116 +5420,28 @@ fi
 done
 test -n "$MPICXX" || MPICXX="$CXX"
 
-	acx_mpi_save_CXX="$CXX"
-	CXX="$MPICXX"
-
-
-
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init" >&5
-$as_echo_n "checking for MPI_Init... " >&6; }
-if test "${ac_cv_func_MPI_Init+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define MPI_Init to an innocuous variant, in case <limits.h> declares MPI_Init.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define MPI_Init innocuous_MPI_Init
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char MPI_Init (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef MPI_Init
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char MPI_Init ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_MPI_Init || defined __stub___MPI_Init
-choke me
-#endif
+    	acx_mpi_save_CXX="$CXX"
+    	CXX="$MPICXX"
 
-int
-main ()
-{
-return MPI_Init ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_MPI_Init=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_cv_func_MPI_Init=no
-fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_MPI_Init" >&5
-$as_echo "$ac_cv_func_MPI_Init" >&6; }
-if test "x$ac_cv_func_MPI_Init" = x""yes; then
+    if test x = x"$MPILIBS"; then
+    	ac_fn_cxx_check_func "$LINENO" "MPI_Init" "ac_cv_func_MPI_Init"
+if test "x$ac_cv_func_MPI_Init" = xyes; then :
   MPILIBS=" "
 fi
 
-fi
+    fi
 
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; }
-if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpi_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6522,60 +5459,31 @@ return MPI_Init ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_cxx_try_link "$LINENO"; then :
   ac_cv_lib_mpi_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpi_MPI_Init=no
+  ac_cv_lib_mpi_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpi_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then :
   MPILIBS="-lmpi"
 fi
 
-fi
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5
+    fi
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; }
-if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpich_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpich  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -6593,56 +5501,27 @@ return MPI_Init ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_cxx_try_link "$LINENO"; then :
   ac_cv_lib_mpich_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpich_MPI_Init=no
+  ac_cv_lib_mpich_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpich_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then :
   MPILIBS="-lmpich"
 fi
 
-fi
+    fi
 
-if test x != x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for mpi.h" >&5
+            if test x != x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpi.h" >&5
 $as_echo_n "checking for mpi.h... " >&6; }
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mpi.h>
 int
@@ -6653,60 +5532,41 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	MPILIBS=""
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
+  MPILIBS=""
+    		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
+    fi
 
-CXX="$acx_mpi_save_CXX"
+    CXX="$acx_mpi_save_CXX"
 
 
 
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x = x"$MPILIBS"; then
-        { { $as_echo "$as_me:$LINENO: error: could not find mpi library for C++" >&5
-$as_echo "$as_me: error: could not find mpi library for C++" >&2;}
-   { (exit 1); exit 1; }; }
-        :
-else
+    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+    if test x = x"$MPILIBS"; then
+            as_fn_error $? "could not find mpi library for C++" "$LINENO" 5
+            :
+    else
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
-        :
+            :
+    fi
 fi
 
+else
+
+$as_echo "#define HAVE_MPI 0" >>confdefs.h
+
+fi
 
 # Check whether --enable-fortran was given.
-if test "${enable_fortran+set}" = set; then
+if test "${enable_fortran+set}" = set; then :
   enableval=$enable_fortran;
 fi
 
@@ -6719,19 +5579,91 @@ else
 fi
 
 
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
 if test "x$enable_fortran" != "xno"; then
     ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 if test -n "$ac_tool_prefix"; then
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
+  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_FC+set}" = set; then
+if ${ac_cv_prog_FC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$FC"; then
@@ -6742,24 +5674,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 FC=$ac_cv_prog_FC
 if test -n "$FC"; then
-  { $as_echo "$as_me:$LINENO: result: $FC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
 $as_echo "$FC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6769,13 +5701,13 @@ fi
 fi
 if test -z "$FC"; then
   ac_ct_FC=$FC
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
+  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+if ${ac_cv_prog_ac_ct_FC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_FC"; then
@@ -6786,24 +5718,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_FC=$ac_cv_prog_ac_ct_FC
 if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
 $as_echo "$ac_ct_FC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -6816,64 +5748,51 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     FC=$ac_ct_FC
   fi
 fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 rm -f a.out
 
 # If we don't use `.F' as extension, the preprocessor is not run on the
 # input file.  (Note that this only needs to work for GNU compilers.)
 ac_save_ext=$ac_ext
 ac_ext=F
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+if ${ac_cv_fc_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 #ifndef __GNUC__
        choke me
@@ -6881,86 +5800,44 @@ else
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_fc_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
 $as_echo "$ac_cv_fc_compiler_gnu" >&6; }
 ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FCFLAGS+set}
-ac_save_FFLAGS=$FCFLAGS
+ac_test_FCFLAGS=${FCFLAGS+set}
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS=
-{ $as_echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
 $as_echo_n "checking whether $FC accepts -g... " >&6; }
-if test "${ac_cv_prog_fc_g+set}" = set; then
+if ${ac_cv_prog_fc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   FCFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_cv_prog_fc_g=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_prog_fc_g=no
+  ac_cv_prog_fc_g=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
 $as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FCFLAGS=$ac_save_FFLAGS
+if test "$ac_test_FCFLAGS" = set; then
+  FCFLAGS=$ac_save_FCFLAGS
 elif test $ac_cv_prog_fc_g = yes; then
   if test "x$ac_cv_fc_compiler_gnu" = xyes; then
     FCFLAGS="-g -O2"
@@ -6975,6 +5852,11 @@ else
   fi
 fi
 
+if test $ac_compiler_gnu = yes; then
+  GFC=yes
+else
+  GFC=
+fi
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -6985,12 +5867,12 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking whether $FC understands -c and -o together" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC understands -c and -o together" >&5
 $as_echo_n "checking whether $FC understands -c and -o together... " >&6; }
-if test "${ac_cv_prog_fc_c_o+set}" = set; then
+if ${ac_cv_prog_fc_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -6999,40 +5881,38 @@ _ACEOF
 # `.o' file with `-o', although they will create one.
 ac_try='$FC $FCFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
 rm -f conftest2.*
-if { (case "(($ac_try" in
+if { { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
      test -f conftest2.$ac_objext &&
-     { (case "(($ac_try" in
+     { { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   ac_cv_prog_fc_c_o=yes
 else
   ac_cv_prog_fc_c_o=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_c_o" >&5
 $as_echo "$ac_cv_prog_fc_c_o" >&6; }
 if test $ac_cv_prog_fc_c_o = no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define FC_NO_MINUS_C_MINUS_O 1
-_ACEOF
+$as_echo "#define FC_NO_MINUS_C_MINUS_O 1" >>confdefs.h
 
 fi
 
@@ -7047,38 +5927,21 @@ ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to get verbose linking output from $FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $FC" >&5
 $as_echo_n "checking how to get verbose linking output from $FC... " >&6; }
-if test "${ac_cv_prog_fc_v+set}" = set; then
+if ${ac_cv_prog_fc_v+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   ac_cv_prog_fc_v=
 # Try some options frequently used verbose output
 for ac_verb in -v -verbose --verbose -V -\#\#\#; do
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -7088,17 +5951,18 @@ _ACEOF
 # 1 to this macro) to the Fortran compiler in order to get
 # "verbose" output that we can then parse for the Fortran linker
 # flags.
-ac_save_FFLAGS=$FCFLAGS
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS="$FCFLAGS $ac_verb"
 eval "set x $ac_link"
 shift
-$as_echo "$as_me:$LINENO: $*" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
 # LIBRARY_PATH; skip all such settings.
 ac_fc_v_output=`eval $ac_link 5>&1 2>&1 |
-  grep -v 'Driving:' | grep -v "^[_$as_cr_Letters][_$as_cr_alnum]*="`
+  sed '/^Driving:/d; /^Configured with:/d;
+      '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"`
 $as_echo "$ac_fc_v_output" >&5
-FCFLAGS=$ac_save_FFLAGS
+FCFLAGS=$ac_save_FCFLAGS
 
 rm -rf conftest*
 
@@ -7113,9 +5977,16 @@ ac_fc_v_output="`echo $ac_fc_v_output |
 #        that detects unbalanced quotes in FLIBS should be implemented
 #        and (ugh) tested at some point.
 case $ac_fc_v_output in
-  # If we are using xlf then replace all the commas with spaces.
+  # With xlf replace commas with spaces,
+  # and remove "-link" and closing parenthesis.
   *xlfentry*)
-    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+    ac_fc_v_output=`echo $ac_fc_v_output |
+      sed '
+        s/,/ /g
+        s/ -link / /g
+        s/) *$//
+      '
+    ` ;;
 
   # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
   # $LIBS confuse us, and the libraries appear later in the output anyway).
@@ -7127,9 +5998,19 @@ case $ac_fc_v_output in
   # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
   *-cmdline\ * | *-ignore\ * | *-def\ *)
     ac_fc_v_output=`echo $ac_fc_v_output | sed "\
-        s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-        s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-        s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
+	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
+	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+
+  # If we are using fort77 (the f2c wrapper) then filter output and delete quotes.
+  *fort77*f2c*gcc*)
+    ac_fc_v_output=`echo "$ac_fc_v_output" | sed -n '
+        /:[	 ]\+Running[	 ]\{1,\}"gcc"/{
+          /"-c"/d
+          /[.]c"*/d
+          s/^.*"gcc"/"gcc"/
+          s/"//gp
+        }'` ;;
 
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
@@ -7140,39 +6021,35 @@ esac
   # look for -l* and *.a constructs in the output
   for ac_arg in $ac_fc_v_output; do
      case $ac_arg in
-        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
-          ac_cv_prog_fc_v=$ac_verb
-          break 2 ;;
+	[\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+	  ac_cv_prog_fc_v=$ac_verb
+	  break 2 ;;
      esac
   done
 done
 if test -z "$ac_cv_prog_fc_v"; then
-   { $as_echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $FC" >&5
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $FC" >&5
 $as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;}
 fi
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5
 $as_echo "$as_me: WARNING: compilation failed" >&2;}
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_v" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_v" >&5
 $as_echo "$ac_cv_prog_fc_v" >&6; }
-{ $as_echo "$as_me:$LINENO: checking for Fortran libraries of $FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran libraries of $FC" >&5
 $as_echo_n "checking for Fortran libraries of $FC... " >&6; }
-if test "${ac_cv_fc_libs+set}" = set; then
+if ${ac_cv_fc_libs+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$FCLIBS" != "x"; then
   ac_cv_fc_libs="$FCLIBS" # Let the user override the test.
 else
 
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
@@ -7182,17 +6059,18 @@ _ACEOF
 # 1 to this macro) to the Fortran compiler in order to get
 # "verbose" output that we can then parse for the Fortran linker
 # flags.
-ac_save_FFLAGS=$FCFLAGS
+ac_save_FCFLAGS=$FCFLAGS
 FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
 eval "set x $ac_link"
 shift
-$as_echo "$as_me:$LINENO: $*" >&5
+$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
 # LIBRARY_PATH; skip all such settings.
 ac_fc_v_output=`eval $ac_link 5>&1 2>&1 |
-  grep -v 'Driving:' | grep -v "^[_$as_cr_Letters][_$as_cr_alnum]*="`
+  sed '/^Driving:/d; /^Configured with:/d;
+      '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"`
 $as_echo "$ac_fc_v_output" >&5
-FCFLAGS=$ac_save_FFLAGS
+FCFLAGS=$ac_save_FCFLAGS
 
 rm -rf conftest*
 
@@ -7207,9 +6085,16 @@ ac_fc_v_output="`echo $ac_fc_v_output |
 #        that detects unbalanced quotes in FLIBS should be implemented
 #        and (ugh) tested at some point.
 case $ac_fc_v_output in
-  # If we are using xlf then replace all the commas with spaces.
+  # With xlf replace commas with spaces,
+  # and remove "-link" and closing parenthesis.
   *xlfentry*)
-    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+    ac_fc_v_output=`echo $ac_fc_v_output |
+      sed '
+        s/,/ /g
+        s/ -link / /g
+        s/) *$//
+      '
+    ` ;;
 
   # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
   # $LIBS confuse us, and the libraries appear later in the output anyway).
@@ -7221,9 +6106,19 @@ case $ac_fc_v_output in
   # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
   *-cmdline\ * | *-ignore\ * | *-def\ *)
     ac_fc_v_output=`echo $ac_fc_v_output | sed "\
-        s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-        s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-        s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
+	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
+	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
+
+  # If we are using fort77 (the f2c wrapper) then filter output and delete quotes.
+  *fort77*f2c*gcc*)
+    ac_fc_v_output=`echo "$ac_fc_v_output" | sed -n '
+        /:[	 ]\+Running[	 ]\{1,\}"gcc"/{
+          /"-c"/d
+          /[.]c"*/d
+          s/^.*"gcc"/"gcc"/
+          s/"//gp
+        }'` ;;
 
   # If we are using Cray Fortran then delete quotes.
   *cft90*)
@@ -7242,8 +6137,8 @@ while test $# != 1; do
   shift
   ac_arg=$1
   case $ac_arg in
-        [\\/]*.a | ?:[\\/]*.a)
-            ac_exists=false
+	[\\/]*.a | ?:[\\/]*.a)
+	    ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -7251,15 +6146,14 @@ while test $# != 1; do
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 fi
-
-          ;;
-        -bI:*)
-            ac_exists=false
+	  ;;
+	-bI:*)
+	    ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -7267,8 +6161,8 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   if test "$ac_compiler_gnu" = yes; then
   for ac_link_opt in $ac_arg; do
@@ -7278,18 +6172,22 @@ else
   ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 fi
 fi
-
-          ;;
-          # Ignore these flags.
-        -lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -LANG:=* | -LIST:* | -LNO:*)
-          ;;
-        -lkernel32)
-          test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
-          ;;
-        -[LRuYz])
-          # These flags, when seen by themselves, take an argument.
-          # We remove the space between option and argument and re-iterate
-          # unless we find an empty arg or a new option (starting with -)
+	  ;;
+	  # Ignore these flags.
+	-lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \
+	  |-LANG:=* | -LIST:* | -LNO:* | -link)
+	  ;;
+	-lkernel32)
+	  case $host_os in
+	  *cygwin*) ;;
+	  *) ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+	    ;;
+	  esac
+	  ;;
+	-[LRuYz])
+	  # These flags, when seen by themselves, take an argument.
+	  # We remove the space between option and argument and re-iterate
+	  # unless we find an empty arg or a new option (starting with -)
 	  case $2 in
 	     "" | -*);;
 	     *)
@@ -7298,10 +6196,10 @@ fi
 		set X $ac_arg "$@"
 		;;
 	  esac
-          ;;
-        -YP,*)
-          for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
-              ac_exists=false
+	  ;;
+	-YP,*)
+	  for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+	      ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_j" = x"$ac_i"; then
       ac_exists=true
@@ -7309,17 +6207,16 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_arg="$ac_arg $ac_j"
-                               ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
+			       ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
 fi
-
-          done
-          ;;
-        -[lLR]*)
-            ac_exists=false
+	  done
+	  ;;
+	-[lLR]*)
+	    ac_exists=false
   for ac_i in $ac_cv_fc_libs; do
     if test x"$ac_arg" = x"$ac_i"; then
       ac_exists=true
@@ -7327,17 +6224,16 @@ fi
     fi
   done
 
-  if test x"$ac_exists" = xtrue; then
-  :
+  if test x"$ac_exists" = xtrue; then :
+
 else
   ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 fi
-
-          ;;
+	  ;;
 	-zallextract*| -zdefaultextract)
 	  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
 	  ;;
-          # Ignore everything else.
+	  # Ignore everything else.
   esac
 done
 # restore positional arguments
@@ -7349,9 +6245,9 @@ set X $ac_save_positional; shift
 case `(uname -sr) 2>/dev/null` in
    "SunOS 5"*)
       ac_ld_run_path=`$as_echo "$ac_fc_v_output" |
-                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+			sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
       test "x$ac_ld_run_path" != x &&
-        if test "$ac_compiler_gnu" = yes; then
+	if test "$ac_compiler_gnu" = yes; then
   for ac_link_opt in $ac_ld_run_path; do
     ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
   done
@@ -7363,7 +6259,7 @@ esac
 fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_libs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_libs" >&5
 $as_echo "$ac_cv_fc_libs" >&6; }
 FCLIBS="$ac_cv_fc_libs"
 
@@ -7379,9 +6275,9 @@ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
-{ $as_echo "$as_me:$LINENO: checking for dummy main to link with Fortran libraries" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dummy main to link with Fortran libraries" >&5
 $as_echo_n "checking for dummy main to link with Fortran libraries... " >&6; }
-if test "${ac_cv_fc_dummy_main+set}" = set; then
+if ${ac_cv_fc_dummy_main+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_fc_dm_save_LIBS=$LIBS
@@ -7394,11 +6290,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
  # First, try linking without a dummy main:
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -7417,46 +6309,17 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_fortran_dummy_main=none
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_fortran_dummy_main=unknown
+  ac_cv_fortran_dummy_main=unknown
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
  if test $ac_cv_fortran_dummy_main = unknown; then
    for ac_func in MAIN__ MAIN_ __main MAIN _MAIN __MAIN main_ main__ _main; do
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define $ac_fortran_dm_var $ac_func
 #ifdef FC_DUMMY_MAIN
@@ -7475,38 +6338,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_fortran_dummy_main=$ac_func; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
    done
  fi
  ac_ext=${ac_fc_srcext-f}
@@ -7518,10 +6354,10 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
  LIBS=$ac_fc_dm_save_LIBS
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_dummy_main" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_dummy_main" >&5
 $as_echo "$ac_cv_fc_dummy_main" >&6; }
 FC_DUMMY_MAIN=$ac_cv_fc_dummy_main
-if test "$FC_DUMMY_MAIN" != unknown; then
+if test "$FC_DUMMY_MAIN" != unknown; then :
   if test $FC_DUMMY_MAIN != none; then
 
 cat >>confdefs.h <<_ACEOF
@@ -7530,23 +6366,17 @@ _ACEOF
 
   if test "x$ac_cv_fc_dummy_main" = "x$ac_cv_f77_dummy_main"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define FC_DUMMY_MAIN_EQ_F77 1
-_ACEOF
+$as_echo "#define FC_DUMMY_MAIN_EQ_F77 1" >>confdefs.h
 
   fi
 fi
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: linking to Fortran libraries from C fails
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: linking to Fortran libraries from C fails
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "linking to Fortran libraries from C fails
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
-
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -7557,12 +6387,12 @@ ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking for Fortran name-mangling scheme" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran name-mangling scheme" >&5
 $as_echo_n "checking for Fortran name-mangling scheme... " >&6; }
-if test "${ac_cv_fc_mangling+set}" = set; then
+if ${ac_cv_fc_mangling+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat > conftest.$ac_ext <<_ACEOF
       subroutine foobar()
       return
       end
@@ -7570,24 +6400,7 @@ else
       return
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_fc_try_compile "$LINENO"; then :
   mv conftest.$ac_objext cfortran_test.$ac_objext
 
   ac_save_LIBS=$LIBS
@@ -7602,11 +6415,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
   for ac_foobar in foobar FOOBAR; do
     for ac_underscore in "" "_"; do
       ac_func="$ac_foobar$ac_underscore"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -7632,38 +6441,11 @@ return $ac_func ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_success=yes; break 2
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     done
   done
   ac_ext=${ac_fc_srcext-f}
@@ -7691,11 +6473,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
      ac_success_extra=no
      for ac_extra in "" "_"; do
 	ac_func="$ac_foo_bar$ac_underscore$ac_extra"
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -7721,38 +6499,11 @@ return $ac_func ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_success_extra=yes; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
      done
      ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -7761,16 +6512,16 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
      if test "$ac_success_extra" = "yes"; then
 	ac_cv_fc_mangling="$ac_case case"
-        if test -z "$ac_underscore"; then
-           ac_cv_fc_mangling="$ac_cv_fc_mangling, no underscore"
+	if test -z "$ac_underscore"; then
+	   ac_cv_fc_mangling="$ac_cv_fc_mangling, no underscore"
 	else
-           ac_cv_fc_mangling="$ac_cv_fc_mangling, underscore"
-        fi
-        if test -z "$ac_extra"; then
-           ac_cv_fc_mangling="$ac_cv_fc_mangling, no extra underscore"
+	   ac_cv_fc_mangling="$ac_cv_fc_mangling, underscore"
+	fi
+	if test -z "$ac_extra"; then
+	   ac_cv_fc_mangling="$ac_cv_fc_mangling, no extra underscore"
 	else
-           ac_cv_fc_mangling="$ac_cv_fc_mangling, extra underscore"
-        fi
+	   ac_cv_fc_mangling="$ac_cv_fc_mangling, extra underscore"
+	fi
       else
 	ac_cv_fc_mangling="unknown"
       fi
@@ -7782,22 +6533,15 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
   rm -rf conftest*
   rm -f cfortran_test*
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compile a simple Fortran program
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compile a simple Fortran program
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "cannot compile a simple Fortran program
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_mangling" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_mangling" >&5
 $as_echo "$ac_cv_fc_mangling" >&6; }
 
 ac_ext=cpp
@@ -7810,85 +6554,51 @@ ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-
 case $ac_cv_fc_mangling in
   "lower case, no underscore, no extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) name
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) name" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) name
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) name" >>confdefs.h
  ;;
   "lower case, no underscore, extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) name
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) name" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) name ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) name ## _" >>confdefs.h
  ;;
   "lower case, underscore, no extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) name ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) name ## _" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) name ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) name ## _" >>confdefs.h
  ;;
   "lower case, underscore, extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) name ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) name ## _" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) name ## __
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) name ## __" >>confdefs.h
  ;;
   "upper case, no underscore, no extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) NAME
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) NAME" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) NAME
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) NAME" >>confdefs.h
  ;;
   "upper case, no underscore, extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) NAME
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) NAME" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) NAME ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) NAME ## _" >>confdefs.h
  ;;
   "upper case, underscore, no extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) NAME ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) NAME ## _" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) NAME ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) NAME ## _" >>confdefs.h
  ;;
   "upper case, underscore, extra underscore")
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC(name,NAME) NAME ## _
-_ACEOF
+	  $as_echo "#define FC_FUNC(name,NAME) NAME ## _" >>confdefs.h
 
-          cat >>confdefs.h <<\_ACEOF
-#define FC_FUNC_(name,NAME) NAME ## __
-_ACEOF
+	  $as_echo "#define FC_FUNC_(name,NAME) NAME ## __" >>confdefs.h
  ;;
   *)
-          { $as_echo "$as_me:$LINENO: WARNING: unknown Fortran name-mangling scheme" >&5
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unknown Fortran name-mangling scheme" >&5
 $as_echo "$as_me: WARNING: unknown Fortran name-mangling scheme" >&2;}
-          ;;
+	  ;;
 esac
 
 ac_ext=cpp
@@ -7898,7 +6608,8 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
     F77=$FC
-            ac_ext=${ac_fc_srcext-f}
+            if test -z "${HAVE_MPI_TRUE}"; then
+        ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
@@ -7914,9 +6625,22 @@ else
 fi
 
 
+if test "x$with_mpi" == "xno"; then
+
+    if false; then
+  HAVE_MPI_TRUE=
+  HAVE_MPI_FALSE='#'
+else
+  HAVE_MPI_TRUE='#'
+  HAVE_MPI_FALSE=
+fi
+
+
+else
+
 
 # Check whether --with-mpi was given.
-if test "${with_mpi+set}" = set; then
+if test "${with_mpi+set}" = set; then :
   withval=$with_mpi; MPI_DIR=$withval
 fi
 
@@ -7924,13 +6648,13 @@ fi
 
 
 
-	for ac_prog in mpif90 mpxlf95_r mpxlf90_r mpxlf95 mpxlf90 mpf90 cmpif90c
+    	for ac_prog in mpif90 mpxlf95_r mpxlf90_r mpxlf95 mpxlf90 mpf90 cmpif90c
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_MPIFC+set}" = set; then
+if ${ac_cv_prog_MPIFC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$MPIFC"; then
@@ -7941,24 +6665,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MPIFC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 MPIFC=$ac_cv_prog_MPIFC
 if test -n "$MPIFC"; then
-  { $as_echo "$as_me:$LINENO: result: $MPIFC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIFC" >&5
 $as_echo "$MPIFC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -7967,333 +6691,185 @@ fi
 done
 test -n "$MPIFC" || MPIFC="$FC"
 
-	acx_mpi_save_FC="$FC"
-	FC="$MPIFC"
+    	acx_mpi_save_FC="$FC"
+    	FC="$MPIFC"
 
 
 
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init" >&5
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init" >&5
 $as_echo_n "checking for MPI_Init... " >&6; }
-			cat >conftest.$ac_ext <<_ACEOF
+    			cat > conftest.$ac_ext <<_ACEOF
       program main
       call MPI_Init
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
   MPILIBS=" "
-				{ $as_echo "$as_me:$LINENO: result: yes" >&5
+    				{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-
-	if test x = x"$MPILIBS"; then
-		{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lfmpi" >&5
+    	if test x = x"$MPILIBS"; then
+    		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lfmpi" >&5
 $as_echo_n "checking for MPI_Init in -lfmpi... " >&6; }
-if test "${ac_cv_lib_fmpi_MPI_Init+set}" = set; then
+if ${ac_cv_lib_fmpi_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lfmpi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
       call MPI_Init
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
   ac_cv_lib_fmpi_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_fmpi_MPI_Init=no
+  ac_cv_lib_fmpi_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_fmpi_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fmpi_MPI_Init" >&5
 $as_echo "$ac_cv_lib_fmpi_MPI_Init" >&6; }
-if test "x$ac_cv_lib_fmpi_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_fmpi_MPI_Init" = xyes; then :
   MPILIBS="-lfmpi"
 fi
 
-	fi
-	if test x = x"$MPILIBS"; then
-		{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpichf90" >&5
+    	fi
+    	if test x = x"$MPILIBS"; then
+    		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpichf90" >&5
 $as_echo_n "checking for MPI_Init in -lmpichf90... " >&6; }
-if test "${ac_cv_lib_mpichf90_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpichf90_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpichf90  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
       call MPI_Init
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
   ac_cv_lib_mpichf90_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpichf90_MPI_Init=no
+  ac_cv_lib_mpichf90_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpichf90_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpichf90_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpichf90_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpichf90_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpichf90_MPI_Init" = xyes; then :
   MPILIBS="-lmpichf90"
 fi
 
-	fi
+    	fi
 
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
 $as_echo_n "checking for MPI_Init in -lmpi... " >&6; }
-if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpi_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-      program main
-      call MPI_Init
-      end
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+      call MPI_Init
+      end
+_ACEOF
+if ac_fn_fc_try_link "$LINENO"; then :
   ac_cv_lib_mpi_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpi_MPI_Init=no
+  ac_cv_lib_mpi_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpi_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then :
   MPILIBS="-lmpi"
 fi
 
-fi
-if test x = x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5
+    fi
+    if test x = x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
 $as_echo_n "checking for MPI_Init in -lmpich... " >&6; }
-if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then
+if ${ac_cv_lib_mpich_MPI_Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmpich  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+cat > conftest.$ac_ext <<_ACEOF
       program main
       call MPI_Init
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_fc_try_link "$LINENO"; then :
   ac_cv_lib_mpich_MPI_Init=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_mpich_MPI_Init=no
+  ac_cv_lib_mpich_MPI_Init=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5
 $as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; }
-if test "x$ac_cv_lib_mpich_MPI_Init" = x""yes; then
+if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then :
   MPILIBS="-lmpich"
 fi
 
-fi
+    fi
 
-if test x != x"$MPILIBS"; then
-	{ $as_echo "$as_me:$LINENO: checking for mpif.h" >&5
+            if test x != x"$MPILIBS"; then
+    	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpif.h" >&5
 $as_echo_n "checking for mpif.h... " >&6; }
-	cat >conftest.$ac_ext <<_ACEOF
+    	cat > conftest.$ac_ext <<_ACEOF
       program main
       include 'mpif.h'
       end
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_fc_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	MPILIBS=""
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
+  MPILIBS=""
+    		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
+    fi
 
-FC="$acx_mpi_save_FC"
+    FC="$acx_mpi_save_FC"
 
 
 
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x = x"$MPILIBS"; then
-        { { $as_echo "$as_me:$LINENO: error: could not find mpi library for Fortran" >&5
-$as_echo "$as_me: error: could not find mpi library for Fortran" >&2;}
-   { (exit 1); exit 1; }; }
-        :
-else
+    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+    if test x = x"$MPILIBS"; then
+            as_fn_error $? "could not find mpi library for Fortran" "$LINENO" 5
+            :
+    else
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MPI 1
-_ACEOF
+$as_echo "#define HAVE_MPI 1" >>confdefs.h
 
-        :
+            :
+    fi
 fi
 
+    fi
 fi
 
 ac_ext=c
@@ -8305,14 +6881,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 case `pwd` in
   *\ * | *\	*)
-    { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
 esac
 
 
 
-macro_version='2.2.6b'
-macro_revision='1.3017'
+macro_version='2.4.6'
+macro_revision='2.4.6'
 
 
 
@@ -8326,94 +6902,80 @@ macro_revision='1.3017'
 
 
 
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
 
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
-   { (exit 1); exit 1; }; }
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
 
-{ $as_echo "$as_me:$LINENO: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-$as_echo "$as_me: error: invalid value of canonical build" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
 
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
 
-{ $as_echo "$as_me:$LINENO: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-fi
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
 
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-$as_echo "$as_me: error: invalid value of canonical host" >&2;}
-   { (exit 1); exit 1; }; };;
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case $ECHO in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
 esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then
+if ${ac_cv_path_SED+:} false; then :
   $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
@@ -8421,7 +6983,7 @@ else
        ac_script="$ac_script$as_nl$ac_script"
      done
      echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     $as_unset ac_script || ac_script=
+     { ac_script=; unset ac_script;}
      if test -z "$SED"; then
   ac_path_SED_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
@@ -8430,10 +6992,10 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in sed gsed; do
+    for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+      as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
 case `"$ac_path_SED" --version 2>&1` in
@@ -8450,7 +7012,7 @@ case `"$ac_path_SED" --version 2>&1` in
     $as_echo '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_SED_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_SED="$ac_path_SED"
@@ -8465,39 +7027,167 @@ esac
       $ac_path_SED_found && break 3
     done
   done
-done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_SED=$SED
+  ac_cv_path_EGREP=$EGREP
 fi
 
+   fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
 
 
-{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then
+if ${ac_cv_path_FGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
@@ -8511,10 +7201,10 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in fgrep; do
+    for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+      as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
 case `"$ac_path_FGREP" --version 2>&1` in
@@ -8531,7 +7221,7 @@ case `"$ac_path_FGREP" --version 2>&1` in
     $as_echo 'FGREP' >> "conftest.nl"
     "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_FGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_FGREP="$ac_path_FGREP"
@@ -8546,12 +7236,10 @@ esac
       $ac_path_FGREP_found && break 3
     done
   done
-done
+  done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_FGREP"; then
-    { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_FGREP=$FGREP
@@ -8559,7 +7247,7 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 $as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
@@ -8585,20 +7273,20 @@ test -z "$GREP" && GREP=grep
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
 else
   with_gnu_ld=no
 fi
 
 ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
 $as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
+    # gcc leaves a trailing carriage return, which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -8612,7 +7300,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
 	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD="$ac_prog"
+      test -z "$LD" && LD=$ac_prog
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -8623,56 +7311,54 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
     with_gnu_ld=unknown
     ;;
   esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+elif test yes = "$with_gnu_ld"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
-  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
 $as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${lt_cv_path_LD+set}" = set; then
+if ${lt_cv_path_LD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD=$ac_dir/$ac_prog
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
+	test no != "$with_gnu_ld" && break
 	;;
       *)
-	test "$with_gnu_ld" != yes && break
+	test yes != "$with_gnu_ld" && break
 	;;
       esac
     fi
   done
-  IFS="$lt_save_ifs"
+  IFS=$lt_save_ifs
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
 fi
 fi
 
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
 if test -n "$LD"; then
-  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
+if ${lt_cv_prog_gnu_ld+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
@@ -8685,7 +7371,7 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
 $as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
@@ -8697,40 +7383,45 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then
+if ${lt_cv_path_NM+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
   # Let the user override the test.
-  lt_cv_path_NM="$NM"
+  lt_cv_path_NM=$NM
 else
-  lt_nm_to_check="${ac_tool_prefix}nm"
+  lt_nm_to_check=${ac_tool_prefix}nm
   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     lt_nm_to_check="$lt_nm_to_check nm"
   fi
   for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
 	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
 	#   nm: unknown option "B" ignored
 	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
 	  lt_cv_path_NM="$tmp_nm -B"
-	  break
+	  break 2
 	  ;;
 	*)
 	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
 	  */dev/null*)
 	    lt_cv_path_NM="$tmp_nm -p"
-	    break
+	    break 2
 	    ;;
 	  *)
 	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -8741,25 +7432,28 @@ else
 	esac
       fi
     done
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
   done
   : ${lt_cv_path_NM=no}
 fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
 $as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then
+if ${ac_cv_prog_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$DUMPBIN"; then
@@ -8770,24 +7464,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
 $as_echo "$DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8797,13 +7491,13 @@ fi
 fi
 if test -z "$DUMPBIN"; then
   ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+  for ac_prog in dumpbin "link -dump"
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_DUMPBIN"; then
@@ -8814,24 +7508,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
 $as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -8844,7 +7538,7 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -8852,9 +7546,18 @@ esac
   fi
 fi
 
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
 
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
   fi
 fi
 test -z "$NM" && NM=nm
@@ -8864,48 +7567,48 @@ test -z "$NM" && NM=nm
 
 
 
-{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then
+if ${lt_cv_nm_interface+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:8874: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:8877: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:8880: output\"" >&5)
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
   fi
   rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
 $as_echo "$lt_cv_nm_interface" >&6; }
 
-{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
 if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
 $as_echo "no, using $LN_S" >&6; }
 fi
 
 # find the maximum length of command line arguments
-{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
 $as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+if ${lt_cv_sys_max_cmd_len+:} false; then :
   $as_echo_n "(cached) " >&6
 else
     i=0
-  teststring="ABCD"
+  teststring=ABCD
 
   case $build_os in
   msdosdjgpp*)
@@ -8934,13 +7637,18 @@ else
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -8959,6 +7667,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -8985,22 +7698,23 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
       # Make teststring a little bigger before we do anything with it.
       # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
+      for i in 1 2 3 4 5 6 7 8; do
         teststring=$teststring$teststring
       done
       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test 17 != "$i" # 1/2 MB should be enough
       do
         i=`expr $i + 1`
         teststring=$teststring$teststring
@@ -9018,11 +7732,11 @@ else
 
 fi
 
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+if test -n "$lt_cv_sys_max_cmd_len"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
 $as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: none" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
 $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
@@ -9036,30 +7750,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   lt_unset=unset
 else
@@ -9091,14 +7781,88 @@ esac
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then
+if ${lt_cv_ld_reload_flag+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_reload_flag='-r'
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
 $as_echo "$lt_cv_ld_reload_flag" >&6; }
 reload_flag=$lt_cv_ld_reload_flag
 case $reload_flag in
@@ -9107,9 +7871,14 @@ case $reload_flag in
 esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
   darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
@@ -9127,9 +7896,9 @@ esac
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+if ${ac_cv_prog_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OBJDUMP"; then
@@ -9140,24 +7909,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
 $as_echo "$OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -9167,9 +7936,9 @@ if test -z "$ac_cv_prog_OBJDUMP"; then
   ac_ct_OBJDUMP=$OBJDUMP
   # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OBJDUMP"; then
@@ -9180,24 +7949,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
 $as_echo "$ac_ct_OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -9206,7 +7975,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -9226,9 +7995,9 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
-{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
 $as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then
+if ${lt_cv_deplibs_check_method+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_file_magic_cmd='$MAGIC_CMD'
@@ -9237,13 +8006,13 @@ lt_cv_deplibs_check_method='unknown'
 # Need to set the preceding variable on all platforms that support
 # interlibrary dependencies.
 # 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
 # 'pass_all' -- all dependencies passed with no checks.
 # 'test_compile' -- check by making test program.
 # 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
 
 case $host_os in
 aix[4-9]*)
@@ -9274,12 +8043,13 @@ mingw* | pw32*)
     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     lt_cv_file_magic_cmd='func_win32_libid'
   else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
     lt_cv_file_magic_cmd='$OBJDUMP -f'
   fi
   ;;
 
-cegcc)
+cegcc*)
   # use the weaker test based on 'objdump'. See mingw*.
   lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
   lt_cv_file_magic_cmd='$OBJDUMP -f'
@@ -9305,7 +8075,7 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
+haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -9317,11 +8087,11 @@ hpux10.20* | hpux11*)
     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
     ;;
   hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
     lt_cv_file_magic_test_file=/usr/lib/libc.sl
     ;;
   esac
@@ -9342,8 +8112,8 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -9365,8 +8135,8 @@ newos6*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
   else
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
@@ -9419,11 +8189,29 @@ sysv4 | sysv4.3*)
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 esac
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
 $as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -9439,12 +8227,165 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
 
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
 if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then
+if ${ac_cv_prog_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
@@ -9455,36 +8396,40 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  { $as_echo "$as_me:$LINENO: result: $AR" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
 $as_echo "$AR" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+    test -n "$AR" && break
+  done
 fi
-if test -z "$ac_cv_prog_AR"; then
+if test -z "$AR"; then
   ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_AR"; then
@@ -9495,44 +8440,46 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
 $as_echo "$ac_ct_AR" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
+
+  test -n "$ac_ct_AR" && break
+done
+
   if test "x$ac_ct_AR" = x; then
     AR="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     AR=$ac_ct_AR
   fi
-else
-  AR="$ac_cv_prog_AR"
 fi
 
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
+: ${AR=ar}
+: ${AR_FLAGS=cru}
 
 
 
@@ -9544,12 +8491,78 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.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 ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
@@ -9560,24 +8573,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
 $as_echo "$STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -9587,9 +8600,9 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -9600,24 +8613,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
 $as_echo "$ac_ct_STRIP" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -9626,7 +8639,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -9646,9 +8659,9 @@ test -z "$STRIP" && STRIP=:
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -9659,24 +8672,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
 $as_echo "$RANLIB" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -9686,9 +8699,9 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -9699,24 +8712,24 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
 $as_echo "$ac_ct_RANLIB" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -9725,7 +8738,7 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
@@ -9749,16 +8762,28 @@ old_postuninstall_cmds=
 
 if test -n "$RANLIB"; then
   case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+  bitrig* | openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
 
 
 
@@ -9803,9 +8828,9 @@ compiler=$CC
 
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -9827,7 +8852,7 @@ cygwin* | mingw* | pw32* | cegcc*)
   symcode='[ABCDGISTW]'
   ;;
 hpux*)
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     symcode='[ABCDEGRST]'
   fi
   ;;
@@ -9860,14 +8885,44 @@ case `$NM -V 2>&1` in
   symcode='[ABCDGIRSTW]' ;;
 esac
 
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -9885,24 +8940,29 @@ for ac_symprfx in "" "_"; do
 
   # Write the raw and C identifiers.
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
     # Also find C++ and __fastcall symbols from MSVC++,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
 "     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx"
   else
     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -9915,1867 +8975,1371 @@ extern "C" {
 char nm_test_var;
 void nm_test_func(void);
 void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-const struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line 10085 "configure"' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
 
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
 
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
 #endif
+
+#ifdef __cplusplus
+extern "C" {
 #endif
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  lt_cv_cc_needs_belf=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
 
-	lt_cv_cc_needs_belf=no
-fi
+	  cat <<_LT_EOF >> conftest.$ac_ext
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS=conftstm.$ac_objext
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
 	fi
-	;;
-      esac
-      ;;
-    esac
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
   fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
+  rm -rf conftest* conftst*
 
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+  # Do not use the global_symbol_pipe unless it works.
+  if test yes = "$pipe_works"; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
   fi
 done
-done
-IFS=$as_save_IFS
 
 fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
 fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
 fi
 
-
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
 fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+  with_sysroot=no
 fi
 
 
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+   if test yes = "$GCC"; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+$as_echo_n "checking for a working dd... " >&6; }
+if ${ac_cv_path_lt_DD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+if test -z "$lt_DD"; then
+  ac_path_lt_DD_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
+    for ac_prog in dd; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_lt_DD" || continue
+if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
 fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
+      $ac_path_lt_DD_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_lt_DD"; then
+    :
+  fi
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_lt_DD=$lt_DD
 fi
 
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
+rm -f conftest.i conftest2.i conftest.out
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+$as_echo "$ac_cv_path_lt_DD" >&6; }
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+$as_echo_n "checking how to truncate binary pipes... " >&6; }
+if ${lt_cv_truncate_bin+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
 fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+$as_echo "$lt_cv_truncate_bin" >&6; }
 
 
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+
+
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
 fi
 
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE=32
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE=64
+	;;
+    esac
   fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
   fi
-done
-done
-IFS=$as_save_IFS
+  rm -rf conftest*
+  ;;
 
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS=$CFLAGS
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+#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 ()
+{
 
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+  lt_cv_cc_needs_belf=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test yes != "$lt_cv_cc_needs_belf"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS=$SAVE_CFLAGS
+  fi
+  ;;
+*-*solaris*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=${LD-ld}_sol2
+        fi
+        ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+need_locks=$enable_libtool_lock
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-    { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.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 ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  lt_cv_ld_exported_symbols_list=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  done
+IFS=$as_save_IFS
 
-	lt_cv_ld_exported_symbols_list=no
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
 
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
 
-#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 ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdc=yes
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-	ac_cv_header_stdc=no
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
 else
-  ac_cv_header_stdc=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f conftest*
 
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
 fi
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
 else
-  ac_cv_header_stdc=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f conftest*
 
-fi
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-( exit $ac_status )
-ac_cv_header_stdc=no
 fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
 fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
 
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
 fi
 
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-	eval "$as_ac_Header=no"
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
 fi
 
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-for ac_header in dlfcn.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-	eval "$as_ac_Header=no"
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-done
-
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
   else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
     if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then
+if ${ac_cv_prog_OTOOL64+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
-    test -n "$CXX" && break
-  done
+
 fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    CXX=$ac_ct_CXX
+    OTOOL64=$ac_ct_OTOOL64
   fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
 
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.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 ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_compiler_gnu=no
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.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 ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cxx_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	CXXFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.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 ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.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 ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cxx_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
 
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-depcc="$CXX"  am_compiler_list=
 
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "$LT_MULTI_MODULE"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
+#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 ()
+{
 
-  cd ..
-  rm -rf conftest.dir
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
 else
-  am_cv_CXX_dependencies_compiler_type=none
+  lt_cv_ld_exported_symbols_list=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
 
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[012][,.]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+    fi
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
 
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
 
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
     do
       ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
+for ac_c_preproc_warn_flag in '' yes
 do
   # Use a header file that comes with gcc, so configuring glibc
   # with a fresh cross-compiler works.
@@ -11783,11 +10347,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -11796,93 +10356,49 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
   break
 fi
 
     done
-    ac_cv_prog_CXXCPP=$CXXCPP
+    ac_cv_prog_CPP=$CPP
 
 fi
-  CXXCPP=$ac_cv_prog_CXXCPP
+  CPP=$ac_cv_prog_CPP
 else
-  ac_cv_prog_CXXCPP=$CXXCPP
+  ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
 ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
+for ac_c_preproc_warn_flag in '' yes
 do
   # Use a header file that comes with gcc, so configuring glibc
   # with a fresh cross-compiler works.
@@ -11890,11 +10406,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -11903,83 +10415,40 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
 else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-_lt_caught_CXX_error=yes; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -11988,277 +10457,167 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-else
-  _lt_caught_CXX_error=yes
-fi
-
 
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_FC+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$FC"; then
-  ac_cv_prog_FC="$FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
-fi
-fi
-FC=$ac_cv_prog_FC
-if test -n "$FC"; then
-  { $as_echo "$as_me:$LINENO: result: $FC" >&5
-$as_echo "$FC" >&6; }
+#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 ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_header_stdc=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
 
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
 
-    test -n "$FC" && break
-  done
-fi
-if test -z "$FC"; then
-  ac_ct_FC=$FC
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_FC"; then
-  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
+  ac_cv_header_stdc=no
 fi
-ac_ct_FC=$ac_cv_prog_ac_ct_FC
-if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
-$as_echo "$ac_ct_FC" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+rm -f conftest*
+
 fi
 
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
 
-  test -n "$ac_ct_FC" && break
-done
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
 
-  if test "x$ac_ct_FC" = x; then
-    FC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    FC=$ac_ct_FC
-  fi
+else
+  ac_cv_header_stdc=no
 fi
+rm -f conftest*
 
+fi
 
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if test "${ac_cv_fc_compiler_gnu+set}" = set; then
-  $as_echo_n "(cached) " >&6
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
 #endif
 
-      end
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
+if ac_fn_c_try_run "$LINENO"; then :
+
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-	ac_compiler_gnu=no
 fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_fc_compiler_gnu=$ac_compiler_gnu
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
-$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FCFLAGS+set}
-ac_save_FFLAGS=$FCFLAGS
-FCFLAGS=
-{ $as_echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
-$as_echo_n "checking whether $FC accepts -g... " >&6; }
-if test "${ac_cv_prog_fc_g+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  FCFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
-      program main
 
-      end
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_fc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_cv_prog_fc_g=no
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
-$as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FCFLAGS=$ac_save_FFLAGS
-elif test $ac_cv_prog_fc_g = yes; then
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-g -O2"
-  else
-    FCFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-O2"
-  else
-    FCFLAGS=
-  fi
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+done
+
+
+
+func_stripname_cnf ()
+{
+  case $2 in
+  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
+  esac
+} # func_stripname_cnf
 
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
 
 
 
@@ -12274,7 +10633,7 @@ fi
 
 
             # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then
+if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
     yes) enable_shared=yes ;;
@@ -12282,14 +10641,14 @@ if test "${enable_shared+set}" = set; then
     *)
       enable_shared=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_shared=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -12305,7 +10664,7 @@ fi
 
 
   # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then
+if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
     yes) enable_static=yes ;;
@@ -12313,14 +10672,14 @@ if test "${enable_static+set}" = set; then
     *)
      enable_static=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_static=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -12337,15 +10696,28 @@ fi
 
 
 # Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then
-  withval=$with_pic; pic_mode="$withval"
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for lt_pkg in $withval; do
+	IFS=$lt_save_ifs
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
 else
   pic_mode=default
 fi
 
 
-test -z "$pic_mode" && pic_mode=default
-
 
 
 
@@ -12353,7 +10725,7 @@ test -z "$pic_mode" && pic_mode=default
 
 
   # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
+if test "${enable_fast_install+set}" = set; then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
     yes) enable_fast_install=yes ;;
@@ -12361,14 +10733,14 @@ if test "${enable_fast_install+set}" = set; then
     *)
       enable_fast_install=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_fast_install=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -12382,11 +10754,63 @@ fi
 
 
 
+  shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[5-9]*,yes)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+
+# Check whether --with-aix-soname was given.
+if test "${with_aix_soname+set}" = set; then :
+  withval=$with_aix_soname; case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname
+else
+  if ${lt_cv_with_aix_soname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_with_aix_soname=aix
+fi
+
+    with_aix_soname=$lt_cv_with_aix_soname
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+$as_echo "$with_aix_soname" >&6; }
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+
+
+
+
+
+
 
 
 
 # This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
 
 # Always use our own libtool.
 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -12415,6 +10839,11 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+
+
+
+
+
 test -z "$LN_S" && LN_S="ln -s"
 
 
@@ -12430,13 +10859,13 @@ test -z "$LN_S" && LN_S="ln -s"
 
 
 
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
 $as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then
+if ${lt_cv_objdir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   rm -f .libs 2>/dev/null
@@ -12449,7 +10878,7 @@ else
 fi
 rmdir .libs 2>/dev/null
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
@@ -12464,60 +10893,30 @@ _ACEOF
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
 case $host_os in
 aix3*)
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
+  if test set != "${COLLECT_NAMES+set}"; then
     COLLECT_NAMES=
     export COLLECT_NAMES
   fi
   ;;
 esac
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
 # Global variables:
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
 
 # Set sane defaults for various variables
 test -z "$CC" && CC=cc
@@ -12526,15 +10925,8 @@ test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
 test -z "$LD" && LD=ld
 test -z "$ac_objext" && ac_objext=o
 
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
 # Only perform the check for file, if the check method requires it
@@ -12542,29 +10934,29 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file
 case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
   for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+    if test -f "$ac_dir/${ac_tool_prefix}file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
 	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
@@ -12587,18 +10979,18 @@ _LT_EOF
       break
     fi
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
 esac
 fi
 
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -12608,29 +11000,29 @@ fi
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:$LINENO: checking for file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
 $as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
   for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+    if test -f "$ac_dir/file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
 	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
@@ -12653,18 +11045,18 @@ _LT_EOF
       break
     fi
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
 esac
 fi
 
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -12680,7 +11072,7 @@ esac
 
 # Use C for the default configuration in the libtool script
 
-lt_save_CC="$CC"
+lt_save_CC=$CC
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -12742,18 +11134,23 @@ if test -n "$compiler"; then
 
 lt_prog_compiler_no_builtin_flag=
 
-if test "$GCC" = yes; then
-  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_rtti_exceptions=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -12763,15 +11160,15 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12766: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:12770: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_rtti_exceptions=yes
@@ -12780,10 +11177,10 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
     lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
 else
     :
@@ -12800,20 +11197,19 @@ fi
 lt_prog_compiler_pic=
 lt_prog_compiler_static=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
-  if test "$GCC" = yes; then
+  if test yes = "$GCC"; then
     lt_prog_compiler_wl='-Wl,'
     lt_prog_compiler_static='-static'
 
     case $host_os in
       aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static='-Bstatic'
       fi
+      lt_prog_compiler_pic='-fPIC'
       ;;
 
     amigaos*)
@@ -12824,8 +11220,8 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -12841,6 +11237,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       # Although the cygwin gcc ignores -fPIC, still need this for old-style
       # (--disable-auto-import) libraries
       lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -12849,6 +11250,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_pic='-fno-common'
       ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
     hpux*)
       # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
@@ -12891,12 +11298,21 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_pic='-fPIC'
       ;;
     esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
   else
     # PORTME Check for flag to pass linker flags through the system compiler.
     case $host_os in
     aix*)
       lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static='-Bstatic'
       else
@@ -12904,10 +11320,29 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       fi
       ;;
 
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        lt_prog_compiler_wl='-Wl,-Wl,,'
+        lt_prog_compiler_pic='-PIC'
+        lt_prog_compiler_static='-Bstatic'
+        ;;
+      esac
+      ;;
+
     mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -12923,7 +11358,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	;;
       esac
       # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      lt_prog_compiler_static='$wl-a ${wl}archive'
       ;;
 
     irix5* | irix6* | nonstopux*)
@@ -12932,9 +11367,9 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
+      # old Intel for x86_64, which still supported -KPIC.
       ecc*)
 	lt_prog_compiler_wl='-Wl,'
 	lt_prog_compiler_pic='-KPIC'
@@ -12953,7 +11388,19 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	lt_prog_compiler_pic='--shared'
 	lt_prog_compiler_static='--static'
 	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	lt_prog_compiler_wl='-Wl,'
@@ -12965,25 +11412,40 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
         # All Alpha code is PIC.
         lt_prog_compiler_static='-non_shared'
         ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
 	lt_prog_compiler_wl='-Wl,'
 	lt_prog_compiler_pic='-qpic'
 	lt_prog_compiler_static='-qstaticlink'
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl='-Wl,'
 	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
 	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
 	  ;;
 	esac
 	;;
@@ -13015,7 +11477,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_pic='-KPIC'
       lt_prog_compiler_static='-Bstatic'
       case $cc_basename in
-      f77* | f90* | f95*)
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
 	lt_prog_compiler_wl='-Qoption ld ';;
       *)
 	lt_prog_compiler_wl='-Wl,';;
@@ -13035,7 +11497,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       ;;
 
     sysv4*MP*)
-      if test -d /usr/nec ;then
+      if test -d /usr/nec; then
 	lt_prog_compiler_pic='-Kconform_pic'
 	lt_prog_compiler_static='-Bstatic'
       fi
@@ -13064,7 +11526,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
   fi
 
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic=
     ;;
@@ -13072,27 +11534,31 @@ case $host_os in
     lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
-$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
-
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
 
 #
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -13102,15 +11568,15 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13105: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13109: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_pic_works=yes
@@ -13119,10 +11585,10 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
     case $lt_prog_compiler_pic in
      "" | " "*) ;;
      *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
@@ -13139,17 +11605,22 @@ fi
 
 
 
+
+
+
+
+
 #
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+if ${lt_cv_prog_compiler_static_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -13158,7 +11629,7 @@ else
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          lt_cv_prog_compiler_static_works=yes
@@ -13168,13 +11639,13 @@ else
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
 $as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works"; then
     :
 else
     lt_prog_compiler_static=
@@ -13186,9 +11657,9 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+if ${lt_cv_prog_compiler_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
@@ -13207,16 +11678,16 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13210: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13214: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o=yes
@@ -13233,7 +11704,7 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
@@ -13241,9 +11712,9 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
-  { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+if ${lt_cv_prog_compiler_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
@@ -13262,16 +11733,16 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13265: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13269: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o=yes
@@ -13288,16 +11759,16 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -13305,11 +11776,11 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
@@ -13321,7 +11792,7 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
@@ -13337,7 +11808,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct=no
   hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
@@ -13353,9 +11823,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   # included in the symbol list
   include_expsyms=
   # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
   exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
@@ -13370,7 +11840,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
@@ -13378,30 +11848,57 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     # we just hope/assume this is gcc and not c89 (= MSVC++)
     with_gnu_ld=yes
     ;;
-  openbsd*)
+  openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
   esac
 
   ld_shlibs=yes
-  if test "$with_gnu_ld" = yes; then
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
+    wlarc='$wl'
 
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
+    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+    export_dynamic_flag_spec='$wl--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     else
       whole_archive_flag_spec=
     fi
     supports_anon_versioning=no
-    case `$LD -v 2>&1` in
+    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -13413,15 +11910,16 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     case $host_os in
     aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
+      if test ia64 != "$host_cpu"; then
 	ld_shlibs=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, is reported
 *** to be unable to reliably create shared libraries on AIX.
 *** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
 _LT_EOF
       fi
@@ -13431,7 +11929,7 @@ _LT_EOF
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             archive_expsym_cmds=''
         ;;
       m68k)
@@ -13447,7 +11945,7 @@ _LT_EOF
 	allow_undefined_flag=unsupported
 	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
 	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       else
 	ld_shlibs=no
       fi
@@ -13457,61 +11955,97 @@ _LT_EOF
       # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
       # as there is no search path for DLLs.
       hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='$wl--export-all-symbols'
       allow_undefined_flag=unsupported
       always_export_symbols=no
       enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	ld_shlibs=no
       fi
       ;;
 
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
     interix[3-9]*)
       hardcode_direct=no
       hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
+      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+      export_dynamic_flag_spec='$wl-E'
       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       # Instead, shared libraries are loaded at an image base (0x10000000 by
       # default) and relocated if they conflict, which is a slow very memory
       # consuming and fragmenting process.  To avoid this, we pick a random,
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
+      if test linux-dietlibc = "$host_os"; then
 	case $cc_basename in
 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
 	esac
       fi
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
+	 && test no = "$tmp_diet"
       then
-	tmp_addflag=
+	tmp_addflag=' $pic_flag'
 	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
         pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -13522,39 +12056,47 @@ _LT_EOF
 	lf95*)				# Lahey Fortran 8.1
 	  whole_archive_flag_spec=
 	  tmp_sharedflag='--shared' ;;
-	xl[cC]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
 	  tmp_sharedflag='-qmkshrobj'
 	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  compiler_needs_object=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
 	  tmp_sharedflag='-G' ;;
 	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 
-        if test "x$supports_anon_versioning" = xyes; then
+        if test yes = "$supports_anon_versioning"; then
           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
 	case $cc_basename in
-	xlf*)
+	tcc*)
+	  export_dynamic_flag_spec='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
+	  hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
 	  ;;
 	esac
@@ -13568,8 +12110,8 @@ _LT_EOF
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -13587,8 +12129,8 @@ _LT_EOF
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs=no
       fi
@@ -13600,7 +12142,7 @@ _LT_EOF
 	ld_shlibs=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
 *** reliably create shared libraries on SCO systems.  Therefore, libtool
 *** is disabling shared libraries support.  We urge you to upgrade GNU
 *** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
@@ -13615,9 +12157,9 @@ _LT_EOF
 	  # DT_RUNPATH tag from executables and libraries.  But doing so
 	  # requires that you compile everything twice, which is a pain.
 	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	  else
 	    ld_shlibs=no
 	  fi
@@ -13634,15 +12176,15 @@ _LT_EOF
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs=no
       fi
       ;;
     esac
 
-    if test "$ld_shlibs" = no; then
+    if test no = "$ld_shlibs"; then
       runpath_var=
       hardcode_libdir_flag_spec=
       export_dynamic_flag_spec=
@@ -13658,7 +12200,7 @@ _LT_EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	hardcode_direct=unsupported
@@ -13666,32 +12208,57 @@ _LT_EOF
       ;;
 
     aix[4-9]*)
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# On IA64, the linker does run time linking by default, so we don't
 	# have to do anything special.
 	aix_use_runtimelinking=no
 	exp_sym_flag='-Bexport'
-	no_entry_flag=""
+	no_entry_flag=
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
 	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
 	fi
 	aix_use_runtimelinking=no
 
 	# Test if we are trying to use run time linking or normal
 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
 	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
 	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
 	    aix_use_runtimelinking=yes
 	    break
 	  fi
 	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
 	  ;;
 	esac
 
@@ -13710,13 +12277,21 @@ _LT_EOF
       hardcode_direct_absolute=yes
       hardcode_libdir_separator=':'
       link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
+      file_list_spec='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	hardcode_direct=no
+	hardcode_direct_absolute=no
+	;;
+      esac
 
-      if test "$GCC" = yes; then
+      if test yes = "$GCC"; then
 	case $host_os in aix4.[012]|aix4.[012].*)
 	# We only want to do this on AIX 4.2 and lower, the check
 	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -13735,39 +12310,48 @@ _LT_EOF
 	  ;;
 	esac
 	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
 	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
       else
 	# not using gcc
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
 	  else
-	    shared_flag='${wl}-bM:SRE'
+	    shared_flag='$wl-bM:SRE'
 	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
 	fi
       fi
 
-      export_dynamic_flag_spec='${wl}-bexpall'
+      export_dynamic_flag_spec='$wl-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
 	# Warning - without using the other runtime loading flags (-brtl),
 	# -berok will link without error, but may produce a broken library.
 	allow_undefined_flag='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -13786,67 +12370,49 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
       else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	if test ia64 = "$host_cpu"; then
+	  hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
 	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -13865,62 +12431,59 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	 hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec='$convenience'
+	  no_undefined_flag=' $wl-bernotok'
+	  allow_undefined_flag=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
 	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) >  [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
 	fi
       fi
       ;;
@@ -13929,7 +12492,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             archive_expsym_cmds=''
         ;;
       m68k)
@@ -13949,20 +12512,65 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      allow_undefined_flag=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_from_new_cmds='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes=yes
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -13972,19 +12580,24 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
-  whole_archive_flag_spec=''
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec=''
+  fi
   link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
+  allow_undefined_flag=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
 
   else
   ld_shlibs=no
@@ -13998,10 +12611,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       hardcode_shlibpath_var=no
       ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -14014,7 +12623,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
       hardcode_minus_L=yes
@@ -14023,41 +12632,40 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
     freebsd* | dragonfly*)
-      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
       hardcode_shlibpath_var=no
       ;;
 
     hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      if test yes = "$GCC"; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
       hardcode_libdir_separator=:
       hardcode_direct=yes
 
       # hardcode_minus_L: Not really in the search PATH,
       # but as the default location of the library.
       hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
+      export_dynamic_flag_spec='$wl-E'
       ;;
 
     hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
 	hardcode_libdir_separator=:
 	hardcode_direct=yes
 	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
+	export_dynamic_flag_spec='$wl-E'
 	# hardcode_minus_L: Not really in the search PATH,
 	# but as the default location of the library.
 	hardcode_minus_L=yes
@@ -14065,33 +12673,72 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+      if test yes,no = "$GCC,$with_gnu_ld"; then
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test yes = "$lt_cv_prog_compiler__b"; then
+    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
 	  ;;
 	esac
       fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
 	hardcode_libdir_separator=:
 
 	case $host_cpu in
@@ -14102,7 +12749,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	*)
 	  hardcode_direct=yes
 	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
+	  export_dynamic_flag_spec='$wl-E'
 
 	  # hardcode_minus_L: Not really in the search PATH,
 	  # but as the default location of the library.
@@ -14113,61 +12760,58 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	# Try to use the -exported_symbol ld option, if it does not
 	# work, assume that -exports_file does not work either and
 	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
-int foo(void) {}
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
+  lt_cv_irix_exported_symbol=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS=$save_LDFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
       else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
       fi
       archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       hardcode_libdir_separator=:
       inherit_rpath=yes
       link_all_deplibs=yes
       ;;
 
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	ld_shlibs=yes
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
     netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
@@ -14182,7 +12826,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     newsos6)
       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       hardcode_libdir_separator=:
       hardcode_shlibpath_var=no
       ;;
@@ -14190,27 +12834,19 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     *nto* | *qnx*)
       ;;
 
-    openbsd*)
+    openbsd* | bitrig*)
       if test -f /usr/libexec/ld.so; then
 	hardcode_direct=yes
 	hardcode_shlibpath_var=no
 	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
 	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	  export_dynamic_flag_spec='$wl-E'
 	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
 	fi
       else
 	ld_shlibs=no
@@ -14221,33 +12857,53 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       hardcode_libdir_flag_spec='-L$libdir'
       hardcode_minus_L=yes
       allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
       ;;
 
     osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
       else
 	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
       fi
       archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       hardcode_libdir_separator=:
       ;;
 
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       else
 	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	hardcode_libdir_flag_spec='-rpath $libdir'
@@ -14258,24 +12914,24 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 
     solaris*)
       no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
 	case `$CC -V 2>&1` in
 	*"Compilers 5.0"*)
 	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
 	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
 	  ;;
 	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  wlarc='$wl'
+	  archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
 	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
 	  ;;
 	esac
       fi
@@ -14285,11 +12941,11 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       solaris2.[0-5] | solaris2.[0-5].*) ;;
       *)
 	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
 	# but is careful enough not to reorder.
 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	if test yes = "$GCC"; then
+	  whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 	else
 	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
 	fi
@@ -14299,10 +12955,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       ;;
 
     sunos4*)
-      if test "x$host_vendor" = xsequent; then
+      if test sequent = "$host_vendor"; then
 	# Use $CC to link under sequent, because it throws in some extra .o
 	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -14351,43 +13007,43 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
+      no_undefined_flag='$wl-z,text'
       archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
     sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
+      # Note: We CANNOT use -z defs as we might desire, because we do not
       # link with -lc, and that would cause any symbols used from libc to
       # always be unresolved, which means just about no library would
       # ever link correctly.  If we're not using GNU ld we use -z text
       # though, which does catch some bad symbols but isn't as heavy-handed
       # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
+      no_undefined_flag='$wl-z,text'
+      allow_undefined_flag='$wl-z,nodefs'
       archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_flag_spec='$wl-R,$libdir'
       hardcode_libdir_separator=':'
       link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
+      export_dynamic_flag_spec='$wl-Bexport'
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -14402,18 +13058,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       ;;
     esac
 
-    if test x$host_vendor = xsni; then
+    if test sni = "$host_vendor"; then
       case $host in
       sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	export_dynamic_flag_spec='$wl-Blargedynsym'
 	;;
       esac
     fi
   fi
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
 $as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
+test no = "$ld_shlibs" && can_build_shared=no
 
 with_gnu_ld=$with_gnu_ld
 
@@ -14439,7 +13095,7 @@ x|xyes)
   # Assume -lc should be added
   archive_cmds_need_lc=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $archive_cmds in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -14448,46 +13104,52 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl
-	pic_flag=$lt_prog_compiler_pic
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag
-        allow_undefined_flag=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc=no
-        else
-	  archive_cmds_need_lc=yes
-        fi
-        allow_undefined_flag=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
-$as_echo "$archive_cmds_need_lc" >&6; }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
       ;;
     esac
   fi
@@ -14645,52 +13307,61 @@ esac
 
 
 
-
-
-
-
-
-  { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
+  case $host_os in
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
+  esac
   case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
   esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
     # if the path contains ";" then we assume it to be the separator
     # otherwise default to the standard path separator (i.e. ":") - it is
     # assumed that no part of a normal pathname contains ";" but that should
     # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
   # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
+  # and add multilib dir if necessary...
   lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
   for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
       test -d "$lt_sys_path" && \
 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
   for (lt_i = NF; lt_i > 0; lt_i--) {
     if ($lt_i != "" && $lt_i != ".") {
       if ($lt_i == "..") {
         lt_count++;
       } else {
         if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
+          lt_foo = "/" $lt_i lt_foo;
         } else {
           lt_count--;
         }
@@ -14700,14 +13371,20 @@ BEGIN {RS=" "; FS="/|\n";} {
   if (lt_foo != "") { lt_freq[lt_foo]++; }
   if (lt_freq[lt_foo] == 1) { print lt_foo; }
 }'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -14724,56 +13401,108 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[01] | aix4.[01].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -14783,27 +13512,27 @@ amigaos*)
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -14815,16 +13544,17 @@ bsdi[45]*)
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -14840,37 +13570,84 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
+        # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
       ;;
     esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -14880,8 +13657,8 @@ darwin* | rhapsody*)
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -14891,18 +13668,14 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -14910,25 +13683,26 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14947,13 +13721,16 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
 
@@ -14970,14 +13747,15 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -14985,8 +13763,8 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -14995,20 +13773,22 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -15019,16 +13799,16 @@ irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -15047,8 +13827,8 @@ irix5* | irix6* | nonstopux*)
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
   hardcode_into_libs=yes
   ;;
 
@@ -15057,26 +13837,47 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
   # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -15095,56 +13896,34 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
-  shlibpath_overrides_runpath=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Add ABI-specific directories to the system library path.
-  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -15161,12 +13940,12 @@ netbsd*)
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -15175,8 +13954,8 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -15185,58 +13964,68 @@ newsos6)
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
   else
-    shlibpath_overrides_runpath=yes
+    need_version=yes
   fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -15244,11 +14033,11 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -15258,20 +14047,20 @@ solaris*)
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -15292,24 +14081,24 @@ sysv4 | sysv4.3*)
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -15324,19 +14113,19 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -15344,22 +14133,36 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
 
 
 
@@ -15446,20 +14249,26 @@ fi
 
 
 
-  { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" ||
    test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
+   test yes = "$hardcode_automatic"; then
 
   # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
+  if test no != "$hardcode_direct" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+     test no != "$hardcode_minus_L"; then
     # Linking always hardcodes the temporary library directory.
     hardcode_action=relink
   else
@@ -15471,15 +14280,15 @@ else
   # directories.
   hardcode_action=unsupported
 fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
 $as_echo "$hardcode_action" >&6; }
 
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
+if test relink = "$hardcode_action" ||
+   test yes = "$inherit_rpath"; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -15489,7 +14298,7 @@ fi
 
 
 
-  if test "x$enable_dlopen" != xyes; then
+  if test yes != "$enable_dlopen"; then
   enable_dlopen=unknown
   enable_dlopen_self=unknown
   enable_dlopen_self_static=unknown
@@ -15499,136 +14308,32 @@ else
 
   case $host_os in
   beos*)
-    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen=load_add_on
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ;;
 
   mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen=LoadLibrary
     lt_cv_dlopen_libs=
     ;;
 
   cygwin*)
-    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen=dlopen
     lt_cv_dlopen_libs=
     ;;
 
   darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+    # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-#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 ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dl_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
-$as_echo_n "checking for shl_load... " >&6; }
-if test "${ac_cv_func_shl_load+set}" = set; then
+if ${ac_cv_lib_dl_dlopen+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
@@ -15636,14 +14341,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 #ifdef __cplusplus
 extern "C"
 #endif
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_shl_load || defined __stub___shl_load
-choke me
-#endif
-
+char dlopen ();
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -15655,61 +14353,55 @@ choke me
 int
 main ()
 {
-return shl_load ();
+return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_shl_load=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func_shl_load=no
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+
+    lt_cv_dlopen=dyld
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-$as_echo "$ac_cv_func_shl_load" >&6; }
-if test "x$ac_cv_func_shl_load" = x""yes; then
-  lt_cv_dlopen="shl_load"
+
+    ;;
+
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load
 else
-  { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
 $as_echo_n "checking for shl_load in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+if ${ac_cv_lib_dld_shl_load+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -15735,153 +14427,32 @@ return shl_load ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_shl_load=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dld_shl_load=no
+  ac_cv_lib_dld_shl_load=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
 $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
-$as_echo_n "checking for dlopen... " >&6; }
-if test "${ac_cv_func_dlopen+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_dlopen || defined __stub___dlopen
-choke me
-#endif
-
-#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 ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_dlopen=yes
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-$as_echo "$ac_cv_func_dlopen" >&6; }
-if test "x$ac_cv_func_dlopen" = x""yes; then
-  lt_cv_dlopen="dlopen"
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen
 else
-  { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+if ${ac_cv_lib_dl_dlopen+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -15907,57 +14478,28 @@ return dlopen ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
 else
-  { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
 $as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+if ${ac_cv_lib_svld_dlopen+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -15983,57 +14525,28 @@ return dlopen ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_svld_dlopen=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_svld_dlopen=no
+  ac_cv_lib_svld_dlopen=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
 $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
 else
-  { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
 $as_echo_n "checking for dld_link in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+if ${ac_cv_lib_dld_dld_link+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -16059,44 +14572,19 @@ return dld_link ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_dld_link=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dld_dld_link=no
+  ac_cv_lib_dld_dld_link=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
 $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
 fi
 
 
@@ -16117,35 +14605,35 @@ fi
     ;;
   esac
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
+  if test no = "$lt_cv_dlopen"; then
     enable_dlopen=no
+  else
+    enable_dlopen=yes
   fi
 
   case $lt_cv_dlopen in
   dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-    save_LDFLAGS="$LDFLAGS"
+    save_LDFLAGS=$LDFLAGS
     wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-    save_LIBS="$LIBS"
+    save_LIBS=$LIBS
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
 $as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then
+if ${lt_cv_dlopen_self+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  	  if test "$cross_compiling" = yes; then :
+  	  if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 16148 "configure"
+#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -16186,7 +14674,13 @@ else
 #  endif
 #endif
 
-void fnord() { int i=42;}
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -16195,7 +14689,11 @@ int main ()
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
       /* dlclose (self); */
     }
   else
@@ -16204,11 +14702,11 @@ int main ()
   return status;
 }
 _LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -16225,23 +14723,23 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
 
-    if test "x$lt_cv_dlopen_self" = xyes; then
+    if test yes = "$lt_cv_dlopen_self"; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then
+if ${lt_cv_dlopen_self_static+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  	  if test "$cross_compiling" = yes; then :
+  	  if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self_static=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 16244 "configure"
+#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -16282,7 +14780,13 @@ else
 #  endif
 #endif
 
-void fnord() { int i=42;}
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -16291,7 +14795,11 @@ int main ()
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
       /* dlclose (self); */
     }
   else
@@ -16300,11 +14808,11 @@ int main ()
   return status;
 }
 _LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -16321,13 +14829,13 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
     fi
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
     ;;
   esac
 
@@ -16360,29 +14868,29 @@ fi
 
 striplib=
 old_striplib=
-{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
 $as_echo_n "checking whether stripping libraries is possible... " >&6; }
 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
   test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
   test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
 # FIXME - insert some real tests, host_os isn't really good enough
   case $host_os in
   darwin*)
-    if test -n "$STRIP" ; then
+    if test -n "$STRIP"; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
-      { $as_echo "$as_me:$LINENO: result: yes" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
     else
-      { $as_echo "$as_me:$LINENO: result: no" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     fi
     ;;
   *)
-    { $as_echo "$as_me:$LINENO: result: no" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
     ;;
   esac
@@ -16399,21 +14907,21 @@ fi
 
 
 
-  # Report which library types will actually be built
-  { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+  # Report what library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
 $as_echo "$can_build_shared" >&6; }
 
-  { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
+  test no = "$can_build_shared" && enable_shared=no
 
   # On AIX, shared libraries and static libraries use the same namespace, and
   # are all built from PIC.
   case $host_os in
   aix3*)
-    test "$enable_shared" = yes && enable_static=no
+    test yes = "$enable_shared" && enable_static=no
     if test -n "$RANLIB"; then
       archive_cmds="$archive_cmds~\$RANLIB \$lib"
       postinstall_cmds='$RANLIB $lib'
@@ -16421,19 +14929,23 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
     ;;
 
   aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
     fi
     ;;
   esac
-  { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
 $as_echo "$enable_shared" >&6; }
 
-  { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
   # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+  test yes = "$enable_shared" || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
 
@@ -16446,8 +14958,147 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CC="$lt_save_CC"
-
+CC=$lt_save_CC
+
+      if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  _lt_caught_CXX_error=yes
+fi
 
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -16464,7 +15115,6 @@ export_dynamic_flag_spec_CXX=
 hardcode_direct_CXX=no
 hardcode_direct_absolute_CXX=no
 hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
 hardcode_libdir_separator_CXX=
 hardcode_minus_L_CXX=no
 hardcode_shlibpath_var_CXX=unsupported
@@ -16474,6 +15124,8 @@ module_cmds_CXX=
 module_expsym_cmds_CXX=
 link_all_deplibs_CXX=unknown
 old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
 no_undefined_flag_CXX=
 whole_archive_flag_spec_CXX=
 enable_shared_with_static_runtimes_CXX=no
@@ -16489,7 +15141,7 @@ objext_CXX=$objext
 # the CXX compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="int some_variable = 0;"
 
@@ -16529,6 +15181,7 @@ $RM -r conftest*
 
   # Allow CC to be a program name with arguments.
   lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
   lt_save_LD=$LD
   lt_save_GCC=$GCC
   GCC=$GXX
@@ -16546,48 +15199,42 @@ $RM -r conftest*
   fi
   test -z "${LDCXX+set}" || LD=$LDCXX
   CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
   compiler=$CC
   compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
   if test -n "$compiler"; then
     # We don't want -fno-exception when compiling C++ code, so set the
     # no_builtin_flag separately
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
     else
       lt_prog_compiler_no_builtin_flag_CXX=
     fi
 
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       # Set up default GNU C++ configuration
 
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
 else
   with_gnu_ld=no
 fi
 
 ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
 $as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
+    # gcc leaves a trailing carriage return, which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -16601,7 +15248,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
 	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD="$ac_prog"
+      test -z "$LD" && LD=$ac_prog
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -16612,56 +15259,54 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
     with_gnu_ld=unknown
     ;;
   esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+elif test yes = "$with_gnu_ld"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
-  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
 $as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${lt_cv_path_LD+set}" = set; then
+if ${lt_cv_path_LD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD=$ac_dir/$ac_prog
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
+	test no != "$with_gnu_ld" && break
 	;;
       *)
-	test "$with_gnu_ld" != yes && break
+	test yes != "$with_gnu_ld" && break
 	;;
       esac
     fi
   done
-  IFS="$lt_save_ifs"
+  IFS=$lt_save_ifs
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
 fi
 fi
 
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
 if test -n "$LD"; then
-  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
+if ${lt_cv_prog_gnu_ld+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
@@ -16674,7 +15319,7 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
 $as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
@@ -16686,22 +15331,22 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
       # Check if GNU C++ uses GNU ld as the underlying linker, since the
       # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      if test yes = "$with_gnu_ld"; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
 
         # If archive_cmds runs LD, not CC, wlarc should be empty
         # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
         #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
+        wlarc='$wl'
 
         # ancient GNU ld didn't support --whole-archive et. al.
         if eval "`$CC -print-prog-name=ld` --help 2>&1" |
 	  $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
         else
           whole_archive_flag_spec_CXX=
         fi
@@ -16720,7 +15365,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
       # Commands to make compiler produce verbose output that lists
       # what "hidden" libraries, object files and flags are used when
       # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
     else
       GXX=no
@@ -16729,7 +15374,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
     fi
 
     # PORTME: fill in a description of your system's C++ link characteristics
-    { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
     ld_shlibs_CXX=yes
     case $host_os in
@@ -16738,18 +15383,30 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
         ld_shlibs_CXX=no
         ;;
       aix[4-9]*)
-        if test "$host_cpu" = ia64; then
+        if test ia64 = "$host_cpu"; then
           # On IA64, the linker does run time linking by default, so we don't
           # have to do anything special.
           aix_use_runtimelinking=no
           exp_sym_flag='-Bexport'
-          no_entry_flag=""
+          no_entry_flag=
         else
           aix_use_runtimelinking=no
 
           # Test if we are trying to use run time linking or normal
           # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
           case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
 	    for ld_flag in $LDFLAGS; do
 	      case $ld_flag in
@@ -16759,6 +15416,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
 	        ;;
 	      esac
 	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
 	    ;;
           esac
 
@@ -16777,13 +15441,21 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
         hardcode_direct_absolute_CXX=yes
         hardcode_libdir_separator_CXX=':'
         link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${wl}-f,'
+        file_list_spec_CXX='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          hardcode_direct_CXX=no
+          hardcode_direct_absolute_CXX=no
+          ;;
+        esac
 
-        if test "$GXX" = yes; then
+        if test yes = "$GXX"; then
           case $host_os in aix4.[012]|aix4.[012].*)
           # We only want to do this on AIX 4.2 and lower, the check
           # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -16801,40 +15473,50 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
 	  fi
           esac
           shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
 	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
         else
           # not using gcc
-          if test "$host_cpu" = ia64; then
+          if test ia64 = "$host_cpu"; then
 	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	  # chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
           else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
 	    else
-	      shared_flag='${wl}-bM:SRE'
+	      shared_flag='$wl-bM:SRE'
 	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
           fi
         fi
 
-        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        export_dynamic_flag_spec_CXX='$wl-bexpall'
         # It seems that -bexpall does not export symbols beginning with
         # underscore (_), so it is better to generate a list of symbols to
 	# export.
         always_export_symbols_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
           # Warning - without using the other runtime loading flags (-brtl),
           # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
+          # The "-G" linker flag allows undefined symbols.
+          no_undefined_flag_CXX='-bernotok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
-          cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+          if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -16853,68 +15535,50 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_cxx_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
 
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
 
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
         else
-          if test "$host_cpu" = ia64; then
-	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+          if test ia64 = "$host_cpu"; then
+	    hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
 	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
           else
 	    # Determine the default libpath from the value encoded in an
 	    # empty executable.
-	    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	    if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -16933,63 +15597,60 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_cxx_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
 	    # Warning - without using the other run time loading flags,
 	    # -berok will link without error, but may produce a broken library.
-	    no_undefined_flag_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_CXX='$convenience'
+	    no_undefined_flag_CXX=' $wl-bernotok'
+	    allow_undefined_flag_CXX=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
 	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	    archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_sy [...]
+	    else
+	      # used by -dlpreopen to get the symbols
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
           fi
         fi
         ;;
@@ -16999,7 +15660,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	  allow_undefined_flag_CXX=unsupported
 	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
 	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 	else
 	  ld_shlibs_CXX=no
 	fi
@@ -17015,28 +15676,76 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ;;
 
       cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-        # as there is no search path for DLLs.
-        hardcode_libdir_flag_spec_CXX='-L$libdir'
-        allow_undefined_flag_CXX=unsupported
-        always_export_symbols_CXX=no
-        enable_shared_with_static_runtimes_CXX=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    cp $export_symbols $output_objdir/$soname.def;
-          else
-	    echo EXPORTS > $output_objdir/$soname.def;
-	    cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          ld_shlibs_CXX=no
-        fi
-        ;;
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX=' '
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=yes
+	  file_list_spec_CXX='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=.dll
+	  # FIXME: Setting linknames here is a bad hack.
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+	  enable_shared_with_static_runtimes_CXX=yes
+	  # Don't use ranlib
+	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
+	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=no
+	  enable_shared_with_static_runtimes_CXX=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    ld_shlibs_CXX=no
+	  fi
+	  ;;
+	esac
+	;;
       darwin* | rhapsody*)
 
 
@@ -17044,22 +15753,27 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
   hardcode_direct_CXX=no
   hardcode_automatic_CXX=yes
   hardcode_shlibpath_var_CXX=unsupported
-  whole_archive_flag_spec_CXX=''
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
   link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+       if test yes != "$lt_cv_apple_cc_single_mod"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     fi
 
   else
@@ -17068,6 +15782,34 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
 	;;
 
+      os2*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+	hardcode_minus_L_CXX=yes
+	allow_undefined_flag_CXX=unsupported
+	shrext_cmds=.dll
+	archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	enable_shared_with_static_runtimes_CXX=yes
+	;;
+
       dgux*)
         case $cc_basename in
           ec++*)
@@ -17086,7 +15828,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         esac
         ;;
 
-      freebsd[12]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         ld_shlibs_CXX=no
@@ -17102,13 +15844,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ld_shlibs_CXX=yes
         ;;
 
-      gnu*)
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
         ;;
 
       hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
         hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
+        export_dynamic_flag_spec_CXX='$wl-E'
         hardcode_direct_CXX=yes
         hardcode_minus_L_CXX=yes # Not in the search PATH,
 				             # but as the default
@@ -17120,7 +15864,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
             ld_shlibs_CXX=no
             ;;
           aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             # Commands to make compiler produce verbose output that lists
             # what "hidden" libraries, object files and flags are used when
             # linking a shared library.
@@ -17129,11 +15873,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            if test yes = "$GXX"; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               ld_shlibs_CXX=no
@@ -17143,15 +15887,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ;;
 
       hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        if test no = "$with_gnu_ld"; then
+	  hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
 	  hardcode_libdir_separator_CXX=:
 
           case $host_cpu in
             hppa*64*|ia64*)
               ;;
             *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
+	      export_dynamic_flag_spec_CXX='$wl-E'
               ;;
           esac
         fi
@@ -17177,13 +15921,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
           aCC*)
 	    case $host_cpu in
 	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      *)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	    esac
 	    # Commands to make compiler produce verbose output that lists
@@ -17194,20 +15938,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
 	        case $host_cpu in
 	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          *)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	        esac
 	      fi
@@ -17222,22 +15966,22 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       interix[3-9]*)
 	hardcode_direct_CXX=no
 	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}-E'
+	hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='$wl-E'
 	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
 	# Instead, shared libraries are loaded at an image base (0x10000000 by
 	# default) and relocated if they conflict, which is a slow very memory
 	# consuming and fragmenting process.  To avoid this, we pick a random,
 	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
 	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
 	;;
       irix5* | irix6*)
         case $cc_basename in
           CC*)
 	    # SGI C++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -17246,22 +15990,22 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	      else
-	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
 	      fi
 	    fi
 	    link_all_deplibs_CXX=yes
 	    ;;
         esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
         hardcode_libdir_separator_CXX=:
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -17269,8 +16013,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
 	    # Commands to make compiler produce verbose output that lists
 	    # what "hidden" libraries, object files and flags are used when
 	    # linking a shared library.
@@ -17279,10 +16023,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -17296,59 +16040,59 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # earlier do not add the objects themselves.
 	    case `$CC -V 2>&1` in
 	      *"Version 7."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	      *)  # Version 8.0 or newer
 	        tmp_idyn=
 	        case $host_cpu in
 		  ia64*) tmp_idyn=' -i_dynamic';;
 		esac
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	    esac
 	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
 	    ;;
           pgCC* | pgcpp*)
             # Portland Group C++ compiler
 	    case `$CC -V` in
-	    *pgCC\ [1-5]* | *pgcpp\ [1-5]*)
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
 	      prelink_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      old_archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-		$RANLIB $oldlib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
 	      archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
 	      archive_expsym_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
-	    *) # Version 6 will use weak symbols
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
 	    esac
 
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	    hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
             ;;
 	  cxx*)
 	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
 
 	    runpath_var=LD_RUN_PATH
 	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
@@ -17362,18 +16106,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
 	    ;;
-	  xl*)
+	  xl* | mpixl* | bgxl*)
 	    # IBM XL 8.0 on PPC, with GNU ld
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
 	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
 	    fi
 	    ;;
 	  *)
@@ -17381,16 +16125,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    *Sun\ C*)
 	      # Sun C++ 5.9
 	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
 	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	      whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	      compiler_needs_object_CXX=yes
 
 	      # Not sure whether something based on
 	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
 	      # would be better.
-	      output_verbose_link_cmd='echo'
+	      output_verbose_link_cmd='func_echo_all'
 
 	      # Archives containing C++ object files must be created using
 	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -17442,24 +16186,19 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ld_shlibs_CXX=yes
 	;;
 
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
-
-      openbsd*)
+      openbsd* | bitrig*)
 	if test -f /usr/libexec/ld.so; then
 	  hardcode_direct_CXX=yes
 	  hardcode_shlibpath_var_CXX=no
 	  hardcode_direct_absolute_CXX=yes
 	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='$wl-E'
+	    whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
 	  fi
-	  output_verbose_link_cmd=echo
+	  output_verbose_link_cmd=func_echo_all
 	else
 	  ld_shlibs_CXX=no
 	fi
@@ -17473,9 +16212,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
 	    hardcode_libdir_separator_CXX=:
 
 	    # Archives containing C++ object files must be created using
@@ -17493,17 +16232,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
           cxx*)
 	    case $host in
 	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	        allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
 		;;
 	      *)
 	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
 	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
 		;;
 	    esac
@@ -17518,27 +16257,27 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
 	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
 	      case $host in
 	        osf3*)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	        *)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	      esac
 
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	      hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
 	      hardcode_libdir_separator_CXX=:
 
 	      # Commands to make compiler produce verbose output that lists
 	      # what "hidden" libraries, object files and flags are used when
 	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
 	    else
 	      # FIXME: insert proper C++ library support
@@ -17574,13 +16313,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
       solaris*)
         case $cc_basename in
-          CC*)
+          CC* | sunCC*)
 	    # Sun C++ 4.2, 5.x and Centerline C++
             archive_cmds_need_lc_CXX=yes
 	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	    hardcode_libdir_flag_spec_CXX='-R$libdir'
 	    hardcode_shlibpath_var_CXX=no
@@ -17588,14 +16327,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	      solaris2.[0-5] | solaris2.[0-5].*) ;;
 	      *)
 		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
+		# but understands '-z linker_flag'.
 	        # Supported since Solaris 2.6 (maybe 2.5.1?)
 		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
 	        ;;
 	    esac
 	    link_all_deplibs_CXX=yes
 
-	    output_verbose_link_cmd='echo'
+	    output_verbose_link_cmd='func_echo_all'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -17605,42 +16344,42 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	    ;;
           gcx*)
 	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 
 	    # The C++ compiler must be used to create the archive.
 	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
 	    ;;
           *)
 	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      no_undefined_flag_CXX=' $wl-z ${wl}defs'
 	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
 	        # platform.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      fi
 
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	      hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
 	      case $host_os in
 		solaris2.[0-5] | solaris2.[0-5].*) ;;
 		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 		  ;;
 	      esac
 	    fi
@@ -17649,48 +16388,52 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
+      no_undefined_flag_CXX='$wl-z,text'
       archive_cmds_need_lc_CXX=no
       hardcode_shlibpath_var_CXX=no
       runpath_var='LD_RUN_PATH'
 
       case $cc_basename in
         CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
       esac
       ;;
 
       sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
+	# Note: We CANNOT use -z defs as we might desire, because we do not
 	# link with -lc, and that would cause any symbols used from libc to
 	# always be unresolved, which means just about no library would
 	# ever link correctly.  If we're not using GNU ld we use -z text
 	# though, which does catch some bad symbols but isn't as heavy-handed
 	# as -z defs.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
+	no_undefined_flag_CXX='$wl-z,text'
+	allow_undefined_flag_CXX='$wl-z,nodefs'
 	archive_cmds_need_lc_CXX=no
 	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+	hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
 	hardcode_libdir_separator_CXX=':'
 	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
+	export_dynamic_flag_spec_CXX='$wl-Bexport'
 	runpath_var='LD_RUN_PATH'
 
 	case $cc_basename in
           CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+              '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+              '"$reload_cmds_CXX"
 	    ;;
 	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    ;;
 	esac
       ;;
@@ -17720,12 +16463,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         ;;
     esac
 
-    { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
 $as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
+    test no = "$ld_shlibs_CXX" && can_build_shared=no
 
-    GCC_CXX="$GXX"
-    LD_CXX="$LD"
+    GCC_CXX=$GXX
+    LD_CXX=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -17748,11 +16491,19 @@ private:
 };
 _LT_EOF
 
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   # Parse the compiler output and extract the necessary
   # objects, libraries and library flags.
 
@@ -17761,29 +16512,38 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
+    case $prev$p in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
        # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
 	 prev=$p
 	 continue
-       else
-	 prev=
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
 	   # Internal compiler library paths should come after those
 	   # provided the user.  The postdeps already come after the
 	   # user supplied libs so there is no need to process them.
 	   if test -z "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
+	     compiler_lib_search_path_CXX=$prev$p
 	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
 	   fi
 	   ;;
 	 # The "-l" case would never come before the object being
@@ -17791,13 +16551,15 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 	 esac
        else
 	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
+	   postdeps_CXX=$prev$p
 	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	   postdeps_CXX="${postdeps_CXX} $prev$p"
 	 fi
        fi
+       prev=
        ;;
 
+    *.lto.$objext) ;; # Ignore GCC LTO objects
     *.$objext)
        # This assumes that the test object file only shows up
        # once in the compiler output.
@@ -17806,15 +16568,15 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 	 continue
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
+       if test no = "$pre_test_object_deps_done"; then
 	 if test -z "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
+	   predep_objects_CXX=$p
 	 else
 	   predep_objects_CXX="$predep_objects_CXX $p"
 	 fi
        else
 	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
+	   postdep_objects_CXX=$p
 	 else
 	   postdep_objects_CXX="$postdep_objects_CXX $p"
 	 fi
@@ -17833,6 +16595,7 @@ else
 fi
 
 $RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
 # PORTME: override above test on systems where it is broken
 case $host_os in
@@ -17843,51 +16606,6 @@ interix[3-9]*)
   postdep_objects_CXX=
   postdeps_CXX=
   ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 esac
 
 
@@ -17896,7 +16614,7 @@ case " $postdeps_CXX " in
 esac
  compiler_lib_search_dirs_CXX=
 if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
 fi
 
 
@@ -17933,21 +16651,20 @@ fi
 lt_prog_compiler_pic_CXX=
 lt_prog_compiler_static_CXX=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
   # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
+  if test yes = "$GXX"; then
     lt_prog_compiler_wl_CXX='-Wl,'
     lt_prog_compiler_static_CXX='-static'
 
     case $host_os in
     aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static_CXX='-Bstatic'
       fi
+      lt_prog_compiler_pic_CXX='-fPIC'
       ;;
 
     amigaos*)
@@ -17958,8 +16675,8 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -17974,6 +16691,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       # Although the cygwin gcc ignores -fPIC, still need this for old-style
       # (--disable-auto-import) libraries
       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_CXX='$wl-static'
+	;;
+      esac
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -17984,6 +16706,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       # DJGPP does not support shared libraries at all
       lt_prog_compiler_pic_CXX=
       ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
     interix[3-9]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
@@ -18018,7 +16745,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
     case $host_os in
       aix[4-9]*)
 	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	  # AIX 5 now supports IA64 processor
 	  lt_prog_compiler_static_CXX='-Bstatic'
 	else
@@ -18033,6 +16760,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	  ;;
 	esac
 	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+	;;
       dgux*)
 	case $cc_basename in
 	  ec++*)
@@ -18053,14 +16785,14 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	case $cc_basename in
 	  CC*)
 	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
 	      lt_prog_compiler_pic_CXX='+Z'
 	    fi
 	    ;;
 	  aCC*)
 	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
 	    case $host_cpu in
 	    hppa*64*|ia64*)
 	      # +Z the default
@@ -18089,7 +16821,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -18097,7 +16829,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	    lt_prog_compiler_pic_CXX='-fPIC'
 	    ;;
 	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    # old Intel C++ for x86_64, which still supported -KPIC.
 	    lt_prog_compiler_wl_CXX='-Wl,'
 	    lt_prog_compiler_pic_CXX='-KPIC'
 	    lt_prog_compiler_static_CXX='-static'
@@ -18122,8 +16854,8 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	    lt_prog_compiler_pic_CXX=
 	    lt_prog_compiler_static_CXX='-non_shared'
 	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
 	    lt_prog_compiler_wl_CXX='-Wl,'
 	    lt_prog_compiler_pic_CXX='-qpic'
 	    lt_prog_compiler_static_CXX='-qstaticlink'
@@ -18185,7 +16917,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	;;
       solaris*)
 	case $cc_basename in
-	  CC*)
+	  CC* | sunCC*)
 	    # Sun C++ 4.2, 5.x and Centerline C++
 	    lt_prog_compiler_pic_CXX='-KPIC'
 	    lt_prog_compiler_static_CXX='-Bstatic'
@@ -18242,7 +16974,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
   fi
 
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic_CXX=
     ;;
@@ -18250,24 +16982,31 @@ case $host_os in
     lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
-
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
 
 #
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works_CXX=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -18277,15 +17016,15 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18280: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:18284: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_pic_works_CXX=yes
@@ -18294,10 +17033,10 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
 
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
     case $lt_prog_compiler_pic_CXX in
      "" | " "*) ;;
      *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
@@ -18311,17 +17050,19 @@ fi
 
 
 
+
+
 #
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -18330,7 +17071,7 @@ else
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          lt_cv_prog_compiler_static_works_CXX=yes
@@ -18340,13 +17081,13 @@ else
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
 
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
     :
 else
     lt_prog_compiler_static_CXX=
@@ -18355,9 +17096,9 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_CXX=no
@@ -18376,16 +17117,16 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18379: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:18383: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o_CXX=yes
@@ -18402,14 +17143,14 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_CXX=no
@@ -18428,16 +17169,16 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18431: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:18435: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o_CXX=yes
@@ -18454,16 +17195,16 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -18471,11 +17212,11 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
@@ -18484,35 +17225,49 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   case $host_os in
   aix[4-9]*)
     # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-  ;;
+    export_symbols_cmds_CXX=$ltdll_cmds
+    ;;
   cygwin* | mingw* | cegcc*)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    ;;
   esac
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
 $as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
+test no = "$ld_shlibs_CXX" && can_build_shared=no
 
 with_gnu_ld_CXX=$with_gnu_ld
 
@@ -18529,7 +17284,7 @@ x|xyes)
   # Assume -lc should be added
   archive_cmds_need_lc_CXX=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $archive_cmds_CXX in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -18538,46 +17293,52 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_CXX
-	pic_flag=$lt_prog_compiler_pic_CXX
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-        allow_undefined_flag_CXX=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_CXX=no
-        else
-	  archive_cmds_need_lc_CXX=yes
-        fi
-        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
-$as_echo "$archive_cmds_need_lc_CXX" >&6; }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
       ;;
     esac
   fi
@@ -18645,15 +17406,13 @@ esac
 
 
 
-
-
-    { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -18670,56 +17429,108 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[01] | aix4.[01].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -18729,27 +17540,27 @@ amigaos*)
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -18761,16 +17572,17 @@ bsdi[45]*)
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -18786,37 +17598,83 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
+        # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
       ;;
     esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -18826,8 +17684,8 @@ darwin* | rhapsody*)
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -18836,18 +17694,14 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -18855,25 +17709,26 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -18892,13 +17747,16 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
 
@@ -18915,14 +17773,15 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -18930,8 +17789,8 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -18940,20 +17799,22 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -18964,16 +17825,16 @@ irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -18992,36 +17853,57 @@ irix5* | irix6* | nonstopux*)
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
   hardcode_into_libs=yes
-  ;;
 
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec_CXX='-L$libdir'
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
   # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef FC_DUMMY_MAIN
@@ -19040,56 +17922,34 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
-  shlibpath_overrides_runpath=yes
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Add ABI-specific directories to the system library path.
-  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -19106,12 +17966,12 @@ netbsd*)
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -19120,8 +17980,8 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -19130,58 +17990,68 @@ newsos6)
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
   else
-    shlibpath_overrides_runpath=yes
+    need_version=yes
   fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -19189,11 +18059,11 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -19203,20 +18073,20 @@ solaris*)
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -19237,24 +18107,24 @@ sysv4 | sysv4.3*)
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -19269,19 +18139,19 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -19289,22 +18159,31 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
 
 
 
@@ -19340,20 +18219,25 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action_CXX=
 if test -n "$hardcode_libdir_flag_spec_CXX" ||
    test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+   test yes = "$hardcode_automatic_CXX"; then
 
   # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
+  if test no != "$hardcode_direct_CXX" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
+     test no != "$hardcode_minus_L_CXX"; then
     # Linking always hardcodes the temporary library directory.
     hardcode_action_CXX=relink
   else
@@ -19365,15 +18249,15 @@ else
   # directories.
   hardcode_action_CXX=unsupported
 fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
 $as_echo "$hardcode_action_CXX" >&6; }
 
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = yes; then
+if test relink = "$hardcode_action_CXX" ||
+   test yes = "$inherit_rpath_CXX"; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -19387,6 +18271,7 @@ fi
   fi # test -n "$compiler"
 
   CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
   LDCXX=$LD
   LD=$lt_save_LD
   GCC=$lt_save_GCC
@@ -19395,7 +18280,7 @@ fi
   lt_cv_path_LD=$lt_save_path_LD
   lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
   lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -19413,6 +18298,10 @@ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
 
+if test -z "$FC" || test no = "$FC"; then
+  _lt_disable_FC=yes
+fi
+
 archive_cmds_need_lc_FC=no
 allow_undefined_flag_FC=
 always_export_symbols_FC=no
@@ -19421,7 +18310,6 @@ export_dynamic_flag_spec_FC=
 hardcode_direct_FC=no
 hardcode_direct_absolute_FC=no
 hardcode_libdir_flag_spec_FC=
-hardcode_libdir_flag_spec_ld_FC=
 hardcode_libdir_separator_FC=
 hardcode_minus_L_FC=no
 hardcode_automatic_FC=no
@@ -19430,6 +18318,8 @@ module_cmds_FC=
 module_expsym_cmds_FC=
 link_all_deplibs_FC=unknown
 old_archive_cmds_FC=$old_archive_cmds
+reload_flag_FC=$reload_flag
+reload_cmds_FC=$reload_cmds
 no_undefined_flag_FC=
 whole_archive_flag_spec_FC=
 enable_shared_with_static_runtimes_FC=no
@@ -19445,7 +18335,7 @@ objext_FC=$objext
 # the FC compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
+if test yes != "$_lt_disable_FC"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -19491,62 +18381,61 @@ $RM -r conftest*
 
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
+  lt_save_CC=$CC
   lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
   compiler=$CC
   GCC=$ac_cv_fc_compiler_gnu
 
   compiler_FC=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
   if test -n "$compiler"; then
-    { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
 $as_echo "$can_build_shared" >&6; }
 
-    { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
+    test no = "$can_build_shared" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test "$enable_shared" = yes && enable_static=no
+        test yes = "$enable_shared" && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
 	fi
         ;;
     esac
-    { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
 $as_echo "$enable_shared" >&6; }
 
-    { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
     # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+    test yes = "$enable_shared" || enable_static=yes
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-    GCC_FC="$ac_cv_fc_compiler_gnu"
-    LD_FC="$LD"
+    GCC_FC=$ac_cv_fc_compiler_gnu
+    LD_FC=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -19568,11 +18457,19 @@ cat > conftest.$ac_ext <<_LT_EOF
       end
 _LT_EOF
 
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
   # Parse the compiler output and extract the necessary
   # objects, libraries and library flags.
 
@@ -19581,29 +18478,38 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
+    case $prev$p in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
        # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
 	 prev=$p
 	 continue
-       else
-	 prev=
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
 	   # Internal compiler library paths should come after those
 	   # provided the user.  The postdeps already come after the
 	   # user supplied libs so there is no need to process them.
 	   if test -z "$compiler_lib_search_path_FC"; then
-	     compiler_lib_search_path_FC="${prev}${p}"
+	     compiler_lib_search_path_FC=$prev$p
 	   else
-	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}"
+	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} $prev$p"
 	   fi
 	   ;;
 	 # The "-l" case would never come before the object being
@@ -19611,13 +18517,15 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 	 esac
        else
 	 if test -z "$postdeps_FC"; then
-	   postdeps_FC="${prev}${p}"
+	   postdeps_FC=$prev$p
 	 else
-	   postdeps_FC="${postdeps_FC} ${prev}${p}"
+	   postdeps_FC="${postdeps_FC} $prev$p"
 	 fi
        fi
+       prev=
        ;;
 
+    *.lto.$objext) ;; # Ignore GCC LTO objects
     *.$objext)
        # This assumes that the test object file only shows up
        # once in the compiler output.
@@ -19626,15 +18534,15 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 	 continue
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
+       if test no = "$pre_test_object_deps_done"; then
 	 if test -z "$predep_objects_FC"; then
-	   predep_objects_FC="$p"
+	   predep_objects_FC=$p
 	 else
 	   predep_objects_FC="$predep_objects_FC $p"
 	 fi
        else
 	 if test -z "$postdep_objects_FC"; then
-	   postdep_objects_FC="$p"
+	   postdep_objects_FC=$p
 	 else
 	   postdep_objects_FC="$postdep_objects_FC $p"
 	 fi
@@ -19653,6 +18561,7 @@ else
 fi
 
 $RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
 # PORTME: override above test on systems where it is broken
 
@@ -19662,7 +18571,7 @@ case " $postdeps_FC " in
 esac
  compiler_lib_search_dirs_FC=
 if test -n "${compiler_lib_search_path_FC}"; then
- compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | $SED -e 's! -L! !g' -e 's!^ !!'`
 fi
 
 
@@ -19681,20 +18590,19 @@ fi
 lt_prog_compiler_pic_FC=
 lt_prog_compiler_static_FC=
 
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
-  if test "$GCC" = yes; then
+  if test yes = "$GCC"; then
     lt_prog_compiler_wl_FC='-Wl,'
     lt_prog_compiler_static_FC='-static'
 
     case $host_os in
       aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static_FC='-Bstatic'
       fi
+      lt_prog_compiler_pic_FC='-fPIC'
       ;;
 
     amigaos*)
@@ -19705,8 +18613,8 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -19722,6 +18630,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       # Although the cygwin gcc ignores -fPIC, still need this for old-style
       # (--disable-auto-import) libraries
       lt_prog_compiler_pic_FC='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_FC='$wl-static'
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -19730,6 +18643,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_pic_FC='-fno-common'
       ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_FC=
+      ;;
+
     hpux*)
       # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
       # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
@@ -19772,12 +18691,21 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_pic_FC='-fPIC'
       ;;
     esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl_FC='-Xlinker '
+      if test -n "$lt_prog_compiler_pic_FC"; then
+        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
+      fi
+      ;;
+    esac
   else
     # PORTME Check for flag to pass linker flags through the system compiler.
     case $host_os in
     aix*)
       lt_prog_compiler_wl_FC='-Wl,'
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static_FC='-Bstatic'
       else
@@ -19785,10 +18713,29 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       fi
       ;;
 
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_FC='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        lt_prog_compiler_wl_FC='-Wl,-Wl,,'
+        lt_prog_compiler_pic_FC='-PIC'
+        lt_prog_compiler_static_FC='-Bstatic'
+        ;;
+      esac
+      ;;
+
     mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       lt_prog_compiler_pic_FC='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_FC='$wl-static'
+	;;
+      esac
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -19804,7 +18751,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	;;
       esac
       # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_FC='${wl}-a ${wl}archive'
+      lt_prog_compiler_static_FC='$wl-a ${wl}archive'
       ;;
 
     irix5* | irix6* | nonstopux*)
@@ -19813,9 +18760,9 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_static_FC='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
+      # old Intel for x86_64, which still supported -KPIC.
       ecc*)
 	lt_prog_compiler_wl_FC='-Wl,'
 	lt_prog_compiler_pic_FC='-KPIC'
@@ -19834,7 +18781,19 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	lt_prog_compiler_pic_FC='--shared'
 	lt_prog_compiler_static_FC='--static'
 	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl_FC='-Wl,-Wl,,'
+	lt_prog_compiler_pic_FC='-PIC'
+	lt_prog_compiler_static_FC='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	lt_prog_compiler_wl_FC='-Wl,'
+	lt_prog_compiler_pic_FC='-fPIC'
+	lt_prog_compiler_static_FC='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	lt_prog_compiler_wl_FC='-Wl,'
@@ -19846,25 +18805,40 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
         # All Alpha code is PIC.
         lt_prog_compiler_static_FC='-non_shared'
         ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
 	lt_prog_compiler_wl_FC='-Wl,'
 	lt_prog_compiler_pic_FC='-qpic'
 	lt_prog_compiler_static_FC='-qstaticlink'
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic_FC='-KPIC'
+	  lt_prog_compiler_static_FC='-Bstatic'
+	  lt_prog_compiler_wl_FC=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic_FC='-KPIC'
+	  lt_prog_compiler_static_FC='-Bstatic'
+	  lt_prog_compiler_wl_FC='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic_FC='-KPIC'
 	  lt_prog_compiler_static_FC='-Bstatic'
 	  lt_prog_compiler_wl_FC='-Wl,'
 	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_FC='-KPIC'
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl_FC='-Wl,'
+	  lt_prog_compiler_pic_FC='-fPIC'
+	  lt_prog_compiler_static_FC='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl_FC='-Wl,'
+	  lt_prog_compiler_pic_FC='-fpic'
 	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC=''
 	  ;;
 	esac
 	;;
@@ -19896,7 +18870,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_pic_FC='-KPIC'
       lt_prog_compiler_static_FC='-Bstatic'
       case $cc_basename in
-      f77* | f90* | f95*)
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
 	lt_prog_compiler_wl_FC='-Qoption ld ';;
       *)
 	lt_prog_compiler_wl_FC='-Wl,';;
@@ -19916,7 +18890,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       ;;
 
     sysv4*MP*)
-      if test -d /usr/nec ;then
+      if test -d /usr/nec; then
 	lt_prog_compiler_pic_FC='-Kconform_pic'
 	lt_prog_compiler_static_FC='-Bstatic'
       fi
@@ -19945,7 +18919,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
   fi
 
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic_FC=
     ;;
@@ -19953,24 +18927,31 @@ case $host_os in
     lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
     ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_FC" >&5
-$as_echo "$lt_prog_compiler_pic_FC" >&6; }
-
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5
+$as_echo "$lt_cv_prog_compiler_pic_FC" >&6; }
+lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC
 
 #
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works_FC+set}" = set; then
+if ${lt_cv_prog_compiler_pic_works_FC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works_FC=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC"
+   lt_compiler_flag="$lt_prog_compiler_pic_FC"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -19980,15 +18961,15 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:19983: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:19987: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_pic_works_FC=yes
@@ -19997,10 +18978,10 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
 
-if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works_FC"; then
     case $lt_prog_compiler_pic_FC in
      "" | " "*) ;;
      *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;;
@@ -20014,17 +18995,19 @@ fi
 
 
 
+
+
 #
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works_FC+set}" = set; then
+if ${lt_cv_prog_compiler_static_works_FC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works_FC=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -20033,7 +19016,7 @@ else
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          lt_cv_prog_compiler_static_works_FC=yes
@@ -20043,13 +19026,13 @@ else
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
 $as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
 
-if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works_FC"; then
     :
 else
     lt_prog_compiler_static_FC=
@@ -20058,9 +19041,9 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then
+if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_FC=no
@@ -20079,16 +19062,16 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:20082: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:20086: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o_FC=yes
@@ -20105,14 +19088,14 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
 
 
 
-    { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then
+if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o_FC=no
@@ -20131,16 +19114,16 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:20134: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:20138: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o_FC=yes
@@ -20157,16 +19140,16 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
 
 
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_FC" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
@@ -20174,11 +19157,11 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
@@ -20187,7 +19170,7 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
@@ -20203,7 +19186,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct_FC=no
   hardcode_direct_absolute_FC=no
   hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_flag_spec_ld_FC=
   hardcode_libdir_separator_FC=
   hardcode_minus_L_FC=no
   hardcode_shlibpath_var_FC=unsupported
@@ -20219,9 +19201,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   # included in the symbol list
   include_expsyms_FC=
   # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
   exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
@@ -20236,7 +19218,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
@@ -20244,30 +19226,57 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     # we just hope/assume this is gcc and not c89 (= MSVC++)
     with_gnu_ld=yes
     ;;
-  openbsd*)
+  openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
   esac
 
   ld_shlibs_FC=yes
-  if test "$with_gnu_ld" = yes; then
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
+    wlarc='$wl'
 
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_FC='${wl}--export-dynamic'
+    hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
+    export_dynamic_flag_spec_FC='$wl--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      whole_archive_flag_spec_FC=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     else
       whole_archive_flag_spec_FC=
     fi
     supports_anon_versioning=no
-    case `$LD -v 2>&1` in
+    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -20279,15 +19288,16 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     case $host_os in
     aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
+      if test ia64 != "$host_cpu"; then
 	ld_shlibs_FC=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, is reported
 *** to be unable to reliably create shared libraries on AIX.
 *** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
 _LT_EOF
       fi
@@ -20297,7 +19307,7 @@ _LT_EOF
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             archive_expsym_cmds_FC=''
         ;;
       m68k)
@@ -20313,7 +19323,7 @@ _LT_EOF
 	allow_undefined_flag_FC=unsupported
 	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
 	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       else
 	ld_shlibs_FC=no
       fi
@@ -20323,61 +19333,97 @@ _LT_EOF
       # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless,
       # as there is no search path for DLLs.
       hardcode_libdir_flag_spec_FC='-L$libdir'
+      export_dynamic_flag_spec_FC='$wl--export-all-symbols'
       allow_undefined_flag_FC=unsupported
       always_export_symbols_FC=no
       enable_shared_with_static_runtimes_FC=yes
-      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	archive_expsym_cmds_FC='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	ld_shlibs_FC=no
       fi
       ;;
 
+    haiku*)
+      archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      link_all_deplibs_FC=yes
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_FC='-L$libdir'
+      hardcode_minus_L_FC=yes
+      allow_undefined_flag_FC=unsupported
+      shrext_cmds=.dll
+      archive_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes_FC=yes
+      ;;
+
     interix[3-9]*)
       hardcode_direct_FC=no
       hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_FC='${wl}-E'
+      hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir'
+      export_dynamic_flag_spec_FC='$wl-E'
       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       # Instead, shared libraries are loaded at an image base (0x10000000 by
       # default) and relocated if they conflict, which is a slow very memory
       # consuming and fragmenting process.  To avoid this, we pick a random,
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_FC='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
+      if test linux-dietlibc = "$host_os"; then
 	case $cc_basename in
 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
 	esac
       fi
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
+	 && test no = "$tmp_diet"
       then
-	tmp_addflag=
+	tmp_addflag=' $pic_flag'
 	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
         pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -20388,39 +19434,47 @@ _LT_EOF
 	lf95*)				# Lahey Fortran 8.1
 	  whole_archive_flag_spec_FC=
 	  tmp_sharedflag='--shared' ;;
-	xl[cC]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
 	  tmp_sharedflag='-qmkshrobj'
 	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  compiler_needs_object_FC=yes
+	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec_FC='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  compiler_needs_object_FC=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
 	  tmp_sharedflag='-G' ;;
 	esac
-	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 
-        if test "x$supports_anon_versioning" = xyes; then
+        if test yes = "$supports_anon_versioning"; then
           archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
 	case $cc_basename in
-	xlf*)
+	tcc*)
+	  export_dynamic_flag_spec_FC='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC=
-	  hardcode_libdir_flag_spec_ld_FC='-rpath $libdir'
-	  archive_cmds_FC='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
+	  hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
+	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
 	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
 	  ;;
 	esac
@@ -20434,8 +19488,8 @@ _LT_EOF
 	archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -20453,8 +19507,8 @@ _LT_EOF
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs_FC=no
       fi
@@ -20466,7 +19520,7 @@ _LT_EOF
 	ld_shlibs_FC=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
 *** reliably create shared libraries on SCO systems.  Therefore, libtool
 *** is disabling shared libraries support.  We urge you to upgrade GNU
 *** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
@@ -20481,9 +19535,9 @@ _LT_EOF
 	  # DT_RUNPATH tag from executables and libraries.  But doing so
 	  # requires that you compile everything twice, which is a pain.
 	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	    hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
+	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	  else
 	    ld_shlibs_FC=no
 	  fi
@@ -20500,15 +19554,15 @@ _LT_EOF
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs_FC=no
       fi
       ;;
     esac
 
-    if test "$ld_shlibs_FC" = no; then
+    if test no = "$ld_shlibs_FC"; then
       runpath_var=
       hardcode_libdir_flag_spec_FC=
       export_dynamic_flag_spec_FC=
@@ -20524,7 +19578,7 @@ _LT_EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       hardcode_minus_L_FC=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	hardcode_direct_FC=unsupported
@@ -20532,32 +19586,57 @@ _LT_EOF
       ;;
 
     aix[4-9]*)
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# On IA64, the linker does run time linking by default, so we don't
 	# have to do anything special.
 	aix_use_runtimelinking=no
 	exp_sym_flag='-Bexport'
-	no_entry_flag=""
+	no_entry_flag=
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
 	else
-	  export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds_FC='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
 	fi
 	aix_use_runtimelinking=no
 
 	# Test if we are trying to use run time linking or normal
 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
 	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
 	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
 	    aix_use_runtimelinking=yes
 	    break
 	  fi
 	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
 	  ;;
 	esac
 
@@ -20576,13 +19655,21 @@ _LT_EOF
       hardcode_direct_absolute_FC=yes
       hardcode_libdir_separator_FC=':'
       link_all_deplibs_FC=yes
-      file_list_spec_FC='${wl}-f,'
+      file_list_spec_FC='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	hardcode_direct_FC=no
+	hardcode_direct_absolute_FC=no
+	;;
+      esac
 
-      if test "$GCC" = yes; then
+      if test yes = "$GCC"; then
 	case $host_os in aix4.[012]|aix4.[012].*)
 	# We only want to do this on AIX 4.2 and lower, the check
 	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -20601,156 +19688,152 @@ _LT_EOF
 	  ;;
 	esac
 	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
 	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
       else
 	# not using gcc
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
 	  else
-	    shared_flag='${wl}-bM:SRE'
+	    shared_flag='$wl-bM:SRE'
 	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
 	fi
       fi
 
-      export_dynamic_flag_spec_FC='${wl}-bexpall'
+      export_dynamic_flag_spec_FC='$wl-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       always_export_symbols_FC=yes
-      if test "$aix_use_runtimelinking" = yes; then
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
 	# Warning - without using the other runtime loading flags (-brtl),
 	# -berok will link without error, but may produce a broken library.
 	allow_undefined_flag_FC='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
+        if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_fc_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__FC"; then
+    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__FC"; then
+    lt_cv_aix_libpath__FC=/usr/lib:/lib
+  fi
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  aix_libpath=$lt_cv_aix_libpath__FC
+fi
 
-        hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
       else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib'
+	if test ia64 = "$host_cpu"; then
+	  hardcode_libdir_flag_spec_FC='$wl-R $libdir:/usr/lib:/lib'
 	  allow_undefined_flag_FC="-z nodefs"
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
+	 if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_fc_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__FC"; then
+    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__FC"; then
+    lt_cv_aix_libpath__FC=/usr/lib:/lib
+  fi
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  aix_libpath=$lt_cv_aix_libpath__FC
+fi
 
-	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
+	 hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_FC=' ${wl}-bernotok'
-	  allow_undefined_flag_FC=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec_FC='$convenience'
+	  no_undefined_flag_FC=' $wl-bernotok'
+	  allow_undefined_flag_FC=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec_FC='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec_FC='$convenience'
+	  fi
 	  archive_cmds_need_lc_FC=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  archive_expsym_cmds_FC='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbol [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$RM -r $output_objdir/$realname.d'
 	fi
       fi
       ;;
@@ -20759,7 +19842,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             archive_expsym_cmds_FC=''
         ;;
       m68k)
@@ -20779,20 +19862,65 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
-      hardcode_libdir_flag_spec_FC=' '
-      allow_undefined_flag_FC=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_from_new_cmds_FC='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path_FC='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes_FC=yes
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec_FC=' '
+	allow_undefined_flag_FC=unsupported
+	always_export_symbols_FC=yes
+	file_list_spec_FC='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	archive_expsym_cmds_FC='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
+	enable_shared_with_static_runtimes_FC=yes
+	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds_FC='chmod 644 $oldlib'
+	postlink_cmds_FC='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec_FC=' '
+	allow_undefined_flag_FC=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds_FC='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes_FC=yes
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -20802,19 +19930,24 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
   hardcode_direct_FC=no
   hardcode_automatic_FC=yes
   hardcode_shlibpath_var_FC=unsupported
-  whole_archive_flag_spec_FC=''
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    compiler_needs_object_FC=yes
+  else
+    whole_archive_flag_spec_FC=''
+  fi
   link_all_deplibs_FC=yes
-  allow_undefined_flag_FC="$_lt_dar_allow_undefined"
+  allow_undefined_flag_FC=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds_FC="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds_FC="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
 
   else
   ld_shlibs_FC=no
@@ -20828,10 +19961,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       hardcode_shlibpath_var_FC=no
       ;;
 
-    freebsd1*)
-      ld_shlibs_FC=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -20844,7 +19973,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct_FC=yes
       hardcode_minus_L_FC=yes
@@ -20853,41 +19982,40 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
     freebsd* | dragonfly*)
-      archive_cmds_FC='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec_FC='-R$libdir'
       hardcode_direct_FC=yes
       hardcode_shlibpath_var_FC=no
       ;;
 
     hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      if test yes = "$GCC"; then
+	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       else
-	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       fi
-      hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
+      hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir'
       hardcode_libdir_separator_FC=:
       hardcode_direct_FC=yes
 
       # hardcode_minus_L: Not really in the search PATH,
       # but as the default location of the library.
       hardcode_minus_L_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-E'
+      export_dynamic_flag_spec_FC='$wl-E'
       ;;
 
     hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds_FC='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld_FC='+b $libdir'
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir'
 	hardcode_libdir_separator_FC=:
 	hardcode_direct_FC=yes
 	hardcode_direct_absolute_FC=yes
-	export_dynamic_flag_spec_FC='${wl}-E'
+	export_dynamic_flag_spec_FC='$wl-E'
 	# hardcode_minus_L: Not really in the search PATH,
 	# but as the default location of the library.
 	hardcode_minus_L_FC=yes
@@ -20895,33 +20023,33 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+      if test yes,no = "$GCC,$with_gnu_ld"; then
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_FC='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds_FC='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds_FC='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_FC='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_FC='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds_FC='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir'
 	hardcode_libdir_separator_FC=:
 
 	case $host_cpu in
@@ -20932,7 +20060,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	*)
 	  hardcode_direct_FC=yes
 	  hardcode_direct_absolute_FC=yes
-	  export_dynamic_flag_spec_FC='${wl}-E'
+	  export_dynamic_flag_spec_FC='$wl-E'
 
 	  # hardcode_minus_L: Not really in the search PATH,
 	  # but as the default location of the library.
@@ -20943,61 +20071,59 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	# Try to use the -exported_symbol ld option, if it does not
 	# work, assume that -exports_file does not work either and
 	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
-int foo(void) {}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+  save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   cat > conftest.$ac_ext <<_ACEOF
 
+      subroutine foo
+      end
+_ACEOF
+if ac_fn_fc_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS=$save_LDFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
       else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
       fi
       archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
       hardcode_libdir_separator_FC=:
       inherit_rpath_FC=yes
       link_all_deplibs_FC=yes
       ;;
 
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	ld_shlibs_FC=yes
+	archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
     netbsd*)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
@@ -21012,7 +20138,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     newsos6)
       archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct_FC=yes
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
       hardcode_libdir_separator_FC=:
       hardcode_shlibpath_var_FC=no
       ;;
@@ -21020,27 +20146,19 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     *nto* | *qnx*)
       ;;
 
-    openbsd*)
+    openbsd* | bitrig*)
       if test -f /usr/libexec/ld.so; then
 	hardcode_direct_FC=yes
 	hardcode_shlibpath_var_FC=no
 	hardcode_direct_absolute_FC=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
 	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_FC='${wl}-E'
+	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir'
+	  export_dynamic_flag_spec_FC='$wl-E'
 	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_FC='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	     ;;
-	  esac
+	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir'
 	fi
       else
 	ld_shlibs_FC=no
@@ -21051,33 +20169,53 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       hardcode_libdir_flag_spec_FC='-L$libdir'
       hardcode_minus_L_FC=yes
       allow_undefined_flag_FC=unsupported
-      archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      shrext_cmds=.dll
+      archive_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes_FC=yes
       ;;
 
     osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*'
+	archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
       else
 	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
       fi
       archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
       hardcode_libdir_separator_FC=:
       ;;
 
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
+      if test yes = "$GCC"; then
+	allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*'
+	archive_cmds_FC='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir'
       else
 	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	hardcode_libdir_flag_spec_FC='-rpath $libdir'
@@ -21088,24 +20226,24 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 
     solaris*)
       no_undefined_flag_FC=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_FC='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	archive_cmds_FC='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
 	case `$CC -V 2>&1` in
 	*"Compilers 5.0"*)
 	  wlarc=''
-	  archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_cmds_FC='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
 	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
 	  ;;
 	*)
-	  wlarc='${wl}'
-	  archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  wlarc='$wl'
+	  archive_cmds_FC='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
 	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
 	  ;;
 	esac
       fi
@@ -21115,11 +20253,11 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       solaris2.[0-5] | solaris2.[0-5].*) ;;
       *)
 	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
 	# but is careful enough not to reorder.
 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	if test yes = "$GCC"; then
+	  whole_archive_flag_spec_FC='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 	else
 	  whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract'
 	fi
@@ -21129,10 +20267,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       ;;
 
     sunos4*)
-      if test "x$host_vendor" = xsequent; then
+      if test sequent = "$host_vendor"; then
 	# Use $CC to link under sequent, because it throws in some extra .o
 	# files that make .init and .fini sections work.
-	archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds_FC='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -21181,43 +20319,43 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_FC='${wl}-z,text'
+      no_undefined_flag_FC='$wl-z,text'
       archive_cmds_need_lc_FC=no
       hardcode_shlibpath_var_FC=no
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_FC='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
     sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
+      # Note: We CANNOT use -z defs as we might desire, because we do not
       # link with -lc, and that would cause any symbols used from libc to
       # always be unresolved, which means just about no library would
       # ever link correctly.  If we're not using GNU ld we use -z text
       # though, which does catch some bad symbols but isn't as heavy-handed
       # as -z defs.
-      no_undefined_flag_FC='${wl}-z,text'
-      allow_undefined_flag_FC='${wl}-z,nodefs'
+      no_undefined_flag_FC='$wl-z,text'
+      allow_undefined_flag_FC='$wl-z,nodefs'
       archive_cmds_need_lc_FC=no
       hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-R,$libdir'
+      hardcode_libdir_flag_spec_FC='$wl-R,$libdir'
       hardcode_libdir_separator_FC=':'
       link_all_deplibs_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-Bexport'
+      export_dynamic_flag_spec_FC='$wl-Bexport'
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_FC='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -21232,18 +20370,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       ;;
     esac
 
-    if test x$host_vendor = xsni; then
+    if test sni = "$host_vendor"; then
       case $host in
       sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_FC='${wl}-Blargedynsym'
+	export_dynamic_flag_spec_FC='$wl-Blargedynsym'
 	;;
       esac
     fi
   fi
 
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_FC" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
 $as_echo "$ld_shlibs_FC" >&6; }
-test "$ld_shlibs_FC" = no && can_build_shared=no
+test no = "$ld_shlibs_FC" && can_build_shared=no
 
 with_gnu_ld_FC=$with_gnu_ld
 
@@ -21260,7 +20398,7 @@ x|xyes)
   # Assume -lc should be added
   archive_cmds_need_lc_FC=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $archive_cmds_FC in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -21269,46 +20407,52 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+if ${lt_cv_archive_cmds_need_lc_FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_FC
-	pic_flag=$lt_prog_compiler_pic_FC
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_FC
-        allow_undefined_flag_FC=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_FC
+	  pic_flag=$lt_prog_compiler_pic_FC
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_FC
+	  allow_undefined_flag_FC=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_FC=no
-        else
-	  archive_cmds_need_lc_FC=yes
-        fi
-        allow_undefined_flag_FC=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_FC" >&5
-$as_echo "$archive_cmds_need_lc_FC" >&6; }
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_FC=no
+	  else
+	    lt_cv_archive_cmds_need_lc_FC=yes
+	  fi
+	  allow_undefined_flag_FC=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
+      archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC
       ;;
     esac
   fi
@@ -21376,15 +20520,13 @@ esac
 
 
 
-
-
-    { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -21401,56 +20543,108 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[01] | aix4.[01].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -21460,27 +20654,27 @@ amigaos*)
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -21492,16 +20686,17 @@ bsdi[45]*)
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -21517,37 +20712,83 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
+        # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
       else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
       ;;
     esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -21557,8 +20798,8 @@ darwin* | rhapsody*)
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -21567,18 +20808,14 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -21586,25 +20823,26 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -21623,13 +20861,16 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
 
@@ -21646,14 +20887,15 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -21661,8 +20903,8 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -21671,20 +20913,22 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -21695,16 +20939,16 @@ irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -21723,8 +20967,8 @@ irix5* | irix6* | nonstopux*)
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
   hardcode_into_libs=yes
   ;;
 
@@ -21733,76 +20977,79 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec_FC='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
   # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
-       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-  cat >conftest.$ac_ext <<_ACEOF
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
+    cat > conftest.$ac_ext <<_ACEOF
       program main
 
       end
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
-  shlibpath_overrides_runpath=yes
+if ac_fn_fc_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
 fi
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
 
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Add ABI-specific directories to the system library path.
-  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -21819,12 +21066,12 @@ netbsd*)
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -21833,8 +21080,8 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -21843,58 +21090,68 @@ newsos6)
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
   else
-    shlibpath_overrides_runpath=yes
+    need_version=yes
   fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -21902,11 +21159,11 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -21916,20 +21173,20 @@ solaris*)
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -21950,24 +21207,24 @@ sysv4 | sysv4.3*)
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -21982,19 +21239,19 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -22002,23 +21259,31 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
 
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
 
 
 
@@ -22053,20 +21318,26 @@ fi
 
 
 
-    { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action_FC=
 if test -n "$hardcode_libdir_flag_spec_FC" ||
    test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
+   test yes = "$hardcode_automatic_FC"; then
 
   # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
+  if test no != "$hardcode_direct_FC" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" &&
+     test no != "$hardcode_minus_L_FC"; then
     # Linking always hardcodes the temporary library directory.
     hardcode_action_FC=relink
   else
@@ -22074,79 +21345,363 @@ if test -n "$hardcode_libdir_flag_spec_FC" ||
     hardcode_action_FC=immediate
   fi
 else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_FC=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
+$as_echo "$hardcode_action_FC" >&6; }
+
+if test relink = "$hardcode_action_FC" ||
+   test yes = "$inherit_rpath_FC"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_FC"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+#LT_INIT([disable-shared])
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5
+$as_echo_n "checking for library containing nanosleep... " >&6; }
+if ${ac_cv_search_nanosleep+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nanosleep ();
+#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 ()
+{
+return nanosleep ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_nanosleep=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_nanosleep+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_nanosleep+:} false; then :
+
+else
+  ac_cv_search_nanosleep=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5
+$as_echo "$ac_cv_search_nanosleep" >&6; }
+ac_res=$ac_cv_search_nanosleep
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if ${ac_cv_search_clock_gettime+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+#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 ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_clock_gettime=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_clock_gettime+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_clock_gettime+:} false; then :
+
+else
+  ac_cv_search_clock_gettime=no
 fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
 fi
 
+for ac_func in nanosleep gettimeofday clock_gettime clock_get_time strncpy strerror
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
 
 
+{ $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 :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define x(y) #y
 
+char *s = x(teststring);
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "#teststring" >/dev/null 2>&1; then :
+  ac_cv_c_stringize=no
+else
+  ac_cv_c_stringize=yes
+fi
+rm -f conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5
+$as_echo "$ac_cv_c_stringize" >&6; }
+if test $ac_cv_c_stringize = yes; then
 
+$as_echo "#define HAVE_STRINGIZE 1" >>confdefs.h
 
-  fi # test -n "$compiler"
+fi
 
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strtold conforms to C99" >&5
+$as_echo_n "checking whether strtold conforms to C99... " >&6; }
+if ${ac_cv_func_strtold+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* On HP-UX before 11.23, strtold returns a struct instead of
+		long double.  Reject implementations like that, by requiring
+		compatibility with the C99 prototype.  */
+#	     include <stdlib.h>
+	     static long double (*p) (char const *, char **) = strtold;
+	     static long double
+	     test (char const *nptr, char **endptr)
+	     {
+	       long double r;
+	       r = strtold (nptr, endptr);
+	       return r;
+	     }
+#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 ()
+{
+return test ("1.0", NULL) != 1 || p ("1.0", NULL) != 1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_func_strtold=yes
+else
+  ac_cv_func_strtold=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtold" >&5
+$as_echo "$ac_cv_func_strtold" >&6; }
+  if test $ac_cv_func_strtold = yes; then
 
+$as_echo "#define HAVE_STRTOLD 1" >>confdefs.h
 
+  fi
 
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
 
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
 
-        ac_config_commands="$ac_config_commands libtool"
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
 
 
+for ac_func in strdup
+do :
+  ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRDUP 1
+_ACEOF
 
+fi
+done
 
-# Only expand once:
+for ac_func in snprintf vsnprintf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
 
+fi
+done
 
-#LT_INIT([disable-shared])
 
-{ $as_echo "$as_me:$LINENO: checking for library containing nanosleep" >&5
-$as_echo_n "checking for library containing nanosleep... " >&6; }
-if test "${ac_cv_search_nanosleep+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_c_long_long+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if test "$GCC" = yes; then
+        ac_cv_c_long_long=yes
+    else
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nanosleep ();
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -22158,67 +21713,25 @@ char nanosleep ();
 int
 main ()
 {
-return nanosleep ();
+long long int i;
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' rt; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_search_nanosleep=$ac_res
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_nanosleep+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_nanosleep+set}" = set; then
-  :
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_long_long=yes
 else
-  ac_cv_search_nanosleep=no
+  ac_cv_c_long_long=no
 fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_nanosleep" >&5
-$as_echo "$ac_cv_search_nanosleep" >&6; }
-ac_res=$ac_cv_search_nanosleep
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_long_long" >&5
+$as_echo "$ac_cv_c_long_long" >&6; }
+
+if test $ac_cv_c_long_long = yes; then
+
+$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
 
 fi
 
@@ -22226,36 +21739,14 @@ fi
 
 
 
-for ac_func in nanosleep strncpy strerror gettimeofday
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ceil" >&5
+$as_echo_n "checking for library containing ceil... " >&6; }
+if ${ac_cv_search_ceil+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
@@ -22263,14 +21754,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 #ifdef __cplusplus
 extern "C"
 #endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
+char ceil ();
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
 #  ifdef __cplusplus
@@ -22282,61 +21766,46 @@ choke me
 int
 main ()
 {
-return $ac_func ();
+return ceil ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
+for ac_lib in '' m; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_ceil=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_ceil+:} false; then :
+  break
 fi
+done
+if ${ac_cv_search_ceil+:} false; then :
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+else
+  ac_cv_search_ceil=no
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ceil" >&5
+$as_echo "$ac_cv_search_ceil" >&6; }
+ac_res=$ac_cv_search_ceil
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
-done
 
 
 # Check whether --enable-write was given.
-if test "${enable_write+set}" = set; then
+if test "${enable_write+set}" = set; then :
   enableval=$enable_write;
 fi
 
@@ -22372,13 +21841,9 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        { $as_echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -22404,39 +21869,12 @@ return pthread_join ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   acx_pthread_ok=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-        { $as_echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5
 $as_echo "$acx_pthread_ok" >&6; }
         if test x"$acx_pthread_ok" = xno; then
                 PTHREAD_LIBS=""
@@ -22496,18 +21934,18 @@ for flag in $acx_pthread_flags; do
 
         case $flag in
                 none)
-                { $as_echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
 $as_echo_n "checking whether pthreads work without any flags... " >&6; }
                 ;;
 
                 -*)
-                { $as_echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
 $as_echo_n "checking whether pthreads work with $flag... " >&6; }
                 PTHREAD_CFLAGS="$flag"
                 ;;
 
                 *)
-                { $as_echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
 $as_echo_n "checking for the pthreads library -l$flag... " >&6; }
                 PTHREAD_LIBS="-l$flag"
                 ;;
@@ -22527,11 +21965,7 @@ $as_echo_n "checking for the pthreads library -l$flag... " >&6; }
         # pthread_cleanup_push because it is one of the few pthread
         # functions on Solaris that doesn't have a non-functional libc stub.
         # We try pthread_create on general principles.
-	                                	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	                                	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 		     void *start(void *arg){return NULL;}
@@ -22559,44 +21993,17 @@ pthread_attr_t attr;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   acx_pthread_ok=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
 
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        { $as_echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5
 $as_echo "$acx_pthread_ok" >&6; }
         if test "x$acx_pthread_ok" = xyes; then
                 break;
@@ -22616,13 +22023,9 @@ if test "x$acx_pthread_ok" = xyes; then
 
         # Detect AIX lossage: threads are created detached by default
         # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
-        { $as_echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
 $as_echo_n "checking for joinable pthread attribute... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 #ifdef FC_DUMMY_MAIN
@@ -22641,44 +22044,15 @@ int attr; attr=PTHREAD_CREATE_JOINABLE;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ok=PTHREAD_CREATE_JOINABLE
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ok=unknown
+else
+  ok=unknown
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         if test x"$ok" = xunknown; then
-                cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 #ifdef FC_DUMMY_MAIN
@@ -22697,61 +22071,34 @@ int attr; attr=PTHREAD_CREATE_UNDETACHED;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ok=PTHREAD_CREATE_UNDETACHED
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ok=unknown
+  ok=unknown
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         fi
         if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
 
-cat >>confdefs.h <<\_ACEOF
-#define PTHREAD_CREATE_JOINABLE $ok
-_ACEOF
+$as_echo "#define PTHREAD_CREATE_JOINABLE \$ok" >>confdefs.h
 
         fi
-        { $as_echo "$as_me:$LINENO: result: ${ok}" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ok}" >&5
 $as_echo "${ok}" >&6; }
         if test x"$ok" = xunknown; then
-                { $as_echo "$as_me:$LINENO: WARNING: we do not know how to create joinable pthreads" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: we do not know how to create joinable pthreads" >&5
 $as_echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;}
         fi
 
-        { $as_echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
 $as_echo_n "checking if more special flags are required for pthreads... " >&6; }
         flag=no
         case "${host_cpu}-${host_os}" in
                 *-aix* | *-freebsd*)     flag="-D_THREAD_SAFE";;
                 *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
         esac
-        { $as_echo "$as_me:$LINENO: result: ${flag}" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
 $as_echo "${flag}" >&6; }
         if test "x$flag" != xno; then
                 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
@@ -22763,9 +22110,9 @@ $as_echo "${flag}" >&6; }
         # More AIX lossage: must compile with cc_r
         # Extract the first word of "cc_r", so it can be a program name with args.
 set dummy cc_r; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$PTHREAD_CC"; then
@@ -22776,14 +22123,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_PTHREAD_CC="cc_r"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}"
@@ -22791,10 +22138,10 @@ fi
 fi
 PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
 if test -n "$PTHREAD_CC"; then
-  { $as_echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
 $as_echo "$PTHREAD_CC" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -22809,18 +22156,14 @@ fi
 
 if test x"$acx_pthread_ok" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PTHREAD 1
-_ACEOF
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
 fi
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
 if test x"$acx_pthread_ok" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PTHREAD 1
-_ACEOF
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
         :
 else
@@ -22848,8 +22191,10 @@ ac_with_mxml=no
 
 
 # Check whether --with-mxml was given.
-if test "${with_mxml+set}" = set; then
+if test "${with_mxml+set}" = set; then :
   withval=$with_mxml; :
+else
+  with_mxml=no
 fi
 
 
@@ -22897,7 +22242,7 @@ if test "x$ac_with_mxml" == "xyes"; then
 
 
 # Check whether --with-mxml-libs was given.
-if test "${with_mxml_libs+set}" = set; then
+if test "${with_mxml_libs+set}" = set; then :
   withval=$with_mxml_libs; MXML_LIBS=$withval
 fi
 
@@ -22912,149 +22257,15 @@ fi
     if test -z "$MXML_LIBS"; then
         MXML_LIBS="-lmxml"
     fi
-    LIBS="$LIBS ${MXML_LIBS}"
-
-
-
-for ac_header in mxml.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    LIBS="${MXML_LIBS} ${LIBS}"
 
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
 
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+    for ac_header in mxml.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "mxml.h" "ac_cv_header_mxml_h" "$ac_includes_default"
+if test "x$ac_cv_header_mxml_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_MXML_H 1
 _ACEOF
 
 else
@@ -23072,13 +22283,9 @@ done
 
 
     if test -z "${HAVE_MXML_TRUE}"; then
-                { $as_echo "$as_me:$LINENO: checking if mxml code can be linked" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if mxml code can be linked" >&5
 $as_echo_n "checking if mxml code can be linked... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "mxml.h"
 #ifdef FC_DUMMY_MAIN
@@ -23104,36 +22311,116 @@ mxml_node_t * n;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   MXML_LIBS="-lmxml"
-         { $as_echo "$as_me:$LINENO: result: yes" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+   if false; then
+  HAVE_MXML_TRUE=
+  HAVE_MXML_FALSE='#'
+else
+  HAVE_MXML_TRUE='#'
+  HAVE_MXML_FALSE=
+fi
 
-	 if false; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+                        if test -z "${HAVE_MXML_FALSE}"; then
+
+            LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
+            LIBS="${MXML_LIBS} ${PTHREAD_LIBS} ${save_LIBS}"
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if mxml code can be linked using pthreads" >&5
+$as_echo_n "checking if mxml code can be linked using pthreads... " >&6; }
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "mxml.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 ()
+{
+mxml_node_t * n;
+             char *buffer;
+             char *value;
+             n = mxmlLoadString (0, buffer, MXML_TEXT_CALLBACK);
+             mxmlWalkNext (n, n, MXML_DESCEND);
+             value = mxmlElementGetAttr (n, "value");
+             mxmlRelease (n);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  MXML_LDFLAGS="$MXML_LDFLAGS $PTHREAD_LDFLAGS"
+             MXML_LIBS="-lmxml $PTHREAD_LIBS"
+              if true; then
+  HAVE_MXML_TRUE=
+  HAVE_MXML_FALSE='#'
+else
+  HAVE_MXML_TRUE='#'
+  HAVE_MXML_FALSE=
+fi
+
+             { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+   if false; then
+  HAVE_MXML_TRUE=
+  HAVE_MXML_FALSE='#'
+else
+  HAVE_MXML_TRUE='#'
+  HAVE_MXML_FALSE=
+fi
+
+             { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        fi
+    fi
+
+
+    LIBS="$save_LIBS"
+    LDFLAGS="$save_LDFLAGS"
+    CPPFLAGS="$save_CPPFLAGS"
+
+
+
+
+
+        if test -z "${HAVE_MXML_TRUE}"; then
+
+$as_echo "#define HAVE_MXML 1" >>confdefs.h
+
+        :
+    else
+
+        :
+    fi
+
+fi
+
+if test -z "${HAVE_MXML_FALSE}" -a -z "${BUILD_WRITE_TRUE}"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: External MXML library not provided. Build the included MXML source" >&5
+$as_echo "$as_me: External MXML library not provided. Build the included MXML source" >&6;}
+     if true; then
   HAVE_MXML_TRUE=
   HAVE_MXML_FALSE='#'
 else
@@ -23141,136 +22428,304 @@ else
   HAVE_MXML_FALSE=
 fi
 
-         { $as_echo "$as_me:$LINENO: result: no" >&5
+     if true; then
+  BUILD_MXML_TRUE=
+  BUILD_MXML_FALSE='#'
+else
+  BUILD_MXML_TRUE='#'
+  BUILD_MXML_FALSE=
+fi
+
+    MXML_CPPFLAGS="${CPPFLAGS} -I\$(top_srcdir)/src/mxml/mxml-2.9"
+    MXML_BUILD_LDFLAGS=
+    MXML_LDFLAGS=
+    MXML_LIBS=
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define MXML_VERSION Mini-XML v2.9
+_ACEOF
+
+                else
+     if false; then
+  BUILD_MXML_TRUE=
+  BUILD_MXML_FALSE='#'
+else
+  BUILD_MXML_TRUE='#'
+  BUILD_MXML_FALSE=
+fi
+
+fi
+
+
+# Make sure we find Python2
+
+
+
+
+
+
+
+        if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.0" >&5
+$as_echo_n "checking whether $PYTHON version is >= 2.0... " >&6; }
+      prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.0'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+   ($PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
+fi
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.0" >&5
+$as_echo_n "checking for a Python interpreter with version >= 2.0... " >&6; }
+if ${am_cv_pathless_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+	  test "$am_cv_pathless_PYTHON" = none && break
+	  prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.0'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
+   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  break
+fi
+	done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+$as_echo "$am_cv_pathless_PYTHON" >&6; }
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+	PYTHON=:
+      else
+        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+set dummy $am_cv_pathless_PYTHON; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
+fi
+
 
-fi
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 
-                        if test -z "${HAVE_MXML_FALSE}"; then
+  if test "$PYTHON" = :; then
+      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
+  else
 
-            LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
-            LIBS="$LIBS $PTHREAD_LIBS"
-            { $as_echo "$as_me:$LINENO: checking if mxml code can be linked using pthreads" >&5
-$as_echo_n "checking if mxml code can be linked using pthreads... " >&6; }
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include "mxml.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 ()
-{
-mxml_node_t * n;
-             char *buffer;
-             char *value;
-             n = mxmlLoadString (0, buffer, MXML_TEXT_CALLBACK);
-             mxmlWalkNext (n, n, MXML_DESCEND);
-             value = mxmlElementGetAttr (n, "value");
-             mxmlRelease (n);
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  MXML_LDFLAGS="$MXML_LDFLAGS $PTHREAD_LDFLAGS"
-             MXML_LIBS="-lmxml $PTHREAD_LIBS"
-              if true; then
-  HAVE_MXML_TRUE=
-  HAVE_MXML_FALSE='#'
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
+if ${am_cv_python_version+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  HAVE_MXML_TRUE='#'
-  HAVE_MXML_FALSE=
+  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+$as_echo "$am_cv_python_version" >&6; }
+  PYTHON_VERSION=$am_cv_python_version
 
-             { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
 
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-	 if false; then
-  HAVE_MXML_TRUE=
-  HAVE_MXML_FALSE='#'
+  PYTHON_PREFIX='${prefix}'
+
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
+if ${am_cv_python_platform+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  HAVE_MXML_TRUE='#'
-  HAVE_MXML_FALSE=
+  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+$as_echo "$am_cv_python_platform" >&6; }
+  PYTHON_PLATFORM=$am_cv_python_platform
+
+
+  # Just factor out some code duplication.
+  am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x.  See automake bug#10227.
+try:
+    import sysconfig
+except ImportError:
+    can_use_sysconfig = 0
+else:
+    can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+    from platform import python_implementation
+    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
+        can_use_sysconfig = 0
+except ImportError:
+    pass"
+
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
+if ${am_cv_python_pythondir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	  ;;
+       esac
+       ;;
+     esac
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+$as_echo "$am_cv_python_pythondir" >&6; }
+  pythondir=$am_cv_python_pythondir
 
-             { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
 
-fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-        fi
-    fi
+  pkgpythondir=\${pythondir}/$PACKAGE
 
 
-    LIBS="$save_LIBS"
-    LDFLAGS="$save_LDFLAGS"
-    CPPFLAGS="$save_CPPFLAGS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
+if ${am_cv_python_pyexecdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	   ;;
+       esac
+       ;;
+     esac
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+$as_echo "$am_cv_python_pyexecdir" >&6; }
+  pyexecdir=$am_cv_python_pyexecdir
 
 
 
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
 
-        if test -z "${HAVE_MXML_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MXML 1
-_ACEOF
 
-        :
-    else
+  fi
 
-        :
-    fi
 
-fi
+PYTHON_EXECUTABLE=${PYTHON}
 
-if test -z "${HAVE_MXML_FALSE}" -a -z "${BUILD_WRITE_TRUE}"; then
-    { { $as_echo "$as_me:$LINENO: error: The ADIOS libraries for writing cannot be built without the MXML library. Either specify where the MXML library is found, or use --disable-write to build ADIOS for reading only." >&5
-$as_echo "$as_me: error: The ADIOS libraries for writing cannot be built without the MXML library. Either specify where the MXML library is found, or use --disable-write to build ADIOS for reading only." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
 
 
 ac_pami_lib_ok=no
@@ -23280,7 +22735,7 @@ PAMI_CPPFLAGS=""
 PAMI_LDFLAGS=""
 PAMI_LIBS=""
 
-{ $as_echo "$as_me:$LINENO: === checking for IBM PAMI ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for IBM PAMI ===" >&5
 $as_echo "$as_me: === checking for IBM PAMI ===" >&6;}
 
  if true; then
@@ -23294,7 +22749,7 @@ fi
 
 
 # Check whether --with-pami was given.
-if test "${with_pami+set}" = set; then
+if test "${with_pami+set}" = set; then :
   withval=$with_pami;  PAMI_CPPFLAGS="-I/bgsys/drivers/ppcfloor/comm/sys/include";
               PAMI_LDFLAGS="";
 	      PAMI_LIBS="-lpthread";
@@ -23309,146 +22764,12 @@ LDFLAGS="$LDFLAGS $PAMI_LDFLAGS"
 LIBS="$LIBS $PAMI_LIBS"
 
 if test -z "${HAVE_PAMI_TRUE}"; then
-
-for ac_header in pami.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+	  for ac_header in pami.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pami.h" "ac_cv_header_pami_h" "$ac_includes_default"
+if test "x$ac_cv_header_pami_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_PAMI_H 1
 _ACEOF
 
 else
@@ -23467,13 +22788,9 @@ done
 fi
 
 if test -z "${HAVE_PAMI_TRUE}"; then
-	{ $as_echo "$as_me:$LINENO: checking if pami code can be linked" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if pami code can be linked" >&5
 $as_echo_n "checking if pami code can be linked... " >&6; }
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "pami.h"
 #ifdef FC_DUMMY_MAIN
@@ -23495,35 +22812,12 @@ pami_context_t context;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   PAMI_LIBS="-lpthread"
-		 { $as_echo "$as_me:$LINENO: result: yes" >&5
+		 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_PAMI_TRUE=
   HAVE_PAMI_FALSE='#'
 else
@@ -23531,13 +22825,11 @@ else
   HAVE_PAMI_FALSE=
 fi
 
-		 { $as_echo "$as_me:$LINENO: result: no" >&5
+		 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
 
 LIBS="$save_LIBS"
@@ -23552,9 +22844,7 @@ CPPFLAGS="$save_CPPFLAGS"
 if test -z "${HAVE_PAMI_TRUE}"; then
 	ac_pami_lib_ok=yes
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PAMI 1
-_ACEOF
+$as_echo "#define HAVE_PAMI 1" >>confdefs.h
 
 	:
 else
@@ -23570,7 +22860,7 @@ DCMF_CPPFLAGS=""
 DCMF_LDFLAGS=""
 DCMF_LIBS=""
 
-{ $as_echo "$as_me:$LINENO: === checking for IBM DCMF ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for IBM DCMF ===" >&5
 $as_echo "$as_me: === checking for IBM DCMF ===" >&6;}
 
  if true; then
@@ -23584,161 +22874,27 @@ fi
 
 
 # Check whether --with-dcmf was given.
-if test "${with_dcmf+set}" = set; then
+if test "${with_dcmf+set}" = set; then :
   withval=$with_dcmf;  DCMF_CPPFLAGS="-I$withval/arch/include -I$withval/comm/include";
               DCMF_LDFLAGS="-L$withval/comm/lib -L$withval/runtime/SPI";
 	      DCMF_LIBS="-ldcmf.cnk -ldcmfcoll.cnk -lpthread -lrt -lSPI.cna";
 fi
-
-
-save_CPPFLAGS="$CPPFLAGS"
-save_LDFLAGS="$LDFLAGS"
-save_LIBS="$LIBS"
-CPPFLAGS="$CPPFLAGS $DCMF_CPPFLAGS"
-LDFLAGS="$LDFLAGS $DCMF_LDFLAGS"
-LIBS="$LIBS $DCMF_LIBS"
-
-if test -z "${HAVE_DCMF_TRUE}"; then
-
-for ac_header in dcmf.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+
+
+save_CPPFLAGS="$CPPFLAGS"
+save_LDFLAGS="$LDFLAGS"
+save_LIBS="$LIBS"
+CPPFLAGS="$CPPFLAGS $DCMF_CPPFLAGS"
+LDFLAGS="$LDFLAGS $DCMF_LDFLAGS"
+LIBS="$LIBS $DCMF_LIBS"
+
+if test -z "${HAVE_DCMF_TRUE}"; then
+	  for ac_header in dcmf.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "dcmf.h" "ac_cv_header_dcmf_h" "$ac_includes_default"
+if test "x$ac_cv_header_dcmf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_DCMF_H 1
 _ACEOF
 
 else
@@ -23757,13 +22913,9 @@ done
 fi
 
 if test -z "${HAVE_DCMF_TRUE}"; then
-	{ $as_echo "$as_me:$LINENO: checking if dcmf code can be linked" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dcmf code can be linked" >&5
 $as_echo_n "checking if dcmf code can be linked... " >&6; }
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dcmf.h"
 #ifdef FC_DUMMY_MAIN
@@ -23784,35 +22936,12 @@ unsigned ret;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   DCMF_LIBS="-ldcmf.cnk -ldcmfcoll.cnk -lpthread -lrt -lSPI.cna"
-		 { $as_echo "$as_me:$LINENO: result: yes" >&5
+		 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DCMF_TRUE=
   HAVE_DCMF_FALSE='#'
 else
@@ -23820,13 +22949,11 @@ else
   HAVE_DCMF_FALSE=
 fi
 
-		 { $as_echo "$as_me:$LINENO: result: no" >&5
+		 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
 
 LIBS="$save_LIBS"
@@ -23841,9 +22968,7 @@ CPPFLAGS="$save_CPPFLAGS"
 if test -z "${HAVE_DCMF_TRUE}"; then
 	ac_dcmf_lib_ok=yes
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DCMF 1
-_ACEOF
+$as_echo "#define HAVE_DCMF 1" >>confdefs.h
 
 	:
 else
@@ -23873,7 +22998,7 @@ INFINIBAND_LIBS=""
 
 
 # Check whether --with-infiniband was given.
-if test "${with_infiniband+set}" = set; then
+if test "${with_infiniband+set}" = set; then :
   withval=$with_infiniband;  INFINIBAND_DIR=$withval;
 else
   with_infiniband=yes
@@ -23912,7 +23037,7 @@ fi
 
 if test x"$ac_with_infiniband" = xyes; then
 
-        { $as_echo "$as_me:$LINENO: === checking for INFINIBAND ===" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: === checking for INFINIBAND ===" >&5
 $as_echo "$as_me: === checking for INFINIBAND ===" >&6;}
 
                 save_CPPFLAGS=$CPPFLAGS;
@@ -23922,138 +23047,10 @@ $as_echo "$as_me: === checking for INFINIBAND ===" >&6;}
 
 
         if test x"$ac_infiniband_hdr_ok" = xno; then
-                if test "${ac_cv_header_infiniband_verbs_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for infiniband/verbs.h" >&5
-$as_echo_n "checking for infiniband/verbs.h... " >&6; }
-if test "${ac_cv_header_infiniband_verbs_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_infiniband_verbs_h" >&5
-$as_echo "$ac_cv_header_infiniband_verbs_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking infiniband/verbs.h usability" >&5
-$as_echo_n "checking infiniband/verbs.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <infiniband/verbs.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking infiniband/verbs.h presence" >&5
-$as_echo_n "checking infiniband/verbs.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <infiniband/verbs.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: infiniband/verbs.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: infiniband/verbs.h: in the future, the compiler will take precedence" >&2;}
+                ac_fn_c_check_header_mongrel "$LINENO" "infiniband/verbs.h" "ac_cv_header_infiniband_verbs_h" "$ac_includes_default"
+if test "x$ac_cv_header_infiniband_verbs_h" = xyes; then :
 
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for infiniband/verbs.h" >&5
-$as_echo_n "checking for infiniband/verbs.h... " >&6; }
-if test "${ac_cv_header_infiniband_verbs_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_infiniband_verbs_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_infiniband_verbs_h" >&5
-$as_echo "$ac_cv_header_infiniband_verbs_h" >&6; }
-
-fi
-if test "x$ac_cv_header_infiniband_verbs_h" = x""yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_IBVERBS_H 1
-_ACEOF
+$as_echo "#define HAVE_IBVERBS_H 1" >>confdefs.h
 
                          ac_infiniband_hdr_ok=yes;
                          INFINIBAND_CFLAGS="$INFINIBAND_CFLAGS $EXTRA_CFLAGS";
@@ -24072,17 +23069,13 @@ fi
                 if test x"$ac_infiniband_lib_ok" = xno -a x$ac_infiniband_hdr_ok = xyes; then
             save_LIBS=$LIBS;
             LIBS=""
-            { $as_echo "$as_me:$LINENO: checking for library containing ibv_alloc_pd" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ibv_alloc_pd" >&5
 $as_echo_n "checking for library containing ibv_alloc_pd... " >&6; }
-if test "${ac_cv_search_ibv_alloc_pd+set}" = set; then
+if ${ac_cv_search_ibv_alloc_pd+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -24115,54 +23108,27 @@ for ac_lib in '' ibverbs; do
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib $save_LIBS $PTHREAD_LDFLAGS $PTHREAD_LIBS $ac_func_search_save_LIBS"
   fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+  if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_search_ibv_alloc_pd=$ac_res
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_ibv_alloc_pd+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_ibv_alloc_pd+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_ibv_alloc_pd+set}" = set; then
-  :
+if ${ac_cv_search_ibv_alloc_pd+:} false; then :
+
 else
   ac_cv_search_ibv_alloc_pd=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_ibv_alloc_pd" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ibv_alloc_pd" >&5
 $as_echo "$ac_cv_search_ibv_alloc_pd" >&6; }
 ac_res=$ac_cv_search_ibv_alloc_pd
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
   ac_infiniband_lib_ok=yes
 else
@@ -24212,9 +23178,7 @@ fi
         # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
         if test x"$ac_infiniband_lib_ok" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INFINIBAND 1
-_ACEOF
+$as_echo "#define HAVE_INFINIBAND 1" >>confdefs.h
 
                 :
         else
@@ -24270,7 +23234,7 @@ PORTALS_LIBS=""
 
 
 # Check whether --with-portals was given.
-if test "${with_portals+set}" = set; then
+if test "${with_portals+set}" = set; then :
   withval=$with_portals;  ac_with_portals=$withval;
 else
   ac_with_portals=no
@@ -24312,138 +23276,10 @@ if test x"$ac_with_portals" = xyes; then
 
 
         if test x"$ac_portals_hdr_ok" = xno; then
-                if test "${ac_cv_header_portals3_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for portals3.h" >&5
-$as_echo_n "checking for portals3.h... " >&6; }
-if test "${ac_cv_header_portals3_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_portals3_h" >&5
-$as_echo "$ac_cv_header_portals3_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking portals3.h usability" >&5
-$as_echo_n "checking portals3.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <portals3.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking portals3.h presence" >&5
-$as_echo_n "checking portals3.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <portals3.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: portals3.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: portals3.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: portals3.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: portals3.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: portals3.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: portals3.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: portals3.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals3.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: portals3.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for portals3.h" >&5
-$as_echo_n "checking for portals3.h... " >&6; }
-if test "${ac_cv_header_portals3_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_portals3_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_portals3_h" >&5
-$as_echo "$ac_cv_header_portals3_h" >&6; }
-
-fi
-if test "x$ac_cv_header_portals3_h" = x""yes; then
+                ac_fn_c_check_header_mongrel "$LINENO" "portals3.h" "ac_cv_header_portals3_h" "$ac_includes_default"
+if test "x$ac_cv_header_portals3_h" = xyes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PORTALS3_H 1
-_ACEOF
+$as_echo "#define HAVE_PORTALS3_H 1" >>confdefs.h
 
                          ac_portals_hdr_ok=yes;
                          PORTALS_CFLAGS="$PORTALS_CFLAGS $EXTRA_CFLAGS";
@@ -24456,138 +23292,10 @@ fi
         fi
 
         if test x"$ac_portals_hdr_ok" = xno; then
-                if test "${ac_cv_header_portals_portals3_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for portals/portals3.h" >&5
-$as_echo_n "checking for portals/portals3.h... " >&6; }
-if test "${ac_cv_header_portals_portals3_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_portals_portals3_h" >&5
-$as_echo "$ac_cv_header_portals_portals3_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking portals/portals3.h usability" >&5
-$as_echo_n "checking portals/portals3.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <portals/portals3.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking portals/portals3.h presence" >&5
-$as_echo_n "checking portals/portals3.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <portals/portals3.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: portals/portals3.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: portals/portals3.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for portals/portals3.h" >&5
-$as_echo_n "checking for portals/portals3.h... " >&6; }
-if test "${ac_cv_header_portals_portals3_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_portals_portals3_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_portals_portals3_h" >&5
-$as_echo "$ac_cv_header_portals_portals3_h" >&6; }
-
-fi
-if test "x$ac_cv_header_portals_portals3_h" = x""yes; then
+                ac_fn_c_check_header_mongrel "$LINENO" "portals/portals3.h" "ac_cv_header_portals_portals3_h" "$ac_includes_default"
+if test "x$ac_cv_header_portals_portals3_h" = xyes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PORTALS_PORTALS3_H 1
-_ACEOF
+$as_echo "#define HAVE_PORTALS_PORTALS3_H 1" >>confdefs.h
 
                           ac_portals_hdr_ok=yes;
                          PORTALS_CFLAGS="$PORTALS_CFLAGS $EXTRA_CFLAGS";
@@ -24599,67 +23307,18 @@ fi
 
         fi
 
-
-
-for ac_header in p3nal_utcp.h p3rt/p3rt.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
+                for ac_header in p3nal_utcp.h p3rt/p3rt.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
                         #if defined(HAVE_PORTALS3_H)
                          #include <portals3.h>
                          #elif defined(HAVE_PORTALS_PORTALS3_H)
-                         #include <portals/portals3.h>
-                         #endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
+                         #include <portals/portals3.h>
+                         #endif
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -24677,17 +23336,13 @@ done
                 if test x"$ac_portals_lib_ok" = xno -a x$ac_portals_hdr_ok = xyes; then
             save_LIBS=$LIBS;
             LIBS=""
-            { $as_echo "$as_me:$LINENO: checking for library containing PtlInit" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing PtlInit" >&5
 $as_echo_n "checking for library containing PtlInit... " >&6; }
-if test "${ac_cv_search_PtlInit+set}" = set; then
+if ${ac_cv_search_PtlInit+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -24720,54 +23375,27 @@ for ac_lib in '' portals; do
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib $save_LIBS $PTHREAD_LDFLAGS $PTHREAD_LIBS $ac_func_search_save_LIBS"
   fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+  if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_search_PtlInit=$ac_res
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_PtlInit+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_PtlInit+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_PtlInit+set}" = set; then
-  :
+if ${ac_cv_search_PtlInit+:} false; then :
+
 else
   ac_cv_search_PtlInit=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_PtlInit" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_PtlInit" >&5
 $as_echo "$ac_cv_search_PtlInit" >&6; }
 ac_res=$ac_cv_search_PtlInit
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
   ac_portals_lib_ok=yes
 else
@@ -24792,14 +23420,10 @@ fi
             LIBS="$LIBS $extra_LIBS $PTHREAD_LIBS"
             CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
-            { $as_echo "$as_me:$LINENO: checking if portals links with $LDFLAGS $LIBS" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if portals links with $LDFLAGS $LIBS" >&5
 $as_echo_n "checking if portals links with $LDFLAGS $LIBS... " >&6; }
 
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -24825,43 +23449,18 @@ return PtlInit ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   PORTALS_LIBS=$extra_LIBS;
                         ac_portals_lib_ok=yes;
-                        { $as_echo "$as_me:$LINENO: result: yes" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_portals_lib_ok=no;
-                         { $as_echo "$as_me:$LINENO: result: no" >&5
+  ac_portals_lib_ok=no;
+                         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
             LIBS=$save_LIBS;
             LDFLAGS=$save_LDFLAGS;
@@ -24877,18 +23476,18 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 
                 case $flag in
                     none)
-                        { $as_echo "$as_me:$LINENO: checking whether portals works without any additional flags" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether portals works without any additional flags" >&5
 $as_echo_n "checking whether portals works without any additional flags... " >&6; }
                     ;;
 
                     -l*)
-                        { $as_echo "$as_me:$LINENO: checking whether portals works with library $flag" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether portals works with library $flag" >&5
 $as_echo_n "checking whether portals works with library $flag... " >&6; }
                         EXTRA_LIBS="$flag"
                         ;;
 
                     -*)
-                        { $as_echo "$as_me:$LINENO: checking whether portals works with library -l$flag" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether portals works with library -l$flag" >&5
 $as_echo_n "checking whether portals works with library -l$flag... " >&6; }
                         EXTRA_LIBS="$flag"
                         ;;
@@ -24905,11 +23504,7 @@ $as_echo_n "checking whether portals works with library -l$flag... " >&6; }
                 LDFLAGS="$LDFLAGS $PORTALS_LDFLAGS"
 
                 See if Portals will link with the provided flags
-                cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -24935,42 +23530,17 @@ return PtlInit ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   PORTALS_CFLAGS="$PORTALS_CFLAGS $EXTRA_CFLAGS";
                         PORTALS_CPPFLAGS="$PORTALS_CPPFLAGS $EXTRA_CPPFLAGS";
                         PORTALS_LIBS="$PORTALS_LIBS $EXTRA_LIBS";
                         ac_portals_lib_ok=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_portals_lib_ok=no
+  ac_portals_lib_ok=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-                { $as_echo "$as_me:$LINENO: result: $ac_portals_lib_ok" >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_portals_lib_ok" >&5
 $as_echo "$ac_portals_lib_ok" >&6; }
 
                 if test "x$ac_portals_lib_ok" = xyes; then
@@ -25038,13 +23608,9 @@ fi
                 LDFLAGS="$LDFLAGS $PORTALS_LDFLAGS"
                 LIBS="$LIBS $PORTALS_LIBS"
 
-                                { $as_echo "$as_me:$LINENO: checking whether portals uses PTL_NO_ACK_REQ" >&5
+                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether portals uses PTL_NO_ACK_REQ" >&5
 $as_echo_n "checking whether portals uses PTL_NO_ACK_REQ... " >&6; }
-                cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if defined(HAVE_PORTALS3_H)
                          #include <portals3.h>
@@ -25070,317 +23636,29 @@ int a = PTL_NO_ACK_REQ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  # Success
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PTL_NO_ACK_REQ 1
-_ACEOF
-
-                  { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-                  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                  { $as_echo "$as_me:$LINENO: checking whether portals uses PTL_NOACK_REQ" >&5
-$as_echo_n "checking whether portals uses PTL_NOACK_REQ... " >&6; }
-                  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if defined(HAVE_PORTALS3_H)
-                               #include <portals3.h>
-                               #elif defined(HAVE_PORTALS_PORTALS3_H)
-                               #include <portals/portals3.h>
-                               #else
-                               #error Cound not find include file
-                               #endif
-
-#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 a = PTL_NOACK_REQ;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   # Success
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PTL_NOACK_REQ 1
-_ACEOF
-
-                        { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-                        { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
-                { $as_echo "$as_me:$LINENO: checking for ptl_time_t" >&5
-$as_echo_n "checking for ptl_time_t... " >&6; }
-if test "${ac_cv_type_ptl_time_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_ptl_time_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if defined(HAVE_PORTALS3_H)
-                         #include <portals3.h>
-                         #elif defined(HAVE_PORTALS_PORTALS3_H)
-                         #include <portals/portals3.h>
-                         #endif
-
-#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 ()
-{
-if (sizeof (ptl_time_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if defined(HAVE_PORTALS3_H)
-                         #include <portals3.h>
-                         #elif defined(HAVE_PORTALS_PORTALS3_H)
-                         #include <portals/portals3.h>
-                         #endif
-
-#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 ()
-{
-if (sizeof ((ptl_time_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_ptl_time_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptl_time_t" >&5
-$as_echo "$ac_cv_type_ptl_time_t" >&6; }
-if test "x$ac_cv_type_ptl_time_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_PTL_TIME_T 1
-_ACEOF
-
-
-fi
-{ $as_echo "$as_me:$LINENO: checking for ptl_eq_handler_t" >&5
-$as_echo_n "checking for ptl_eq_handler_t... " >&6; }
-if test "${ac_cv_type_ptl_eq_handler_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_ptl_eq_handler_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if defined(HAVE_PORTALS3_H)
-                         #include <portals3.h>
-                         #elif defined(HAVE_PORTALS_PORTALS3_H)
-                         #include <portals/portals3.h>
-                         #endif
-
-#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 ()
-{
-if (sizeof (ptl_eq_handler_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+$as_echo "#define HAVE_PTL_NO_ACK_REQ 1" >>confdefs.h
+
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether portals uses PTL_NOACK_REQ" >&5
+$as_echo_n "checking whether portals uses PTL_NOACK_REQ... " >&6; }
+                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if defined(HAVE_PORTALS3_H)
-                         #include <portals3.h>
-                         #elif defined(HAVE_PORTALS_PORTALS3_H)
-                         #include <portals/portals3.h>
-                         #endif
+                               #include <portals3.h>
+                               #elif defined(HAVE_PORTALS_PORTALS3_H)
+                               #include <portals/portals3.h>
+                               #else
+                               #error Cound not find include file
+                               #endif
 
 #ifdef FC_DUMMY_MAIN
 #ifndef FC_DUMMY_MAIN_EQ_F77
@@ -25393,170 +23671,71 @@ cat >>conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
-if (sizeof ((ptl_eq_handler_t)))
-	  return 0;
+int a = PTL_NOACK_REQ;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  # Success
 
-	ac_cv_type_ptl_eq_handler_t=yes
-fi
+$as_echo "#define HAVE_PTL_NOACK_REQ 1" >>confdefs.h
+
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptl_eq_handler_t" >&5
-$as_echo "$ac_cv_type_ptl_eq_handler_t" >&6; }
-if test "x$ac_cv_type_ptl_eq_handler_t" = x""yes; then
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+                ac_fn_c_check_type "$LINENO" "ptl_time_t" "ac_cv_type_ptl_time_t" "#if defined(HAVE_PORTALS3_H)
+                         #include <portals3.h>
+                         #elif defined(HAVE_PORTALS_PORTALS3_H)
+                         #include <portals/portals3.h>
+                         #endif
+"
+if test "x$ac_cv_type_ptl_time_t" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTL_EQ_HANDLER_T 1
+#define HAVE_PTL_TIME_T 1
 _ACEOF
 
 
 fi
+ac_fn_c_check_type "$LINENO" "ptl_eq_handler_t" "ac_cv_type_ptl_eq_handler_t" "#if defined(HAVE_PORTALS3_H)
+                         #include <portals3.h>
+                         #elif defined(HAVE_PORTALS_PORTALS3_H)
+                         #include <portals/portals3.h>
+                         #endif
+"
+if test "x$ac_cv_type_ptl_eq_handler_t" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTL_EQ_HANDLER_T 1
+_ACEOF
 
 
+fi
 
 
-
-
-for ac_func in PtlErrorStr \
+                for ac_func in PtlErrorStr \
                         PtlNIFailStr \
                         PtlEventKindStr \
                         PtlGetJid \
                         PtlACEntry
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-#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 ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -25588,9 +23767,7 @@ done
                 x"$ac_cv_func_PtlGetJid" = xyes -a \
                 x"$ac_cv_func_PtlACEntry" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CRAY_PORTALS 1
-_ACEOF
+$as_echo "#define HAVE_CRAY_PORTALS 1" >>confdefs.h
 
         fi
 
@@ -25606,9 +23783,7 @@ _ACEOF
         # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
         if test x"$ac_portals_lib_ok" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PORTALS 1
-_ACEOF
+$as_echo "#define HAVE_PORTALS 1" >>confdefs.h
 
                 :
         else
@@ -25638,7 +23813,7 @@ fi
 
 
 # Check whether --with-cray-pmi was given.
-if test "${with_cray_pmi+set}" = set; then
+if test "${with_cray_pmi+set}" = set; then :
   withval=$with_cray_pmi; CRAY_PMI_DIR=$withval
 else
   with_cray_pmi=no
@@ -25647,7 +23822,7 @@ fi
 
 
 # Check whether --with-cray-pmi-incdir was given.
-if test "${with_cray_pmi_incdir+set}" = set; then
+if test "${with_cray_pmi_incdir+set}" = set; then :
   withval=$with_cray_pmi_incdir; CRAY_PMI_INCDIR=$withval
              with_cray_pmi=detailed
 fi
@@ -25655,7 +23830,7 @@ fi
 
 
 # Check whether --with-cray-pmi-libdir was given.
-if test "${with_cray_pmi_libdir+set}" = set; then
+if test "${with_cray_pmi_libdir+set}" = set; then :
   withval=$with_cray_pmi_libdir; CRAY_PMI_LIBDIR=$withval
               with_cray_pmi=detailed
 fi
@@ -25663,7 +23838,7 @@ fi
 
 
 # Check whether --with-cray-pmi-libs was given.
-if test "${with_cray_pmi_libs+set}" = set; then
+if test "${with_cray_pmi_libs+set}" = set; then :
   withval=$with_cray_pmi_libs; CRAY_PMI_LIBS=$withval
               with_cray_pmi=detailed
 fi
@@ -25683,7 +23858,7 @@ fi
 
 else
 
-    { $as_echo "$as_me:$LINENO: === checking for CRAY PMI ===" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: === checking for CRAY PMI ===" >&5
 $as_echo "$as_me: === checking for CRAY PMI ===" >&6;}
 
             if test -z "${CRAY_PMI_INCDIR}"; then
@@ -25720,10 +23895,10 @@ $as_echo "$as_me: === checking for CRAY PMI ===" >&6;}
     CC="$MPICC"
 
     if test -z "${HAVE_CRAY_PMI_TRUE}"; then
-                                                        { $as_echo "$as_me:$LINENO: checking for Cray's pmi.h" >&5
+                                                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Cray's pmi.h" >&5
 $as_echo_n "checking for Cray's pmi.h... " >&6; }
         if test -f ${CRAY_PMI_INCDIR}/pmi.h; then
-            { $as_echo "$as_me:$LINENO: result: yes" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
         else
              if false; then
@@ -25734,26 +23909,19 @@ else
   HAVE_CRAY_PMI_FALSE=
 fi
 
-            { $as_echo "$as_me:$LINENO: result: no" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-            { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+            { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-cray-pmi was given, but test for ${CRAY_PMI_INCDIR}/pmi.h failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-cray-pmi was given, but test for ${CRAY_PMI_INCDIR}/pmi.h failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-cray-pmi was given, but test for ${CRAY_PMI_INCDIR}/pmi.h failed
+See \`config.log' for more details" "$LINENO" 5; }
         fi
     fi
 
     if test -z "${HAVE_CRAY_PMI_TRUE}"; then
-        { $as_echo "$as_me:$LINENO: checking if pmi code can be compiled" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pmi code can be compiled" >&5
 $as_echo_n "checking if pmi code can be compiled... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "pmi.h"
 #ifdef FC_DUMMY_MAIN
@@ -25776,41 +23944,18 @@ int size;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
              ac_cray_pmi_lib_ok=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
              if test "x$with_cray_pmi" != xcheck; then
-                { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+                { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-cray-pmi was given, but compile test failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-cray-pmi was given, but compile test failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-cray-pmi was given, but compile test failed
+See \`config.log' for more details" "$LINENO" 5; }
              fi
               if false; then
   HAVE_CRAY_PMI_TRUE=
@@ -25822,7 +23967,6 @@ fi
 
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
@@ -25838,9 +23982,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_CRAY_PMI_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CRAY_PMI 1
-_ACEOF
+$as_echo "#define HAVE_CRAY_PMI 1" >>confdefs.h
 
             :
     else
@@ -25866,7 +24008,7 @@ fi
 
 
 # Check whether --with-cray-ugni was given.
-if test "${with_cray_ugni+set}" = set; then
+if test "${with_cray_ugni+set}" = set; then :
   withval=$with_cray_ugni; CRAY_UGNI_DIR=$withval
 else
   with_cray_ugni=no
@@ -25875,7 +24017,7 @@ fi
 
 
 # Check whether --with-cray-ugni-incdir was given.
-if test "${with_cray_ugni_incdir+set}" = set; then
+if test "${with_cray_ugni_incdir+set}" = set; then :
   withval=$with_cray_ugni_incdir; CRAY_UGNI_INCDIR=$withval
              with_cray_ugni=detailed
 fi
@@ -25883,7 +24025,7 @@ fi
 
 
 # Check whether --with-cray-ugni-libdir was given.
-if test "${with_cray_ugni_libdir+set}" = set; then
+if test "${with_cray_ugni_libdir+set}" = set; then :
   withval=$with_cray_ugni_libdir; CRAY_UGNI_LIBDIR=$withval
               with_cray_ugni=detailed
 fi
@@ -25891,7 +24033,7 @@ fi
 
 
 # Check whether --with-cray-ugni-libs was given.
-if test "${with_cray_ugni_libs+set}" = set; then
+if test "${with_cray_ugni_libs+set}" = set; then :
   withval=$with_cray_ugni_libs; CRAY_UGNI_LIBS=$withval
               with_cray_ugni=detailed
 fi
@@ -25911,7 +24053,7 @@ fi
 
 else
 
-    { $as_echo "$as_me:$LINENO: === checking for CRAY UGNI ===" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: === checking for CRAY UGNI ===" >&5
 $as_echo "$as_me: === checking for CRAY UGNI ===" >&6;}
 
             if test -z "${CRAY_UGNI_INCDIR}"; then
@@ -25948,10 +24090,10 @@ $as_echo "$as_me: === checking for CRAY UGNI ===" >&6;}
     CC="$MPICC"
 
     if test -z "${HAVE_CRAY_UGNI_TRUE}"; then
-                                                        { $as_echo "$as_me:$LINENO: checking for Cray's ugni.h" >&5
+                                                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Cray's ugni.h" >&5
 $as_echo_n "checking for Cray's ugni.h... " >&6; }
         if test -f ${CRAY_UGNI_INCDIR}/gni_pub.h; then
-            { $as_echo "$as_me:$LINENO: result: yes" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
         else
              if false; then
@@ -25962,26 +24104,19 @@ else
   HAVE_CRAY_UGNI_FALSE=
 fi
 
-            { $as_echo "$as_me:$LINENO: result: no" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-            { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+            { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-cray-ugni was given, but test for ${CRAY_UGNI_INCDIR}/gni_pub.h failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-cray-ugni was given, but test for ${CRAY_UGNI_INCDIR}/gni_pub.h failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-cray-ugni was given, but test for ${CRAY_UGNI_INCDIR}/gni_pub.h failed
+See \`config.log' for more details" "$LINENO" 5; }
         fi
     fi
 
     if test -z "${HAVE_CRAY_UGNI_TRUE}"; then
-        { $as_echo "$as_me:$LINENO: checking if ugni code can be compiled" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ugni code can be compiled" >&5
 $as_echo_n "checking if ugni code can be compiled... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
              #include <stdint.h>
@@ -26010,41 +24145,18 @@ uint32_t inst_id;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
              ac_cray_ugni_lib_ok=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
              if test "x$with_cray_ugni" != xcheck; then
-                { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+                { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-cray-ugni was given, but compile test failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-cray-ugni was given, but compile test failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-cray-ugni was given, but compile test failed
+See \`config.log' for more details" "$LINENO" 5; }
              fi
               if false; then
   HAVE_CRAY_UGNI_TRUE=
@@ -26056,7 +24168,6 @@ fi
 
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
@@ -26072,9 +24183,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_CRAY_UGNI_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CRAY_UGNI 1
-_ACEOF
+$as_echo "#define HAVE_CRAY_UGNI 1" >>confdefs.h
 
             :
     else
@@ -26086,7 +24195,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for HDF5 ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for HDF5 ===" >&5
 $as_echo "$as_me: === checking for HDF5 ===" >&6;}
 
  if true; then
@@ -26100,7 +24209,7 @@ fi
 
 
 # Check whether --with-hdf5 was given.
-if test "${with_hdf5+set}" = set; then
+if test "${with_hdf5+set}" = set; then :
   withval=$with_hdf5; HDF5_DIR=$withval
 else
   with_hdf5=no
@@ -26109,7 +24218,7 @@ fi
 
 
 # Check whether --with-hdf5-incdir was given.
-if test "${with_hdf5_incdir+set}" = set; then
+if test "${with_hdf5_incdir+set}" = set; then :
   withval=$with_hdf5_incdir; HDF5_INCDIR=$withval
              with_hdf5=detailed
 fi
@@ -26117,7 +24226,7 @@ fi
 
 
 # Check whether --with-hdf5-libdir was given.
-if test "${with_hdf5_libdir+set}" = set; then
+if test "${with_hdf5_libdir+set}" = set; then :
   withval=$with_hdf5_libdir; HDF5_LIBDIR=$withval
               with_hdf5=detailed
 fi
@@ -26125,7 +24234,7 @@ fi
 
 
 # Check whether --with-hdf5-libs was given.
-if test "${with_hdf5_libs+set}" = set; then
+if test "${with_hdf5_libs+set}" = set; then :
   withval=$with_hdf5_libs; HDF5_LIBS=$withval
               with_hdf5=detailed
 fi
@@ -26175,10 +24284,10 @@ else
     CC="$MPICC"
 
     if test -z "${HAVE_HDF5_TRUE}"; then
-                                                        { $as_echo "$as_me:$LINENO: checking for hdf5.h" >&5
+                                                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hdf5.h" >&5
 $as_echo_n "checking for hdf5.h... " >&6; }
         if test -f ${HDF5_INCDIR}/hdf5.h; then
-            { $as_echo "$as_me:$LINENO: result: yes" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
         else
              if false; then
@@ -26189,26 +24298,19 @@ else
   HAVE_HDF5_FALSE=
 fi
 
-            { $as_echo "$as_me:$LINENO: result: no" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-            { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+            { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-hdf5 was given, but test for ${HDF5_INCDIR}/hdf5.h failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-hdf5 was given, but test for ${HDF5_INCDIR}/hdf5.h failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-hdf5 was given, but test for ${HDF5_INCDIR}/hdf5.h failed
+See \`config.log' for more details" "$LINENO" 5; }
         fi
     fi
 
     if test -z "${HAVE_HDF5_TRUE}"; then
-        { $as_echo "$as_me:$LINENO: checking if hdf5 code can be compiled" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if hdf5 code can be compiled" >&5
 $as_echo_n "checking if hdf5 code can be compiled... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "hdf5.h"
 #ifdef FC_DUMMY_MAIN
@@ -26231,40 +24333,17 @@ hid_t file_id;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
              if test "x$with_hdf5" != xcheck; then
-                { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+                { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-hdf5 was given, but compile test failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-hdf5 was given, but compile test failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-hdf5 was given, but compile test failed
+See \`config.log' for more details" "$LINENO" 5; }
              fi
               if false; then
   HAVE_HDF5_TRUE=
@@ -26276,7 +24355,6 @@ fi
 
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
@@ -26292,9 +24370,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_HDF5_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_HDF5 1
-_ACEOF
+$as_echo "#define HAVE_HDF5 1" >>confdefs.h
 
             :
     else
@@ -26306,7 +24382,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for Parallel HDF5 ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for Parallel HDF5 ===" >&5
 $as_echo "$as_me: === checking for Parallel HDF5 ===" >&6;}
 
  if true; then
@@ -26320,7 +24396,7 @@ fi
 
 
 # Check whether --with-phdf5 was given.
-if test "${with_phdf5+set}" = set; then
+if test "${with_phdf5+set}" = set; then :
   withval=$with_phdf5; PHDF5_DIR=$withval
 else
   with_phdf5=no
@@ -26330,7 +24406,7 @@ fi
 
 
 # Check whether --with-phdf5-incdir was given.
-if test "${with_phdf5_incdir+set}" = set; then
+if test "${with_phdf5_incdir+set}" = set; then :
   withval=$with_phdf5_incdir; PHDF5_INCDIR=$withval
     with_phdf5=detailed
 fi
@@ -26338,7 +24414,7 @@ fi
 
 
 # Check whether --with-phdf5-libdir was given.
-if test "${with_phdf5_libdir+set}" = set; then
+if test "${with_phdf5_libdir+set}" = set; then :
   withval=$with_phdf5_libdir; PHDF5_LIBDIR=$withval
     with_phdf5=detailed
 fi
@@ -26346,7 +24422,7 @@ fi
 
 
 # Check whether --with-phdf5-libs was given.
-if test "${with_phdf5_libs+set}" = set; then
+if test "${with_phdf5_libs+set}" = set; then :
   withval=$with_phdf5_libs; PHDF5_LIBS=$withval
     with_phdf5=detailed
 fi
@@ -26363,6 +24439,19 @@ else
 fi
 
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:     skip Parallel HDF5 because we don't build parallel" >&5
+$as_echo "$as_me:     skip Parallel HDF5 because we don't build parallel" >&6;}
+    if false; then
+  HAVE_PHDF5_TRUE=
+  HAVE_PHDF5_FALSE='#'
+else
+  HAVE_PHDF5_TRUE='#'
+  HAVE_PHDF5_FALSE=
+fi
+
+
 else
 
     ac_use_cray_hdf5=no
@@ -26405,7 +24494,7 @@ else
         if test "${ac_use_cray_hdf5}" != "yes"; then
                         PHDF5_LIBS="-lhdf5_hl -lhdf5 -lz"
         else
-            { $as_echo "$as_me:$LINENO: Environment CRAY_HDF5_DIR defined, so we use Cray's settings" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Environment CRAY_HDF5_DIR defined, so we use Cray's settings" >&5
 $as_echo "$as_me: Environment CRAY_HDF5_DIR defined, so we use Cray's settings" >&6;}
         fi
     fi
@@ -26421,146 +24510,12 @@ $as_echo "$as_me: Environment CRAY_HDF5_DIR defined, so we use Cray's settings"
 
 
     if test -z "${HAVE_PHDF5_TRUE}"; then
-
-for ac_header in hdf5.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_header in hdf5.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default"
+if test "x$ac_cv_header_hdf5_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_HDF5_H 1
 _ACEOF
 
 else
@@ -26579,13 +24534,9 @@ done
     fi
 
     if test -z "${HAVE_PHDF5_TRUE}"; then
-        { $as_echo "$as_me:$LINENO: checking if phdf5 code can be compiled" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if phdf5 code can be compiled" >&5
 $as_echo_n "checking if phdf5 code can be compiled... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "hdf5.h"
 #ifdef FC_DUMMY_MAIN
@@ -26607,37 +24558,17 @@ hid_t file_id;
 #else
              /* This must deliberately fail */
              file_id = THE_HDF5_INSTALLATION_FOUND_IS_NOT_PARALLEL_HDF5
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
               if false; then
   HAVE_PHDF5_TRUE=
@@ -26649,7 +24580,6 @@ fi
 
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
@@ -26665,9 +24595,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_PHDF5_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PHDF5 1
-_ACEOF
+$as_echo "#define HAVE_PHDF5 1" >>confdefs.h
 
             :
     else
@@ -26679,7 +24607,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for NetCDF ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for NetCDF ===" >&5
 $as_echo "$as_me: === checking for NetCDF ===" >&6;}
 
  if true; then
@@ -26693,7 +24621,7 @@ fi
 
 
 # Check whether --with-netcdf was given.
-if test "${with_netcdf+set}" = set; then
+if test "${with_netcdf+set}" = set; then :
   withval=$with_netcdf; NETCDF_DIR=$withval
 else
   with_netcdf=check
@@ -26717,7 +24645,7 @@ else
 
 
 # Check whether --with-netcdf-incdir was given.
-if test "${with_netcdf_incdir+set}" = set; then
+if test "${with_netcdf_incdir+set}" = set; then :
   withval=$with_netcdf_incdir; NETCDF_INCDIR=$withval
                  with_netcdf=detailed
 fi
@@ -26725,7 +24653,7 @@ fi
 
 
 # Check whether --with-netcdf-libdir was given.
-if test "${with_netcdf_libdir+set}" = set; then
+if test "${with_netcdf_libdir+set}" = set; then :
   withval=$with_netcdf_libdir; NETCDF_LIBDIR=$withval
                  with_netcdf=detailed
 fi
@@ -26733,7 +24661,7 @@ fi
 
 
 # Check whether --with-netcdf-libs was given.
-if test "${with_netcdf_libs+set}" = set; then
+if test "${with_netcdf_libs+set}" = set; then :
   withval=$with_netcdf_libs; NETCDF_LIBS=$withval
                  with_netcdf=detailed
 fi
@@ -26787,157 +24715,20 @@ fi
     CPPFLAGS="$CPPFLAGS $NETCDF_CPPFLAGS"
 
     if test -z "${HAVE_NETCDF_TRUE}"; then
-
-for ac_header in netcdf.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_header in netcdf.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
+if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_NETCDF_H 1
 _ACEOF
 
 else
   if test "x$with_netcdf" != xcheck; then
-              { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+              { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-netcdf was given, but test for netcdf.h failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-netcdf was given, but test for netcdf.h failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-netcdf was given, but test for netcdf.h failed
+See \`config.log' for more details" "$LINENO" 5; }
             fi
              if false; then
   HAVE_NETCDF_TRUE=
@@ -26954,13 +24745,9 @@ done
     fi
 
     if test -z "${HAVE_NETCDF_TRUE}"; then
-        { $as_echo "$as_me:$LINENO: checking if netcdf code can be compiled" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if netcdf code can be compiled" >&5
 $as_echo_n "checking if netcdf code can be compiled... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "netcdf.h"
 #ifdef FC_DUMMY_MAIN
@@ -26982,40 +24769,17 @@ int ncid;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
              if test "x$with_netcdf" != xcheck; then
-                 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+                 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-netcdf was given, but compile test failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-netcdf was given, but compile test failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-netcdf was given, but compile test failed
+See \`config.log' for more details" "$LINENO" 5; }
              fi
               if false; then
   HAVE_NETCDF_TRUE=
@@ -27027,7 +24791,6 @@ fi
 
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
@@ -27042,9 +24805,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_NETCDF_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NETCDF 1
-_ACEOF
+$as_echo "#define HAVE_NETCDF 1" >>confdefs.h
 
             :
     else
@@ -27056,7 +24817,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking NetCDF 4 Parallel ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking NetCDF 4 Parallel ===" >&5
 $as_echo "$as_me: === checking NetCDF 4 Parallel ===" >&6;}
 
  if true; then
@@ -27070,7 +24831,7 @@ fi
 
 
 # Check whether --with-nc4par was given.
-if test "${with_nc4par+set}" = set; then
+if test "${with_nc4par+set}" = set; then :
   withval=$with_nc4par; NC4PAR_DIR=$withval
 else
   with_nc4par=no
@@ -27088,13 +24849,26 @@ else
 fi
 
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:     skip NetCDF 4 Parallel because we don't build parallel" >&5
+$as_echo "$as_me:     skip NetCDF 4 Parallel because we don't build parallel" >&6;}
+    if false; then
+  HAVE_NC4PAR_TRUE=
+  HAVE_NC4PAR_FALSE='#'
+else
+  HAVE_NC4PAR_TRUE='#'
+  HAVE_NC4PAR_FALSE=
+fi
+
+
 else
 
     ac_use_cray_netcdf=no
 
 
 # Check whether --with-nc4par-incdir was given.
-if test "${with_nc4par_incdir+set}" = set; then
+if test "${with_nc4par_incdir+set}" = set; then :
   withval=$with_nc4par_incdir; NC4PAR_INCDIR=$withval
                  with_nc4par=detailed
 fi
@@ -27102,7 +24876,7 @@ fi
 
 
 # Check whether --with-nc4par-libdir was given.
-if test "${with_nc4par_libdir+set}" = set; then
+if test "${with_nc4par_libdir+set}" = set; then :
   withval=$with_nc4par_libdir; NC4PAR_LIBDIR=$withval
                  with_nc4par=detailed
 fi
@@ -27110,7 +24884,7 @@ fi
 
 
 # Check whether --with-nc4par-libs was given.
-if test "${with_nc4par_libs+set}" = set; then
+if test "${with_nc4par_libs+set}" = set; then :
   withval=$with_nc4par_libs; NC4PAR_LIBS=$withval
                  with_nc4par=detailed
 fi
@@ -27167,157 +24941,20 @@ fi
     CC="$MPICC"
 
     if test -z "${HAVE_NC4PAR_TRUE}"; then
-
-for ac_header in netcdf.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_header in netcdf.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
+if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_NETCDF_H 1
 _ACEOF
 
 else
   if test "x$with_nc4par" != xcheck; then
-              { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+              { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-nc4par was given, but test for netcdf.h failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-nc4par was given, but test for netcdf.h failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-nc4par was given, but test for netcdf.h failed
+See \`config.log' for more details" "$LINENO" 5; }
             fi
              if false; then
   HAVE_NC4PAR_TRUE=
@@ -27334,13 +24971,9 @@ done
     fi
 
     if test -z "${HAVE_NC4PAR_TRUE}"; then
-        { $as_echo "$as_me:$LINENO: checking if nc4 parallel code can be compiled" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if nc4 parallel code can be compiled" >&5
 $as_echo_n "checking if nc4 parallel code can be compiled... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "mpi.h"
              #include "netcdf.h"
@@ -27366,40 +24999,17 @@ int ncid;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
              if test "x$with_nc4par" != xcheck; then
-                 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+                 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: --with-nc4par was given, but compile test failed
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: --with-nc4par was given, but compile test failed
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
+as_fn_error $? "--with-nc4par was given, but compile test failed
+See \`config.log' for more details" "$LINENO" 5; }
              fi
               if false; then
   HAVE_NC4PAR_TRUE=
@@ -27411,7 +25021,6 @@ fi
 
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
@@ -27427,9 +25036,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_NC4PAR_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NC4PAR 1
-_ACEOF
+$as_echo "#define HAVE_NC4PAR 1" >>confdefs.h
 
             :
     else
@@ -27453,7 +25060,7 @@ fi
 
 
 # Check whether --with-pablo was given.
-if test "${with_pablo+set}" = set; then
+if test "${with_pablo+set}" = set; then :
   withval=$with_pablo; PABLO_LDFLAGS="-L$withval/lib";
 	 PABLO_CPPFLAGS="-I$withval/include";
 fi
@@ -27468,146 +25075,12 @@ LDFLAGS="$LDFLAGS $PABLO_LDFLAGS"
 CPPFLAGS="$CPPFLAGS $PABLO_CPPFLAGS"
 
 if test -z "${HAVE_PABLO_TRUE}"; then
-
-for ac_header in Attributes.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_header in Attributes.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "Attributes.h" "ac_cv_header_Attributes_h" "$ac_includes_default"
+if test "x$ac_cv_header_Attributes_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_ATTRIBUTES_H 1
 _ACEOF
 
 else
@@ -27626,11 +25099,7 @@ done
 fi
 
 # Check for the Pablo library and headers for SDDF
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <Attributes.h>
 #ifdef FC_DUMMY_MAIN
@@ -27649,30 +25118,10 @@ Attributes attr;attr.clearEntries();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   PABLO_LIBS="-lPablo"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_PABLO_TRUE=
   HAVE_PABLO_FALSE='#'
 else
@@ -27681,7 +25130,6 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 LIBS="$save_LIBS"
@@ -27696,9 +25144,7 @@ CPPFLAGS="$save_CPPFLAGS"
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
 if test -z "${HAVE_PABLO_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PABLO 1
-_ACEOF
+$as_echo "#define HAVE_PABLO 1" >>confdefs.h
 
         :
 else
@@ -27743,7 +25189,7 @@ NSSI_SERVER_LIBS="-lnssi_server -lnssi_support"
 
 
 # Check whether --with-nssi was given.
-if test "${with_nssi+set}" = set; then
+if test "${with_nssi+set}" = set; then :
   withval=$with_nssi; NSSI_LDFLAGS="-L$withval/lib";
          NSSI_CPPFLAGS="-I$withval/include";
          ac_nssi_path=$withval
@@ -27753,135 +25199,9 @@ fi
 if test x"$ac_nssi_ok" = xyes; then
         save_CPPFLAGS="$CPPFLAGS"
         CPPFLAGS="${CPPFLAGS} ${NSSI_CPPFLAGS}"
-        if test "${ac_cv_header_nssi_client_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for nssi_client.h" >&5
-$as_echo_n "checking for nssi_client.h... " >&6; }
-if test "${ac_cv_header_nssi_client_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_nssi_client_h" >&5
-$as_echo "$ac_cv_header_nssi_client_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking nssi_client.h usability" >&5
-$as_echo_n "checking nssi_client.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <nssi_client.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking nssi_client.h presence" >&5
-$as_echo_n "checking nssi_client.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <nssi_client.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: nssi_client.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: nssi_client.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: nssi_client.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: nssi_client.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: nssi_client.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: nssi_client.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: nssi_client.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: nssi_client.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: nssi_client.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for nssi_client.h" >&5
-$as_echo_n "checking for nssi_client.h... " >&6; }
-if test "${ac_cv_header_nssi_client_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_nssi_client_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_nssi_client_h" >&5
-$as_echo "$ac_cv_header_nssi_client_h" >&6; }
+        ac_fn_cxx_check_header_mongrel "$LINENO" "nssi_client.h" "ac_cv_header_nssi_client_h" "$ac_includes_default"
+if test "x$ac_cv_header_nssi_client_h" = xyes; then :
 
-fi
-if test "x$ac_cv_header_nssi_client_h" = x""yes; then
-  :
 else
   ac_nssi_ok=no
 fi
@@ -27892,19 +25212,14 @@ fi
 
 if test x"$ac_nssi_ok" = xyes; then
 
-
-{ $as_echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
 $as_echo_n "checking for clock_gettime in -lrt... " >&6; }
-if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then
+if ${ac_cv_lib_rt_clock_gettime+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lrt  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -27930,43 +25245,18 @@ return clock_gettime ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_cxx_try_link "$LINENO"; then :
   ac_cv_lib_rt_clock_gettime=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_rt_clock_gettime=no
+  ac_cv_lib_rt_clock_gettime=no
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
 $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
-if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then
+if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBRT 1
 _ACEOF
@@ -27976,112 +25266,11 @@ _ACEOF
 fi
 
 
-
-
-
-
-
-for ac_func in clock_gettime gettimeofday fdatasync pthread_yield sched_yield
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-#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 ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_func in clock_gettime gettimeofday fdatasync pthread_yield sched_yield
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -28104,42 +25293,42 @@ done
 
                 case $flag in
                         none)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works without any additional flags" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works without any additional flags" >&5
 $as_echo_n "checking whether nssi works without any additional flags... " >&6; }
                         ;;
 
                         -l*)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works with library $flag" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works with library $flag" >&5
 $as_echo_n "checking whether nssi works with library $flag... " >&6; }
                         EXTRA_LIBS="$flag"
                         ;;
 
                         -*)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works with $flag" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works with $flag" >&5
 $as_echo_n "checking whether nssi works with $flag... " >&6; }
                         EXTRA_LIBS="$flag"
                         ;;
 
                         all_portals)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works with ${PORTALS_LIBS}" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works with ${PORTALS_LIBS}" >&5
 $as_echo_n "checking whether nssi works with ${PORTALS_LIBS}... " >&6; }
                         EXTRA_LIBS="${PORTALS_LIBS}"
                         ;;
 
                         portals_plus_libcpp)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works with ${PORTALS_LIBS}" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works with ${PORTALS_LIBS}" >&5
 $as_echo_n "checking whether nssi works with ${PORTALS_LIBS}... " >&6; }
                         EXTRA_LIBS="${PORTALS_LIBS}"
                         ;;
 
                         portals_plus_pablo)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works with ${PORTALS_LIBS} ${PABLO_LIBS}" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works with ${PORTALS_LIBS} ${PABLO_LIBS}" >&5
 $as_echo_n "checking whether nssi works with ${PORTALS_LIBS} ${PABLO_LIBS}... " >&6; }
                         EXTRA_LIBS="${PORTALS_LIBS} ${PABLO_LIBS}"
                         ;;
 
                         infiniband)
-                        { $as_echo "$as_me:$LINENO: checking whether nssi works with ${INFINIBAND_LIBS}" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nssi works with ${INFINIBAND_LIBS}" >&5
 $as_echo_n "checking whether nssi works with ${INFINIBAND_LIBS}... " >&6; }
                         EXTRA_LIBS="${INFINIBAND_LIBS}"
                         ;;
@@ -28156,11 +25345,7 @@ $as_echo_n "checking whether nssi works with ${INFINIBAND_LIBS}... " >&6; }
                 CFLAGS="$CFLAGS $NSSI_CFLAGS $EXTRA_FLAGS"
 
 
-                                cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "nssi_client.h"
 #ifdef FC_DUMMY_MAIN
@@ -28182,38 +25367,13 @@ nssi_remote_pid server_id;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_cxx_try_link "$LINENO"; then :
   ac_nssi_ok=yes;
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_nssi_ok=no;
+  ac_nssi_ok=no;
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
 
                 LDFLAGS="$save_LDFLAGS"
@@ -28221,7 +25381,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
                 CFLAGS="$save_CFLAGS"
                 CPPFLAGS="$save_CPPFLAGS"
 
-                { $as_echo "$as_me:$LINENO: result: $ac_nssi_ok" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_nssi_ok" >&5
 $as_echo "$ac_nssi_ok" >&6; }
                 if test "x$ac_nssi_ok" = xyes; then
                         NSSI_LIBS="$NSSI_LIBS $EXTRA_LIBS";
@@ -28262,9 +25422,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
 if test x"$ac_nssi_ok" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NSSI 1
-_ACEOF
+$as_echo "#define HAVE_NSSI 1" >>confdefs.h
 
         :
 else
@@ -28290,7 +25448,7 @@ fi
 
 
 # Check whether --with-dataspaces was given.
-if test "${with_dataspaces+set}" = set; then
+if test "${with_dataspaces+set}" = set; then :
   withval=$with_dataspaces; DATASPACES_LDFLAGS="-L$withval/lib";
          DATASPACES_CPPFLAGS="-I$withval/include";
 else
@@ -28313,7 +25471,7 @@ else
 
 
 # Check whether --with-dataspaces-incdir was given.
-if test "${with_dataspaces_incdir+set}" = set; then
+if test "${with_dataspaces_incdir+set}" = set; then :
   withval=$with_dataspaces_incdir; DATASPACES_INCDIR=$withval
                  with_dataspaces=detailed
 fi
@@ -28321,7 +25479,7 @@ fi
 
 
 # Check whether --with-dataspaces-libdir was given.
-if test "${with_dataspaces_libdir+set}" = set; then
+if test "${with_dataspaces_libdir+set}" = set; then :
   withval=$with_dataspaces_libdir; DATASPACES_LIBDIR=$withval
                  with_dataspaces=detailed
 fi
@@ -28360,146 +25518,12 @@ fi
     CPPFLAGS="$CPPFLAGS $DATASPACES_CPPFLAGS"
 
     if test -z "${HAVE_DATASPACES_TRUE}"; then
-
-for ac_header in dataspaces.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+            for ac_header in dataspaces.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "dataspaces.h" "ac_cv_header_dataspaces_h" "$ac_includes_default"
+if test "x$ac_cv_header_dataspaces_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_DATASPACES_H 1
 _ACEOF
 
 else
@@ -28520,11 +25544,7 @@ 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -28543,30 +25563,10 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -28575,14 +25575,9 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         elif test "x${ac_infiniband_lib_ok}" == "xyes"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -28601,30 +25596,10 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DATASPACES_LIBS="-ldspaces -ldscommon -ldart -lrdmacm"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -28633,14 +25608,9 @@ else
 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -28659,30 +25629,10 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -28691,14 +25641,9 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 	elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -28717,30 +25662,10 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -28749,14 +25674,9 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 	elif test "x${ac_pami_lib_ok}" == "xyes"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -28775,30 +25695,10 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -28807,14 +25707,9 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         else
-                        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -28833,30 +25728,10 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -28865,7 +25740,6 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         fi
     fi
@@ -28881,9 +25755,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_DATASPACES_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DATASPACES 1
-_ACEOF
+$as_echo "#define HAVE_DATASPACES 1" >>confdefs.h
 
             :
     else
@@ -28906,7 +25778,7 @@ fi
 
 
 # Check whether --with-dimes was given.
-if test "${with_dimes+set}" = set; then
+if test "${with_dimes+set}" = set; then :
   withval=$with_dimes; DIMES_LDFLAGS="-L$withval/lib";
          DIMES_CPPFLAGS="-I$withval/include";
 else
@@ -28929,7 +25801,7 @@ else
 
 
 # Check whether --with-dimes-incdir was given.
-if test "${with_dimes_incdir+set}" = set; then
+if test "${with_dimes_incdir+set}" = set; then :
   withval=$with_dimes_incdir; DIMES_INCDIR=$withval
                  with_dimes=detailed
 fi
@@ -28937,7 +25809,7 @@ fi
 
 
 # Check whether --with-dimes-libdir was given.
-if test "${with_dimes_libdir+set}" = set; then
+if test "${with_dimes_libdir+set}" = set; then :
   withval=$with_dimes_libdir; DIMES_LIBDIR=$withval
                  with_dimes=detailed
 fi
@@ -28990,146 +25862,12 @@ fi
     CPPFLAGS="$CPPFLAGS $DIMES_CPPFLAGS"
 
     if test -z "${HAVE_DIMES_TRUE}"; then
-
-for ac_header in dimes_interface.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+            for ac_header in dimes_interface.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "dimes_interface.h" "ac_cv_header_dimes_interface_h" "$ac_includes_default"
+if test "x$ac_cv_header_dimes_interface_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_DIMES_INTERFACE_H 1
 _ACEOF
 
 else
@@ -29150,11 +25888,7 @@ done
     if test -z "${HAVE_DIMES_TRUE}"; then
         # Check for the DataSpaces/DIMES library and headers
         if test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dimes_interface.h"
 #ifdef FC_DUMMY_MAIN
@@ -29173,33 +25907,10 @@ int err; dimes_put_sync_all();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
   DIMES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DIMES_TRUE=
   HAVE_DIMES_FALSE='#'
 else
@@ -29208,16 +25919,10 @@ else
 fi
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 	elif test "x${ac_infiniband_lib_ok}" == "xyes"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dimes_interface.h"
 #ifdef FC_DUMMY_MAIN
@@ -29236,30 +25941,10 @@ int err; dimes_put_sync_all();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DIMES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DIMES_TRUE=
   HAVE_DIMES_FALSE='#'
 else
@@ -29268,14 +25953,9 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 	elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dimes_interface.h"
 #ifdef FC_DUMMY_MAIN
@@ -29294,30 +25974,10 @@ int err; dimes_put_sync_all();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DIMES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DIMES_TRUE=
   HAVE_DIMES_FALSE='#'
 else
@@ -29326,14 +25986,9 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 	elif test "x${ac_pami_lib_ok}" == "xyes"; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dimes_interface.h"
 #ifdef FC_DUMMY_MAIN
@@ -29352,30 +26007,10 @@ int err; dimes_put_sync_all();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DIMES_LIBS="-ldspaces -ldscommon -ldart"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DIMES_TRUE=
   HAVE_DIMES_FALSE='#'
 else
@@ -29384,7 +26019,6 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         else
              if false; then
@@ -29409,200 +26043,64 @@ fi
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_DIMES_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DIMES 1
-_ACEOF
+$as_echo "#define HAVE_DIMES 1" >>confdefs.h
 
             :
     else
 
-            :
-    fi
-
-fi
-
-
-
- if true; then
-  HAVE_DMALLOC_TRUE=
-  HAVE_DMALLOC_FALSE='#'
-else
-  HAVE_DMALLOC_TRUE='#'
-  HAVE_DMALLOC_FALSE=
-fi
-
-
-
-# Check whether --with-dmalloc was given.
-if test "${with_dmalloc+set}" = set; then
-  withval=$with_dmalloc; DMALLOC_LDFLAGS="-L$withval/lib";
-         DMALLOC_CPPFLAGS="-I$withval/include";
-else
-  with_dmalloc=no
-fi
-
-
-if test "x$with_dmalloc" == "xno"; then
-
-     if false; then
-  HAVE_DMALLOC_TRUE=
-  HAVE_DMALLOC_FALSE='#'
-else
-  HAVE_DMALLOC_TRUE='#'
-  HAVE_DMALLOC_FALSE=
-fi
-
-
-else
-
-    save_CPPFLAGS="$CPPFLAGS"
-    save_LIBS="$LIBS"
-    save_LDFLAGS="$LDFLAGS"
-    LIBS="$LIBS -ldmalloc"
-    LDFLAGS="$LDFLAGS $DMALLOC_LDFLAGS"
-    CPPFLAGS="$CPPFLAGS $DMALLOC_CPPFLAGS"
-
-    if test -z "${HAVE_DMALLOC_TRUE}"; then
-
-for ac_header in dmalloc.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+            :
+    fi
 
-	ac_header_compiler=no
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
 
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-  ac_header_preproc=no
+ if true; then
+  HAVE_DMALLOC_TRUE=
+  HAVE_DMALLOC_FALSE='#'
+else
+  HAVE_DMALLOC_TRUE='#'
+  HAVE_DMALLOC_FALSE=
 fi
 
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
 
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
+# Check whether --with-dmalloc was given.
+if test "${with_dmalloc+set}" = set; then :
+  withval=$with_dmalloc; DMALLOC_LDFLAGS="-L$withval/lib";
+         DMALLOC_CPPFLAGS="-I$withval/include";
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
+  with_dmalloc=no
 fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
 
+
+if test "x$with_dmalloc" == "xno"; then
+
+     if false; then
+  HAVE_DMALLOC_TRUE=
+  HAVE_DMALLOC_FALSE='#'
+else
+  HAVE_DMALLOC_TRUE='#'
+  HAVE_DMALLOC_FALSE=
 fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+
+
+else
+
+    save_CPPFLAGS="$CPPFLAGS"
+    save_LIBS="$LIBS"
+    save_LDFLAGS="$LDFLAGS"
+    LIBS="$LIBS -ldmalloc"
+    LDFLAGS="$LDFLAGS $DMALLOC_LDFLAGS"
+    CPPFLAGS="$CPPFLAGS $DMALLOC_CPPFLAGS"
+
+    if test -z "${HAVE_DMALLOC_TRUE}"; then
+        for ac_header in dmalloc.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "dmalloc.h" "ac_cv_header_dmalloc_h" "$ac_includes_default"
+if test "x$ac_cv_header_dmalloc_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_DMALLOC_H 1
 _ACEOF
 
 else
@@ -29621,11 +26119,7 @@ done
     fi
 
     # Check for the dmalloc library and headers
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dmalloc.h"
 #ifdef FC_DUMMY_MAIN
@@ -29644,30 +26138,10 @@ char * s; s=malloc(sizeof(char)*10); free(s);
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   DMALLOC_LIBS="-ldmallocth"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_DMALLOC_TRUE=
   HAVE_DMALLOC_FALSE='#'
 else
@@ -29676,7 +26150,6 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
     LIBS="$save_LIBS"
@@ -29690,9 +26163,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_DMALLOC_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DMALLOC 1
-_ACEOF
+$as_echo "#define HAVE_DMALLOC 1" >>confdefs.h
 
             :
     else
@@ -29703,7 +26174,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for Lustre ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for Lustre ===" >&5
 $as_echo "$as_me: === checking for Lustre ===" >&6;}
 
  if true; then
@@ -29717,7 +26188,7 @@ fi
 
 
 # Check whether --with-lustre was given.
-if test "${with_lustre+set}" = set; then
+if test "${with_lustre+set}" = set; then :
   withval=$with_lustre; :
 else
   with_lustre=no
@@ -29756,146 +26227,12 @@ if test -z "${HAVE_LUSTRE_TRUE}"; then
     CPPFLAGS="$CPPFLAGS $LUSTRE_CPPFLAGS"
 
     oldheader=no
-
-for ac_header in lustre/lustreapi.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+    for ac_header in lustre/lustreapi.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "lustre/lustreapi.h" "ac_cv_header_lustre_lustreapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_lustre_lustreapi_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_LUSTRE_LUSTREAPI_H 1
 _ACEOF
 
 else
@@ -29913,146 +26250,12 @@ done
 
 
         if test -z "${HAVE_LUSTRE_FALSE}"; then
-
-for ac_header in lustre/liblustreapi.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_header in lustre/liblustreapi.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "lustre/liblustreapi.h" "ac_cv_header_lustre_liblustreapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_lustre_liblustreapi_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_LUSTRE_LIBLUSTREAPI_H 1
 _ACEOF
   if true; then
   HAVE_LUSTRE_TRUE=
@@ -30079,14 +26282,10 @@ done
     fi
 
     if test -z "${HAVE_LUSTRE_TRUE}"; then
-                { $as_echo "$as_me:$LINENO: checking if lustre code can be linked with $LUSTRE_LDFLAGS" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lustre code can be linked with $LUSTRE_LDFLAGS" >&5
 $as_echo_n "checking if lustre code can be linked with $LUSTRE_LDFLAGS... " >&6; }
         if test "${oldheader}" == "no" ; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
                  #include "lustre/lustreapi.h"
@@ -30108,34 +26307,11 @@ llapi_lov_get_uuids(fd, uuids, &num_ost);
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_LUSTRE_TRUE=
   HAVE_LUSTRE_FALSE='#'
 else
@@ -30143,20 +26319,14 @@ else
   HAVE_LUSTRE_FALSE=
 fi
 
-                 { $as_echo "$as_me:$LINENO: result: no" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         else
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
                  #include "lustre/liblustreapi.h"
@@ -30178,34 +26348,11 @@ llapi_lov_get_uuids(fd, uuids, &num_ost);
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_LUSTRE_TRUE=
   HAVE_LUSTRE_FALSE='#'
 else
@@ -30213,14 +26360,12 @@ else
   HAVE_LUSTRE_FALSE=
 fi
 
-                 { $as_echo "$as_me:$LINENO: result: no" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
         fi
     fi
 
@@ -30228,14 +26373,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
         if test "x$with_lustre" != "xyes"; then
             LUSTRE_LDFLAGS="-L${with_lustre}/lib"
             LDFLAGS="$save_LDFLAGS $LUSTRE_LDFLAGS"
-                        { $as_echo "$as_me:$LINENO: checking if lustre code can be linked with $LUSTRE_LDFLAGS" >&5
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lustre code can be linked with $LUSTRE_LDFLAGS" >&5
 $as_echo_n "checking if lustre code can be linked with $LUSTRE_LDFLAGS... " >&6; }
             if test "${oldheader}" == "no" ; then
-                cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
                      #include "lustre/lustreapi.h"
@@ -30252,32 +26393,12 @@ cat >>conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
-llapi_lov_get_uuids(fd, uuids, &num_ost);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+llapi_lov_get_uuids(fd, uuids, &num_ost);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
    if true; then
   HAVE_LUSTRE_TRUE=
   HAVE_LUSTRE_FALSE='#'
@@ -30286,13 +26407,10 @@ else
   HAVE_LUSTRE_FALSE=
 fi
 
-                     { $as_echo "$as_me:$LINENO: result: yes" >&5
+                     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_LUSTRE_TRUE=
   HAVE_LUSTRE_FALSE='#'
 else
@@ -30300,20 +26418,14 @@ else
   HAVE_LUSTRE_FALSE=
 fi
 
-                    { $as_echo "$as_me:$LINENO: result: no" >&5
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
             else
-                cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
                      #include "lustre/liblustreapi.h"
@@ -30335,27 +26447,7 @@ llapi_lov_get_uuids(fd, uuids, &num_ost);
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
+if ac_fn_c_try_link "$LINENO"; then :
    if true; then
   HAVE_LUSTRE_TRUE=
   HAVE_LUSTRE_FALSE='#'
@@ -30364,13 +26456,10 @@ else
   HAVE_LUSTRE_FALSE=
 fi
 
-                     { $as_echo "$as_me:$LINENO: result: yes" >&5
+                     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_LUSTRE_TRUE=
   HAVE_LUSTRE_FALSE='#'
 else
@@ -30378,14 +26467,12 @@ else
   HAVE_LUSTRE_FALSE=
 fi
 
-                    { $as_echo "$as_me:$LINENO: result: no" >&5
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
             fi
         fi
     fi
@@ -30401,9 +26488,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_LUSTRE_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LUSTRE 1
-_ACEOF
+$as_echo "#define HAVE_LUSTRE 1" >>confdefs.h
 
             :
     else
@@ -30414,7 +26499,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for FGR ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for FGR ===" >&5
 $as_echo "$as_me: === checking for FGR ===" >&6;}
 
  if true; then
@@ -30428,7 +26513,7 @@ fi
 
 
 # Check whether --with-fgr was given.
-if test "${with_fgr+set}" = set; then
+if test "${with_fgr+set}" = set; then :
   withval=$with_fgr; FGR_LDFLAGS="-L$withval/lib";
          FGR_LIBS="-lfgr";
          FGR_CPPFLAGS="-I$withval/include";
@@ -30470,9 +26555,7 @@ else
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_FGR_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FGR 1
-_ACEOF
+$as_echo "#define HAVE_FGR 1" >>confdefs.h
 
             :
     else
@@ -30483,7 +26566,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for GLIB ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for GLIB ===" >&5
 $as_echo "$as_me: === checking for GLIB ===" >&6;}
 
  if true; then
@@ -30497,7 +26580,7 @@ fi
 
 
 # Check whether --with-glib was given.
-if test "${with_glib+set}" = set; then
+if test "${with_glib+set}" = set; then :
   withval=$with_glib; GLIB_LDFLAGS="-L$withval/lib";
          GLIB_LIBS="-lglib-2.0";
          GLIB_CPPFLAGS="-I$withval/include/glib-2.0 -I$withval/lib/glib-2.0/include";
@@ -30527,11 +26610,7 @@ else
     CPPFLAGS="$CPPFLAGS $GLIB_CPPFLAGS"
 
     # Check for the GLIB library and headers
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "glib.h"
 #ifdef FC_DUMMY_MAIN
@@ -30550,30 +26629,10 @@ GHashTable * ght
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   GLIB_LIBS="-lglib-2.0"
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_GLIB_TRUE=
   HAVE_GLIB_FALSE='#'
 else
@@ -30582,7 +26641,6 @@ else
 fi
 
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
     LIBS="$save_LIBS"
@@ -30596,9 +26654,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_GLIB_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GLIB 1
-_ACEOF
+$as_echo "#define HAVE_GLIB 1" >>confdefs.h
 
             :
     else
@@ -30609,21 +26665,21 @@ fi
 
 
 # Check whether --with-installed was given.
-if test "${with_installed+set}" = set; then
+if test "${with_installed+set}" = set; then :
   withval=$with_installed; with_installed_specified=1
 fi
 
 
 # Check whether --with-local was given.
-if test "${with_local+set}" = set; then
+if test "${with_local+set}" = set; then :
   withval=$with_local; with_local_specified=1
 fi
 
 # Extract the first word of "csh", so it can be a program name with args.
 set dummy csh; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CSH+set}" = set; then
+if ${ac_cv_path_CSH+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $CSH in
@@ -30636,14 +26692,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_CSH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   ;;
@@ -30651,10 +26707,10 @@ esac
 fi
 CSH=$ac_cv_path_CSH
 if test -n "$CSH"; then
-  { $as_echo "$as_me:$LINENO: result: $CSH" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CSH" >&5
 $as_echo "$CSH" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -30684,9 +26740,9 @@ fi
 
 # Extract the first word of "cygpath", so it can be a program name with args.
 set dummy cygpath; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_PATHPROG+set}" = set; then
+if ${ac_cv_prog_PATHPROG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$PATHPROG"; then
@@ -30697,14 +26753,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_PATHPROG="cygpath -w"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_prog_PATHPROG" && ac_cv_prog_PATHPROG="echo"
@@ -30712,10 +26768,10 @@ fi
 fi
 PATHPROG=$ac_cv_prog_PATHPROG
 if test -n "$PATHPROG"; then
-  { $as_echo "$as_me:$LINENO: result: $PATHPROG" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATHPROG" >&5
 $as_echo "$PATHPROG" >&6; }
 else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -30740,7 +26796,7 @@ datatap_dir=""
 
 
 # Check whether --with-datatap was given.
-if test "${with_datatap+set}" = set; then
+if test "${with_datatap+set}" = set; then :
   withval=$with_datatap;  ac_with_datatap=$withval
 else
   with_datatap=no
@@ -30749,9 +26805,7 @@ fi
 
 if test "x$with_datatap" = "xno"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_DATATAP 1
-_ACEOF
+$as_echo "#define NO_DATATAP 1" >>confdefs.h
 
 	datatap=disable
 	temptest=disable
@@ -30759,9 +26813,7 @@ _ACEOF
 elif test x"$with_datatap" = xyes -o x"$with_datatap" = xcheck; then
 
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_DATATAP 0
-_ACEOF
+$as_echo "#define NO_DATATAP 0" >>confdefs.h
 
 
 	if test x"$ac_with_infiniband" = xyes; then
@@ -30774,7 +26826,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ibpbio was given.
-if test "${with_ibpbio+set}" = set; then
+if test "${with_ibpbio+set}" = set; then :
   withval=$with_ibpbio;
 fi
 
@@ -30786,9 +26838,9 @@ if test `echo $with_ibpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ibpbio=`pwd`/$with_ibpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ibpbio package" >&5
 $as_echo_n "checking needed include args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_include_arg+set}" = set; then
+if ${cercs_cv_ibpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -30845,11 +26897,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:30848: searching for $search_list " >&5
+echo "configure:26900: 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:30852: first found $tmp_search_results " >&5
+	echo "configure:26904: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30864,7 +26916,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_include_arg" >&5
 $as_echo "$cercs_cv_ibpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ibpbio_include_arg"; then
 arg="$cercs_cv_ibpbio_include_arg"
@@ -30878,9 +26930,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ibpbio package" >&5
 $as_echo_n "checking needed link args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_link_dir+set}" = set; then
+if ${cercs_cv_ibpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -30937,11 +26989,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:30940: searching for $search_list " >&5
+echo "configure:26992: 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:30944: first found $tmp_search_results " >&5
+	echo "configure:26996: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30958,7 +27010,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_link_dir" >&5
 $as_echo "$cercs_cv_ibpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -30989,7 +27041,7 @@ else
 
 
 # Check whether --with-ibpbio was given.
-if test "${with_ibpbio+set}" = set; then
+if test "${with_ibpbio+set}" = set; then :
   withval=$with_ibpbio;
 fi
 
@@ -31001,20 +27053,20 @@ if test `echo $with_ibpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ibpbio=`pwd`/$with_ibpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ibpbio package" >&5
 $as_echo_n "checking needed include args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_include_arg+set}" = set; then
+if ${cercs_cv_ibpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:31013: searching for $search_list " >&5
+echo "configure:27065: 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:31017: first found $tmp_search_results " >&5
+	echo "configure:27069: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31029,7 +27081,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_include_arg" >&5
 $as_echo "$cercs_cv_ibpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ibpbio_include_arg"; then
 arg="$cercs_cv_ibpbio_include_arg"
@@ -31043,20 +27095,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ibpbio package" >&5
 $as_echo_n "checking needed link args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_link_dir+set}" = set; then
+if ${cercs_cv_ibpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:31055: searching for $search_list " >&5
+echo "configure:27107: 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:31059: first found $tmp_search_results " >&5
+	echo "configure:27111: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31073,7 +27125,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_link_dir" >&5
 $as_echo "$cercs_cv_ibpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -31109,7 +27161,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ffs was given.
-if test "${with_ffs+set}" = set; then
+if test "${with_ffs+set}" = set; then :
   withval=$with_ffs;
 fi
 
@@ -31121,9 +27173,9 @@ if test `echo $with_ffs | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ffs=`pwd`/$with_ffs
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ffs package" >&5
 $as_echo_n "checking needed include args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_include_arg+set}" = set; then
+if ${cercs_cv_ffs_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -31180,11 +27232,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:31183: searching for $search_list " >&5
+echo "configure:27235: 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:31187: first found $tmp_search_results " >&5
+	echo "configure:27239: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31199,7 +27251,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_include_arg" >&5
 $as_echo "$cercs_cv_ffs_include_arg" >&6; }
 if test -n "$cercs_cv_ffs_include_arg"; then
 arg="$cercs_cv_ffs_include_arg"
@@ -31213,9 +27265,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ffs package" >&5
 $as_echo_n "checking needed link args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_link_dir+set}" = set; then
+if ${cercs_cv_ffs_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -31272,11 +27324,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:31275: searching for $search_list " >&5
+echo "configure:27327: 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:31279: first found $tmp_search_results " >&5
+	echo "configure:27331: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31293,7 +27345,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_link_dir" >&5
 $as_echo "$cercs_cv_ffs_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -31324,7 +27376,7 @@ else
 
 
 # Check whether --with-ffs was given.
-if test "${with_ffs+set}" = set; then
+if test "${with_ffs+set}" = set; then :
   withval=$with_ffs;
 fi
 
@@ -31336,20 +27388,20 @@ if test `echo $with_ffs | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ffs=`pwd`/$with_ffs
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ffs package" >&5
 $as_echo_n "checking needed include args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_include_arg+set}" = set; then
+if ${cercs_cv_ffs_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:31348: searching for $search_list " >&5
+echo "configure:27400: 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:31352: first found $tmp_search_results " >&5
+	echo "configure:27404: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31364,7 +27416,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_include_arg" >&5
 $as_echo "$cercs_cv_ffs_include_arg" >&6; }
 if test -n "$cercs_cv_ffs_include_arg"; then
 arg="$cercs_cv_ffs_include_arg"
@@ -31378,20 +27430,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ffs package" >&5
 $as_echo_n "checking needed link args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_link_dir+set}" = set; then
+if ${cercs_cv_ffs_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:31390: searching for $search_list " >&5
+echo "configure:27442: 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:31394: first found $tmp_search_results " >&5
+	echo "configure:27446: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31408,7 +27460,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_link_dir" >&5
 $as_echo "$cercs_cv_ffs_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -31444,7 +27496,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-gen_thread was given.
-if test "${with_gen_thread+set}" = set; then
+if test "${with_gen_thread+set}" = set; then :
   withval=$with_gen_thread;
 fi
 
@@ -31456,9 +27508,9 @@ if test `echo $with_gen_thread | sed 's/\(.\).*/\1/g'` != "/"; then
 with_gen_thread=`pwd`/$with_gen_thread
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for gen_thread package" >&5
 $as_echo_n "checking needed include args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_include_arg+set}" = set; then
+if ${cercs_cv_gen_thread_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -31515,11 +27567,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:31518: searching for $search_list " >&5
+echo "configure:27570: 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:31522: first found $tmp_search_results " >&5
+	echo "configure:27574: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31534,7 +27586,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_include_arg" >&5
 $as_echo "$cercs_cv_gen_thread_include_arg" >&6; }
 if test -n "$cercs_cv_gen_thread_include_arg"; then
 arg="$cercs_cv_gen_thread_include_arg"
@@ -31548,9 +27600,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for gen_thread package" >&5
 $as_echo_n "checking needed link args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_link_dir+set}" = set; then
+if ${cercs_cv_gen_thread_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -31607,11 +27659,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:31610: searching for $search_list " >&5
+echo "configure:27662: 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:31614: first found $tmp_search_results " >&5
+	echo "configure:27666: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31628,7 +27680,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_link_dir" >&5
 $as_echo "$cercs_cv_gen_thread_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -31659,7 +27711,7 @@ else
 
 
 # Check whether --with-gen_thread was given.
-if test "${with_gen_thread+set}" = set; then
+if test "${with_gen_thread+set}" = set; then :
   withval=$with_gen_thread;
 fi
 
@@ -31671,20 +27723,20 @@ if test `echo $with_gen_thread | sed 's/\(.\).*/\1/g'` != "/"; then
 with_gen_thread=`pwd`/$with_gen_thread
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for gen_thread package" >&5
 $as_echo_n "checking needed include args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_include_arg+set}" = set; then
+if ${cercs_cv_gen_thread_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:31683: searching for $search_list " >&5
+echo "configure:27735: 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:31687: first found $tmp_search_results " >&5
+	echo "configure:27739: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31699,7 +27751,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_include_arg" >&5
 $as_echo "$cercs_cv_gen_thread_include_arg" >&6; }
 if test -n "$cercs_cv_gen_thread_include_arg"; then
 arg="$cercs_cv_gen_thread_include_arg"
@@ -31713,20 +27765,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for gen_thread package" >&5
 $as_echo_n "checking needed link args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_link_dir+set}" = set; then
+if ${cercs_cv_gen_thread_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:31725: searching for $search_list " >&5
+echo "configure:27777: 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:31729: first found $tmp_search_results " >&5
+	echo "configure:27781: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31743,7 +27795,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_link_dir" >&5
 $as_echo "$cercs_cv_gen_thread_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -31802,7 +27854,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ptlpbio was given.
-if test "${with_ptlpbio+set}" = set; then
+if test "${with_ptlpbio+set}" = set; then :
   withval=$with_ptlpbio;
 fi
 
@@ -31814,9 +27866,9 @@ if test `echo $with_ptlpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ptlpbio=`pwd`/$with_ptlpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ptlpbio package" >&5
 $as_echo_n "checking needed include args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_include_arg+set}" = set; then
+if ${cercs_cv_ptlpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -31873,11 +27925,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:31876: searching for $search_list " >&5
+echo "configure:27928: 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:31880: first found $tmp_search_results " >&5
+	echo "configure:27932: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31892,7 +27944,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_include_arg" >&5
 $as_echo "$cercs_cv_ptlpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ptlpbio_include_arg"; then
 arg="$cercs_cv_ptlpbio_include_arg"
@@ -31906,9 +27958,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ptlpbio package" >&5
 $as_echo_n "checking needed link args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_link_dir+set}" = set; then
+if ${cercs_cv_ptlpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -31965,11 +28017,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:31968: searching for $search_list " >&5
+echo "configure:28020: 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:31972: first found $tmp_search_results " >&5
+	echo "configure:28024: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31986,7 +28038,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_link_dir" >&5
 $as_echo "$cercs_cv_ptlpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -32017,7 +28069,7 @@ else
 
 
 # Check whether --with-ptlpbio was given.
-if test "${with_ptlpbio+set}" = set; then
+if test "${with_ptlpbio+set}" = set; then :
   withval=$with_ptlpbio;
 fi
 
@@ -32029,20 +28081,20 @@ if test `echo $with_ptlpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ptlpbio=`pwd`/$with_ptlpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ptlpbio package" >&5
 $as_echo_n "checking needed include args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_include_arg+set}" = set; then
+if ${cercs_cv_ptlpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:32041: searching for $search_list " >&5
+echo "configure:28093: 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:32045: first found $tmp_search_results " >&5
+	echo "configure:28097: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32057,7 +28109,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_include_arg" >&5
 $as_echo "$cercs_cv_ptlpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ptlpbio_include_arg"; then
 arg="$cercs_cv_ptlpbio_include_arg"
@@ -32071,20 +28123,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ptlpbio package" >&5
 $as_echo_n "checking needed link args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_link_dir+set}" = set; then
+if ${cercs_cv_ptlpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:32083: searching for $search_list " >&5
+echo "configure:28135: 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:32087: first found $tmp_search_results " >&5
+	echo "configure:28139: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32101,7 +28153,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_link_dir" >&5
 $as_echo "$cercs_cv_ptlpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -32140,23 +28192,19 @@ fi
 	else
 		echo "Neither portals nor infiniband found. Disabling datatap"
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_DATATAP 1
-_ACEOF
+$as_echo "#define NO_DATATAP 1" >>confdefs.h
 
 		datatap=disable
 		temptest=disable
 	fi
 else
-	{ $as_echo "$as_me:$LINENO: Datatap with custom library path: $withval" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: Datatap with custom library path: $withval" >&5
 $as_echo "$as_me: Datatap with custom library path: $withval" >&6;}
 
 	datatap_dir=$withval
 
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_DATATAP 0
-_ACEOF
+$as_echo "#define NO_DATATAP 0" >>confdefs.h
 
 
 	if test x"$ac_with_infiniband" = xyes; then
@@ -32169,7 +28217,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ibpbio was given.
-if test "${with_ibpbio+set}" = set; then
+if test "${with_ibpbio+set}" = set; then :
   withval=$with_ibpbio;
 fi
 
@@ -32181,9 +28229,9 @@ if test `echo $with_ibpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ibpbio=`pwd`/$with_ibpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ibpbio package" >&5
 $as_echo_n "checking needed include args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_include_arg+set}" = set; then
+if ${cercs_cv_ibpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -32240,11 +28288,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:32243: searching for $search_list " >&5
+echo "configure:28291: 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:32247: first found $tmp_search_results " >&5
+	echo "configure:28295: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32259,7 +28307,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_include_arg" >&5
 $as_echo "$cercs_cv_ibpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ibpbio_include_arg"; then
 arg="$cercs_cv_ibpbio_include_arg"
@@ -32273,9 +28321,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ibpbio package" >&5
 $as_echo_n "checking needed link args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_link_dir+set}" = set; then
+if ${cercs_cv_ibpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -32332,11 +28380,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:32335: searching for $search_list " >&5
+echo "configure:28383: 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:32339: first found $tmp_search_results " >&5
+	echo "configure:28387: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32353,7 +28401,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_link_dir" >&5
 $as_echo "$cercs_cv_ibpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -32384,7 +28432,7 @@ else
 
 
 # Check whether --with-ibpbio was given.
-if test "${with_ibpbio+set}" = set; then
+if test "${with_ibpbio+set}" = set; then :
   withval=$with_ibpbio;
 fi
 
@@ -32396,20 +28444,20 @@ if test `echo $with_ibpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ibpbio=`pwd`/$with_ibpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ibpbio package" >&5
 $as_echo_n "checking needed include args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_include_arg+set}" = set; then
+if ${cercs_cv_ibpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:32408: searching for $search_list " >&5
+echo "configure:28456: 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:32412: first found $tmp_search_results " >&5
+	echo "configure:28460: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32424,7 +28472,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_include_arg" >&5
 $as_echo "$cercs_cv_ibpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ibpbio_include_arg"; then
 arg="$cercs_cv_ibpbio_include_arg"
@@ -32438,20 +28486,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ibpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ibpbio package" >&5
 $as_echo_n "checking needed link args for ibpbio package... " >&6; }
-if test "${cercs_cv_ibpbio_link_dir+set}" = set; then
+if ${cercs_cv_ibpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:32450: searching for $search_list " >&5
+echo "configure:28498: 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:32454: first found $tmp_search_results " >&5
+	echo "configure:28502: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32468,7 +28516,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ibpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ibpbio_link_dir" >&5
 $as_echo "$cercs_cv_ibpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -32504,7 +28552,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ffs was given.
-if test "${with_ffs+set}" = set; then
+if test "${with_ffs+set}" = set; then :
   withval=$with_ffs;
 fi
 
@@ -32516,9 +28564,9 @@ if test `echo $with_ffs | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ffs=`pwd`/$with_ffs
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ffs package" >&5
 $as_echo_n "checking needed include args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_include_arg+set}" = set; then
+if ${cercs_cv_ffs_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -32575,11 +28623,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:32578: searching for $search_list " >&5
+echo "configure:28626: 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:32582: first found $tmp_search_results " >&5
+	echo "configure:28630: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32594,7 +28642,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_include_arg" >&5
 $as_echo "$cercs_cv_ffs_include_arg" >&6; }
 if test -n "$cercs_cv_ffs_include_arg"; then
 arg="$cercs_cv_ffs_include_arg"
@@ -32608,9 +28656,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ffs package" >&5
 $as_echo_n "checking needed link args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_link_dir+set}" = set; then
+if ${cercs_cv_ffs_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -32667,11 +28715,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:32670: searching for $search_list " >&5
+echo "configure:28718: 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:32674: first found $tmp_search_results " >&5
+	echo "configure:28722: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32688,7 +28736,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_link_dir" >&5
 $as_echo "$cercs_cv_ffs_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -32719,7 +28767,7 @@ else
 
 
 # Check whether --with-ffs was given.
-if test "${with_ffs+set}" = set; then
+if test "${with_ffs+set}" = set; then :
   withval=$with_ffs;
 fi
 
@@ -32731,20 +28779,20 @@ if test `echo $with_ffs | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ffs=`pwd`/$with_ffs
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ffs package" >&5
 $as_echo_n "checking needed include args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_include_arg+set}" = set; then
+if ${cercs_cv_ffs_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:32743: searching for $search_list " >&5
+echo "configure:28791: 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:32747: first found $tmp_search_results " >&5
+	echo "configure:28795: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32759,7 +28807,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_include_arg" >&5
 $as_echo "$cercs_cv_ffs_include_arg" >&6; }
 if test -n "$cercs_cv_ffs_include_arg"; then
 arg="$cercs_cv_ffs_include_arg"
@@ -32773,20 +28821,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ffs package" >&5
 $as_echo_n "checking needed link args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_link_dir+set}" = set; then
+if ${cercs_cv_ffs_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:32785: searching for $search_list " >&5
+echo "configure:28833: 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:32789: first found $tmp_search_results " >&5
+	echo "configure:28837: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32803,7 +28851,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_link_dir" >&5
 $as_echo "$cercs_cv_ffs_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -32839,7 +28887,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-gen_thread was given.
-if test "${with_gen_thread+set}" = set; then
+if test "${with_gen_thread+set}" = set; then :
   withval=$with_gen_thread;
 fi
 
@@ -32851,9 +28899,9 @@ if test `echo $with_gen_thread | sed 's/\(.\).*/\1/g'` != "/"; then
 with_gen_thread=`pwd`/$with_gen_thread
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for gen_thread package" >&5
 $as_echo_n "checking needed include args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_include_arg+set}" = set; then
+if ${cercs_cv_gen_thread_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -32910,11 +28958,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:32913: searching for $search_list " >&5
+echo "configure:28961: 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:32917: first found $tmp_search_results " >&5
+	echo "configure:28965: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32929,7 +28977,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_include_arg" >&5
 $as_echo "$cercs_cv_gen_thread_include_arg" >&6; }
 if test -n "$cercs_cv_gen_thread_include_arg"; then
 arg="$cercs_cv_gen_thread_include_arg"
@@ -32943,9 +28991,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for gen_thread package" >&5
 $as_echo_n "checking needed link args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_link_dir+set}" = set; then
+if ${cercs_cv_gen_thread_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -33002,11 +29050,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:33005: searching for $search_list " >&5
+echo "configure:29053: 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:33009: first found $tmp_search_results " >&5
+	echo "configure:29057: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33023,7 +29071,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_link_dir" >&5
 $as_echo "$cercs_cv_gen_thread_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -33054,7 +29102,7 @@ else
 
 
 # Check whether --with-gen_thread was given.
-if test "${with_gen_thread+set}" = set; then
+if test "${with_gen_thread+set}" = set; then :
   withval=$with_gen_thread;
 fi
 
@@ -33066,20 +29114,20 @@ if test `echo $with_gen_thread | sed 's/\(.\).*/\1/g'` != "/"; then
 with_gen_thread=`pwd`/$with_gen_thread
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for gen_thread package" >&5
 $as_echo_n "checking needed include args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_include_arg+set}" = set; then
+if ${cercs_cv_gen_thread_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:33078: searching for $search_list " >&5
+echo "configure:29126: 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:33082: first found $tmp_search_results " >&5
+	echo "configure:29130: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33094,7 +29142,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_include_arg" >&5
 $as_echo "$cercs_cv_gen_thread_include_arg" >&6; }
 if test -n "$cercs_cv_gen_thread_include_arg"; then
 arg="$cercs_cv_gen_thread_include_arg"
@@ -33108,20 +29156,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for gen_thread package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for gen_thread package" >&5
 $as_echo_n "checking needed link args for gen_thread package... " >&6; }
-if test "${cercs_cv_gen_thread_link_dir+set}" = set; then
+if ${cercs_cv_gen_thread_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:33120: searching for $search_list " >&5
+echo "configure:29168: 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:33124: first found $tmp_search_results " >&5
+	echo "configure:29172: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33138,7 +29186,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_gen_thread_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_gen_thread_link_dir" >&5
 $as_echo "$cercs_cv_gen_thread_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -33197,7 +29245,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ptlpbio was given.
-if test "${with_ptlpbio+set}" = set; then
+if test "${with_ptlpbio+set}" = set; then :
   withval=$with_ptlpbio;
 fi
 
@@ -33209,9 +29257,9 @@ if test `echo $with_ptlpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ptlpbio=`pwd`/$with_ptlpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ptlpbio package" >&5
 $as_echo_n "checking needed include args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_include_arg+set}" = set; then
+if ${cercs_cv_ptlpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -33268,11 +29316,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:33271: searching for $search_list " >&5
+echo "configure:29319: 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:33275: first found $tmp_search_results " >&5
+	echo "configure:29323: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33287,7 +29335,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_include_arg" >&5
 $as_echo "$cercs_cv_ptlpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ptlpbio_include_arg"; then
 arg="$cercs_cv_ptlpbio_include_arg"
@@ -33301,9 +29349,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ptlpbio package" >&5
 $as_echo_n "checking needed link args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_link_dir+set}" = set; then
+if ${cercs_cv_ptlpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -33360,11 +29408,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:33363: searching for $search_list " >&5
+echo "configure:29411: 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:33367: first found $tmp_search_results " >&5
+	echo "configure:29415: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33381,7 +29429,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_link_dir" >&5
 $as_echo "$cercs_cv_ptlpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -33412,7 +29460,7 @@ else
 
 
 # Check whether --with-ptlpbio was given.
-if test "${with_ptlpbio+set}" = set; then
+if test "${with_ptlpbio+set}" = set; then :
   withval=$with_ptlpbio;
 fi
 
@@ -33424,20 +29472,20 @@ if test `echo $with_ptlpbio | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ptlpbio=`pwd`/$with_ptlpbio
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ptlpbio package" >&5
 $as_echo_n "checking needed include args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_include_arg+set}" = set; then
+if ${cercs_cv_ptlpbio_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:33436: searching for $search_list " >&5
+echo "configure:29484: 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:33440: first found $tmp_search_results " >&5
+	echo "configure:29488: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33452,7 +29500,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_include_arg" >&5
 $as_echo "$cercs_cv_ptlpbio_include_arg" >&6; }
 if test -n "$cercs_cv_ptlpbio_include_arg"; then
 arg="$cercs_cv_ptlpbio_include_arg"
@@ -33466,20 +29514,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ptlpbio package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ptlpbio package" >&5
 $as_echo_n "checking needed link args for ptlpbio package... " >&6; }
-if test "${cercs_cv_ptlpbio_link_dir+set}" = set; then
+if ${cercs_cv_ptlpbio_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:33478: searching for $search_list " >&5
+echo "configure:29526: 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:33482: first found $tmp_search_results " >&5
+	echo "configure:29530: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33496,7 +29544,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ptlpbio_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ptlpbio_link_dir" >&5
 $as_echo "$cercs_cv_ptlpbio_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -33535,9 +29583,7 @@ fi
 	else
 		echo "Neither portals nor infiniband found. Disabling datatap"
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_DATATAP 1
-_ACEOF
+$as_echo "#define NO_DATATAP 1" >>confdefs.h
 
 		datatap=disable
 		temptest=disable
@@ -33548,9 +29594,7 @@ if test x"$temptest" = xdisable; then
 	datatap=disable
 	echo "Datatap dependency check failed"
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_DATATAP 1
-_ACEOF
+$as_echo "#define NO_DATATAP 1" >>confdefs.h
 
 fi
 
@@ -33563,7 +29607,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for FLEXPATH ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for FLEXPATH ===" >&5
 $as_echo "$as_me: === checking for FLEXPATH ===" >&6;}
 
 FP_SRCDIR=""
@@ -33580,7 +29624,7 @@ flexpath_dir=""
 
 
 # Check whether --with-flexpath was given.
-if test "${with_flexpath+set}" = set; then
+if test "${with_flexpath+set}" = set; then :
   withval=$with_flexpath;  ac_with_flexpath=$withval
 else
   with_flexpath=no
@@ -33593,7 +29637,7 @@ if test "x$with_flexpath" = "xno"; then
 
 elif test x"$with_flexpath" != xyes -a x"$with_flexpath" != xcheck; then
 
-{ $as_echo "$as_me:$LINENO: checking got with flexpath argument $with_flexpath" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking got with flexpath argument $with_flexpath" >&5
 $as_echo_n "checking got with flexpath argument $with_flexpath... " >&6; }
 #	with_evpath=$with_flexpath
 
@@ -33613,7 +29657,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-evpath was given.
-if test "${with_evpath+set}" = set; then
+if test "${with_evpath+set}" = set; then :
   withval=$with_evpath;
 fi
 
@@ -33625,9 +29669,9 @@ if test `echo $with_evpath | sed 's/\(.\).*/\1/g'` != "/"; then
 with_evpath=`pwd`/$with_evpath
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for evpath package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for evpath package" >&5
 $as_echo_n "checking needed include args for evpath package... " >&6; }
-if test "${cercs_cv_evpath_include_arg+set}" = set; then
+if ${cercs_cv_evpath_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -33684,11 +29728,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:33687: searching for $search_list " >&5
+echo "configure:29731: 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:33691: first found $tmp_search_results " >&5
+	echo "configure:29735: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33703,7 +29747,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_evpath_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_evpath_include_arg" >&5
 $as_echo "$cercs_cv_evpath_include_arg" >&6; }
 if test -n "$cercs_cv_evpath_include_arg"; then
 arg="$cercs_cv_evpath_include_arg"
@@ -33717,9 +29761,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for evpath package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for evpath package" >&5
 $as_echo_n "checking needed link args for evpath package... " >&6; }
-if test "${cercs_cv_evpath_link_dir+set}" = set; then
+if ${cercs_cv_evpath_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -33776,11 +29820,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:33779: searching for $search_list " >&5
+echo "configure:29823: 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:33783: first found $tmp_search_results " >&5
+	echo "configure:29827: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33797,7 +29841,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_evpath_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_evpath_link_dir" >&5
 $as_echo "$cercs_cv_evpath_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -33828,7 +29872,7 @@ else
 
 
 # Check whether --with-evpath was given.
-if test "${with_evpath+set}" = set; then
+if test "${with_evpath+set}" = set; then :
   withval=$with_evpath;
 fi
 
@@ -33840,20 +29884,20 @@ if test `echo $with_evpath | sed 's/\(.\).*/\1/g'` != "/"; then
 with_evpath=`pwd`/$with_evpath
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for evpath package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for evpath package" >&5
 $as_echo_n "checking needed include args for evpath package... " >&6; }
-if test "${cercs_cv_evpath_include_arg+set}" = set; then
+if ${cercs_cv_evpath_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../evpath $PWD/../../evpath $PWD/../../../evpath"
 tmp_search_results=""
-echo "configure:33852: searching for $search_list " >&5
+echo "configure:29896: 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:33856: first found $tmp_search_results " >&5
+	echo "configure:29900: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33868,7 +29912,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_evpath_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_evpath_include_arg" >&5
 $as_echo "$cercs_cv_evpath_include_arg" >&6; }
 if test -n "$cercs_cv_evpath_include_arg"; then
 arg="$cercs_cv_evpath_include_arg"
@@ -33882,20 +29926,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for evpath package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for evpath package" >&5
 $as_echo_n "checking needed link args for evpath package... " >&6; }
-if test "${cercs_cv_evpath_link_dir+set}" = set; then
+if ${cercs_cv_evpath_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../evpath $PWD/../../evpath $PWD/../../../evpath"
 tmp_search_results=""
-echo "configure:33894: searching for $search_list " >&5
+echo "configure:29938: 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:33898: first found $tmp_search_results " >&5
+	echo "configure:29942: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -33912,7 +29956,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_evpath_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_evpath_link_dir" >&5
 $as_echo "$cercs_cv_evpath_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -33948,7 +29992,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-ffs was given.
-if test "${with_ffs+set}" = set; then
+if test "${with_ffs+set}" = set; then :
   withval=$with_ffs;
 fi
 
@@ -33960,9 +30004,9 @@ if test `echo $with_ffs | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ffs=`pwd`/$with_ffs
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ffs package" >&5
 $as_echo_n "checking needed include args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_include_arg+set}" = set; then
+if ${cercs_cv_ffs_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -34019,11 +30063,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:34022: searching for $search_list " >&5
+echo "configure:30066: 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:34026: first found $tmp_search_results " >&5
+	echo "configure:30070: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34038,7 +30082,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_include_arg" >&5
 $as_echo "$cercs_cv_ffs_include_arg" >&6; }
 if test -n "$cercs_cv_ffs_include_arg"; then
 arg="$cercs_cv_ffs_include_arg"
@@ -34052,9 +30096,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ffs package" >&5
 $as_echo_n "checking needed link args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_link_dir+set}" = set; then
+if ${cercs_cv_ffs_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -34111,11 +30155,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:34114: searching for $search_list " >&5
+echo "configure:30158: 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:34118: first found $tmp_search_results " >&5
+	echo "configure:30162: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34132,7 +30176,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_link_dir" >&5
 $as_echo "$cercs_cv_ffs_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -34163,7 +30207,7 @@ else
 
 
 # Check whether --with-ffs was given.
-if test "${with_ffs+set}" = set; then
+if test "${with_ffs+set}" = set; then :
   withval=$with_ffs;
 fi
 
@@ -34175,20 +30219,20 @@ if test `echo $with_ffs | sed 's/\(.\).*/\1/g'` != "/"; then
 with_ffs=`pwd`/$with_ffs
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for ffs package" >&5
 $as_echo_n "checking needed include args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_include_arg+set}" = set; then
+if ${cercs_cv_ffs_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:34187: searching for $search_list " >&5
+echo "configure:30231: 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:34191: first found $tmp_search_results " >&5
+	echo "configure:30235: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34203,7 +30247,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_include_arg" >&5
 $as_echo "$cercs_cv_ffs_include_arg" >&6; }
 if test -n "$cercs_cv_ffs_include_arg"; then
 arg="$cercs_cv_ffs_include_arg"
@@ -34217,20 +30261,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for ffs package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for ffs package" >&5
 $as_echo_n "checking needed link args for ffs package... " >&6; }
-if test "${cercs_cv_ffs_link_dir+set}" = set; then
+if ${cercs_cv_ffs_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:34229: searching for $search_list " >&5
+echo "configure:30273: 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:34233: first found $tmp_search_results " >&5
+	echo "configure:30277: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34247,7 +30291,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_ffs_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_ffs_link_dir" >&5
 $as_echo "$cercs_cv_ffs_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -34283,7 +30327,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-atl was given.
-if test "${with_atl+set}" = set; then
+if test "${with_atl+set}" = set; then :
   withval=$with_atl;
 fi
 
@@ -34295,9 +30339,9 @@ if test `echo $with_atl | sed 's/\(.\).*/\1/g'` != "/"; then
 with_atl=`pwd`/$with_atl
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for atl package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for atl package" >&5
 $as_echo_n "checking needed include args for atl package... " >&6; }
-if test "${cercs_cv_atl_include_arg+set}" = set; then
+if ${cercs_cv_atl_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -34354,11 +30398,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:34357: searching for $search_list " >&5
+echo "configure:30401: 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:34361: first found $tmp_search_results " >&5
+	echo "configure:30405: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34373,7 +30417,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_atl_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_atl_include_arg" >&5
 $as_echo "$cercs_cv_atl_include_arg" >&6; }
 if test -n "$cercs_cv_atl_include_arg"; then
 arg="$cercs_cv_atl_include_arg"
@@ -34387,9 +30431,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for atl package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for atl package" >&5
 $as_echo_n "checking needed link args for atl package... " >&6; }
-if test "${cercs_cv_atl_link_dir+set}" = set; then
+if ${cercs_cv_atl_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -34446,11 +30490,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:34449: searching for $search_list " >&5
+echo "configure:30493: 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:34453: first found $tmp_search_results " >&5
+	echo "configure:30497: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34467,7 +30511,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_atl_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_atl_link_dir" >&5
 $as_echo "$cercs_cv_atl_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -34498,7 +30542,7 @@ else
 
 
 # Check whether --with-atl was given.
-if test "${with_atl+set}" = set; then
+if test "${with_atl+set}" = set; then :
   withval=$with_atl;
 fi
 
@@ -34510,20 +30554,20 @@ if test `echo $with_atl | sed 's/\(.\).*/\1/g'` != "/"; then
 with_atl=`pwd`/$with_atl
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for atl package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for atl package" >&5
 $as_echo_n "checking needed include args for atl package... " >&6; }
-if test "${cercs_cv_atl_include_arg+set}" = set; then
+if ${cercs_cv_atl_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../atl $PWD/../../atl $PWD/../../../atl"
 tmp_search_results=""
-echo "configure:34522: searching for $search_list " >&5
+echo "configure:30566: 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:34526: first found $tmp_search_results " >&5
+	echo "configure:30570: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34538,7 +30582,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_atl_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_atl_include_arg" >&5
 $as_echo "$cercs_cv_atl_include_arg" >&6; }
 if test -n "$cercs_cv_atl_include_arg"; then
 arg="$cercs_cv_atl_include_arg"
@@ -34552,20 +30596,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for atl package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for atl package" >&5
 $as_echo_n "checking needed link args for atl package... " >&6; }
-if test "${cercs_cv_atl_link_dir+set}" = set; then
+if ${cercs_cv_atl_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../atl $PWD/../../atl $PWD/../../../atl"
 tmp_search_results=""
-echo "configure:34564: searching for $search_list " >&5
+echo "configure:30608: 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:34568: first found $tmp_search_results " >&5
+	echo "configure:30612: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34582,7 +30626,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_atl_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_atl_link_dir" >&5
 $as_echo "$cercs_cv_atl_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -34618,7 +30662,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-dill was given.
-if test "${with_dill+set}" = set; then
+if test "${with_dill+set}" = set; then :
   withval=$with_dill;
 fi
 
@@ -34630,9 +30674,9 @@ if test `echo $with_dill | sed 's/\(.\).*/\1/g'` != "/"; then
 with_dill=`pwd`/$with_dill
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for dill package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for dill package" >&5
 $as_echo_n "checking needed include args for dill package... " >&6; }
-if test "${cercs_cv_dill_include_arg+set}" = set; then
+if ${cercs_cv_dill_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -34689,11 +30733,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:34692: searching for $search_list " >&5
+echo "configure:30736: 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:34696: first found $tmp_search_results " >&5
+	echo "configure:30740: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34708,7 +30752,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_dill_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_dill_include_arg" >&5
 $as_echo "$cercs_cv_dill_include_arg" >&6; }
 if test -n "$cercs_cv_dill_include_arg"; then
 arg="$cercs_cv_dill_include_arg"
@@ -34722,9 +30766,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for dill package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for dill package" >&5
 $as_echo_n "checking needed link args for dill package... " >&6; }
-if test "${cercs_cv_dill_link_dir+set}" = set; then
+if ${cercs_cv_dill_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -34781,11 +30825,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:34784: searching for $search_list " >&5
+echo "configure:30828: 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:34788: first found $tmp_search_results " >&5
+	echo "configure:30832: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34802,7 +30846,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_dill_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_dill_link_dir" >&5
 $as_echo "$cercs_cv_dill_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -34833,7 +30877,7 @@ else
 
 
 # Check whether --with-dill was given.
-if test "${with_dill+set}" = set; then
+if test "${with_dill+set}" = set; then :
   withval=$with_dill;
 fi
 
@@ -34845,20 +30889,20 @@ if test `echo $with_dill | sed 's/\(.\).*/\1/g'` != "/"; then
 with_dill=`pwd`/$with_dill
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for dill package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for dill package" >&5
 $as_echo_n "checking needed include args for dill package... " >&6; }
-if test "${cercs_cv_dill_include_arg+set}" = set; then
+if ${cercs_cv_dill_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../dill $PWD/../../dill $PWD/../../../dill"
 tmp_search_results=""
-echo "configure:34857: searching for $search_list " >&5
+echo "configure:30901: 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:34861: first found $tmp_search_results " >&5
+	echo "configure:30905: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34873,7 +30917,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_dill_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_dill_include_arg" >&5
 $as_echo "$cercs_cv_dill_include_arg" >&6; }
 if test -n "$cercs_cv_dill_include_arg"; then
 arg="$cercs_cv_dill_include_arg"
@@ -34887,20 +30931,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for dill package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for dill package" >&5
 $as_echo_n "checking needed link args for dill package... " >&6; }
-if test "${cercs_cv_dill_link_dir+set}" = set; then
+if ${cercs_cv_dill_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../dill $PWD/../../dill $PWD/../../../dill"
 tmp_search_results=""
-echo "configure:34899: searching for $search_list " >&5
+echo "configure:30943: 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:34903: first found $tmp_search_results " >&5
+	echo "configure:30947: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -34917,7 +30961,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_dill_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_dill_link_dir" >&5
 $as_echo "$cercs_cv_dill_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -34953,7 +30997,7 @@ if test -z "$with_local_specified"; then
 
 
 # Check whether --with-cercs_env was given.
-if test "${with_cercs_env+set}" = set; then
+if test "${with_cercs_env+set}" = set; then :
   withval=$with_cercs_env;
 fi
 
@@ -34965,9 +31009,9 @@ if test `echo $with_cercs_env | sed 's/\(.\).*/\1/g'` != "/"; then
 with_cercs_env=`pwd`/$with_cercs_env
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for cercs_env package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for cercs_env package" >&5
 $as_echo_n "checking needed include args for cercs_env package... " >&6; }
-if test "${cercs_cv_cercs_env_include_arg+set}" = set; then
+if ${cercs_cv_cercs_env_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -35024,11 +31068,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:35027: searching for $search_list " >&5
+echo "configure:31071: 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:35031: first found $tmp_search_results " >&5
+	echo "configure:31075: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -35043,7 +31087,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_cercs_env_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_cercs_env_include_arg" >&5
 $as_echo "$cercs_cv_cercs_env_include_arg" >&6; }
 if test -n "$cercs_cv_cercs_env_include_arg"; then
 arg="$cercs_cv_cercs_env_include_arg"
@@ -35057,9 +31101,9 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for cercs_env package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for cercs_env package" >&5
 $as_echo_n "checking needed link args for cercs_env package... " >&6; }
-if test "${cercs_cv_cercs_env_link_dir+set}" = set; then
+if ${cercs_cv_cercs_env_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -35116,11 +31160,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:35119: searching for $search_list " >&5
+echo "configure:31163: 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:35123: first found $tmp_search_results " >&5
+	echo "configure:31167: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -35137,7 +31181,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_cercs_env_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_cercs_env_link_dir" >&5
 $as_echo "$cercs_cv_cercs_env_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -35168,7 +31212,7 @@ else
 
 
 # Check whether --with-cercs_env was given.
-if test "${with_cercs_env+set}" = set; then
+if test "${with_cercs_env+set}" = set; then :
   withval=$with_cercs_env;
 fi
 
@@ -35180,20 +31224,20 @@ if test `echo $with_cercs_env | sed 's/\(.\).*/\1/g'` != "/"; then
 with_cercs_env=`pwd`/$with_cercs_env
 fi
 fi
-{ $as_echo "$as_me:$LINENO: checking needed include args for cercs_env package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed include args for cercs_env package" >&5
 $as_echo_n "checking needed include args for cercs_env package... " >&6; }
-if test "${cercs_cv_cercs_env_include_arg+set}" = set; then
+if ${cercs_cv_cercs_env_include_arg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../cercs_env $PWD/../../cercs_env $PWD/../../../cercs_env"
 tmp_search_results=""
-echo "configure:35192: searching for $search_list " >&5
+echo "configure:31236: 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:35196: first found $tmp_search_results " >&5
+	echo "configure:31240: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -35208,7 +31252,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_cercs_env_include_arg" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_cercs_env_include_arg" >&5
 $as_echo "$cercs_cv_cercs_env_include_arg" >&6; }
 if test -n "$cercs_cv_cercs_env_include_arg"; then
 arg="$cercs_cv_cercs_env_include_arg"
@@ -35222,20 +31266,20 @@ fi
 fi
 fi
 
-{ $as_echo "$as_me:$LINENO: checking needed link args for cercs_env package" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking needed link args for cercs_env package" >&5
 $as_echo_n "checking needed link args for cercs_env package... " >&6; }
-if test "${cercs_cv_cercs_env_link_dir+set}" = set; then
+if ${cercs_cv_cercs_env_link_dir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 
 search_list="$PWD/../cercs_env $PWD/../../cercs_env $PWD/../../../cercs_env"
 tmp_search_results=""
-echo "configure:35234: searching for $search_list " >&5
+echo "configure:31278: 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:35238: first found $tmp_search_results " >&5
+	echo "configure:31282: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -35252,7 +31296,7 @@ fi
 
 fi
 
-{ $as_echo "$as_me:$LINENO: result: $cercs_cv_cercs_env_link_dir" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cercs_cv_cercs_env_link_dir" >&5
 $as_echo "$cercs_cv_cercs_env_link_dir" >&6; }
 ld_arg="-L"
 new_flags=$LDFLAGS
@@ -35363,7 +31407,7 @@ _ACEOF
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for ZLIB ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for ZLIB ===" >&5
 $as_echo "$as_me: === checking for ZLIB ===" >&6;}
 
  if true; then
@@ -35377,7 +31421,7 @@ fi
 
 
 # Check whether --with-zlib was given.
-if test "${with_zlib+set}" = set; then
+if test "${with_zlib+set}" = set; then :
   withval=$with_zlib; :
 else
   with_zlib=no
@@ -35415,146 +31459,12 @@ else
     LDFLAGS="$LDFLAGS $ZLIB_LDFLAGS"
     CPPFLAGS="$CPPFLAGS $ZLIB_CPPFLAGS"
 
-
-for ac_header in zlib.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+        for ac_header in zlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_ZLIB_H 1
 _ACEOF
 
 else
@@ -35572,13 +31482,9 @@ done
 
 
     if test -z "${HAVE_ZLIB_TRUE}"; then
-                { $as_echo "$as_me:$LINENO: checking if zlib code can be linked with $ZLIB_LDFLAGS" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if zlib code can be linked with $ZLIB_LDFLAGS" >&5
 $as_echo_n "checking if zlib code can be linked with $ZLIB_LDFLAGS... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
              #include "zlib.h"
@@ -35602,34 +31508,11 @@ Bytef* in, *out;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_ZLIB_TRUE=
   HAVE_ZLIB_FALSE='#'
 else
@@ -35637,26 +31520,20 @@ else
   HAVE_ZLIB_FALSE=
 fi
 
-             { $as_echo "$as_me:$LINENO: result: no" >&5
+             { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
                         if test -z "${HAVE_ZLIB_FALSE}"; then
             if test "x$with_lustre" != "xyes"; then
             ZLIB_LDFLAGS="-L$withval/lib"
             LDFLAGS="$LDFLAGS $ZLIB_LDFLAGS"
-            { $as_echo "$as_me:$LINENO: checking if zlib code can be linked with $ZLIB_LDFLAGS" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if zlib code can be linked with $ZLIB_LDFLAGS" >&5
 $as_echo_n "checking if zlib code can be linked with $ZLIB_LDFLAGS... " >&6; }
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
                  #include "zlib.h"
@@ -35680,34 +31557,11 @@ Bytef* in, *out;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_ZLIB_TRUE=
   HAVE_ZLIB_FALSE='#'
 else
@@ -35715,14 +31569,12 @@ else
   HAVE_ZLIB_FALSE=
 fi
 
-                 { $as_echo "$as_me:$LINENO: result: no" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
             fi
         fi
     fi
@@ -35738,9 +31590,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_ZLIB_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ZLIB 1
-_ACEOF
+$as_echo "#define HAVE_ZLIB 1" >>confdefs.h
 
             :
     else
@@ -35751,7 +31601,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for BZIP2 ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for BZIP2 ===" >&5
 $as_echo "$as_me: === checking for BZIP2 ===" >&6;}
 
  if true; then
@@ -35765,7 +31615,7 @@ fi
 
 
 # Check whether --with-bzip2 was given.
-if test "${with_bzip2+set}" = set; then
+if test "${with_bzip2+set}" = set; then :
   withval=$with_bzip2; :
 else
   with_bzip2=no
@@ -35804,146 +31654,12 @@ else
     CPPFLAGS="$CPPFLAGS $BZIP2_CPPFLAGS"
 
     if test -z "${HAVE_BZIP2_TRUE}"; then
-
-for ac_header in bzlib.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+           for ac_header in bzlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_bzlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_BZLIB_H 1
 _ACEOF
 
 else
@@ -35962,13 +31678,9 @@ done
     fi
 
     if test -z "${HAVE_BZIP2_TRUE}"; then
-                { $as_echo "$as_me:$LINENO: checking if bzip2 code can be linked with $BZIP2_LDFLAGS" >&5
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bzip2 code can be linked with $BZIP2_LDFLAGS" >&5
 $as_echo_n "checking if bzip2 code can be linked with $BZIP2_LDFLAGS... " >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
              #include "bzlib.h"
@@ -35993,34 +31705,11 @@ char* in, *out;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_BZIP2_TRUE=
   HAVE_BZIP2_FALSE='#'
 else
@@ -36028,26 +31717,20 @@ else
   HAVE_BZIP2_FALSE=
 fi
 
-             { $as_echo "$as_me:$LINENO: result: no" >&5
+             { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
                         if test -z "${HAVE_BZIP2_FALSE}"; then
             if test "x$with_lustre" != "xyes"; then
             BZIP2_LDFLAGS="-L$withval/lib"
             LDFLAGS="$LDFLAGS $BZIP2_LDFLAGS"
-            { $as_echo "$as_me:$LINENO: checking if bzip2 code can be linked with $BZIP2_LDFLAGS" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bzip2 code can be linked with $BZIP2_LDFLAGS" >&5
 $as_echo_n "checking if bzip2 code can be linked with $BZIP2_LDFLAGS... " >&6; }
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
                  #include "bzlib.h"
@@ -36065,41 +31748,18 @@ main ()
 char* in, *out;
                  unsigned int in_len, *out_len;
                  int blocksize100k = 5;
-                 int bzerr = BZ2_bzBuffToBuffCompress (
-                               out, out_len, in, in_len, blocksize100k, 0, 30);
-                 return (bzerr != BZ_OK);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
+                 int bzerr = BZ2_bzBuffToBuffCompress (
+                               out, out_len, in, in_len, blocksize100k, 0, 30);
+                 return (bzerr != BZ_OK);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	 if false; then
+   if false; then
   HAVE_BZIP2_TRUE=
   HAVE_BZIP2_FALSE='#'
 else
@@ -36107,14 +31767,12 @@ else
   HAVE_BZIP2_FALSE=
 fi
 
-                 { $as_echo "$as_me:$LINENO: result: no" >&5
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
             fi
         fi
     fi
@@ -36131,9 +31789,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_BZIP2_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_BZIP2 1
-_ACEOF
+$as_echo "#define HAVE_BZIP2 1" >>confdefs.h
 
             :
     else
@@ -36144,7 +31800,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for SZIP ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for SZIP ===" >&5
 $as_echo "$as_me: === checking for SZIP ===" >&6;}
 
  if true; then
@@ -36158,7 +31814,7 @@ fi
 
 
 # Check whether --with-szip was given.
-if test "${with_szip+set}" = set; then
+if test "${with_szip+set}" = set; then :
   withval=$with_szip; SZIP_LDFLAGS="-L$withval/lib";
          SZIP_LIBS="-lsz";
          SZIP_CPPFLAGS="-I$withval/include";
@@ -36188,146 +31844,12 @@ else
     CPPFLAGS="$CPPFLAGS $SZIP_CPPFLAGS"
 
     if test -z "${HAVE_SZIP_TRUE}"; then
-
-for ac_header in szlib.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+           for ac_header in szlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "szlib.h" "ac_cv_header_szlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_szlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_SZLIB_H 1
 _ACEOF
 
 else
@@ -36358,9 +31880,7 @@ done
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_SZIP_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SZIP 1
-_ACEOF
+$as_echo "#define HAVE_SZIP 1" >>confdefs.h
 
             :
     else
@@ -36371,7 +31891,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for ISOBAR ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for ISOBAR ===" >&5
 $as_echo "$as_me: === checking for ISOBAR ===" >&6;}
 
  if true; then
@@ -36385,7 +31905,7 @@ fi
 
 
 # Check whether --with-isobar was given.
-if test "${with_isobar+set}" = set; then
+if test "${with_isobar+set}" = set; then :
   withval=$with_isobar; ISOBAR_LDFLAGS="-L$withval/lib";
          ISOBAR_LIBS="-lisobar -lz";
          ISOBAR_CPPFLAGS="-I$withval/include";
@@ -36415,146 +31935,12 @@ else
     CPPFLAGS="$CPPFLAGS $ISOBAR_CPPFLAGS"
 
     if test -z "${HAVE_ISOBAR_TRUE}"; then
-
-for ac_header in isobar.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+           for ac_header in isobar.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "isobar.h" "ac_cv_header_isobar_h" "$ac_includes_default"
+if test "x$ac_cv_header_isobar_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_ISOBAR_H 1
 _ACEOF
 
 else
@@ -36585,9 +31971,7 @@ done
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_ISOBAR_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISOBAR 1
-_ACEOF
+$as_echo "#define HAVE_ISOBAR 1" >>confdefs.h
 
             :
     else
@@ -36598,7 +31982,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for APLOD ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for APLOD ===" >&5
 $as_echo "$as_me: === checking for APLOD ===" >&6;}
 
  if true; then
@@ -36612,7 +31996,7 @@ fi
 
 
 # Check whether --with-aplod was given.
-if test "${with_aplod+set}" = set; then
+if test "${with_aplod+set}" = set; then :
   withval=$with_aplod; APLOD_LDFLAGS="-L$withval/lib";
          APLOD_LIBS="-laplod -lz";
          APLOD_CPPFLAGS="-I$withval/include";
@@ -36642,146 +32026,12 @@ else
     CPPFLAGS="$CPPFLAGS $APLOD_CPPFLAGS"
 
     if test -z "${HAVE_APLOD_TRUE}"; then
-
-for ac_header in aplod.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+           for ac_header in aplod.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "aplod.h" "ac_cv_header_aplod_h" "$ac_includes_default"
+if test "x$ac_cv_header_aplod_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_APLOD_H 1
 _ACEOF
 
 else
@@ -36812,9 +32062,7 @@ done
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
     if test -z "${HAVE_APLOD_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_APLOD 1
-_ACEOF
+$as_echo "#define HAVE_APLOD 1" >>confdefs.h
 
             :
     else
@@ -36825,7 +32073,7 @@ fi
 
 
 
-{ $as_echo "$as_me:$LINENO: === checking for ALACRITY ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for ALACRITY ===" >&5
 $as_echo "$as_me: === checking for ALACRITY ===" >&6;}
 
  if true; then
@@ -36839,9 +32087,9 @@ fi
 
 
 # Check whether --with-alacrity was given.
-if test "${with_alacrity+set}" = set; then
+if test "${with_alacrity+set}" = set; then :
   withval=$with_alacrity; ALACRITY_LDFLAGS="-L$withval/lib";
-         ALACRITY_LIBS="-lalacrity";
+         ALACRITY_LIBS="-lalacrity -lridcompress -lstdc++";
          ALACRITY_CPPFLAGS="-I$withval/include";
 else
   with_alacrity=no
@@ -36880,81 +32128,9 @@ else
 
 
     # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-    if test -z "${HAVE_ALACRITY_TRUE}"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALACRITY 1
-_ACEOF
-
-            :
-    else
-
-            :
-    fi
-fi
-
-
-
-{ $as_echo "$as_me:$LINENO: === checking for RIDCOMPRESS ===" >&5
-$as_echo "$as_me: === checking for RIDCOMPRESS ===" >&6;}
-
- if true; then
-  HAVE_RIDCOMPRESS_TRUE=
-  HAVE_RIDCOMPRESS_FALSE='#'
-else
-  HAVE_RIDCOMPRESS_TRUE='#'
-  HAVE_RIDCOMPRESS_FALSE=
-fi
-
-
-
-# Check whether --with-ridcompress was given.
-if test "${with_ridcompress+set}" = set; then
-  withval=$with_ridcompress; RIDCOMPRESS_LDFLAGS="-L$withval/ -L$withval/lib";
-         RIDCOMPRESS_LIBS="-lridcompress -lstdc++";
-         RIDCOMPRESS_CPPFLAGS="-I$withval/ -I$withval/include";
-else
-  with_RIDCOMPRESS=no
-fi
-
-
-if test "x$with_RIDCOMPRESS" == "xno"; then
-
-    if false; then
-  HAVE_RIDCOMPRESS_TRUE=
-  HAVE_RIDCOMPRESS_FALSE='#'
-else
-  HAVE_RIDCOMPRESS_TRUE='#'
-  HAVE_RIDCOMPRESS_FALSE=
-fi
-
-
-else
-
-    save_CPPFLAGS="$CPPFLAGS"
-    save_LIBS="$LIBS"
-    save_LDFLAGS="$LDFLAGS"
-    LIBS="$LIBS $RIDCOMPRESS_LIBS"
-    LDFLAGS="$LDFLAGS $RIDCOMPRESS_LDFLAGS"
-    CPPFLAGS="$CPPFLAGS $RIDCOMPRESS_CPPFLAGS"
-
-
-    # Check for the RIDCOMPRESS library and headers
-
-    LIBS="$save_LIBS"
-    LDFLAGS="$save_LDFLAGS"
-    CPPFLAGS="$save_CPPFLAGS"
-
-
-
-
-
-    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-    if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
+    if test -z "${HAVE_ALACRITY_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_RIDCOMPRESS 1
-_ACEOF
+$as_echo "#define HAVE_ALACRITY 1" >>confdefs.h
 
             :
     else
@@ -36967,7 +32143,7 @@ fi
 
 
 # Check whether --with-fastbit was given.
-if test "${with_fastbit+set}" = set; then
+if test "${with_fastbit+set}" = set; then :
   withval=$with_fastbit;
 fi
 
@@ -36975,7 +32151,7 @@ fi
 if test "x$with_fastbit" != xno; then
     FASTBIT_CPPFLAGS="-I$with_fastbit/include/fastbit"
     FASTBIT_LDFLAGS="-L$with_fastbit/lib"
-    FASTBIT_LIBS="-lfastbit"
+    FASTBIT_LIBS="-lfastbit -lstdc++"
 
     saveCPPFLAGS="$CPPFLAGS"
     saveLDFLAGS="$LDFLAGS"
@@ -36990,150 +32166,16 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
     CPPFLAGS="$CPPFLAGS $FASTBIT_CPPFLAGS"
     LDFLAGS="$LDFLAGS $FASTBIT_LDFLAGS $FASTBIT_LIBS"
 
-
-for ac_header in iapi.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
+    for ac_header in iapi.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "iapi.h" "ac_cv_header_iapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_iapi_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_IAPI_H 1
 _ACEOF
  HAVE_FASTBIT=y
 else
-  HAVE_FASTBIT="";       { $as_echo "$as_me:$LINENO: result: Cannot find iapi.h from the FastBit lib. Make sure it has been properly installed at the path specified ($with_fastbit).      " >&5
+  HAVE_FASTBIT="";       { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cannot find iapi.h from the FastBit lib. Make sure it has been properly installed at the path specified ($with_fastbit).      " >&5
 $as_echo "Cannot find iapi.h from the FastBit lib. Make sure it has been properly installed at the path specified ($with_fastbit).      " >&6; }
 fi
 
@@ -37160,7 +32202,7 @@ else
   HAVE_FASTBIT_FALSE=
 fi
 
-      { $as_echo "$as_me:$LINENO: result: Not building with FastBit library" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not building with FastBit library" >&5
 $as_echo "Not building with FastBit library" >&6; }
     else
 
@@ -37176,12 +32218,10 @@ else
 fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FASTBIT 1
-_ACEOF
+$as_echo "#define HAVE_FASTBIT 1" >>confdefs.h
 
 
-      { $as_echo "$as_me:$LINENO: result: FastBit library found at $with_fastbit" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: FastBit library found at $with_fastbit" >&5
 $as_echo "FastBit library found at $with_fastbit" >&6; }
     fi
 else
@@ -37194,316 +32234,22 @@ else
 fi
 
 
-  { $as_echo "$as_me:$LINENO: result: Not building with FastBit library" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Not building with FastBit library" >&5
 $as_echo "Not building with FastBit library" >&6; }
 fi
 
 
 
 
- if false; then
-  HAVE_NCSU_TIMER_TRUE=
-  HAVE_NCSU_TIMER_FALSE='#'
-else
-  HAVE_NCSU_TIMER_TRUE='#'
-  HAVE_NCSU_TIMER_FALSE=
-fi
-
-
-
-# Check whether --with-timer was given.
-if test "${with_timer+set}" = set; then
-  withval=$with_timer;
-fi
-
-
-if test "x$with_timer" != xno -a "x$with_timer" != x; then
-     if true; then
-  HAVE_NCSU_TIMER_TRUE=
-  HAVE_NCSU_TIMER_FALSE='#'
-else
-  HAVE_NCSU_TIMER_TRUE='#'
-  HAVE_NCSU_TIMER_FALSE=
-fi
-
-
-    TIMER_CPPFLAGS="-I$with_timer/include"
-    TIMER_LDFLAGS="-L$with_timer/lib"
-    TIMER_LIBS="-ltimer -lm"
-
-    saveLIB="$LIB"
-    saveLDFLAGS="$LDFLAGS"
-    saveCPPFLAGS="$CPPFLAGS"
-    LIB="$LIB $TIMER_LIBS"
-    LDFLAGS="$LDFLAGS $TIMER_LDFLAGS"
-    CPPFLAGS="$CPPFLAGS $TIMER_CPPFLAGS"
-
-
-for ac_header in timer.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: Cannot find timer.h from the timer lib. Make sure it has been properly installed at the path specified ($with_timer).
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: Cannot find timer.h from the timer lib. Make sure it has been properly installed at the path specified ($with_timer).
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-fi
-
-done
-
-
-    { $as_echo "$as_me:$LINENO: checking for timer_init in -ltimer" >&5
-$as_echo_n "checking for timer_init in -ltimer... " >&6; }
-if test "${ac_cv_lib_timer_timer_init+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltimer -lm     $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char timer_init ();
-#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 ()
-{
-return timer_init ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_lib_timer_timer_init=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_timer_timer_init=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_timer_timer_init" >&5
-$as_echo "$ac_cv_lib_timer_timer_init" >&6; }
-if test "x$ac_cv_lib_timer_timer_init" = x""yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NCSU_TIMER 1
-_ACEOF
-
-else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: Cannot successfully link with the timer lib. Make sure it has been properly installed at the path specified ($with_timer).
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: Cannot successfully link with the timer lib. Make sure it has been properly installed at the path specified ($with_timer).
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-fi
-
-
-    LIBS="$saveLIBS"
-    LDFLAGS="$saveLDFLAGS"
-    CPPFLAGS="$saveCPPFLAGS"
-
-
-
-
-fi
-
-
-
 
-
-{ $as_echo "$as_me:$LINENO: === checking for BGQ ===" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for BGQ ===" >&5
 $as_echo "$as_me: === checking for BGQ ===" >&6;}
 
 temptest=enable
 
 
 # Check whether --with-bgq was given.
-if test "${with_bgq+set}" = set; then
+if test "${with_bgq+set}" = set; then :
   withval=$with_bgq;
 else
   with_bgq=no
@@ -37521,9 +32267,7 @@ else
 fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_BGQ 0
-_ACEOF
+$as_echo "#define HAVE_BGQ 0" >>confdefs.h
 
 elif test x"$with_bgq" != xyes -o x"$with_bgq" != xcheck; then
 	 if true; then
@@ -37535,9 +32279,7 @@ else
 fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_BGQ 1
-_ACEOF
+$as_echo "#define HAVE_BGQ 1" >>confdefs.h
 
 fi
 
@@ -37551,7 +32293,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 # Check whether --enable-research-transports was given.
-if test "${enable_research_transports+set}" = set; then
+if test "${enable_research_transports+set}" = set; then :
   enableval=$enable_research_transports;
 fi
 
@@ -37573,7 +32315,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 # Check whether --enable-timers was given.
-if test "${enable_timers+set}" = set; then
+if test "${enable_timers+set}" = set; then :
   enableval=$enable_timers;
 fi
 
@@ -37589,9 +32331,7 @@ fi
 
 if test "x$enable_timers" != "xno"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define ADIOS_TIMERS 1
-_ACEOF
+$as_echo "#define ADIOS_TIMERS 1" >>confdefs.h
 
     SKEL_HAVE_ADIOS_TIMING=True
 
@@ -37603,7 +32343,7 @@ _ACEOF
 
 
 # Check whether --enable-timer-events was given.
-if test "${enable_timer_events+set}" = set; then
+if test "${enable_timer_events+set}" = set; then :
   enableval=$enable_timer_events;
 fi
 
@@ -37619,9 +32359,7 @@ fi
 
 if test "x$enable_timer_events" == "xyes"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define ADIOS_TIMER_EVENTS 1
-_ACEOF
+$as_echo "#define ADIOS_TIMER_EVENTS 1" >>confdefs.h
 
 fi
 
@@ -37644,7 +32382,6 @@ fi
 
 
 
-
 if test "x y" == "x${MPILIBS}y"; then
     MPILIBS=""
 fi
@@ -37653,11 +32390,19 @@ if test -n "${MPILIBS}"; then
 fi
 
  if false; then
-  USE_PARALLEL_COMPILER_TRUE=
-  USE_PARALLEL_COMPILER_FALSE='#'
+  USE_PARALLEL_HDF5_FOR_UTILS_TRUE=
+  USE_PARALLEL_HDF5_FOR_UTILS_FALSE='#'
+else
+  USE_PARALLEL_HDF5_FOR_UTILS_TRUE='#'
+  USE_PARALLEL_HDF5_FOR_UTILS_FALSE=
+fi
+
+ if false; then
+  USE_PARALLEL_NETCDF_FOR_UTILS_TRUE=
+  USE_PARALLEL_NETCDF_FOR_UTILS_FALSE='#'
 else
-  USE_PARALLEL_COMPILER_TRUE='#'
-  USE_PARALLEL_COMPILER_FALSE=
+  USE_PARALLEL_NETCDF_FOR_UTILS_TRUE='#'
+  USE_PARALLEL_NETCDF_FOR_UTILS_FALSE=
 fi
 
 
@@ -37667,6 +32412,8 @@ fi
 
 
 
+
+
 if test -z "${HAVE_PHDF5_TRUE}" -a -z "${HAVE_HDF5_FALSE}"; then
     HDF5_CPPFLAGS="${PHDF5_CPPFLAGS}"
     HDF5_CFLAGS="${PHDF5_CFLAGS}"
@@ -37681,22 +32428,24 @@ else
 fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_HDF5 1
-_ACEOF
+$as_echo "#define HAVE_HDF5 1" >>confdefs.h
 
      if true; then
-  USE_PARALLEL_COMPILER_TRUE=
-  USE_PARALLEL_COMPILER_FALSE='#'
+  USE_PARALLEL_HDF5_FOR_UTILS_TRUE=
+  USE_PARALLEL_HDF5_FOR_UTILS_FALSE='#'
 else
-  USE_PARALLEL_COMPILER_TRUE='#'
-  USE_PARALLEL_COMPILER_FALSE=
+  USE_PARALLEL_HDF5_FOR_UTILS_TRUE='#'
+  USE_PARALLEL_HDF5_FOR_UTILS_FALSE=
 fi
 
-    { $as_echo "$as_me:$LINENO: Use PHDF5 for sequential HDF5 tools" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Use PHDF5 for sequential HDF5 tools" >&5
 $as_echo "$as_me: Use PHDF5 for sequential HDF5 tools" >&6;}
+    BP2H5_CC="${MPICC}"
+else
+    BP2H5_CC="${CC}"
 fi
 
+
 if test -z "${HAVE_NC4PAR_TRUE}" -a -z "${HAVE_NETCDF_FALSE}"; then
     NETCDF_CPPFLAGS="${NC4PAR_CPPFLAGS}"
     NETCDF_CFLAGS="${NC4PAR_CFLAGS}"
@@ -37711,49 +32460,83 @@ else
 fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NETCDF 1
-_ACEOF
+$as_echo "#define HAVE_NETCDF 1" >>confdefs.h
 
      if true; then
-  USE_PARALLEL_COMPILER_TRUE=
-  USE_PARALLEL_COMPILER_FALSE='#'
+  USE_PARALLEL_NETCDF_FOR_UTILS_TRUE=
+  USE_PARALLEL_NETCDF_FOR_UTILS_FALSE='#'
 else
-  USE_PARALLEL_COMPILER_TRUE='#'
-  USE_PARALLEL_COMPILER_FALSE=
+  USE_PARALLEL_NETCDF_FOR_UTILS_TRUE='#'
+  USE_PARALLEL_NETCDF_FOR_UTILS_FALSE=
 fi
 
-    { $as_echo "$as_me:$LINENO: Use NC4PAR for sequential NETCDF tools" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Use NC4PAR for sequential NETCDF tools" >&5
 $as_echo "$as_me: Use NC4PAR for sequential NETCDF tools" >&6;}
+    BP2NCD_CC="${MPICC}"
+else
+    BP2NCD_CC="${CC}"
+fi
+
+
+opsys=''
+canonical=${host}
+
+case "${canonical}" in
+     *-*-cygwin )
+         if true; then
+  HAVE_CYGWIN_TRUE=
+  HAVE_CYGWIN_FALSE='#'
+else
+  HAVE_CYGWIN_TRUE='#'
+  HAVE_CYGWIN_FALSE=
+fi
+
+
+$as_echo "#define __USE_LINUX_IOCTL_DEFS 1" >>confdefs.h
+
+     ;;
+     * )
+         if false; then
+  HAVE_CYGWIN_TRUE=
+  HAVE_CYGWIN_FALSE='#'
+else
+  HAVE_CYGWIN_TRUE='#'
+  HAVE_CYGWIN_FALSE=
 fi
 
+     ;;
+esac
+
+
+
 
-ADIOSLIB_EXTRA_CPPFLAGS="${MACRODEFFLAG}_FILE_OFFSET_BITS=64 ${MACRODEFFLAG}_LARGEFILE_SOURCE ${MACRODEFFLAG}_LARGEFILE64_SOURCE ${MACRODEFFLAG}_GNU_SOURCE"
-ADIOSLIB_CPPFLAGS="${MXML_CPPFLAGS}"
+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}"
+ADIOSLIB_CPPFLAGS=
 ADIOSLIB_CFLAGS=
 ADIOSLIB_LDFLAGS="${MXML_LDFLAGS}"
-ADIOSLIB_LDADD="-lm ${MXML_LIBS}"
-ADIOSLIB_SEQ_CPPFLAGS="${MACRODEFFLAG}_NOMPI ${MXML_CPPFLAGS}"
+ADIOSLIB_LDADD="${MXML_LIBS}"
+ADIOSLIB_SEQ_CPPFLAGS="${MACRODEFFLAG}_NOMPI"
 ADIOSLIB_SEQ_CFLAGS=
 ADIOSLIB_SEQ_LDFLAGS="${MXML_LDFLAGS}"
-ADIOSLIB_SEQ_LDADD="-lm ${MXML_LIBS}"
+ADIOSLIB_SEQ_LDADD="${MXML_LIBS}"
 ADIOSLIB_INT_CPPFLAGS="${MACRODEFFLAG}_NOMPI"
 ADIOSLIB_INT_CFLAGS=
-ADIOSLIB_INT_LDFLAGS=
-ADIOSLIB_INT_LDADD=
 if test "x$enable_write" != "xno"; then
-    ADIOSLIB_INT_CPPFLAGS="${ADIOSLIB_INT_CPPFLAGS} ${MXML_CPPFLAGS}"
     ADIOSLIB_INT_LDFLAGS="${MXML_LDFLAGS}"
-    ADIOSLIB_INT_LDADD="-lm ${MXML_LIBS}"
+    ADIOSLIB_INT_LDADD="${MXML_LIBS}"
+else
+    ADIOSLIB_INT_LDFLAGS=
+    ADIOSLIB_INT_LDADD=
 fi
 ADIOSREADLIB_CPPFLAGS=
 ADIOSREADLIB_CFLAGS=
 ADIOSREADLIB_LDFLAGS=
-ADIOSREADLIB_LDADD="-lm"
+ADIOSREADLIB_LDADD=""
 ADIOSREADLIB_SEQ_CPPFLAGS="${MACRODEFFLAG}_NOMPI"
 ADIOSREADLIB_SEQ_CFLAGS=
 ADIOSREADLIB_SEQ_LDFLAGS=
-ADIOSREADLIB_SEQ_LDADD="-lm"
+ADIOSREADLIB_SEQ_LDADD=""
 if test "x${datatap}" != "xdisable"; then
     ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} ${DT_CPPFLAGS}"
     ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${DT_CFLAGS}"
@@ -37797,12 +32580,12 @@ if test -z "${HAVE_NSSI_TRUE}"; then
     ADIOSLIB_SEQ_CFLAGS="${ADIOSLIB_SEQ_CFLAGS} ${NSSI_CFLAGS}"
     ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${NSSI_LDFLAGS}"
     ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${NSSI_LIBS}"
-    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} ${MXML_CPPFLAGS} ${NSSI_CPPFLAGS}"
-    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${MXML_CPPFLAGS} ${NSSI_CFLAGS}"
+    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} ${NSSI_CPPFLAGS}"
+    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${NSSI_CFLAGS}"
     ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${MXML_LDFLAGS} ${NSSI_LDFLAGS}"
-    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${MXML_LIBS} ${NSSI_LIBS}"
-    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} ${MXML_CPPFLAGS} ${NSSI_CPPFLAGS}"
-    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${MXML_CPPFLAGS} ${NSSI_CFLAGS}"
+    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${NSSI_LIBS}"
+    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} ${NSSI_CPPFLAGS}"
+    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${NSSI_CFLAGS}"
     ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${MXML_LDFLAGS} ${NSSI_LDFLAGS}"
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${MXML_LIBS} ${NSSI_LIBS}"
 fi
@@ -38147,29 +32930,6 @@ if test -z "${HAVE_ALACRITY_TRUE}"; then
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${ALACRITY_LIBS}"
 fi
 
-if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
-    ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSLIB_LDFLAGS="${ADIOSLIB_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSLIB_LDADD="${ADIOSLIB_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSLIB_SEQ_CPPFLAGS="${ADIOSLIB_SEQ_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSLIB_SEQ_CFLAGS="${ADIOSLIB_SEQ_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSLIB_INT_CPPFLAGS="${ADIOSLIB_INT_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSLIB_INT_CFLAGS="${ADIOSLIB_INT_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSLIB_INT_LDFLAGS="${ADIOSLIB_INT_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSLIB_INT_LDADD="${ADIOSLIB_INT_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${RIDCOMPRESS_LIBS}"
-fi
-
 if test -z "${HAVE_FASTBIT_TRUE}"; then
     ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DFASTBIT ${FASTBIT_CPPFLAGS}"
     ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${FASTBIT_CFLAGS}"
@@ -38193,29 +32953,6 @@ if test -z "${HAVE_FASTBIT_TRUE}"; then
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${FASTBIT_LIBS}"
 fi
 
-if test -z "${HAVE_NCSU_TIMER_TRUE}"; then
-    ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSLIB_LDFLAGS="${ADIOSLIB_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSLIB_LDADD="${ADIOSLIB_LDADD} ${TIMER_LIBS}"
-    ADIOSLIB_SEQ_CPPFLAGS="${ADIOSLIB_SEQ_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSLIB_SEQ_CFLAGS="${ADIOSLIB_SEQ_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${TIMER_LIBS}"
-    ADIOSLIB_INT_CPPFLAGS="${ADIOSLIB_INT_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSLIB_INT_CFLAGS="${ADIOSLIB_INT_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSLIB_INT_LDFLAGS="${ADIOSLIB_INT_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSLIB_INT_LDADD="${ADIOSLIB_INT_LDADD} ${TIMER_LIBS}"
-    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${TIMER_LIBS}"
-    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${TIMER_LIBS}"
-fi
-
  if test -z "${HAVE_FLEXPATH_TRUE}"; then
   HAVE_ICEE_TRUE=
   HAVE_ICEE_FALSE='#'
@@ -38226,9 +32963,7 @@ fi
 
 if test -z "${HAVE_FLEXPATH_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICEE 1
-_ACEOF
+$as_echo "#define HAVE_ICEE 1" >>confdefs.h
 
 fi
 
@@ -38254,13 +32989,19 @@ fi
 
 
 
-if test -z "${USE_PARALLEL_COMPILER_TRUE}"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define USE_PARALLEL_COMPILER 1
-_ACEOF
+if test -z "${USE_PARALLEL_HDF5_FOR_UTILS_TRUE}"; then
+
+$as_echo "#define USE_PARALLEL_HDF5_FOR_UTILS 1" >>confdefs.h
 
-        echo "#### Defined USE_PARALLEL_COMPILER to = [${USE_PARALLEL_COMPILER}]"
+        echo "#### Defined USE_PARALLEL_HDF5_FOR_UTILS to = [${USE_PARALLEL_HDF5_FOR_UTILS}]"
+fi
+
+if test -z "${USE_PARALLEL_NETCDF_FOR_UTILS_TRUE}"; then
+
+$as_echo "#define USE_PARALLEL_HDF5_FOR_UTILS 1" >>confdefs.h
+
+        echo "#### Defined USE_PARALLEL_NETCDF_FOR_UTILS to = [${USE_PARALLEL_NETCDF_FOR_UTILS}]"
 fi
 
 VERSION_MAJOR=`echo ${VERSION} | sed -e "s/\..*//"`
@@ -38285,9 +33026,12 @@ 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 tests/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/Makefile tests/C/query/fa [...]
 
 
 cat >confcache <<\_ACEOF
@@ -38317,13 +33061,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
       BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) $as_unset $ac_var ;;
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -38331,8 +33075,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -38354,12 +33098,23 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
   else
-    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
@@ -38373,20 +33128,29 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -38396,993 +33160,594 @@ else
 fi
 
 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_FORTRAN_TRUE}" && test -z "${BUILD_FORTRAN_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_FORTRAN\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"BUILD_FORTRAN\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"BUILD_FORTRAN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MPI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+if test -z "${HAVE_MPI_TRUE}" && test -z "${HAVE_MPI_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_WRITE_TRUE}" && test -z "${BUILD_WRITE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_WRITE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"BUILD_WRITE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"BUILD_WRITE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_MXML_TRUE}" && test -z "${HAVE_MXML_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_MXML\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MXML_TRUE}" && test -z "${BUILD_MXML_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MXML_TRUE}" && test -z "${BUILD_MXML_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_MXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PAMI_TRUE}" && test -z "${HAVE_PAMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PAMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PAMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PAMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PAMI_TRUE}" && test -z "${HAVE_PAMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PAMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PAMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PAMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PAMI_TRUE}" && test -z "${HAVE_PAMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PAMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PAMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PAMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DCMF_TRUE}" && test -z "${HAVE_DCMF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DCMF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DCMF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DCMF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DCMF_TRUE}" && test -z "${HAVE_DCMF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DCMF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DCMF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DCMF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DCMF_TRUE}" && test -z "${HAVE_DCMF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DCMF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DCMF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DCMF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_INFINIBAND_TRUE}" && test -z "${HAVE_INFINIBAND_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_INFINIBAND\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_INFINIBAND\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_INFINIBAND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_INFINIBAND_TRUE}" && test -z "${HAVE_INFINIBAND_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_INFINIBAND\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_INFINIBAND\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_INFINIBAND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_INFINIBAND_TRUE}" && test -z "${HAVE_INFINIBAND_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_INFINIBAND\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_INFINIBAND\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_INFINIBAND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PORTALS_TRUE}" && test -z "${HAVE_PORTALS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PORTALS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${NEED_DARWIN_SINGLE_MODULE_TRUE}" && test -z "${NEED_DARWIN_SINGLE_MODULE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"NEED_DARWIN_SINGLE_MODULE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"NEED_DARWIN_SINGLE_MODULE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"NEED_DARWIN_SINGLE_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PORTALS_TRUE}" && test -z "${HAVE_PORTALS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PORTALS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${NEED_DARWIN_SINGLE_MODULE_TRUE}" && test -z "${NEED_DARWIN_SINGLE_MODULE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"NEED_DARWIN_SINGLE_MODULE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"NEED_DARWIN_SINGLE_MODULE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"NEED_DARWIN_SINGLE_MODULE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PORTALS_TRUE}" && test -z "${HAVE_PORTALS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PORTALS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PORTALS_TRUE}" && test -z "${HAVE_PORTALS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PORTALS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PORTALS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_PMI_TRUE}" && test -z "${HAVE_CRAY_PMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_PMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_PMI_TRUE}" && test -z "${HAVE_CRAY_PMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_PMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_PMI_TRUE}" && test -z "${HAVE_CRAY_PMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_PMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_PMI_TRUE}" && test -z "${HAVE_CRAY_PMI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_PMI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_PMI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_UGNI_TRUE}" && test -z "${HAVE_CRAY_UGNI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_UGNI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_UGNI_TRUE}" && test -z "${HAVE_CRAY_UGNI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_UGNI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_UGNI_TRUE}" && test -z "${HAVE_CRAY_UGNI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_UGNI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_CRAY_UGNI_TRUE}" && test -z "${HAVE_CRAY_UGNI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_CRAY_UGNI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_CRAY_UGNI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_HDF5_TRUE}" && test -z "${HAVE_HDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_HDF5_TRUE}" && test -z "${HAVE_HDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_HDF5_TRUE}" && test -z "${HAVE_HDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_HDF5_TRUE}" && test -z "${HAVE_HDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_PHDF5_TRUE}" && test -z "${HAVE_PHDF5_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PHDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PHDF5_TRUE}" && test -z "${HAVE_PHDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PHDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PHDF5_TRUE}" && test -z "${HAVE_PHDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PHDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PHDF5_TRUE}" && test -z "${HAVE_PHDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PHDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PHDF5_TRUE}" && test -z "${HAVE_PHDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PHDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PHDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NETCDF_TRUE}" && test -z "${HAVE_NETCDF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NETCDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NETCDF_TRUE}" && test -z "${HAVE_NETCDF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NETCDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NETCDF_TRUE}" && test -z "${HAVE_NETCDF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NETCDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NETCDF_TRUE}" && test -z "${HAVE_NETCDF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NETCDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NC4PAR_TRUE}" && test -z "${HAVE_NC4PAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NC4PAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NC4PAR_TRUE}" && test -z "${HAVE_NC4PAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NC4PAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NC4PAR_TRUE}" && test -z "${HAVE_NC4PAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NC4PAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NC4PAR_TRUE}" && test -z "${HAVE_NC4PAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NC4PAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NC4PAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_NC4PAR_TRUE}" && test -z "${HAVE_NC4PAR_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_NC4PAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PABLO_TRUE}" && test -z "${HAVE_PABLO_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PABLO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PABLO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PABLO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PABLO_TRUE}" && test -z "${HAVE_PABLO_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PABLO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PABLO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PABLO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_PABLO_TRUE}" && test -z "${HAVE_PABLO_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PABLO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_PABLO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_PABLO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NSSI_TRUE}" && test -z "${HAVE_NSSI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NSSI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NSSI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NSSI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NSSI_TRUE}" && test -z "${HAVE_NSSI_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NSSI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NSSI\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NSSI\" 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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_echo "$as_me:$LINENO: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_DMALLOC_TRUE}" && test -z "${HAVE_DMALLOC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DMALLOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DMALLOC_TRUE}" && test -z "${HAVE_DMALLOC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DMALLOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DMALLOC_TRUE}" && test -z "${HAVE_DMALLOC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DMALLOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DMALLOC_TRUE}" && test -z "${HAVE_DMALLOC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DMALLOC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DMALLOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_LUSTRE_TRUE}" && test -z "${HAVE_LUSTRE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_LUSTRE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_LUSTRE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_FGR_TRUE}" && test -z "${HAVE_FGR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_FGR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_FGR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_FGR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_FGR_TRUE}" && test -z "${HAVE_FGR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_FGR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_FGR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_FGR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_GLIB_TRUE}" && test -z "${HAVE_GLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_GLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_GLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_GLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_GLIB_TRUE}" && test -z "${HAVE_GLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_GLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_GLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_GLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_GLIB_TRUE}" && test -z "${HAVE_GLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_GLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_GLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_GLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_FLEXPATH_TRUE}" && test -z "${HAVE_FLEXPATH_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_FLEXPATH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_FLEXPATH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_FLEXPATH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BZIP2_TRUE}" && test -z "${HAVE_BZIP2_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_BZIP2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BZIP2_TRUE}" && test -z "${HAVE_BZIP2_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_BZIP2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BZIP2_TRUE}" && test -z "${HAVE_BZIP2_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_BZIP2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BZIP2_TRUE}" && test -z "${HAVE_BZIP2_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_BZIP2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BZIP2_TRUE}" && test -z "${HAVE_BZIP2_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BZIP2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_BZIP2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_SZIP_TRUE}" && test -z "${HAVE_SZIP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_SZIP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_SZIP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_SZIP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_SZIP_TRUE}" && test -z "${HAVE_SZIP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_SZIP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_SZIP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_SZIP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_SZIP_TRUE}" && test -z "${HAVE_SZIP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_SZIP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_SZIP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_SZIP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ISOBAR_TRUE}" && test -z "${HAVE_ISOBAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ISOBAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ISOBAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ISOBAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ISOBAR_TRUE}" && test -z "${HAVE_ISOBAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ISOBAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ISOBAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ISOBAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ISOBAR_TRUE}" && test -z "${HAVE_ISOBAR_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ISOBAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ISOBAR\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ISOBAR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_APLOD_TRUE}" && test -z "${HAVE_APLOD_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_APLOD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_APLOD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_APLOD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_APLOD_TRUE}" && test -z "${HAVE_APLOD_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_APLOD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_APLOD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_APLOD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_APLOD_TRUE}" && test -z "${HAVE_APLOD_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_APLOD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_APLOD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_APLOD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ALACRITY_TRUE}" && test -z "${HAVE_ALACRITY_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ALACRITY\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ALACRITY\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ALACRITY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ALACRITY_TRUE}" && test -z "${HAVE_ALACRITY_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ALACRITY\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ALACRITY\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_RIDCOMPRESS_TRUE}" && test -z "${HAVE_RIDCOMPRESS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_RIDCOMPRESS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_RIDCOMPRESS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_RIDCOMPRESS_TRUE}" && test -z "${HAVE_RIDCOMPRESS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_RIDCOMPRESS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_RIDCOMPRESS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ALACRITY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_FASTBIT_TRUE}" && test -z "${HAVE_FASTBIT_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_FASTBIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_FASTBIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_FASTBIT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_FASTBIT_TRUE}" && test -z "${HAVE_FASTBIT_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_FASTBIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_FASTBIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_FASTBIT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_FASTBIT_TRUE}" && test -z "${HAVE_FASTBIT_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_FASTBIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_FASTBIT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_NCSU_TIMER_TRUE}" && test -z "${HAVE_NCSU_TIMER_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NCSU_TIMER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NCSU_TIMER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_NCSU_TIMER_TRUE}" && test -z "${HAVE_NCSU_TIMER_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NCSU_TIMER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NCSU_TIMER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_FASTBIT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_BGQ_TRUE}" && test -z "${HAVE_BGQ_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BGQ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BGQ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  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_BGQ_TRUE}" && test -z "${HAVE_BGQ_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_BGQ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_BGQ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_BGQ\" 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_echo "$as_me:$LINENO: error: conditional \"RESEARCH_TRANSPORTS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"RESEARCH_TRANSPORTS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"RESEARCH_TRANSPORTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ADIOS_TIMERS_TRUE}" && test -z "${ADIOS_TIMERS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ADIOS_TIMERS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ADIOS_TIMERS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ADIOS_TIMERS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ADIOS_TIMER_EVENTS_TRUE}" && test -z "${ADIOS_TIMER_EVENTS_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"ADIOS_TIMER_EVENTS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"ADIOS_TIMER_EVENTS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"ADIOS_TIMER_EVENTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_DATATAP_TRUE}" && test -z "${HAVE_DATATAP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DATATAP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DATATAP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${USE_PARALLEL_COMPILER_TRUE}" && test -z "${USE_PARALLEL_COMPILER_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"USE_PARALLEL_COMPILER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"USE_PARALLEL_COMPILER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_DATATAP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PARALLEL_HDF5_FOR_UTILS_TRUE}" && test -z "${USE_PARALLEL_HDF5_FOR_UTILS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PARALLEL_HDF5_FOR_UTILS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PARALLEL_NETCDF_FOR_UTILS_TRUE}" && test -z "${USE_PARALLEL_NETCDF_FOR_UTILS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PARALLEL_NETCDF_FOR_UTILS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_HDF5_TRUE}" && test -z "${HAVE_HDF5_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${USE_PARALLEL_COMPILER_TRUE}" && test -z "${USE_PARALLEL_COMPILER_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"USE_PARALLEL_COMPILER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"USE_PARALLEL_COMPILER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PARALLEL_HDF5_FOR_UTILS_TRUE}" && test -z "${USE_PARALLEL_HDF5_FOR_UTILS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PARALLEL_HDF5_FOR_UTILS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_NETCDF_TRUE}" && test -z "${HAVE_NETCDF_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${USE_PARALLEL_COMPILER_TRUE}" && test -z "${USE_PARALLEL_COMPILER_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"USE_PARALLEL_COMPILER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"USE_PARALLEL_COMPILER\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_NETCDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PARALLEL_NETCDF_FOR_UTILS_TRUE}" && test -z "${USE_PARALLEL_NETCDF_FOR_UTILS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PARALLEL_NETCDF_FOR_UTILS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CYGWIN_TRUE}" && test -z "${HAVE_CYGWIN_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CYGWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CYGWIN_TRUE}" && test -z "${HAVE_CYGWIN_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CYGWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_ICEE_TRUE}" && test -z "${HAVE_ICEE_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ICEE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ICEE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_ICEE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -39392,17 +33757,18 @@ cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -39410,23 +33776,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
 as_nl='
 '
 export as_nl
@@ -39434,7 +33792,13 @@ export as_nl
 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
   as_echo='printf %s\n'
   as_echo_n='printf %s'
 else
@@ -39445,7 +33809,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in
+      case $arg in #(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -39468,13 +33832,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
   }
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
 
 # IFS
 # We need space, tab and new line, in precisely that order.  Quoting is
@@ -39484,15 +33841,16 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -39504,12 +33862,16 @@ if test "x$as_myself" = x; then
 fi
 if test ! -f "$as_myself"; then
   $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
@@ -39521,7 +33883,89 @@ export LC_ALL
 LANGUAGE=C
 export LANGUAGE
 
-# Required to use basename.
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -39535,8 +33979,12 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
@@ -39556,76 +34004,25 @@ $as_echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
 
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
@@ -39640,49 +34037,85 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -39692,13 +34125,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # 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.9.0, which was
-generated by GNU Autoconf 2.63.  Invocation command line was
+This file was extended by adios $as_me 1.10.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -39730,13 +34169,15 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTION]... [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
   -q, --quiet, --silent
                    do not print progress messages
   -d, --debug      don't remove temporary files
@@ -39755,16 +34196,17 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf at gnu.org>."
+Report bugs to the package provider."
 
 _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.9.0
-configured by $0, generated by GNU Autoconf 2.63,
-  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+adios config.status 1.10.0
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -39782,11 +34224,16 @@ ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -39800,27 +34247,29 @@ do
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
     $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
-    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --header | --heade | --head | --hea )
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
-    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    { $as_echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
@@ -39828,11 +34277,10 @@ Try \`$0 --help' for more information." >&2
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { $as_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -39849,7 +34297,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -39883,231 +34331,261 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 sed_quote_subst='$sed_quote_subst'
 double_quote_subst='$double_quote_subst'
 delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
-LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`'
-predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-LD_FC='`$ECHO "X$LD_FC" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds_FC='`$ECHO "X$old_archive_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_FC='`$ECHO "X$compiler_FC" | $Xsed -e "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-GCC_FC='`$ECHO "X$GCC_FC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_FC='`$ECHO "X$lt_prog_compiler_no_builtin_flag_FC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_FC='`$ECHO "X$lt_prog_compiler_wl_FC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_FC='`$ECHO "X$lt_prog_compiler_pic_FC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static_FC='`$ECHO "X$lt_prog_compiler_static_FC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_FC='`$ECHO "X$lt_cv_prog_compiler_c_o_FC" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc_FC='`$ECHO "X$archive_cmds_need_lc_FC" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_FC='`$ECHO "X$enable_shared_with_static_runtimes_FC" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_FC='`$ECHO "X$export_dynamic_flag_spec_FC" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec_FC='`$ECHO "X$whole_archive_flag_spec_FC" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object_FC='`$ECHO "X$compiler_needs_object_FC" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_FC='`$ECHO "X$old_archive_from_new_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_FC='`$ECHO "X$old_archive_from_expsyms_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_FC='`$ECHO "X$archive_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds_FC='`$ECHO "X$archive_expsym_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds_FC='`$ECHO "X$module_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds_FC='`$ECHO "X$module_expsym_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld_FC='`$ECHO "X$with_gnu_ld_FC" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag_FC='`$ECHO "X$allow_undefined_flag_FC" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag_FC='`$ECHO "X$no_undefined_flag_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_FC='`$ECHO "X$hardcode_libdir_flag_spec_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_FC='`$ECHO "X$hardcode_libdir_flag_spec_ld_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator_FC='`$ECHO "X$hardcode_libdir_separator_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_FC='`$ECHO "X$hardcode_direct_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute_FC='`$ECHO "X$hardcode_direct_absolute_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L_FC='`$ECHO "X$hardcode_minus_L_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_FC='`$ECHO "X$hardcode_shlibpath_var_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic_FC='`$ECHO "X$hardcode_automatic_FC" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath_FC='`$ECHO "X$inherit_rpath_FC" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs_FC='`$ECHO "X$link_all_deplibs_FC" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path_FC='`$ECHO "X$fix_srcfile_path_FC" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols_FC='`$ECHO "X$always_export_symbols_FC" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds_FC='`$ECHO "X$export_symbols_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms_FC='`$ECHO "X$exclude_expsyms_FC" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms_FC='`$ECHO "X$include_expsyms_FC" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds_FC='`$ECHO "X$prelink_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec_FC='`$ECHO "X$file_list_spec_FC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action_FC='`$ECHO "X$hardcode_action_FC" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_FC='`$ECHO "X$compiler_lib_search_dirs_FC" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects_FC='`$ECHO "X$predep_objects_FC" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects_FC='`$ECHO "X$postdep_objects_FC" | $Xsed -e "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-predeps_FC='`$ECHO "X$predeps_FC" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps_FC='`$ECHO "X$postdeps_FC" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path_FC='`$ECHO "X$compiler_lib_search_path_FC" | $Xsed -e "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
+configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`'
 
 LTCC='$LTCC'
 LTCFLAGS='$LTCFLAGS'
 compiler='$compiler_DEFAULT'
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
 # Quote evaled strings.
-for var in SED \
+for var in SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
 GREP \
 EGREP \
 FGREP \
@@ -40120,8 +34598,13 @@ reload_flag \
 OBJDUMP \
 deplibs_check_method \
 file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
 AR \
 AR_FLAGS \
+archiver_list_spec \
 STRIP \
 RANLIB \
 CC \
@@ -40129,16 +34612,19 @@ CFLAGS \
 compiler \
 lt_cv_sys_global_symbol_pipe \
 lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
 lt_cv_sys_global_symbol_to_c_name_address \
 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-SHELL \
-ECHO \
+lt_cv_nm_interface \
+nm_file_list_spec \
+lt_cv_truncate_bin \
 lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
 lt_prog_compiler_pic \
+lt_prog_compiler_wl \
 lt_prog_compiler_static \
 lt_cv_prog_compiler_c_o \
 need_locks \
+MANIFEST_TOOL \
 DSYMUTIL \
 NMEDIT \
 LIPO \
@@ -40152,9 +34638,7 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
-fix_srcfile_path \
 exclude_expsyms \
 include_expsyms \
 file_list_spec \
@@ -40162,6 +34646,7 @@ variables_saved_for_relink \
 libname_spec \
 library_names_spec \
 soname_spec \
+install_override_mode \
 finish_eval \
 old_striplib \
 striplib \
@@ -40173,14 +34658,16 @@ postdeps \
 compiler_lib_search_path \
 LD_CXX \
 LD_FC \
+reload_flag_CXX \
+reload_flag_FC \
 compiler_CXX \
 compiler_FC \
 lt_prog_compiler_no_builtin_flag_CXX \
 lt_prog_compiler_no_builtin_flag_FC \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_wl_FC \
 lt_prog_compiler_pic_CXX \
 lt_prog_compiler_pic_FC \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_wl_FC \
 lt_prog_compiler_static_CXX \
 lt_prog_compiler_static_FC \
 lt_cv_prog_compiler_c_o_CXX \
@@ -40199,12 +34686,8 @@ no_undefined_flag_CXX \
 no_undefined_flag_FC \
 hardcode_libdir_flag_spec_CXX \
 hardcode_libdir_flag_spec_FC \
-hardcode_libdir_flag_spec_ld_CXX \
-hardcode_libdir_flag_spec_ld_FC \
 hardcode_libdir_separator_CXX \
 hardcode_libdir_separator_FC \
-fix_srcfile_path_CXX \
-fix_srcfile_path_FC \
 exclude_expsyms_CXX \
 exclude_expsyms_FC \
 include_expsyms_CXX \
@@ -40223,9 +34706,9 @@ postdeps_CXX \
 postdeps_FC \
 compiler_lib_search_path_CXX \
 compiler_lib_search_path_FC; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -40247,11 +34730,15 @@ module_cmds \
 module_expsym_cmds \
 export_symbols_cmds \
 prelink_cmds \
+postlink_cmds \
 postinstall_cmds \
 postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
+configure_time_dlsearch_path \
+configure_time_lt_sys_library_path \
+reload_cmds_CXX \
+reload_cmds_FC \
 old_archive_cmds_CXX \
 old_archive_cmds_FC \
 old_archive_from_new_cmds_CXX \
@@ -40269,10 +34756,12 @@ module_expsym_cmds_FC \
 export_symbols_cmds_CXX \
 export_symbols_cmds_FC \
 prelink_cmds_CXX \
-prelink_cmds_FC; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+prelink_cmds_FC \
+postlink_cmds_CXX \
+postlink_cmds_FC; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -40280,26 +34769,17 @@ prelink_cmds_FC; do
     esac
 done
 
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
-  ;;
-esac
-
 ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
 
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
 # commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
 
     PACKAGE='$PACKAGE'
     VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
     RM='$RM'
     ofile='$ofile'
 
@@ -40321,9 +34801,11 @@ 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" ;;
     "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" ;;
     "tests/C/flexpath_tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/C/flexpath_tests/Makefile" ;;
     "tests/C/flexpath_tests/1D_arr_global/Makefile") CONFIG_FILES="$CONFIG_FILES tests/C/flexpath_tests/1D_arr_global/Makefile" ;;
@@ -40356,6 +34838,7 @@ do
     "utils/skel/lib/skel_have_adios_timing.py") CONFIG_FILES="$CONFIG_FILES utils/skel/lib/skel_have_adios_timing.py" ;;
     "utils/adios_lint/Makefile") CONFIG_FILES="$CONFIG_FILES utils/adios_lint/Makefile" ;;
     "utils/gpp/Makefile") CONFIG_FILES="$CONFIG_FILES utils/gpp/Makefile" ;;
+    "utils/gpp/gpp.py") CONFIG_FILES="$CONFIG_FILES utils/gpp/gpp.py" ;;
     "utils/bpdump/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bpdump/Makefile" ;;
     "utils/bp2h5/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bp2h5/Makefile" ;;
     "utils/bp2ncd/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bp2ncd/Makefile" ;;
@@ -40364,7 +34847,7 @@ do
     "utils/bpls/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bpls/Makefile" ;;
     "utils/bpdiff/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bpdiff/Makefile" ;;
     "utils/bp2bp/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bp2bp/Makefile" ;;
-    "utils/list_methods/Makefile") CONFIG_FILES="$CONFIG_FILES utils/list_methods/Makefile" ;;
+    "utils/adios_list_methods/Makefile") CONFIG_FILES="$CONFIG_FILES utils/adios_list_methods/Makefile" ;;
     "utils/bpmeta/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bpmeta/Makefile" ;;
     "utils/bprecover/Makefile") CONFIG_FILES="$CONFIG_FILES utils/bprecover/Makefile" ;;
     "utils/fastbit/Makefile") CONFIG_FILES="$CONFIG_FILES utils/fastbit/Makefile" ;;
@@ -40392,13 +34875,11 @@ do
     "examples/Fortran/global-array/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Fortran/global-array/Makefile" ;;
     "examples/Fortran/global-array-time/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Fortran/global-array-time/Makefile" ;;
     "examples/Fortran/schema/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Fortran/schema/Makefile" ;;
-    "adios_config") CONFIG_FILES="$CONFIG_FILES adios_config" ;;
-    "adios_config.flags") CONFIG_FILES="$CONFIG_FILES adios_config.flags" ;;
+    "adios_config.flags.makesrc") CONFIG_FILES="$CONFIG_FILES adios_config.flags.makesrc" ;;
+    "adios_config.makesrc") CONFIG_FILES="$CONFIG_FILES adios_config.makesrc" ;;
     "src/public/adios_version.h") CONFIG_FILES="$CONFIG_FILES src/public/adios_version.h" ;;
 
-  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -40421,26 +34902,24 @@ fi
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} ||
-{
-   $as_echo "$as_me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -40448,7 +34927,13 @@ $debug ||
 if test -n "$CONFIG_FILES"; then
 
 
-ac_cr='
'
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
   ac_cs_awk_cr='\\r'
@@ -40456,7 +34941,7 @@ else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 
@@ -40465,24 +34950,18 @@ _ACEOF
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -40490,7 +34969,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -40504,7 +34983,7 @@ s/'"$ac_delim"'$//
 t delim
 :nl
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more1
 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
 p
@@ -40518,7 +34997,7 @@ s/.\{148\}//
 t nl
 :delim
 h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
 t more2
 s/["\\]/\\&/g; s/^/"/; s/$/"/
 p
@@ -40538,7 +35017,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = ""
 
@@ -40570,23 +35049,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
-   { (exit 1); exit 1; }; }
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[	 ]*$//
 }'
 fi
@@ -40598,7 +35083,7 @@ fi # test -n "$CONFIG_FILES"
 # No need to generate them if there are no CONFIG_HEADERS.
 # This happens for instance with `./config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
@@ -40610,13 +35095,11 @@ _ACEOF
 # handling of long lines.
 ac_delim='%!_!# '
 for ac_last_try in false false :; do
-  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; then
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
     break
   elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -40701,9 +35184,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
-$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -40716,9 +35197,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -40737,7 +35216,7 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
 	 # because $ac_f cannot contain `:'.
@@ -40746,12 +35225,10 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      ac_file_inputs="$ac_file_inputs '$ac_f'"
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
@@ -40762,7 +35239,7 @@ $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
 	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
 $as_echo "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
@@ -40772,57 +35249,20 @@ $as_echo "$as_me: creating $ac_file" >&6;}
        sed 's/[\\\\&|]/\\\\&/g'`;; #(
     *) ac_sed_conf_input=$configure_input;;
     esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -40840,12 +35280,7 @@ $as_echo X"$as_dir" |
 	    q
 	  }
 	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
@@ -40902,7 +35337,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
 ac_sed_dataroot='
 /datarootdir/ {
   p
@@ -40912,12 +35346,11 @@ ac_sed_dataroot='
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-'
+/@mandir@/p'
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -40927,7 +35360,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
@@ -40955,27 +35388,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
 s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
   esac \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -40984,27 +35414,21 @@ $as_echo "$as_me: error: could not create $ac_file" >&2;}
   if test x"$ac_file" != x-; then
     {
       $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
-    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
-	|| { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
-$as_echo "$as_me: error: could not create -" >&2;}
-   { (exit 1); exit 1; }; }
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -41042,7 +35466,7 @@ $as_echo X"$_am_arg" |
 	  s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
 
-  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
   esac
@@ -41050,7 +35474,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -41063,7 +35487,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -41097,21 +35521,19 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
@@ -41137,47 +35559,7 @@ $as_echo X"$file" |
 	    q
 	  }
 	  s/.*/./; q'`
-      { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
       # echo "creating $dirpart/$file"
       echo '# dummy' > "$dirpart/$file"
     done
@@ -41186,54 +35568,53 @@ $as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
  ;;
     "libtool":C)
 
-    # See if we are running on zsh, and set the options which allow our
+    # See if we are running on zsh, and set the options that allow our
     # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
+    if test -n "${ZSH_VERSION+set}"; then
       setopt NO_GLOB_SUBST
     fi
 
-    cfgfile="${ofile}T"
+    cfgfile=${ofile}T
     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     $RM "$cfgfile"
 
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
 #
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
 #
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 # The names of the tagged configurations supported by this script.
-available_tags="CXX FC "
+available_tags='CXX FC '
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
 
 # ### BEGIN LIBTOOL CONFIG
 
@@ -41253,6 +35634,18 @@ pic_mode=$pic_mode
 # Whether or not to optimize for fast installation.
 fast_install=$enable_fast_install
 
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=$shared_archive_member_spec
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -41302,9 +35695,11 @@ SP2NL=$lt_lt_SP2NL
 # turn newlines into spaces.
 NL2SP=$lt_lt_NL2SP
 
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 
 # An object symbol dumper.
 OBJDUMP=$lt_OBJDUMP
@@ -41312,13 +35707,30 @@ OBJDUMP=$lt_OBJDUMP
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
 
-# Command to use when deplibs_check_method == "file_magic".
+# Command to use when deplibs_check_method = "file_magic".
 file_magic_cmd=$lt_file_magic_cmd
 
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
 # The archiver.
 AR=$lt_AR
+
+# Flags to create an archive.
 AR_FLAGS=$lt_AR_FLAGS
 
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
 # A symbol stripping program.
 STRIP=$lt_STRIP
 
@@ -41327,6 +35739,9 @@ RANLIB=$lt_RANLIB
 old_postinstall_cmds=$lt_old_postinstall_cmds
 old_postuninstall_cmds=$lt_old_postuninstall_cmds
 
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
 # A C compiler.
 LTCC=$lt_CC
 
@@ -41339,20 +35754,29 @@ global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
 # Transform the output of nm in a proper C declaration.
 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
 # Transform the output of nm in a C name address pair.
 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 
 # Transform the output of nm in a C name address pair when lib prefix is needed.
 global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
 
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
 
-# An echo program that does not interpret backslashes.
-ECHO=$lt_ECHO
+# The root where to search for dependent libraries,and where our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# Command to truncate a binary pipe.
+lt_truncate_bin=$lt_lt_cv_truncate_bin
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
 
 # Used to examine libraries when file_magic_cmd begins with "file".
 MAGIC_CMD=$MAGIC_CMD
@@ -41360,6 +35784,9 @@ MAGIC_CMD=$MAGIC_CMD
 # Must we lock files when doing compilation?
 need_locks=$lt_need_locks
 
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
 DSYMUTIL=$lt_DSYMUTIL
 
@@ -41416,6 +35843,9 @@ library_names_spec=$lt_library_names_spec
 # The coded name of the library, if different from the real name.
 soname_spec=$lt_soname_spec
 
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
 # Command to use after installation of a shared archive.
 postinstall_cmds=$lt_postinstall_cmds
 
@@ -41435,8 +35865,11 @@ hardcode_into_libs=$hardcode_into_libs
 # Compile-time system search path for libraries.
 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
 
 # Whether dlopen is supported.
 dlopen_support=$enable_dlopen
@@ -41455,6 +35888,10 @@ striplib=$lt_striplib
 # The linker used to build libraries.
 LD=$lt_LD
 
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
 # Commands used to build an old-style archive.
 old_archive_cmds=$lt_old_archive_cmds
 
@@ -41467,12 +35904,12 @@ with_gcc=$GCC
 # Compiler flag to turn off builtin functions.
 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
 # Additional compiler flags for building library objects.
 pic_flag=$lt_lt_prog_compiler_pic
 
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
 # Compiler flag to prevent dynamic linking.
 link_static_flag=$lt_lt_prog_compiler_static
 
@@ -41522,20 +35959,16 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
 # library is relocated.
 hardcode_direct_absolute=$hardcode_direct_absolute
 
@@ -41559,9 +35992,6 @@ inherit_rpath=$inherit_rpath
 # Whether libtool must link a program against all its dependency libraries.
 link_all_deplibs=$link_all_deplibs
 
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
 # Set to "yes" if exported symbols are required.
 always_export_symbols=$always_export_symbols
 
@@ -41577,6 +36007,9 @@ include_expsyms=$lt_include_expsyms
 # Commands necessary for linking programs (against libraries) with templates.
 prelink_cmds=$lt_prelink_cmds
 
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
 # Specify filename containing input files.
 file_list_spec=$lt_file_list_spec
 
@@ -41601,13 +36034,72 @@ compiler_lib_search_path=$lt_compiler_lib_search_path
 
 _LT_EOF
 
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -41616,219 +36108,17 @@ _LT_EOF
   esac
 
 
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
 
 
   # We use sed instead of cat because bash on DJGPP gets confused if
   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
   # text mode, it properly converts lines to CR/LF.  This bash problem
   # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $* ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[^=]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$@"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
 
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1+=\$2"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1=\$$1\$2"
-}
-
-_LT_EOF
-    ;;
-  esac
-
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
+   mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
 
@@ -41840,6 +36130,10 @@ _LT_EOF
 # The linker used to build libraries.
 LD=$lt_LD_CXX
 
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
 # Commands used to build an old-style archive.
 old_archive_cmds=$lt_old_archive_cmds_CXX
 
@@ -41852,12 +36146,12 @@ with_gcc=$GCC_CXX
 # Compiler flag to turn off builtin functions.
 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
 # Additional compiler flags for building library objects.
 pic_flag=$lt_lt_prog_compiler_pic_CXX
 
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
 # Compiler flag to prevent dynamic linking.
 link_static_flag=$lt_lt_prog_compiler_static_CXX
 
@@ -41907,20 +36201,16 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct_CXX
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
 # library is relocated.
 hardcode_direct_absolute=$hardcode_direct_absolute_CXX
 
@@ -41944,9 +36234,6 @@ inherit_rpath=$inherit_rpath_CXX
 # Whether libtool must link a program against all its dependency libraries.
 link_all_deplibs=$link_all_deplibs_CXX
 
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path_CXX
-
 # Set to "yes" if exported symbols are required.
 always_export_symbols=$always_export_symbols_CXX
 
@@ -41962,6 +36249,9 @@ include_expsyms=$lt_include_expsyms_CXX
 # Commands necessary for linking programs (against libraries) with templates.
 prelink_cmds=$lt_prelink_cmds_CXX
 
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
 # Specify filename containing input files.
 file_list_spec=$lt_file_list_spec_CXX
 
@@ -41993,6 +36283,10 @@ _LT_EOF
 # The linker used to build libraries.
 LD=$lt_LD_FC
 
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_FC
+reload_cmds=$lt_reload_cmds_FC
+
 # Commands used to build an old-style archive.
 old_archive_cmds=$lt_old_archive_cmds_FC
 
@@ -42005,12 +36299,12 @@ with_gcc=$GCC_FC
 # Compiler flag to turn off builtin functions.
 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
 # Additional compiler flags for building library objects.
 pic_flag=$lt_lt_prog_compiler_pic_FC
 
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_FC
+
 # Compiler flag to prevent dynamic linking.
 link_static_flag=$lt_lt_prog_compiler_static_FC
 
@@ -42060,20 +36354,16 @@ no_undefined_flag=$lt_no_undefined_flag_FC
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_FC
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct_FC
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
 # library is relocated.
 hardcode_direct_absolute=$hardcode_direct_absolute_FC
 
@@ -42097,9 +36387,6 @@ inherit_rpath=$inherit_rpath_FC
 # Whether libtool must link a program against all its dependency libraries.
 link_all_deplibs=$link_all_deplibs_FC
 
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path_FC
-
 # Set to "yes" if exported symbols are required.
 always_export_symbols=$always_export_symbols_FC
 
@@ -42115,6 +36402,9 @@ include_expsyms=$lt_include_expsyms_FC
 # Commands necessary for linking programs (against libraries) with templates.
 prelink_cmds=$lt_prelink_cmds_FC
 
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_FC
+
 # Specify filename containing input files.
 file_list_spec=$lt_file_list_spec_FC
 
@@ -42144,15 +36434,12 @@ _LT_EOF
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -42173,14 +36460,16 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
+chmod +x utils/gpp/gpp.py
+
 echo
 echo "*********************************"
 echo $PACKAGE configured as follows:
@@ -42196,6 +36485,11 @@ if test -z "${BUILD_FORTRAN_TRUE}"; then
 else
     echo "  - Build only the C libraries (no Fortran)";
 fi
+if test -z "${HAVE_MPI_TRUE}"; then
+    echo "  - Build both the parallel and sequential libraries";
+else
+    echo "  - Build only the sequential libraries (no MPI)";
+fi
 echo
 echo "  - General Compile FLAGS";
 echo "      - CC  = $CC";
@@ -42208,11 +36502,13 @@ echo "      - FCFLAGS  = $FCFLAGS";
 echo "      - LDLAGS   = $LDFLAGS";
 echo "      - LIBS     = $LIBS";
 echo
-echo "      - MPICC   = $MPICC";
-echo "      - MPICXX  = $MPICXX";
-echo "      - MPIFC   = $MPIFC";
-echo "      - MPILIBS = $MPILIBS";
-echo
+if test -z "${HAVE_MPI_TRUE}"; then
+    echo "      - MPICC   = $MPICC";
+    echo "      - MPICXX  = $MPICXX";
+    echo "      - MPIFC   = $MPIFC";
+    echo "      - MPILIBS = $MPILIBS";
+    echo
+fi
 
 if test "x$enable_research_transports" == "xyes"; then
     echo "  - Research Transports Included";
@@ -42233,15 +36529,18 @@ else
 fi
 
 
-if test -z "${HAVE_MXML_TRUE}"; then
-    echo "  - MXML";
-    echo "      - MXML_CFLAGS = $MXML_CFLAGS";
-    echo "      - MXML_CPPFLAGS = $MXML_CPPFLAGS";
-    echo "      - MXML_LDFLAGS = $MXML_LDFLAGS";
-    echo "      - MXML_LIBS = $MXML_LIBS";
-    echo
+if test -z "${BUILD_MXML_TRUE}" -a -z "${BUILD_WRITE_TRUE}"; then
+    echo "  - MXML is built with ADIOS";
 else
-    echo "  - No MXML"
+    if test -z "${HAVE_MXML_TRUE}"; then
+        echo "  - MXML";
+        echo "      - MXML_CPPFLAGS = $MXML_CPPFLAGS";
+        echo "      - MXML_LDFLAGS = $MXML_LDFLAGS";
+        echo "      - MXML_LIBS = $MXML_LIBS";
+        echo
+    else
+        echo "  - No MXML"
+    fi
 fi
 
 if test -z "${HAVE_LUSTRE_TRUE}"; then
@@ -42330,16 +36629,16 @@ else
 fi
 
 
-if test "x${datatap}" != "xdisable"; then
-    echo "  - DataTap with interconnect: $datatap";
-    echo "      - DT_CFLAGS     = $DT_CFLAGS";
-    echo "      - DT_CPPFLAGS   = $DT_CPPFLAGS";
-    echo "      - DT_LDFLAGS    = $DT_LDFLAGS";
-    echo "      - DT_LIBS       = $DT_LIBS";
-    echo
-else
-    echo "  - No DataTap transport to build DATATAP transport method";
-fi
+#if test "x${datatap}" != "xdisable"; then
+#    echo "  - DataTap with interconnect: $datatap";
+#    echo "      - DT_CFLAGS     = $DT_CFLAGS";
+#    echo "      - DT_CPPFLAGS   = $DT_CPPFLAGS";
+#    echo "      - DT_LDFLAGS    = $DT_LDFLAGS";
+#    echo "      - DT_LIBS       = $DT_LIBS";
+#    echo
+#else
+#    echo "  - No DataTap transport to build DATATAP transport method";
+#fi
 
 if test -z "${HAVE_DATASPACES_TRUE}"; then
     echo "  - DATASPACES transport method";
@@ -42517,29 +36816,6 @@ else
     echo "  - No ALACRITY to build ALACRITY transform & query methods"
 fi
 
-if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
-    echo "  - RIDCOMPRESS";
-    echo "      - RIDCOMPRESS_CFLAGS = $RIDCOMPRESS_CFLAGS";
-    echo "      - RIDCOMPRESS_CPPFLAGS = $RIDCOMPRESS_CPPFLAGS";
-    echo "      - RIDCOMPRESS_LDFLAGS = $RIDCOMPRESS_LDFLAGS";
-    echo "      - RIDCOMPRESS_LIBS = $RIDCOMPRESS_LIBS";
-    echo
-else
-    echo "  - No RIDCOMPRESS to build RIDCOMPRESS transform method"
-fi
-
-
-if test -z "${HAVE_NCSU_TIMER_TRUE}"; then
-    echo "  - NCSU timer lib";
-    echo "      - TIMER_CFLAGS = $TIMER_CFLAGS";
-    echo "      - TIMER_CPPFLAGS = $TIMER_CPPFLAGS";
-    echo "      - TIMER_LDFLAGS = $TIMER_LDFLAGS";
-    echo "      - TIMER_LIBS = $TIMER_LIBS";
-    echo
-else
-    echo "  - No NCSU timer lib"
-fi
-
 if test -z "${HAVE_BGQ_TRUE}"; then
     echo "  - BGQ METHOD is enabled";
 else
@@ -42548,3 +36824,4 @@ fi
 
 #echo "  - SVN version = ${SVNVERSION}"
 echo "  - Install path = ${prefix}"
+
diff --git a/configure.ac b/configure.ac
index ae92d02..0bccc02 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,17 +1,21 @@
-AC_INIT([adios], [1.9.0])
+AC_INIT([adios], [1.10.0])
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(config)
 AC_REVISION($Revision$)
 
 AC_CONFIG_HEADERS(config.h)
-AM_INIT_AUTOMAKE
+dnl Require Automake 1.12.0 or better.
+dnl We need automake correctly generate object file path for .F90 modules when
+dnl enabling subdir-objects
+dnl Automake 1.10 wants to use ./adiosf_read_mod.o for libadiosf.a, although
+dnl it correctly places that object file into core/adiosf_read_mod.o
+dnl Also use EXTRA_libraryname_DEPENDENCIES which is not available in 1.11
+AM_INIT_AUTOMAKE([1.12.0])    
 
 AM_MAINTAINER_MODE([enable])
 
 AC_LANG(C)
-AC_C_STRINGIZE
-dnl generates HAVE_STRINGIZE
 
 AC_PROG_CC
 AM_PROG_CC_C_O
@@ -19,14 +23,19 @@ AC_PROG_CXX
 
 AC_LANG(C)
 ACX_MPI([], [AC_MSG_ERROR([could not find mpi library for C])])
-
-AC_LANG(C++)
-ACX_MPI([], [AC_MSG_ERROR([could not find mpi library for C++])])
+if test -z "${HAVE_MPI_TRUE}"; then
+    AC_LANG(C++)
+    ACX_MPI([], [AC_MSG_ERROR([could not find mpi library for C++])])
+else
+    AC_DEFINE(HAVE_MPI,0,[Don not have MPI to build parallel libraries])
+fi
 
 AC_ARG_ENABLE(fortran,
-    [AS_HELP_STRING([--disable-fortran],[disable Fortran test programs in ADIOS.])])
+    [AS_HELP_STRING([--disable-fortran],[disable building Fortran libraries.])])
 AM_CONDITIONAL([BUILD_FORTRAN], [test "x$enable_fortran" != "xno"])
 
+AC_CANONICAL_HOST
+
 if test "x$enable_fortran" != "xno"; then
     AC_PROG_FC
     AC_PROG_FC_C_O
@@ -34,8 +43,10 @@ if test "x$enable_fortran" != "xno"; then
     F77=$FC
     dnl AC_PROG_F77
     dnl AC_PROG_F77_C_O
-    AC_LANG(Fortran)
-    ACX_MPI([], [AC_MSG_ERROR([could not find mpi library for Fortran])])
+    if test -z "${HAVE_MPI_TRUE}"; then
+        AC_LANG(Fortran)
+        ACX_MPI([], [AC_MSG_ERROR([could not find mpi library for Fortran])])
+    fi
 fi
 
 AC_LANG(C)
@@ -58,19 +69,85 @@ dnl g/^hardcode_libdir_flag_spec=".*"/s//hardcode_libdir_flag_spec=""/
 dnl g/^hardcode_libdir_flag_spec_ld=".*"/s//hardcode_libdir_flag_spec_ld=""/
 
 AC_SEARCH_LIBS([nanosleep], [rt])
-AC_CHECK_FUNCS([nanosleep strncpy strerror gettimeofday])
+AC_SEARCH_LIBS([clock_gettime], [rt])
+AC_CHECK_FUNCS([nanosleep gettimeofday clock_gettime clock_get_time strncpy strerror])
+
+AC_C_STRINGIZE
+dnl generates HAVE_STRINGIZE
+AC_FUNC_STRTOLD
+dnl generates HAVE_STRTOLD
+
+
+dnl ========== Some checks inherited from MXML's configure =============
+
+dnl Inline functions...
+AC_C_INLINE
+
+dnl Checks for string functions.
+AC_CHECK_FUNCS(strdup)
+AC_CHECK_FUNCS(snprintf vsnprintf)
+
+dnl Check for "long long" support...
+AC_CACHE_CHECK([for long long int], ac_cv_c_long_long,
+    [if test "$GCC" = yes; then
+        ac_cv_c_long_long=yes
+    else
+        AC_TRY_COMPILE(,[long long int i;],
+            ac_cv_c_long_long=yes,
+            ac_cv_c_long_long=no)
+    fi])
+
+if test $ac_cv_c_long_long = yes; then
+    AC_DEFINE(HAVE_LONG_LONG,1,[Have long long int, a type may be used by MXML])
+fi
+
+dnl ========== End of checks inherited from MXML's configure =============
+
+
+
+
+dnl check if -lm is needed to be added
+AC_SEARCH_LIBS([ceil], [m])
 
 AC_ARG_ENABLE(write,
     [AS_HELP_STRING([--disable-write],[disable building the write methods in ADIOS.])])
 AM_CONDITIONAL([BUILD_WRITE], [test "x$enable_write" != "xno"])
 
 AC_MXML
-dnl MXML is required for Write API, turn off Write if MXML is not present
+dnl MXML is required for Write API, build from source in mxml/mxml-2.9 if not provided by user
 if test -z "${HAVE_MXML_FALSE}" -a -z "${BUILD_WRITE_TRUE}"; then
-    AC_MSG_ERROR([The ADIOS libraries for writing cannot be built without the MXML library. Either specify where the MXML library is found, or use --disable-write to build ADIOS for reading only.])
+    AC_MSG_NOTICE([External MXML library not provided. Build the included MXML source])
+    AM_CONDITIONAL(HAVE_MXML,true)
+    AM_CONDITIONAL(BUILD_MXML,true)
+    MXML_CPPFLAGS="${CPPFLAGS} -I\$(top_srcdir)/src/mxml/mxml-2.9"
+    MXML_BUILD_LDFLAGS=
+    MXML_LDFLAGS=
+    MXML_LIBS=
+    AC_SUBST(MXML_CPPFLAGS)
+    AC_SUBST(MXML_LIBS)
+    AC_SUBST(MXML_BUILD_LDFLAGS)
+    AC_SUBST(MXML_LDFLAGS)
+    AC_DEFINE_UNQUOTED(MXML_VERSION, [Mini-XML v2.9], [MXML version string])
+    dnl AC_DEFINE(HAVE_PTHREAD_H, 0, [We build Mini-XML without pthread support because ADIOS does not need it])
+    dnl AC_CONFIG_SUBDIRS([mxml/mxml-2.9])
+    dnl AC_MSG_ERROR([The ADIOS libraries for writing cannot be built without the MXML library. Either specify where the MXML library is found, or use --disable-write to build ADIOS for reading only.])
     dnl AM_CONDITIONAL([BUILD_WRITE], false)
+else
+    AM_CONDITIONAL(BUILD_MXML,false)
 fi
 
+
+# Make sure we find Python2
+m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+                  [python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
+AM_PATH_PYTHON([2.0])
+dnl AS_VERSION_COMPARE([${PYTHON_VERSION}], [3.0], [HAVE_PYTHON2=yes], [HAVE_PYTHON2=no], [HAVE_PYTHON2=no])
+dnl if test "x${HAVE_PYTHON2}" == "xno"; then 
+dnl     AC_MSG_ERROR([ADIOS requires python 2.x installed.])
+dnl fi
+dnl Set PYTHON_EXECUTABLE to have the same variable as with CMake
+AC_SUBST(PYTHON_EXECUTABLE,${PYTHON})
+
 dnl AC_PROG_GENGETOPT
 AC_PAMI
 AC_DCMF
@@ -97,9 +174,7 @@ AC_SZIP
 AC_ISOBAR
 AC_APLOD
 AC_ALACRITY
-AC_RIDCOMPRESS
 AC_FASTBIT
-AX_NCSU_LIBTIMER
 AC_BGQ
 
 AC_LANG(C)
@@ -148,10 +223,6 @@ AC_LANG(C)
 AM_CONDITIONAL([HAVE_DATATAP], [test x$datatap != xdisable])
 
 
-dnl CC="$MPICC"
-dnl CXX="$MPICXX"
-dnl FC="$MPIFC"
-
 dnl Unset if MPILIBS == " ", a byproduct of config/acx_mpi.m4 on success
 if test "x y" == "x${MPILIBS}y"; then
     MPILIBS=""
@@ -160,7 +231,8 @@ if test -n "${MPILIBS}"; then
     LIBS="${MPILIBS} ${LIBS}"
 fi
 
-AM_CONDITIONAL(USE_PARALLEL_COMPILER,false)
+AM_CONDITIONAL(USE_PARALLEL_HDF5_FOR_UTILS,false)
+AM_CONDITIONAL(USE_PARALLEL_NETCDF_FOR_UTILS,false)
 
 if test -z "${MACRODEFFLAG}"; then
     MACRODEFFLAG="-D"
@@ -168,6 +240,8 @@ fi
 AC_SUBST(MACRODEFFLAG)
 
 
+
+
 dnl Use PHDF5 for bp2h5 if no sequential HDF5 was found
 if test -z "${HAVE_PHDF5_TRUE}" -a -z "${HAVE_HDF5_FALSE}"; then
     HDF5_CPPFLAGS="${PHDF5_CPPFLAGS}"
@@ -176,9 +250,13 @@ if test -z "${HAVE_PHDF5_TRUE}" -a -z "${HAVE_HDF5_FALSE}"; then
     HDF5_LIBS="${PHDF5_LIBS}"
     AM_CONDITIONAL(HAVE_HDF5,true)
     AC_DEFINE(HAVE_HDF5,1,[Define if you have HDF5.])
-    AM_CONDITIONAL(USE_PARALLEL_COMPILER,true)
+    AM_CONDITIONAL(USE_PARALLEL_HDF5_FOR_UTILS,true)
     AC_MSG_NOTICE([Use PHDF5 for sequential HDF5 tools])
+    BP2H5_CC="${MPICC}"
+else
+    BP2H5_CC="${CC}"
 fi
+AC_SUBST(BP2H5_CC)
 
 dnl Use NC4PAR for bp2ncd if no sequential NETCDF was found
 if test -z "${HAVE_NC4PAR_TRUE}" -a -z "${HAVE_NETCDF_FALSE}"; then
@@ -188,9 +266,28 @@ if test -z "${HAVE_NC4PAR_TRUE}" -a -z "${HAVE_NETCDF_FALSE}"; then
     NETCDF_LIBS="${NC4PAR_LIBS}"
     AM_CONDITIONAL(HAVE_NETCDF,true)
     AC_DEFINE(HAVE_NETCDF,1,[Define if you have NETCDF.])
-    AM_CONDITIONAL(USE_PARALLEL_COMPILER,true)
+    AM_CONDITIONAL(USE_PARALLEL_NETCDF_FOR_UTILS,true)
     AC_MSG_NOTICE([Use NC4PAR for sequential NETCDF tools])
+    BP2NCD_CC="${MPICC}"
+else
+    BP2NCD_CC="${CC}"
 fi
+AC_SUBST(BP2NCD_CC)
+
+opsys=''
+canonical=${host}
+
+case "${canonical}" in
+     *-*-cygwin )
+        AM_CONDITIONAL(HAVE_CYGWIN, true)
+        AC_DEFINE(__USE_LINUX_IOCTL_DEFS,1,[Define if you use CYGWIN.])
+     ;;
+     * )
+        AM_CONDITIONAL(HAVE_CYGWIN, false)
+     ;;
+esac
+
+
 
 
 dnl Generate flags for adios lib creation which depends on the packages we found
@@ -201,32 +298,33 @@ dnl ADIOSREADLIB_* for codes using libadiosread.a, libadiosreadf.a
 dnl ADIOSREADLIB_SEQ_* for codes using libadiosread_nompi.a
 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"
-ADIOSLIB_CPPFLAGS="${MXML_CPPFLAGS}"
+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}"
+ADIOSLIB_CPPFLAGS=
 ADIOSLIB_CFLAGS=
 ADIOSLIB_LDFLAGS="${MXML_LDFLAGS}"
-ADIOSLIB_LDADD="-lm ${MXML_LIBS}"
-ADIOSLIB_SEQ_CPPFLAGS="${MACRODEFFLAG}_NOMPI ${MXML_CPPFLAGS}"
+ADIOSLIB_LDADD="${MXML_LIBS}"
+ADIOSLIB_SEQ_CPPFLAGS="${MACRODEFFLAG}_NOMPI"
 ADIOSLIB_SEQ_CFLAGS=
 ADIOSLIB_SEQ_LDFLAGS="${MXML_LDFLAGS}"
-ADIOSLIB_SEQ_LDADD="-lm ${MXML_LIBS}"
+ADIOSLIB_SEQ_LDADD="${MXML_LIBS}"
 ADIOSLIB_INT_CPPFLAGS="${MACRODEFFLAG}_NOMPI"
 ADIOSLIB_INT_CFLAGS=
-ADIOSLIB_INT_LDFLAGS=
-ADIOSLIB_INT_LDADD=
 if test "x$enable_write" != "xno"; then
-    ADIOSLIB_INT_CPPFLAGS="${ADIOSLIB_INT_CPPFLAGS} ${MXML_CPPFLAGS}"
     ADIOSLIB_INT_LDFLAGS="${MXML_LDFLAGS}"
-    ADIOSLIB_INT_LDADD="-lm ${MXML_LIBS}"
+    ADIOSLIB_INT_LDADD="${MXML_LIBS}"
+else
+    ADIOSLIB_INT_LDFLAGS=
+    ADIOSLIB_INT_LDADD=
 fi
 ADIOSREADLIB_CPPFLAGS=
 ADIOSREADLIB_CFLAGS=
 ADIOSREADLIB_LDFLAGS=
-ADIOSREADLIB_LDADD="-lm"
+ADIOSREADLIB_LDADD=""
 ADIOSREADLIB_SEQ_CPPFLAGS="${MACRODEFFLAG}_NOMPI"
 ADIOSREADLIB_SEQ_CFLAGS=
 ADIOSREADLIB_SEQ_LDFLAGS=
-ADIOSREADLIB_SEQ_LDADD="-lm"
+ADIOSREADLIB_SEQ_LDADD=""
 if test "x${datatap}" != "xdisable"; then
     ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} ${DT_CPPFLAGS}"
     ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${DT_CFLAGS}"
@@ -286,12 +384,12 @@ if test -z "${HAVE_NSSI_TRUE}"; then
     ADIOSLIB_SEQ_CFLAGS="${ADIOSLIB_SEQ_CFLAGS} ${NSSI_CFLAGS}"
     ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${NSSI_LDFLAGS}"
     ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${NSSI_LIBS}"
-    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} ${MXML_CPPFLAGS} ${NSSI_CPPFLAGS}"
-    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${MXML_CPPFLAGS} ${NSSI_CFLAGS}"
+    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} ${NSSI_CPPFLAGS}"
+    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${NSSI_CFLAGS}"
     ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${MXML_LDFLAGS} ${NSSI_LDFLAGS}"
-    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${MXML_LIBS} ${NSSI_LIBS}"
-    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} ${MXML_CPPFLAGS} ${NSSI_CPPFLAGS}"
-    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${MXML_CPPFLAGS} ${NSSI_CFLAGS}"
+    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${NSSI_LIBS}"
+    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} ${NSSI_CPPFLAGS}"
+    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${NSSI_CFLAGS}"
     ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${MXML_LDFLAGS} ${NSSI_LDFLAGS}"
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${MXML_LIBS} ${NSSI_LIBS}"
 fi
@@ -636,29 +734,6 @@ if test -z "${HAVE_ALACRITY_TRUE}"; then
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${ALACRITY_LIBS}"
 fi
 
-if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
-    ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSLIB_LDFLAGS="${ADIOSLIB_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSLIB_LDADD="${ADIOSLIB_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSLIB_SEQ_CPPFLAGS="${ADIOSLIB_SEQ_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSLIB_SEQ_CFLAGS="${ADIOSLIB_SEQ_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSLIB_INT_CPPFLAGS="${ADIOSLIB_INT_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSLIB_INT_CFLAGS="${ADIOSLIB_INT_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSLIB_INT_LDFLAGS="${ADIOSLIB_INT_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSLIB_INT_LDADD="${ADIOSLIB_INT_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${RIDCOMPRESS_LIBS}"
-    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} -DRIDCOMPRESS ${RIDCOMPRESS_CPPFLAGS}"
-    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${RIDCOMPRESS_CFLAGS}"
-    ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${RIDCOMPRESS_LDFLAGS}"
-    ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${RIDCOMPRESS_LIBS}"
-fi
-
 if test -z "${HAVE_FASTBIT_TRUE}"; then
     ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DFASTBIT ${FASTBIT_CPPFLAGS}"
     ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${FASTBIT_CFLAGS}"
@@ -682,29 +757,6 @@ if test -z "${HAVE_FASTBIT_TRUE}"; then
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${FASTBIT_LIBS}"
 fi
 
-if test -z "${HAVE_NCSU_TIMER_TRUE}"; then
-    ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSLIB_LDFLAGS="${ADIOSLIB_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSLIB_LDADD="${ADIOSLIB_LDADD} ${TIMER_LIBS}"
-    ADIOSLIB_SEQ_CPPFLAGS="${ADIOSLIB_SEQ_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSLIB_SEQ_CFLAGS="${ADIOSLIB_SEQ_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${TIMER_LIBS}"
-    ADIOSLIB_INT_CPPFLAGS="${ADIOSLIB_INT_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSLIB_INT_CFLAGS="${ADIOSLIB_INT_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSLIB_INT_LDFLAGS="${ADIOSLIB_INT_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSLIB_INT_LDADD="${ADIOSLIB_INT_LDADD} ${TIMER_LIBS}"
-    ADIOSREADLIB_CPPFLAGS="${ADIOSREADLIB_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSREADLIB_CFLAGS="${ADIOSREADLIB_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${TIMER_LIBS}"
-    ADIOSREADLIB_SEQ_CPPFLAGS="${ADIOSREADLIB_SEQ_CPPFLAGS} -DWITH_NCSU_TIMER ${TIMER_CPPFLAGS}"
-    ADIOSREADLIB_SEQ_CFLAGS="${ADIOSREADLIB_SEQ_CFLAGS} ${TIMER_CFLAGS}"
-    ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${TIMER_LDFLAGS}"
-    ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${TIMER_LIBS}"
-fi
-
 AM_CONDITIONAL([HAVE_ICEE], [test -z "${HAVE_FLEXPATH_TRUE}"])
 if test -z "${HAVE_FLEXPATH_TRUE}"; then
     AC_DEFINE(HAVE_ICEE, 1, [ICEE method is enabled])
@@ -731,10 +783,16 @@ AC_SUBST(ADIOSREADLIB_SEQ_CFLAGS)
 AC_SUBST(ADIOSREADLIB_SEQ_LDFLAGS)
 AC_SUBST(ADIOSREADLIB_SEQ_LDADD)
 AC_SUBST(ADIOSLIB_EXTRA_CPPFLAGS)
+AC_SUBST(ADIOSLIB_EXTRA_LDFLAGS)
 
-if test -z "${USE_PARALLEL_COMPILER_TRUE}"; then
-        AC_DEFINE(USE_PARALLEL_COMPILER, 1, [Need to use MPI compiler for sequential utils])
-        echo "#### Defined USE_PARALLEL_COMPILER to = [${USE_PARALLEL_COMPILER}]"
+if test -z "${USE_PARALLEL_HDF5_FOR_UTILS_TRUE}"; then
+        AC_DEFINE(USE_PARALLEL_HDF5_FOR_UTILS, 1, [Need to use MPI compiler for sequential HDF5 utils])
+        echo "#### Defined USE_PARALLEL_HDF5_FOR_UTILS to = [${USE_PARALLEL_HDF5_FOR_UTILS}]"
+fi
+
+if test -z "${USE_PARALLEL_NETCDF_FOR_UTILS_TRUE}"; then
+        AC_DEFINE(USE_PARALLEL_HDF5_FOR_UTILS, 1, [Need to use MPI compiler for sequential NetCDF utils])
+        echo "#### Defined USE_PARALLEL_NETCDF_FOR_UTILS to = [${USE_PARALLEL_NETCDF_FOR_UTILS}]"
 fi
 
 dnl Generate major/minor/micro version numbers
@@ -764,11 +822,13 @@ AC_SUBST(VERSION_MICRO)
 #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
                  tests/Makefile
+                 tests/test_src/Makefile
                  tests/C/Makefile
                  tests/C/flexpath_tests/Makefile
                  tests/C/flexpath_tests/1D_arr_global/Makefile
@@ -801,6 +861,7 @@ AC_CONFIG_FILES([Makefile
                  utils/skel/lib/skel_have_adios_timing.py
                  utils/adios_lint/Makefile
                  utils/gpp/Makefile
+                 utils/gpp/gpp.py
                  utils/bpdump/Makefile
                  utils/bp2h5/Makefile
                  utils/bp2ncd/Makefile
@@ -809,10 +870,10 @@ AC_CONFIG_FILES([Makefile
                  utils/bpls/Makefile
                  utils/bpdiff/Makefile
                  utils/bp2bp/Makefile
-                 utils/list_methods/Makefile
+                 utils/adios_list_methods/Makefile
                  utils/bpmeta/Makefile
                  utils/bprecover/Makefile
-		 utils/fastbit/Makefile
+                 utils/fastbit/Makefile
                  examples/Makefile
                  examples/C/Makefile
                  examples/C/scalars/Makefile
@@ -837,13 +898,16 @@ AC_CONFIG_FILES([Makefile
                  examples/Fortran/global-array/Makefile
                  examples/Fortran/global-array-time/Makefile
                  examples/Fortran/schema/Makefile
-                 adios_config
-                 adios_config.flags
+                 adios_config.flags.makesrc
+                 adios_config.makesrc
                  src/public/adios_version.h
                 ])
 
+
 AC_OUTPUT
 
+chmod +x utils/gpp/gpp.py
+
 echo
 echo "*********************************"
 echo $PACKAGE configured as follows:
@@ -859,6 +923,11 @@ if test -z "${BUILD_FORTRAN_TRUE}"; then
 else
     echo "  - Build only the C libraries (no Fortran)";
 fi
+if test -z "${HAVE_MPI_TRUE}"; then
+    echo "  - Build both the parallel and sequential libraries";
+else
+    echo "  - Build only the sequential libraries (no MPI)";
+fi
 echo
 echo "  - General Compile FLAGS";
 echo "      - CC  = $CC";
@@ -871,11 +940,13 @@ echo "      - FCFLAGS  = $FCFLAGS";
 echo "      - LDLAGS   = $LDFLAGS";
 echo "      - LIBS     = $LIBS";
 echo
-echo "      - MPICC   = $MPICC";
-echo "      - MPICXX  = $MPICXX";
-echo "      - MPIFC   = $MPIFC";
-echo "      - MPILIBS = $MPILIBS";
-echo
+if test -z "${HAVE_MPI_TRUE}"; then
+    echo "      - MPICC   = $MPICC";
+    echo "      - MPICXX  = $MPICXX";
+    echo "      - MPIFC   = $MPIFC";
+    echo "      - MPILIBS = $MPILIBS";
+    echo
+fi
 
 if test "x$enable_research_transports" == "xyes"; then
     echo "  - Research Transports Included";
@@ -896,15 +967,18 @@ else
 fi
 
 
-if test -z "${HAVE_MXML_TRUE}"; then
-    echo "  - MXML";
-    echo "      - MXML_CFLAGS = $MXML_CFLAGS";
-    echo "      - MXML_CPPFLAGS = $MXML_CPPFLAGS";
-    echo "      - MXML_LDFLAGS = $MXML_LDFLAGS";
-    echo "      - MXML_LIBS = $MXML_LIBS";
-    echo
+if test -z "${BUILD_MXML_TRUE}" -a -z "${BUILD_WRITE_TRUE}"; then
+    echo "  - MXML is built with ADIOS";
 else
-    echo "  - No MXML"
+    if test -z "${HAVE_MXML_TRUE}"; then
+        echo "  - MXML";
+        echo "      - MXML_CPPFLAGS = $MXML_CPPFLAGS";
+        echo "      - MXML_LDFLAGS = $MXML_LDFLAGS";
+        echo "      - MXML_LIBS = $MXML_LIBS";
+        echo
+    else
+        echo "  - No MXML"
+    fi
 fi
 
 if test -z "${HAVE_LUSTRE_TRUE}"; then
@@ -1003,16 +1077,16 @@ dnl else
 dnl         echo "  - No Gengetopt"
 dnl fi
 
-if test "x${datatap}" != "xdisable"; then
-    echo "  - DataTap with interconnect: $datatap";
-    echo "      - DT_CFLAGS     = $DT_CFLAGS";
-    echo "      - DT_CPPFLAGS   = $DT_CPPFLAGS";
-    echo "      - DT_LDFLAGS    = $DT_LDFLAGS";
-    echo "      - DT_LIBS       = $DT_LIBS";
-    echo
-else
-    echo "  - No DataTap transport to build DATATAP transport method";
-fi
+#if test "x${datatap}" != "xdisable"; then
+#    echo "  - DataTap with interconnect: $datatap";
+#    echo "      - DT_CFLAGS     = $DT_CFLAGS";
+#    echo "      - DT_CPPFLAGS   = $DT_CPPFLAGS";
+#    echo "      - DT_LDFLAGS    = $DT_LDFLAGS";
+#    echo "      - DT_LIBS       = $DT_LIBS";
+#    echo
+#else
+#    echo "  - No DataTap transport to build DATATAP transport method";
+#fi
 
 if test -z "${HAVE_DATASPACES_TRUE}"; then
     echo "  - DATASPACES transport method";
@@ -1190,29 +1264,6 @@ else
     echo "  - No ALACRITY to build ALACRITY transform & query methods"
 fi
 
-if test -z "${HAVE_RIDCOMPRESS_TRUE}"; then
-    echo "  - RIDCOMPRESS";
-    echo "      - RIDCOMPRESS_CFLAGS = $RIDCOMPRESS_CFLAGS";
-    echo "      - RIDCOMPRESS_CPPFLAGS = $RIDCOMPRESS_CPPFLAGS";
-    echo "      - RIDCOMPRESS_LDFLAGS = $RIDCOMPRESS_LDFLAGS";
-    echo "      - RIDCOMPRESS_LIBS = $RIDCOMPRESS_LIBS";
-    echo
-else
-    echo "  - No RIDCOMPRESS to build RIDCOMPRESS transform method"
-fi
-
-
-if test -z "${HAVE_NCSU_TIMER_TRUE}"; then
-    echo "  - NCSU timer lib";
-    echo "      - TIMER_CFLAGS = $TIMER_CFLAGS";
-    echo "      - TIMER_CPPFLAGS = $TIMER_CPPFLAGS";
-    echo "      - TIMER_LDFLAGS = $TIMER_LDFLAGS";
-    echo "      - TIMER_LIBS = $TIMER_LIBS";
-    echo
-else
-    echo "  - No NCSU timer lib"
-fi
-
 if test -z "${HAVE_BGQ_TRUE}"; then
     echo "  - BGQ METHOD is enabled";
 else
@@ -1221,3 +1272,4 @@ fi
 
 #echo "  - SVN version = ${SVNVERSION}"
 echo "  - Install path = ${prefix}"
+
diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in
index a647c63..41c1ab6 100644
--- a/examples/C/Makefile.in
+++ b/examples/C/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples/C
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -423,22 +516,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -453,57 +549,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -519,12 +570,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -536,15 +582,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -553,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -589,13 +646,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -630,10 +684,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -711,22 +770,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/C/arrays/Makefile.am b/examples/C/arrays/Makefile.am
index 1361f6a..036996f 100644
--- a/examples/C/arrays/Makefile.am
+++ b/examples/C/arrays/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = arrays_write arrays_read
 
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
 arrays_read_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
diff --git a/examples/C/arrays/Makefile.in b/examples/C/arrays/Makefile.in
index 6c51acf..038632f 100644
--- a/examples/C/arrays/Makefile.in
+++ b/examples/C/arrays/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = arrays_write$(EXEEXT) arrays_read$(EXEEXT)
 subdir = examples/C/arrays
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ arrays_read_OBJECTS = $(am_arrays_read_OBJECTS)
 am__DEPENDENCIES_1 =
 arrays_read_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-arrays_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+arrays_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_read_LDFLAGS) $(LDFLAGS) -o $@
 am_arrays_write_OBJECTS = arrays_write.$(OBJEXT)
 arrays_write_OBJECTS = $(am_arrays_write_OBJECTS)
 arrays_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+arrays_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
 DIST_SOURCES = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,7 +480,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
 arrays_read_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
@@ -427,12 +529,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) 
+
+arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) $(EXTRA_arrays_read_DEPENDENCIES) 
 	@rm -f arrays_read$(EXEEXT)
-	$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
-arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
+
+arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) $(EXTRA_arrays_write_DEPENDENCIES) 
 	@rm -f arrays_write$(EXEEXT)
-	$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -441,13 +545,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -455,26 +559,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -486,15 +579,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -503,6 +592,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -551,10 +655,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -638,9 +747,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -650,7 +759,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/arrays/arrays.xml b/examples/C/arrays/arrays.xml
index 7a11efa..03fda60 100644
--- a/examples/C/arrays/arrays.xml
+++ b/examples/C/arrays/arrays.xml
@@ -10,7 +10,7 @@
 
     <method group="arrays"  method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/examples/C/attributes/Makefile.am b/examples/C/attributes/Makefile.am
index c70cc26..81a1e3d 100644
--- a/examples/C/attributes/Makefile.am
+++ b/examples/C/attributes/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = attributes_write attributes_read
 
 attributes_write_SOURCES = attributes_write.c
 attributes_write_LDADD = $(top_builddir)/src/libadios.a 
-attributes_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+attributes_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 attributes_write_LDADD += $(ADIOSLIB_LDADD)
 attributes_read_SOURCES = attributes_read.c
 attributes_read_LDADD = $(top_builddir)/src/libadiosread.a
diff --git a/examples/C/attributes/Makefile.in b/examples/C/attributes/Makefile.in
index d646522..068dd53 100644
--- a/examples/C/attributes/Makefile.in
+++ b/examples/C/attributes/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = attributes_write$(EXEEXT) attributes_read$(EXEEXT)
 subdir = examples/C/attributes
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,79 @@ attributes_read_OBJECTS = $(am_attributes_read_OBJECTS)
 am__DEPENDENCIES_1 =
 attributes_read_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-attributes_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(attributes_read_LDFLAGS) $(LDFLAGS) -o $@
+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 \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(attributes_read_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__DEPENDENCIES_1)
-attributes_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(attributes_write_LDFLAGS) $(LDFLAGS) -o $@
+attributes_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(attributes_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +210,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +235,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +244,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +278,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +332,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +376,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +397,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +412,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +423,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +458,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -379,7 +483,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 attributes_write_SOURCES = attributes_write.c
 attributes_write_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-attributes_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+attributes_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 attributes_read_SOURCES = attributes_read.c
 attributes_read_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -429,12 +533,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-attributes_read$(EXEEXT): $(attributes_read_OBJECTS) $(attributes_read_DEPENDENCIES) 
+
+attributes_read$(EXEEXT): $(attributes_read_OBJECTS) $(attributes_read_DEPENDENCIES) $(EXTRA_attributes_read_DEPENDENCIES) 
 	@rm -f attributes_read$(EXEEXT)
-	$(attributes_read_LINK) $(attributes_read_OBJECTS) $(attributes_read_LDADD) $(LIBS)
-attributes_write$(EXEEXT): $(attributes_write_OBJECTS) $(attributes_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(attributes_read_LINK) $(attributes_read_OBJECTS) $(attributes_read_LDADD) $(LIBS)
+
+attributes_write$(EXEEXT): $(attributes_write_OBJECTS) $(attributes_write_DEPENDENCIES) $(EXTRA_attributes_write_DEPENDENCIES) 
 	@rm -f attributes_write$(EXEEXT)
-	$(attributes_write_LINK) $(attributes_write_OBJECTS) $(attributes_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(attributes_write_LINK) $(attributes_write_OBJECTS) $(attributes_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -443,13 +549,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -457,26 +563,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -488,15 +583,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -505,6 +596,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -553,10 +659,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -640,9 +751,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -652,7 +763,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/attributes/attributes.xml b/examples/C/attributes/attributes.xml
index f9988fb..cd3dee3 100644
--- a/examples/C/attributes/attributes.xml
+++ b/examples/C/attributes/attributes.xml
@@ -28,7 +28,7 @@
 
     <method group="temperature" method="MPI"/>
 
-    <buffer size-MB="2" allocate-time="now"/>
+    <buffer max-size-MB="2"/>
 
 </adios-config>
 
diff --git a/examples/C/attributes/attributes_read.c b/examples/C/attributes/attributes_read.c
index 222a7d6..17756eb 100644
--- a/examples/C/attributes/attributes_read.c
+++ b/examples/C/attributes/attributes_read.c
@@ -17,9 +17,41 @@
 #include "mpi.h"
 #include "adios_read.h"
 
+void print_attr (int rank, ADIOS_FILE *f, int attrid, enum ADIOS_DATATYPES attr_type, int attr_size, void * data)
+{
+    printf ("rank %d: attr: %s %s = ", rank, adios_type_to_string(attr_type), f->attr_namelist [attrid]);
+    int type_size = adios_type_size (attr_type, data);
+    int nelems = attr_size / type_size;
+    int k;
+    char *p = (char*)data;
+    for (k=0; k<nelems; k++) 
+    {
+        if (k>0) printf(", ");
+        switch (attr_type)  
+        {
+            case adios_integer:
+                printf ("%d", *(int *)p);
+                break;
+            case adios_double:
+                printf ("%e", *(double *)p);
+                break;
+            case adios_string:
+                printf ("\"%s\"", (char *)p);
+                break;
+            case adios_string_array:
+                printf ("\"%s\"", *(char **)p);
+                break;
+            default:
+                printf ("??????\n");
+        }
+        p=p+type_size;
+    }
+    printf("\n");
+}
+
 int main (int argc, char ** argv) 
 {
-    int         rank, size, i;
+    int         rank, size, i, j;
     MPI_Comm    comm = MPI_COMM_WORLD;
     enum ADIOS_DATATYPES attr_type;
     enum ADIOS_READ_METHOD method = ADIOS_READ_METHOD_BP;
@@ -42,38 +74,31 @@ int main (int argc, char ** argv)
     {
 
         adios_get_attr (f, f->attr_namelist[i], &attr_type, &attr_size, &data);
+        print_attr (rank, f, i, attr_type, attr_size, data);
+        free (data);
+        data = 0;
+    }
+
+    MPI_Barrier (comm);
 
-        printf ("rank %d: attr: %s %s = ", rank, adios_type_to_string(attr_type), f->attr_namelist[i]);
-        int type_size = adios_type_size (attr_type, data);
-        int nelems = attr_size / type_size;
-        int k;
-        char *p = (char*)data;
-        for (k=0; k<nelems; k++) 
+    if (!rank) {
+        printf ("========================================================\n");
+        printf ("List of variables with related attributes:\n");
+        for (i = 0; i < f->nvars; i++)
         {
-            if (k>0) printf(", ");
-            switch (attr_type)  
+            ADIOS_VARINFO * v = adios_inq_var_byid (f, i);
+            printf("rank %d:    %-9s  %s    has %d attributes\n", rank, adios_type_to_string(v->type), f->var_namelist[i], v->nattrs);
+            for (j=0; j < v->nattrs; j++)
             {
-                case adios_integer:
-                    printf ("%d", *(int *)p);
-                    break;
-                case adios_double:
-                    printf ("%e", *(double *)p);
-                    break;
-                case adios_string:
-                    printf ("\"%s\"", (char *)p);
-                    break;
-                case adios_string_array:
-                    printf ("\"%s\"", *(char **)p);
-                    break;
-                default:
-                    printf ("??????\n");
+                adios_get_attr_byid (f, v->attr_ids[j], &attr_type, &attr_size, &data);
+                print_attr (rank, f, v->attr_ids[j], attr_type, attr_size, data);
+                //printf("       %s\n", f->attr_namelist[ v->attr_ids[j] ]);
+                free (data);
+                data = 0;
             }
-            p=p+type_size;
         }
-        printf("\n");
-        free (data);
-        data = 0;
     }
+    MPI_Barrier (comm);
 
     adios_read_close (f);
     MPI_Barrier (comm);
diff --git a/examples/C/flexpath_arrays/Makefile.in b/examples/C/flexpath_arrays/Makefile.in
index 33bafbd..cca5534 100644
--- a/examples/C/flexpath_arrays/Makefile.in
+++ b/examples/C/flexpath_arrays/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples/C/flexpath_arrays
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -423,22 +516,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -453,57 +549,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -519,12 +570,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -536,15 +582,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -553,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -589,13 +646,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -630,10 +684,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -711,22 +770,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/C/flexpath_arrays/global_range_select/Makefile.am b/examples/C/flexpath_arrays/global_range_select/Makefile.am
index 9c7e77c..2e0f05f 100644
--- a/examples/C/flexpath_arrays/global_range_select/Makefile.am
+++ b/examples/C/flexpath_arrays/global_range_select/Makefile.am
@@ -10,10 +10,10 @@ noinst_PROGRAMS = arrays_write arrays_read
 
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/examples/C/flexpath_arrays/global_range_select/Makefile.in b/examples/C/flexpath_arrays/global_range_select/Makefile.in
index b4b9582..dec52ef 100644
--- a/examples/C/flexpath_arrays/global_range_select/Makefile.in
+++ b/examples/C/flexpath_arrays/global_range_select/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = arrays_write$(EXEEXT) arrays_read$(EXEEXT)
 subdir = examples/C/flexpath_arrays/global_range_select
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ arrays_read_OBJECTS = $(am_arrays_read_OBJECTS)
 am__DEPENDENCIES_1 =
 arrays_read_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+arrays_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_read_LDFLAGS) $(LDFLAGS) -o $@
 am_arrays_write_OBJECTS = arrays_write.$(OBJEXT)
 arrays_write_OBJECTS = $(am_arrays_write_OBJECTS)
 arrays_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+arrays_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
 DIST_SOURCES = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,10 +480,10 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = arrays.xml README
 all: all-am
@@ -427,12 +529,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) 
+
+arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) $(EXTRA_arrays_read_DEPENDENCIES) 
 	@rm -f arrays_read$(EXEEXT)
-	$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
-arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
+
+arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) $(EXTRA_arrays_write_DEPENDENCIES) 
 	@rm -f arrays_write$(EXEEXT)
-	$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -441,13 +545,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -455,26 +559,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -486,15 +579,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -503,6 +592,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -551,10 +655,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -638,9 +747,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -650,7 +759,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/flexpath_arrays/global_range_select/arrays.xml b/examples/C/flexpath_arrays/global_range_select/arrays.xml
index da505d0..c45525f 100644
--- a/examples/C/flexpath_arrays/global_range_select/arrays.xml
+++ b/examples/C/flexpath_arrays/global_range_select/arrays.xml
@@ -16,7 +16,7 @@
 
 <method group="temperature"  method="FLEXPATH">QUEUE_SIZE=4</method>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/examples/C/flexpath_arrays/global_range_select/arrays_read.c b/examples/C/flexpath_arrays/global_range_select/arrays_read.c
index fbcc0f8..1202562 100644
--- a/examples/C/flexpath_arrays/global_range_select/arrays_read.c
+++ b/examples/C/flexpath_arrays/global_range_select/arrays_read.c
@@ -78,7 +78,7 @@ int main (int argc, char ** argv)
 					comm,
 					ADIOS_LOCKMODE_NONE, 0.0);
 
-    int i;
+    /*int i;*/
     /* for(i=0; i<afile->nvars; i++){ */
     /* 	printf("var: %s\n", afile->var_namelist[i]); */
     /* } */
@@ -90,17 +90,18 @@ int main (int argc, char ** argv)
         ADIOS_VARINFO *ny_info = adios_inq_var(afile, "/scalar/dim/NY");
 	ADIOS_VARINFO *nz_info = adios_inq_var(afile, "/scalar/dim/NZ");
 
-	ADIOS_VARINFO *size_info = adios_inq_var( afile, "size");
 	ADIOS_VARINFO *arry = adios_inq_var( afile, "var_2d_array");
 
+	/*
+	ADIOS_VARINFO *size_info = adios_inq_var( afile, "size");
 	int nx_val = *((int*)nx_info->value);
 	int ny_val = *((int*)ny_info->value);
 	int size_val = *((int*)size_info->value);
-
-	//printf("nx: %d, ny: %d, size: %d\n", nx_val, ny_val, size_val);
+	printf("nx: %d, ny: %d, size: %d\n", nx_val, ny_val, size_val);
+	*/
 	
 	// slice array along y dimension
-	uint64_t my_ystart, my_yend, my_ycount;
+	uint64_t my_ystart, my_yend;
 	slice(arry->dims[1], &my_ystart, &my_yend, rank, size);
 
 	/* printf("rank: %d my_ystart: %d, my_yend: %d\n", */
diff --git a/examples/C/flexpath_arrays/process_select/Makefile.am b/examples/C/flexpath_arrays/process_select/Makefile.am
index 4b24454..99c7c94 100644
--- a/examples/C/flexpath_arrays/process_select/Makefile.am
+++ b/examples/C/flexpath_arrays/process_select/Makefile.am
@@ -11,10 +11,10 @@ noinst_PROGRAMS = arrays_write arrays_read
 
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *_writer_info.txt *_writer_ready.txt *_reader_info.txt *_reader_ready.txt *.bp
 CC=$(MPICC)
diff --git a/examples/C/flexpath_arrays/process_select/Makefile.in b/examples/C/flexpath_arrays/process_select/Makefile.in
index 4a773b5..ca807e9 100644
--- a/examples/C/flexpath_arrays/process_select/Makefile.in
+++ b/examples/C/flexpath_arrays/process_select/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = arrays_write$(EXEEXT) arrays_read$(EXEEXT)
 subdir = examples/C/flexpath_arrays/process_select
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ arrays_read_OBJECTS = $(am_arrays_read_OBJECTS)
 am__DEPENDENCIES_1 =
 arrays_read_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+arrays_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_read_LDFLAGS) $(LDFLAGS) -o $@
 am_arrays_write_OBJECTS = arrays_write.$(OBJEXT)
 arrays_write_OBJECTS = $(am_arrays_write_OBJECTS)
 arrays_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+arrays_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
 DIST_SOURCES = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,10 +480,10 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *_writer_info.txt *_writer_ready.txt *_reader_info.txt *_reader_ready.txt *.bp
 EXTRA_DIST = arrays.xml job.pbs
 all: all-am
@@ -427,12 +529,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) 
+
+arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) $(EXTRA_arrays_read_DEPENDENCIES) 
 	@rm -f arrays_read$(EXEEXT)
-	$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
-arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
+
+arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) $(EXTRA_arrays_write_DEPENDENCIES) 
 	@rm -f arrays_write$(EXEEXT)
-	$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -441,13 +545,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -455,26 +559,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -486,15 +579,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -503,6 +592,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -551,10 +655,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -638,9 +747,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -650,7 +759,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/flexpath_arrays/process_select/arrays.xml b/examples/C/flexpath_arrays/process_select/arrays.xml
index ce25785..61e7f98 100644
--- a/examples/C/flexpath_arrays/process_select/arrays.xml
+++ b/examples/C/flexpath_arrays/process_select/arrays.xml
@@ -10,7 +10,7 @@
 
 <method group="arrays"  method="FLEXPATH">QUEUE_SIZE=10;</method>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/examples/C/global-array-time/Makefile.am b/examples/C/global-array-time/Makefile.am
index 26ce27c..a19e421 100644
--- a/examples/C/global-array-time/Makefile.am
+++ b/examples/C/global-array-time/Makefile.am
@@ -10,11 +10,11 @@ noinst_PROGRAMS = adios_globaltime adios_globaltime_no_xml adios_read_globaltime
 
 adios_globaltime_SOURCES = adios_globaltime.c
 adios_globaltime_LDADD = $(top_builddir)/src/libadios.a
-adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_globaltime_LDADD += $(ADIOSLIB_LDADD)
 adios_globaltime_no_xml_SOURCES = adios_globaltime_no_xml.c
 adios_globaltime_no_xml_LDADD = $(top_builddir)/src/libadios.a
-adios_globaltime_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_globaltime_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_globaltime_no_xml_LDADD += $(ADIOSLIB_LDADD)
 adios_read_globaltime_SOURCES = adios_read_globaltime.c
 adios_read_globaltime_LDADD = $(top_builddir)/src/libadiosread.a
diff --git a/examples/C/global-array-time/Makefile.in b/examples/C/global-array-time/Makefile.in
index 88de1b8..3469949 100644
--- a/examples/C/global-array-time/Makefile.in
+++ b/examples/C/global-array-time/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -39,7 +83,7 @@ noinst_PROGRAMS = adios_globaltime$(EXEEXT) \
 	adios_read_globaltime$(EXEEXT) \
 	adios_read_globaltime_streaming$(EXEEXT)
 subdir = examples/C/global-array-time
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -62,14 +106,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -91,47 +133,75 @@ adios_globaltime_OBJECTS = $(am_adios_globaltime_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_globaltime_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_globaltime_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_globaltime_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+adios_globaltime_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_globaltime_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_globaltime_no_xml_OBJECTS =  \
 	adios_globaltime_no_xml.$(OBJEXT)
 adios_globaltime_no_xml_OBJECTS =  \
 	$(am_adios_globaltime_no_xml_OBJECTS)
 adios_globaltime_no_xml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_globaltime_no_xml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_globaltime_no_xml_LDFLAGS) $(LDFLAGS) -o $@
+adios_globaltime_no_xml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_globaltime_no_xml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_read_globaltime_OBJECTS = adios_read_globaltime.$(OBJEXT)
 adios_read_globaltime_OBJECTS = $(am_adios_read_globaltime_OBJECTS)
 adios_read_globaltime_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-adios_read_globaltime_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_globaltime_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_globaltime_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_globaltime_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_read_globaltime_streaming_OBJECTS =  \
 	adios_read_globaltime_streaming.$(OBJEXT)
 adios_read_globaltime_streaming_OBJECTS =  \
 	$(am_adios_read_globaltime_streaming_OBJECTS)
 adios_read_globaltime_streaming_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-adios_read_globaltime_streaming_LINK = $(LIBTOOL) --tag=CC \
+adios_read_globaltime_streaming_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) \
 	$(adios_read_globaltime_streaming_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_globaltime_SOURCES) \
 	$(adios_globaltime_no_xml_SOURCES) \
 	$(adios_read_globaltime_SOURCES) \
@@ -140,6 +210,28 @@ DIST_SOURCES = $(adios_globaltime_SOURCES) \
 	$(adios_globaltime_no_xml_SOURCES) \
 	$(adios_read_globaltime_SOURCES) \
 	$(adios_read_globaltime_streaming_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -147,6 +239,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -171,6 +264,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -179,6 +273,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -211,6 +307,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -264,17 +361,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -305,6 +405,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -325,10 +426,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -337,9 +441,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -351,6 +452,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -385,14 +487,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -407,11 +512,11 @@ AUTOMAKE_OPTIONS = no-dependencies
 adios_globaltime_SOURCES = adios_globaltime.c
 adios_globaltime_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_globaltime_no_xml_SOURCES = adios_globaltime_no_xml.c
 adios_globaltime_no_xml_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-adios_globaltime_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_globaltime_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_globaltime_SOURCES = adios_read_globaltime.c
 adios_read_globaltime_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -465,18 +570,22 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_globaltime$(EXEEXT): $(adios_globaltime_OBJECTS) $(adios_globaltime_DEPENDENCIES) 
+
+adios_globaltime$(EXEEXT): $(adios_globaltime_OBJECTS) $(adios_globaltime_DEPENDENCIES) $(EXTRA_adios_globaltime_DEPENDENCIES) 
 	@rm -f adios_globaltime$(EXEEXT)
-	$(adios_globaltime_LINK) $(adios_globaltime_OBJECTS) $(adios_globaltime_LDADD) $(LIBS)
-adios_globaltime_no_xml$(EXEEXT): $(adios_globaltime_no_xml_OBJECTS) $(adios_globaltime_no_xml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_globaltime_LINK) $(adios_globaltime_OBJECTS) $(adios_globaltime_LDADD) $(LIBS)
+
+adios_globaltime_no_xml$(EXEEXT): $(adios_globaltime_no_xml_OBJECTS) $(adios_globaltime_no_xml_DEPENDENCIES) $(EXTRA_adios_globaltime_no_xml_DEPENDENCIES) 
 	@rm -f adios_globaltime_no_xml$(EXEEXT)
-	$(adios_globaltime_no_xml_LINK) $(adios_globaltime_no_xml_OBJECTS) $(adios_globaltime_no_xml_LDADD) $(LIBS)
-adios_read_globaltime$(EXEEXT): $(adios_read_globaltime_OBJECTS) $(adios_read_globaltime_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_globaltime_no_xml_LINK) $(adios_globaltime_no_xml_OBJECTS) $(adios_globaltime_no_xml_LDADD) $(LIBS)
+
+adios_read_globaltime$(EXEEXT): $(adios_read_globaltime_OBJECTS) $(adios_read_globaltime_DEPENDENCIES) $(EXTRA_adios_read_globaltime_DEPENDENCIES) 
 	@rm -f adios_read_globaltime$(EXEEXT)
-	$(adios_read_globaltime_LINK) $(adios_read_globaltime_OBJECTS) $(adios_read_globaltime_LDADD) $(LIBS)
-adios_read_globaltime_streaming$(EXEEXT): $(adios_read_globaltime_streaming_OBJECTS) $(adios_read_globaltime_streaming_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_globaltime_LINK) $(adios_read_globaltime_OBJECTS) $(adios_read_globaltime_LDADD) $(LIBS)
+
+adios_read_globaltime_streaming$(EXEEXT): $(adios_read_globaltime_streaming_OBJECTS) $(adios_read_globaltime_streaming_DEPENDENCIES) $(EXTRA_adios_read_globaltime_streaming_DEPENDENCIES) 
 	@rm -f adios_read_globaltime_streaming$(EXEEXT)
-	$(adios_read_globaltime_streaming_LINK) $(adios_read_globaltime_streaming_OBJECTS) $(adios_read_globaltime_streaming_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(adios_read_globaltime_streaming_LINK) $(adios_read_globaltime_streaming_OBJECTS) $(adios_read_globaltime_streaming_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -485,13 +594,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -499,26 +608,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -530,15 +628,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -547,6 +641,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -595,10 +704,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -682,9 +796,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -694,7 +808,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/global-array-time/adios_globaltime.xml b/examples/C/global-array-time/adios_globaltime.xml
index 8f1dd01..a0d308d 100644
--- a/examples/C/global-array-time/adios_globaltime.xml
+++ b/examples/C/global-array-time/adios_globaltime.xml
@@ -21,7 +21,7 @@
 
   <method group="restart" method="MPI"/>
 
-  <buffer size-MB="5" allocate-time="now"/>
+  <buffer max-size-MB="1"/>
 
 </adios-config>
 
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 fc0c343..54cb924 100644
--- a/examples/C/global-array-time/adios_globaltime_no_xml.c
+++ b/examples/C/global-array-time/adios_globaltime_no_xml.c
@@ -13,42 +13,72 @@
  *
 */
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
-#include "mpi.h"
+#include <errno.h>
 #include "adios.h"
+//#include "adios_mpi.h"
 
 #ifdef DMALLOC
 #include "dmalloc.h"
 #endif
 
+void print_usage (int argc, char ** argv)
+{
+    printf ("%s [nsteps]\n"
+            "    nsteps: Number of steps\n",
+            argv[0]
+           );
+}
+
 int main (int argc, char ** argv) 
 {
 	char        filename [256];
 	int         rank, size, i;
-	int         NX = 10, G, O; 
+	int         NX = 100, G, O; 
+        int         nsteps = 5;
 	double      t[NX];
 	MPI_Comm    comm = MPI_COMM_WORLD;
 
 	/* ADIOS variables declarations for matching gwrite_temperature.ch */
 	int         it;
-	uint64_t    adios_groupsize, adios_totalsize;
+	uint64_t    adios_groupsize;
+	//uint64_t    adios_totalsize;
 
 	MPI_Init (&argc, &argv);
 	MPI_Comm_rank (comm, &rank);
 	MPI_Comm_size (comm, &size);
 
+        if (argc > 1) {
+            char *ep;
+            errno = 0;
+            long int n = strtol (argv[1], &ep, 10); 
+            if (!errno) {
+                if (*ep != '\0') {
+                    printf ("Argument is not an integer: %s. Use default nsteps = %d\n", argv[1], nsteps);
+                } else {
+                    nsteps = n;
+                }
+            } else {
+                printf ("Error when converting argument '%s': %s\n"
+                        "Use default nsteps = %d\n",
+                        argv[1], strerror(errno), nsteps);
+            }
+        }
+
         G = 2 * NX * size;
 
 	strcpy (filename, "adios_globaltime.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
 
         adios_declare_group (&m_adios_group, "restart", "", adios_flag_yes);
         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_define_var (m_adios_group, "NX"
                      ,"", adios_integer
@@ -65,20 +95,21 @@ int main (int argc, char ** argv)
                          ,"", adios_integer
                          ,0, 0, 0);
     
-            adios_define_var (m_adios_group, "temperature"
+            int64_t var_id = adios_define_var (m_adios_group, "temperature"
                          ,"", adios_double
                          ,"NX", "G", "O");
+            adios_set_transform (var_id, "none");
         }
 
-        for (it =0; it < 5; it++) {
+        for (it = 0; it < nsteps; it++) {
 
             for (i = 0; i < NX; i++)
                 t[i] = rank + it*0.1 + 0.01;
 
-        	adios_open (&m_adios_file, "restart", filename, "a", comm);
+        	adios_open (&m_adios_file, "restart", filename, (it==0 ? "w" : "a"), comm);
         	adios_groupsize = 4 + 4 + 4 + NX * 8
                         	+ 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, "G", (void *) &G);
diff --git a/examples/C/global-array-time/adios_read_globaltime.c b/examples/C/global-array-time/adios_read_globaltime.c
index bcbbe97..af1daa4 100644
--- a/examples/C/global-array-time/adios_read_globaltime.c
+++ b/examples/C/global-array-time/adios_read_globaltime.c
@@ -64,7 +64,7 @@ int main (int argc, char ** argv)
     adios_perform_reads (f, 1);
 
     if (rank == 0) 
-        printf ("Array size of temperature [0:%lld,0:%lld]\n", v->dims[0], v->dims[1]);   
+        printf ("Array size of temperature [0:%" PRIu64 ",0:%" PRIu64 "]\n", v->dims[0], v->dims[1]);
 
     if (rank > 0) {
         MPI_Recv (&token, 1, MPI_INT, rank-1, 0, comm, &status);
@@ -73,7 +73,7 @@ int main (int argc, char ** argv)
     printf("------------------------------------------------\n");
     printf("rank=%d: \n", rank);
     for (i = 0; i < 2; i++) {
-        printf ("step %lld = [\n", step+i);   
+        printf ("step %" PRIu64 " = [\n", step+i);
         for (j = 0; j < v->dims[0]; j++) {
             printf (" [");
             for (k = 0; k < v->dims[1]; k++) {
@@ -90,6 +90,7 @@ int main (int argc, char ** argv)
     }
 
     free (data);
+    adios_selection_delete(sel);
     adios_free_varinfo (v);
 
     adios_read_close (f);
diff --git a/examples/C/global-array-time/adios_read_globaltime_streaming.c b/examples/C/global-array-time/adios_read_globaltime_streaming.c
index 2c37869..0763d2e 100644
--- a/examples/C/global-array-time/adios_read_globaltime_streaming.c
+++ b/examples/C/global-array-time/adios_read_globaltime_streaming.c
@@ -63,7 +63,7 @@ int main (int argc, char ** argv)
 
         printf ("ndim = %d\n",  v->ndim);
         //printf ("nsteps = %d\n",  v->nsteps);
-        printf ("dims[%llu][%llu]\n",  v->dims[0], v->dims[1]);
+        printf ("dims[%" PRIu64 "][%" PRIu64 "]\n",  v->dims[0], v->dims[1]);
 
         uint64_t slice_size = v->dims[0]/size;
         if (rank == size-1)
@@ -88,7 +88,7 @@ int main (int argc, char ** argv)
                 printf ("--------- Step: %d --------------------------------\n", 
                         f->current_step);
 
-            printf("rank=%d: [0:%lld,0:%lld] = [", rank, v->dims[0], v->dims[1]);
+            printf("rank=%d: [0:%" PRIu64 ",0:%" PRIu64 "] = [", rank, v->dims[0], v->dims[1]);
             for (i = 0; i < slice_size; i++) {
                 printf (" [");
                 for (j = 0; j < v->dims[1]; j++) {
diff --git a/examples/C/global-array/Makefile.am b/examples/C/global-array/Makefile.am
index fc5b5e8..0745589 100644
--- a/examples/C/global-array/Makefile.am
+++ b/examples/C/global-array/Makefile.am
@@ -10,11 +10,11 @@ noinst_PROGRAMS = adios_global adios_global_2files adios_read_gpp adios_read_glo
 
 adios_global_SOURCES = adios_global.c
 adios_global_LDADD = $(top_builddir)/src/libadios.a 
-adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_LDADD += $(ADIOSLIB_LDADD)
 adios_global_2files_SOURCES = adios_global_2files.c
 adios_global_2files_LDADD = $(top_builddir)/src/libadios.a 
-adios_global_2files_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_2files_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_2files_LDADD += $(ADIOSLIB_LDADD)
 adios_read_global_SOURCES = adios_read_global.c
 adios_read_global_LDADD = $(top_builddir)/src/libadiosread.a 
@@ -22,7 +22,7 @@ adios_read_global_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 adios_read_global_LDADD += $(ADIOSREADLIB_LDADD)
 adios_read_writeblock_SOURCES = adios_read_writeblock.c
 adios_read_writeblock_LDADD = $(top_builddir)/src/libadiosread.a
-adios_read_writeblock_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_read_writeblock_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_writeblock_LDADD += $(ADIOSLIB_LDADD)
 adios_read_chunk_SOURCES = adios_read_chunk.c
 adios_read_chunk_LDADD = $(top_builddir)/src/libadiosread.a
@@ -34,11 +34,11 @@ adios_read_gpp_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 adios_read_gpp_LDADD += $(ADIOSREADLIB_LDADD)
 adios_global_no_xml_SOURCES = adios_global_no_xml.c
 adios_global_no_xml_LDADD = $(top_builddir)/src/libadios.a 
-adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_no_xml_LDADD += $(ADIOSLIB_LDADD)
 adios_global_aggregate_by_color_SOURCES = adios_global_aggregate_by_color.c
 adios_global_aggregate_by_color_LDADD = $(top_builddir)/src/libadios.a
-adios_global_aggregate_by_color_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_aggregate_by_color_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_aggregate_by_color_LDADD += $(ADIOSLIB_LDADD)
 adios_read_global_no_xml_SOURCES = adios_read_global_no_xml.c
 adios_read_global_no_xml_LDADD = $(top_builddir)/src/libadiosread.a
@@ -46,7 +46,7 @@ adios_read_global_no_xml_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 adios_read_global_no_xml_LDADD += $(ADIOSREADLIB_LDADD)
 no_xml_write_byid_SOURCES = no_xml_write_byid.c
 no_xml_write_byid_LDADD = $(top_builddir)/src/libadios.a
-no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 no_xml_write_byid_LDADD += $(ADIOSLIB_LDADD)
 read_no_xml_write_byid_SOURCES = read_no_xml_write_byid.c
 read_no_xml_write_byid_LDADD = $(top_builddir)/src/libadiosread.a
diff --git a/examples/C/global-array/Makefile.in b/examples/C/global-array/Makefile.in
index 16d6fc7..b6a7e0d 100644
--- a/examples/C/global-array/Makefile.in
+++ b/examples/C/global-array/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -41,7 +85,7 @@ noinst_PROGRAMS = adios_global$(EXEEXT) adios_global_2files$(EXEEXT) \
 	no_xml_write_byid$(EXEEXT) read_no_xml_write_byid$(EXEEXT) \
 	adios_global_aggregate_by_color$(EXEEXT)
 subdir = examples/C/global-array
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -64,14 +108,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -93,23 +135,28 @@ adios_global_OBJECTS = $(am_adios_global_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_global_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_global_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_global_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(adios_global_LDFLAGS) $(LDFLAGS) -o $@
 am_adios_global_2files_OBJECTS = adios_global_2files.$(OBJEXT)
 adios_global_2files_OBJECTS = $(am_adios_global_2files_OBJECTS)
 adios_global_2files_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_global_2files_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_global_2files_LDFLAGS) $(LDFLAGS) -o $@
+adios_global_2files_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_global_2files_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_global_aggregate_by_color_OBJECTS =  \
 	adios_global_aggregate_by_color.$(OBJEXT)
 adios_global_aggregate_by_color_OBJECTS =  \
 	$(am_adios_global_aggregate_by_color_OBJECTS)
 adios_global_aggregate_by_color_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-adios_global_aggregate_by_color_LINK = $(LIBTOOL) --tag=CC \
+adios_global_aggregate_by_color_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) \
 	$(adios_global_aggregate_by_color_LDFLAGS) $(LDFLAGS) -o $@
@@ -117,72 +164,101 @@ am_adios_global_no_xml_OBJECTS = adios_global_no_xml.$(OBJEXT)
 adios_global_no_xml_OBJECTS = $(am_adios_global_no_xml_OBJECTS)
 adios_global_no_xml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_global_no_xml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_global_no_xml_LDFLAGS) $(LDFLAGS) -o $@
+adios_global_no_xml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_global_no_xml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_read_chunk_OBJECTS = adios_read_chunk.$(OBJEXT)
 adios_read_chunk_OBJECTS = $(am_adios_read_chunk_OBJECTS)
 adios_read_chunk_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_read_chunk_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_chunk_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_chunk_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_chunk_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_read_global_OBJECTS = adios_read_global.$(OBJEXT)
 adios_read_global_OBJECTS = $(am_adios_read_global_OBJECTS)
 adios_read_global_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_read_global_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_global_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_global_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_global_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_read_global_no_xml_OBJECTS =  \
 	adios_read_global_no_xml.$(OBJEXT)
 adios_read_global_no_xml_OBJECTS =  \
 	$(am_adios_read_global_no_xml_OBJECTS)
 adios_read_global_no_xml_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-adios_read_global_no_xml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_global_no_xml_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_global_no_xml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_global_no_xml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_read_gpp_OBJECTS = adios_read_gpp.$(OBJEXT)
 adios_read_gpp_OBJECTS = $(am_adios_read_gpp_OBJECTS)
 adios_read_gpp_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_read_gpp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_gpp_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_gpp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_gpp_LDFLAGS) $(LDFLAGS) -o \
+	$@
 am_adios_read_writeblock_OBJECTS = adios_read_writeblock.$(OBJEXT)
 adios_read_writeblock_OBJECTS = $(am_adios_read_writeblock_OBJECTS)
 adios_read_writeblock_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-adios_read_writeblock_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_writeblock_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_writeblock_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_writeblock_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_no_xml_write_byid_OBJECTS = no_xml_write_byid.$(OBJEXT)
 no_xml_write_byid_OBJECTS = $(am_no_xml_write_byid_OBJECTS)
 no_xml_write_byid_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-no_xml_write_byid_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(no_xml_write_byid_LDFLAGS) $(LDFLAGS) -o $@
+no_xml_write_byid_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(no_xml_write_byid_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_read_no_xml_write_byid_OBJECTS = read_no_xml_write_byid.$(OBJEXT)
 read_no_xml_write_byid_OBJECTS = $(am_read_no_xml_write_byid_OBJECTS)
 read_no_xml_write_byid_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-read_no_xml_write_byid_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(read_no_xml_write_byid_LDFLAGS) $(LDFLAGS) -o $@
+read_no_xml_write_byid_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(read_no_xml_write_byid_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_global_SOURCES) $(adios_global_2files_SOURCES) \
 	$(adios_global_aggregate_by_color_SOURCES) \
 	$(adios_global_no_xml_SOURCES) $(adios_read_chunk_SOURCES) \
@@ -197,6 +273,28 @@ DIST_SOURCES = $(adios_global_SOURCES) $(adios_global_2files_SOURCES) \
 	$(adios_read_global_no_xml_SOURCES) $(adios_read_gpp_SOURCES) \
 	$(adios_read_writeblock_SOURCES) $(no_xml_write_byid_SOURCES) \
 	$(read_no_xml_write_byid_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -204,6 +302,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -228,6 +327,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -236,6 +336,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -268,6 +370,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -321,17 +424,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -362,6 +468,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -382,10 +489,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -394,9 +504,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -408,6 +515,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -442,14 +550,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -463,11 +574,11 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 adios_global_SOURCES = adios_global.c
 adios_global_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_2files_SOURCES = adios_global_2files.c
 adios_global_2files_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-adios_global_2files_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_2files_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_global_SOURCES = adios_read_global.c
 adios_read_global_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -475,7 +586,7 @@ adios_read_global_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 adios_read_writeblock_SOURCES = adios_read_writeblock.c
 adios_read_writeblock_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSLIB_LDADD)
-adios_read_writeblock_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_read_writeblock_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_chunk_SOURCES = adios_read_chunk.c
 adios_read_chunk_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -487,11 +598,11 @@ adios_read_gpp_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 adios_global_no_xml_SOURCES = adios_global_no_xml.c
 adios_global_no_xml_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_aggregate_by_color_SOURCES = adios_global_aggregate_by_color.c
 adios_global_aggregate_by_color_LDADD =  \
 	$(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_global_aggregate_by_color_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_aggregate_by_color_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_global_no_xml_SOURCES = adios_read_global_no_xml.c
 adios_read_global_no_xml_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -499,7 +610,7 @@ adios_read_global_no_xml_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 no_xml_write_byid_SOURCES = no_xml_write_byid.c
 no_xml_write_byid_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 read_no_xml_write_byid_SOURCES = read_no_xml_write_byid.c
 read_no_xml_write_byid_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -549,39 +660,50 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_global$(EXEEXT): $(adios_global_OBJECTS) $(adios_global_DEPENDENCIES) 
+
+adios_global$(EXEEXT): $(adios_global_OBJECTS) $(adios_global_DEPENDENCIES) $(EXTRA_adios_global_DEPENDENCIES) 
 	@rm -f adios_global$(EXEEXT)
-	$(adios_global_LINK) $(adios_global_OBJECTS) $(adios_global_LDADD) $(LIBS)
-adios_global_2files$(EXEEXT): $(adios_global_2files_OBJECTS) $(adios_global_2files_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_global_LINK) $(adios_global_OBJECTS) $(adios_global_LDADD) $(LIBS)
+
+adios_global_2files$(EXEEXT): $(adios_global_2files_OBJECTS) $(adios_global_2files_DEPENDENCIES) $(EXTRA_adios_global_2files_DEPENDENCIES) 
 	@rm -f adios_global_2files$(EXEEXT)
-	$(adios_global_2files_LINK) $(adios_global_2files_OBJECTS) $(adios_global_2files_LDADD) $(LIBS)
-adios_global_aggregate_by_color$(EXEEXT): $(adios_global_aggregate_by_color_OBJECTS) $(adios_global_aggregate_by_color_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_global_2files_LINK) $(adios_global_2files_OBJECTS) $(adios_global_2files_LDADD) $(LIBS)
+
+adios_global_aggregate_by_color$(EXEEXT): $(adios_global_aggregate_by_color_OBJECTS) $(adios_global_aggregate_by_color_DEPENDENCIES) $(EXTRA_adios_global_aggregate_by_color_DEPENDENCIES) 
 	@rm -f adios_global_aggregate_by_color$(EXEEXT)
-	$(adios_global_aggregate_by_color_LINK) $(adios_global_aggregate_by_color_OBJECTS) $(adios_global_aggregate_by_color_LDADD) $(LIBS)
-adios_global_no_xml$(EXEEXT): $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_global_aggregate_by_color_LINK) $(adios_global_aggregate_by_color_OBJECTS) $(adios_global_aggregate_by_color_LDADD) $(LIBS)
+
+adios_global_no_xml$(EXEEXT): $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_DEPENDENCIES) $(EXTRA_adios_global_no_xml_DEPENDENCIES) 
 	@rm -f adios_global_no_xml$(EXEEXT)
-	$(adios_global_no_xml_LINK) $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_LDADD) $(LIBS)
-adios_read_chunk$(EXEEXT): $(adios_read_chunk_OBJECTS) $(adios_read_chunk_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_global_no_xml_LINK) $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_LDADD) $(LIBS)
+
+adios_read_chunk$(EXEEXT): $(adios_read_chunk_OBJECTS) $(adios_read_chunk_DEPENDENCIES) $(EXTRA_adios_read_chunk_DEPENDENCIES) 
 	@rm -f adios_read_chunk$(EXEEXT)
-	$(adios_read_chunk_LINK) $(adios_read_chunk_OBJECTS) $(adios_read_chunk_LDADD) $(LIBS)
-adios_read_global$(EXEEXT): $(adios_read_global_OBJECTS) $(adios_read_global_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_chunk_LINK) $(adios_read_chunk_OBJECTS) $(adios_read_chunk_LDADD) $(LIBS)
+
+adios_read_global$(EXEEXT): $(adios_read_global_OBJECTS) $(adios_read_global_DEPENDENCIES) $(EXTRA_adios_read_global_DEPENDENCIES) 
 	@rm -f adios_read_global$(EXEEXT)
-	$(adios_read_global_LINK) $(adios_read_global_OBJECTS) $(adios_read_global_LDADD) $(LIBS)
-adios_read_global_no_xml$(EXEEXT): $(adios_read_global_no_xml_OBJECTS) $(adios_read_global_no_xml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_global_LINK) $(adios_read_global_OBJECTS) $(adios_read_global_LDADD) $(LIBS)
+
+adios_read_global_no_xml$(EXEEXT): $(adios_read_global_no_xml_OBJECTS) $(adios_read_global_no_xml_DEPENDENCIES) $(EXTRA_adios_read_global_no_xml_DEPENDENCIES) 
 	@rm -f adios_read_global_no_xml$(EXEEXT)
-	$(adios_read_global_no_xml_LINK) $(adios_read_global_no_xml_OBJECTS) $(adios_read_global_no_xml_LDADD) $(LIBS)
-adios_read_gpp$(EXEEXT): $(adios_read_gpp_OBJECTS) $(adios_read_gpp_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_global_no_xml_LINK) $(adios_read_global_no_xml_OBJECTS) $(adios_read_global_no_xml_LDADD) $(LIBS)
+
+adios_read_gpp$(EXEEXT): $(adios_read_gpp_OBJECTS) $(adios_read_gpp_DEPENDENCIES) $(EXTRA_adios_read_gpp_DEPENDENCIES) 
 	@rm -f adios_read_gpp$(EXEEXT)
-	$(adios_read_gpp_LINK) $(adios_read_gpp_OBJECTS) $(adios_read_gpp_LDADD) $(LIBS)
-adios_read_writeblock$(EXEEXT): $(adios_read_writeblock_OBJECTS) $(adios_read_writeblock_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_gpp_LINK) $(adios_read_gpp_OBJECTS) $(adios_read_gpp_LDADD) $(LIBS)
+
+adios_read_writeblock$(EXEEXT): $(adios_read_writeblock_OBJECTS) $(adios_read_writeblock_DEPENDENCIES) $(EXTRA_adios_read_writeblock_DEPENDENCIES) 
 	@rm -f adios_read_writeblock$(EXEEXT)
-	$(adios_read_writeblock_LINK) $(adios_read_writeblock_OBJECTS) $(adios_read_writeblock_LDADD) $(LIBS)
-no_xml_write_byid$(EXEEXT): $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_writeblock_LINK) $(adios_read_writeblock_OBJECTS) $(adios_read_writeblock_LDADD) $(LIBS)
+
+no_xml_write_byid$(EXEEXT): $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_DEPENDENCIES) $(EXTRA_no_xml_write_byid_DEPENDENCIES) 
 	@rm -f no_xml_write_byid$(EXEEXT)
-	$(no_xml_write_byid_LINK) $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_LDADD) $(LIBS)
-read_no_xml_write_byid$(EXEEXT): $(read_no_xml_write_byid_OBJECTS) $(read_no_xml_write_byid_DEPENDENCIES) 
+	$(AM_V_CCLD)$(no_xml_write_byid_LINK) $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_LDADD) $(LIBS)
+
+read_no_xml_write_byid$(EXEEXT): $(read_no_xml_write_byid_OBJECTS) $(read_no_xml_write_byid_DEPENDENCIES) $(EXTRA_read_no_xml_write_byid_DEPENDENCIES) 
 	@rm -f read_no_xml_write_byid$(EXEEXT)
-	$(read_no_xml_write_byid_LINK) $(read_no_xml_write_byid_OBJECTS) $(read_no_xml_write_byid_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(read_no_xml_write_byid_LINK) $(read_no_xml_write_byid_OBJECTS) $(read_no_xml_write_byid_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -590,13 +712,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -604,26 +726,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -635,15 +746,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -652,6 +759,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -700,10 +822,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -787,9 +914,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -799,7 +926,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/global-array/adios_global.xml b/examples/C/global-array/adios_global.xml
index 8edc5ca..b4b0a33 100644
--- a/examples/C/global-array/adios_global.xml
+++ b/examples/C/global-array/adios_global.xml
@@ -17,7 +17,7 @@
   <!--method group="temperature" method="MPI_AGGREGATE">stripe_count=1;stripe_size=10485760;num_aggregators=2;merging_pgs=0;num_ost=2</method-->
   <!--method group="temperature" method="PHDF5"/-->
  
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
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 f76fdcd..45a4ded 100644
--- a/examples/C/global-array/adios_global_aggregate_by_color.c
+++ b/examples/C/global-array/adios_global_aggregate_by_color.c
@@ -50,7 +50,7 @@ int main (int argc, char ** argv)
 	strcpy (filename, "adios_global_aggregate_by_color.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
diff --git a/examples/C/global-array/adios_global_no_xml.c b/examples/C/global-array/adios_global_no_xml.c
index 4475d66..3c6c18e 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 <inttypes.h>
 #include <string.h>
 #include "mpi.h"
 #include "public/adios.h"
@@ -35,7 +36,8 @@ int main (int argc, char ** argv)
 	int         rank, size, i, block;
 	int         NX = 100, Global_bounds, Offsets; 
 	double      t[NX];
-        int         sub_blocks = 3;
+	int         sub_blocks = 3;
+	int64_t     var_ids[sub_blocks];
 	MPI_Comm    comm = MPI_COMM_WORLD;
 
 	/* ADIOS variables declarations for matching gwrite_temperature.ch */
@@ -50,7 +52,7 @@ int main (int argc, char ** argv)
 	strcpy (filename, "adios_global_no_xml.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
@@ -73,11 +75,20 @@ int main (int argc, char ** argv)
                         ,"", adios_integer
                         ,0, 0, 0);
    
-           int64_t varid;
-           varid = adios_define_var (m_adios_group, "temperature"
+           var_ids[i] = adios_define_var (m_adios_group, "temperature"
                         ,"", adios_double
                         ,"NX", "Global_bounds", "Offsets");
-           adios_set_transform (varid, "none");
+           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);
@@ -96,6 +107,12 @@ int main (int argc, char ** argv)
            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);
+
+
            adios_write(m_adios_file, "temperature", t);
         }
 
diff --git a/examples/C/global-array/adios_read_chunk.c b/examples/C/global-array/adios_read_chunk.c
index 4fc3055..da7a3c6 100644
--- a/examples/C/global-array/adios_read_chunk.c
+++ b/examples/C/global-array/adios_read_chunk.c
@@ -58,7 +58,7 @@ int main (int argc, char ** argv)
         for (i = 0; i < varinfo->ndim; i++)
         {
             datasize *= varinfo->dims[i];
-            printf ("%llu", varinfo->dims[i]);
+            printf ("%" PRIu64, varinfo->dims[i]);
             if (i != varinfo->ndim - 1)
             {
                 printf (",");
@@ -160,7 +160,7 @@ int main (int argc, char ** argv)
         adios_selection_delete (sel2);
 */
     }
-while (1);
+
     adios_free_varinfo (varinfo);
     adios_read_close (f);
 
diff --git a/examples/C/global-array/adios_read_global.c b/examples/C/global-array/adios_read_global.c
index aba6eda..e43c4f0 100644
--- a/examples/C/global-array/adios_read_global.c
+++ b/examples/C/global-array/adios_read_global.c
@@ -71,14 +71,15 @@ int main (int argc, char ** argv)
     adios_perform_reads (f, 1);
 
     for (i = 0; i < slice_size; i++) {
-        printf ("rank %d: [%lld,%d:%lld]", rank, start[0]+i, 0, slice_size);
+        printf ("rank %d: [%" PRIu64 ",%d:%" PRIu64 "]", rank, start[0]+i, 0, slice_size);
         for (j = 0; j < v->dims[1]; j++)
             printf (" %6.6g", * ((double *)data + i * v->dims[1] + j));
         printf ("\n");
     }
 
     free (data);
-
+    adios_selection_delete (sel);
+    adios_free_varinfo (v);
     adios_read_close (f);
     MPI_Barrier (comm);
     adios_read_finalize_method (method);
diff --git a/examples/C/global-array/adios_read_global_no_xml.c b/examples/C/global-array/adios_read_global_no_xml.c
index 463c98d..838b697 100644
--- a/examples/C/global-array/adios_read_global_no_xml.c
+++ b/examples/C/global-array/adios_read_global_no_xml.c
@@ -76,7 +76,7 @@ int main (int argc, char ** argv)
     printf (" ======== Rank %d ========== \n", rank);
     npl = 10;
     for (i = 0; i < slice_size; i+=npl) {
-        printf ("[%4.4lld]  ", rank*slice_size+i);
+        printf ("[%4.4" PRIu64 "]  ", rank*slice_size+i);
         for (j= 0; j < npl; j++) {
             printf (" %6.6g", * ((double *)data + i + j));
         }
@@ -91,6 +91,8 @@ int main (int argc, char ** argv)
 
     free (data);
 
+    adios_selection_delete (sel);
+    adios_free_varinfo (v);
     adios_read_close (f);
     MPI_Barrier (comm);
     adios_read_finalize_method (method);
diff --git a/examples/C/global-array/adios_read_writeblock.c b/examples/C/global-array/adios_read_writeblock.c
index 4649eee..1638fd8 100644
--- a/examples/C/global-array/adios_read_writeblock.c
+++ b/examples/C/global-array/adios_read_writeblock.c
@@ -25,7 +25,7 @@
 
 int main (int argc, char ** argv) 
 {
-    int         rank, size, i, j, datasize;
+    int         rank, size, i, j, datasize=0;
     MPI_Comm    comm = MPI_COMM_WORLD;
     enum ADIOS_READ_METHOD method = ADIOS_READ_METHOD_BP;
     ADIOS_SELECTION * sel;
@@ -55,12 +55,12 @@ int main (int argc, char ** argv)
             printf ("start=");
             for (j = 0; j < varinfo->ndim; j++)
             {
-                printf ("%llu ", varinfo->blockinfo[i].start[j]);
+                printf ("%" PRIu64, varinfo->blockinfo[i].start[j]);
             }
             printf ("count=");
             for (j = 0; j < varinfo->ndim; j++)
             {
-                printf ("%llu ", varinfo->blockinfo[i].count[j]);
+                printf ("%" PRIu64, varinfo->blockinfo[i].count[j]);
             }
             printf ("\n");
         }
diff --git a/examples/C/global-array/no_xml_write_byid.c b/examples/C/global-array/no_xml_write_byid.c
index 2429c4c..7c5c9e3 100644
--- a/examples/C/global-array/no_xml_write_byid.c
+++ b/examples/C/global-array/no_xml_write_byid.c
@@ -20,6 +20,7 @@
 */
 
 #include <stdio.h>
+#include <inttypes.h>
 #include <string.h>
 #include "mpi.h"
 #include "public/adios.h"
@@ -31,89 +32,95 @@
 
 int main (int argc, char ** argv) 
 {
-	char        filename [256];
-	int         rank, size, i, j;
-	int         NX = 100, gb, offset;  //local/global/offset
-	double      t[NX];
-        int         nblocks = 3;
-	MPI_Comm    comm = MPI_COMM_WORLD;
-        char g_str[100], o_str[100], l_str[100];
-        // attributes (from C variables)
-        int someints[5] = {5,4,3,2,1};
-        double somedoubles[5] = {5.55555, 4.4444, 3.333, 2.22, 1.1};
-
-	/* ADIOS variables declarations for matching gwrite_temperature.ch */
-	uint64_t    adios_groupsize, adios_totalsize;
-
-	MPI_Init (&argc, &argv);
-	MPI_Comm_rank (comm, &rank);
-	MPI_Comm_size (comm, &size);
-
-        gb = nblocks * NX * size;
-        sprintf (g_str, "%d", gb);
-        sprintf (l_str, "%d", NX);
-
-	strcpy (filename, "no_xml_write_byid.bp");
-
-	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
-
-        int64_t       m_adios_group;
-        int64_t       m_adios_file;
-        int64_t       var_ids[nblocks];
-
-        adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
-        adios_select_method (m_adios_group, "MPI", "", "");
-
-        for (i = 0; i < nblocks; i++) 
-        {
-            offset = rank * nblocks * NX + i * NX;
-            sprintf (o_str, "%d", offset);
-            var_ids[i] = adios_define_var (m_adios_group, "temperature"
-                                          ,"", adios_double
-                                          ,l_str, g_str, o_str
-                                          );
-            adios_set_transform (var_ids[i], "none");
-        }
-
-        // add some attributes
-        adios_define_attribute_byvalue (m_adios_group, 
-                "single_string","", adios_string,  1, "A single string attribute");
-        char *strings[] = {"X","Yy","ZzZ"};
-        adios_define_attribute_byvalue (m_adios_group, 
-                "three_strings","", adios_string_array,  3, 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_open (&m_adios_file, "restart", filename, "w", comm);
-
-        adios_groupsize = nblocks * (4 + 4 + 4 + NX * 8);
-
-        adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize);
-/* now we will write the data for each sub block */
-        for (i = 0; i < nblocks; i++)
-        {
-           offset = rank * nblocks * NX + i * NX;
-           for (j = 0; j < NX; j++)
-               t[j] = offset + j;
-
-           adios_write_byid(m_adios_file, var_ids[i], t);
-        }
-
-        adios_close (m_adios_file);
-
-        MPI_Barrier (comm);
-
-	adios_finalize (rank);
-
-	MPI_Finalize ();
-	return 0;
+    char        filename [256];
+    int         rank, size, i, j;
+    int         NX = 100, gb, offset;  //local/global/offset
+    double      t[NX];
+    int         nblocks = 3;
+    MPI_Comm    comm = MPI_COMM_WORLD;
+    char g_str[100], o_str[100], l_str[100];
+    // attributes (from C variables)
+    int someints[5] = {5,4,3,2,1};
+    double somedoubles[5] = {5.55555, 4.4444, 3.333, 2.22, 1.1};
+
+    /* ADIOS variables declarations for matching gwrite_temperature.ch */
+    uint64_t    adios_groupsize, adios_totalsize;
+
+    MPI_Init (&argc, &argv);
+    MPI_Comm_rank (comm, &rank);
+    MPI_Comm_size (comm, &size);
+
+    gb = nblocks * NX * size;
+    sprintf (g_str, "%d", gb);
+    sprintf (l_str, "%d", NX);
+
+    strcpy (filename, "no_xml_write_byid.bp");
+
+    adios_init_noxml (comm);
+    adios_set_max_buffer_size (10);
+
+    int64_t       m_adios_group;
+    int64_t       m_adios_file;
+    int64_t       var_ids[nblocks];
+
+    adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+    adios_select_method (m_adios_group, "MPI", "", "");
+
+    for (i = 0; i < nblocks; i++)
+    {
+        offset = rank * nblocks * NX + i * NX;
+        sprintf (o_str, "%d", offset);
+        var_ids[i] = adios_define_var (m_adios_group, "temperature"
+                                       ,"", adios_double
+                                       ,l_str, g_str, o_str
+        );
+        adios_set_transform (var_ids[i], "none");
+
+        // This is here just for fun
+        uint64_t varsize = adios_expected_var_size(var_ids[i]);
+        // adios_expected_var_size() works here because the definition of the variable
+        // does not depend on any dimension variable (but defined with numerical dimensions)
+        fprintf (stderr, "Temperature block %d is %" PRIu64 " bytes\n", i, varsize);
+    }
+
+    // add some attributes
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "single_string","", adios_string,  1, "A single string attribute");
+    char *strings[] = {"X","Yy","ZzZ"};
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "three_strings","", adios_string_array,  3, 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_open (&m_adios_file, "restart", filename, "w", comm);
+
+    adios_groupsize = nblocks * (4 + 4 + 4 + NX * 8);
+
+    adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize);
+    /* now we will write the data for each sub block */
+    for (i = 0; i < nblocks; i++)
+    {
+        offset = rank * nblocks * NX + i * NX;
+        for (j = 0; j < NX; j++)
+            t[j] = offset + j;
+
+        adios_write_byid(m_adios_file, var_ids[i], t);
+    }
+
+    adios_close (m_adios_file);
+
+    MPI_Barrier (comm);
+
+    adios_finalize (rank);
+
+    MPI_Finalize ();
+    return 0;
 }
diff --git a/examples/C/global-array/read_no_xml_write_byid.c b/examples/C/global-array/read_no_xml_write_byid.c
index c62cd6a..b81174a 100644
--- a/examples/C/global-array/read_no_xml_write_byid.c
+++ b/examples/C/global-array/read_no_xml_write_byid.c
@@ -76,7 +76,7 @@ int main (int argc, char ** argv)
     printf (" ======== Rank %d ========== \n", rank);
     npl = 10;
     for (i = 0; i < slice_size; i+=npl) {
-        printf ("[%4.4lld]  ", rank*slice_size+i);
+        printf ("[%4.4" PRIu64 "]  ", rank*slice_size+i);
         for (j= 0; j < npl; j++) {
             printf (" %6.6g", * ((double *)data + i + j));
         }
@@ -92,6 +92,8 @@ int main (int argc, char ** argv)
 
     free (data);
 
+    adios_selection_delete (sel);
+    adios_free_varinfo (v);
     adios_read_close (f);
     MPI_Barrier (comm);
     adios_read_finalize_method (method);
diff --git a/examples/C/icee_arrays/Makefile.in b/examples/C/icee_arrays/Makefile.in
index 1e1cdda..4fd096c 100644
--- a/examples/C/icee_arrays/Makefile.in
+++ b/examples/C/icee_arrays/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples/C/icee_arrays
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -423,22 +516,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -453,57 +549,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -519,12 +570,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -536,15 +582,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -553,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -589,13 +646,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -630,10 +684,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -711,22 +770,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/C/icee_arrays/array/Makefile.am b/examples/C/icee_arrays/array/Makefile.am
index 3658f0c..e4b8fd9 100644
--- a/examples/C/icee_arrays/array/Makefile.am
+++ b/examples/C/icee_arrays/array/Makefile.am
@@ -1,5 +1,4 @@
-INCLUDES = $(all_includes)
-INCLUDES += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public
 
 AUTOMAKE_OPTIONS = no-dependencies
 
@@ -10,10 +9,10 @@ noinst_PROGRAMS = adios_write adios_read
 
 adios_write_SOURCES = adios_write.c
 adios_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_SOURCES = adios_read.c
 adios_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/examples/C/icee_arrays/array/Makefile.in b/examples/C/icee_arrays/array/Makefile.in
index 682b6d1..ecb7cf0 100644
--- a/examples/C/icee_arrays/array/Makefile.in
+++ b/examples/C/icee_arrays/array/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = adios_write$(EXEEXT) adios_read$(EXEEXT)
 subdir = examples/C/icee_arrays/array
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ adios_read_OBJECTS = $(am_adios_read_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_read_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(adios_read_LDFLAGS) $(LDFLAGS) -o $@
 am_adios_write_OBJECTS = adios_write.$(OBJEXT)
 adios_write_OBJECTS = $(am_adios_write_OBJECTS)
 adios_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+adios_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(adios_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_read_SOURCES) $(adios_write_SOURCES)
 DIST_SOURCES = $(adios_read_SOURCES) $(adios_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -373,15 +475,14 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-INCLUDES = $(all_includes) -I$(top_builddir)/src/public \
-	-I$(top_srcdir)/src -I$(top_srcdir)/src/public
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public
 AUTOMAKE_OPTIONS = no-dependencies
 adios_write_SOURCES = adios_write.c
 adios_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_SOURCES = adios_read.c
 adios_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = README.txt
 all: all-am
@@ -427,12 +528,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_read$(EXEEXT): $(adios_read_OBJECTS) $(adios_read_DEPENDENCIES) 
+
+adios_read$(EXEEXT): $(adios_read_OBJECTS) $(adios_read_DEPENDENCIES) $(EXTRA_adios_read_DEPENDENCIES) 
 	@rm -f adios_read$(EXEEXT)
-	$(adios_read_LINK) $(adios_read_OBJECTS) $(adios_read_LDADD) $(LIBS)
-adios_write$(EXEEXT): $(adios_write_OBJECTS) $(adios_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_LINK) $(adios_read_OBJECTS) $(adios_read_LDADD) $(LIBS)
+
+adios_write$(EXEEXT): $(adios_write_OBJECTS) $(adios_write_DEPENDENCIES) $(EXTRA_adios_write_DEPENDENCIES) 
 	@rm -f adios_write$(EXEEXT)
-	$(adios_write_LINK) $(adios_write_OBJECTS) $(adios_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(adios_write_LINK) $(adios_write_OBJECTS) $(adios_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -441,13 +544,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -455,26 +558,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -486,15 +578,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -503,6 +591,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -551,10 +654,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -638,9 +746,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -650,7 +758,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/icee_arrays/array/adios_read.c b/examples/C/icee_arrays/array/adios_read.c
index b56a51b..524ecae 100644
--- a/examples/C/icee_arrays/array/adios_read.c
+++ b/examples/C/icee_arrays/array/adios_read.c
@@ -14,6 +14,7 @@
 #include <unistd.h> 
 #include <libgen.h>
 #include <locale.h>
+#include <getopt.h>
 #include "mpi.h"
 #include "adios.h"
 #include "adios_read.h"
@@ -107,7 +108,7 @@ int main (int argc, char ** argv)
         }
     }
 
-    int         rank, size, i, j;
+    int         rank, size, i;
     MPI_Comm    comm = MPI_COMM_WORLD;
     ADIOS_FILE * f;
     ADIOS_VARINFO * v;
@@ -181,7 +182,7 @@ int main (int argc, char ** argv)
                 sum += *((double *)data + i);
             }
 
-            printf("Step:%d, rank=%d: sum(data[%lld:%lld]) = %.01f\n", 
+            printf("Step:%d, rank=%d: sum(data[%" PRIu64 ":%" PRId64 "]) = %.01f\n",
                    f->current_step, rank, start[0], start[0]+count[0]-1, sum);
 
             // advance to 1) next available step with 2) blocking wait
diff --git a/examples/C/icee_arrays/array/adios_write.c b/examples/C/icee_arrays/array/adios_write.c
index e931227..d5e3999 100644
--- a/examples/C/icee_arrays/array/adios_write.c
+++ b/examples/C/icee_arrays/array/adios_write.c
@@ -14,6 +14,7 @@
 #include <unistd.h> 
 #include <libgen.h>
 #include <locale.h>
+#include <getopt.h>
 #include "mpi.h"
 #include "adios.h"
 #include "adios_read.h"
@@ -40,8 +41,6 @@ int main (int argc, char ** argv)
     int    cm_port = 59999;
     char*  cm_remote_host = "localhost";
     int    cm_remote_port = 59997;
-    int    is_multi_writers = 0;
-    char*  remote_list = "";
     int    max_client = 1;
     char   initstring [512];
     int    verbose_level = 3;
@@ -131,7 +130,7 @@ int main (int argc, char ** argv)
             verbose_level, cm_host, cm_port+rank, max_client, cm_transport, is_passive);
 
 	adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+    adios_set_max_buffer_size (10);
 
     int64_t       m_adios_group;
     int64_t       m_adios_file;
diff --git a/examples/C/manual/Makefile.am b/examples/C/manual/Makefile.am
index dcadff0..590d087 100644
--- a/examples/C/manual/Makefile.am
+++ b/examples/C/manual/Makefile.am
@@ -10,19 +10,19 @@ noinst_PROGRAMS = 1_nonadios_example 2_adios_write 3_adios_read 4_adios_nfiles
 
 1_nonadios_example_SOURCES = 1_nonadios_example.c
 1_nonadios_example_LDADD = $(top_builddir)/src/libadios.a 
-1_nonadios_example_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+1_nonadios_example_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 1_nonadios_example_LDADD += $(ADIOSLIB_LDADD)
 2_adios_write_SOURCES = 2_adios_write.c
 2_adios_write_LDADD = $(top_builddir)/src/libadios.a 
-2_adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+2_adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 2_adios_write_LDADD += $(ADIOSLIB_LDADD)
 3_adios_read_SOURCES = 3_adios_read.c
 3_adios_read_LDADD = $(top_builddir)/src/libadios.a 
-3_adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+3_adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 3_adios_read_LDADD += $(ADIOSLIB_LDADD)
 4_adios_nfiles_SOURCES = 4_adios_nfiles.c
 4_adios_nfiles_LDADD = $(top_builddir)/src/libadios.a 
-4_adios_nfiles_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+4_adios_nfiles_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 4_adios_nfiles_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp
diff --git a/examples/C/manual/Makefile.in b/examples/C/manual/Makefile.in
index 9481d5d..b979909 100644
--- a/examples/C/manual/Makefile.in
+++ b/examples/C/manual/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = 1_nonadios_example$(EXEEXT) 2_adios_write$(EXEEXT) \
 	3_adios_read$(EXEEXT) 4_adios_nfiles$(EXEEXT)
 subdir = examples/C/manual
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,46 +131,95 @@ am_1_nonadios_example_OBJECTS = 1_nonadios_example.$(OBJEXT)
 am__DEPENDENCIES_1 =
 1_nonadios_example_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-1_nonadios_example_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(1_nonadios_example_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+1_nonadios_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(1_nonadios_example_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_2_adios_write_OBJECTS = 2_adios_write.$(OBJEXT)
 2_adios_write_OBJECTS = $(am_2_adios_write_OBJECTS)
 2_adios_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-2_adios_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+2_adios_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(2_adios_write_LDFLAGS) $(LDFLAGS) -o $@
 am_3_adios_read_OBJECTS = 3_adios_read.$(OBJEXT)
 3_adios_read_OBJECTS = $(am_3_adios_read_OBJECTS)
 3_adios_read_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-3_adios_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+3_adios_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(3_adios_read_LDFLAGS) $(LDFLAGS) -o $@
 am_4_adios_nfiles_OBJECTS = 4_adios_nfiles.$(OBJEXT)
 4_adios_nfiles_OBJECTS = $(am_4_adios_nfiles_OBJECTS)
 4_adios_nfiles_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-4_adios_nfiles_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(4_adios_nfiles_LDFLAGS) $(LDFLAGS) -o $@
+4_adios_nfiles_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(4_adios_nfiles_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(1_nonadios_example_SOURCES) $(2_adios_write_SOURCES) \
 	$(3_adios_read_SOURCES) $(4_adios_nfiles_SOURCES)
 DIST_SOURCES = $(1_nonadios_example_SOURCES) $(2_adios_write_SOURCES) \
 	$(3_adios_read_SOURCES) $(4_adios_nfiles_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -136,6 +227,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -160,6 +252,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -168,6 +261,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -200,6 +295,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -253,17 +349,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -294,6 +393,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -314,10 +414,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -326,9 +429,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -340,6 +440,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -374,14 +475,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -396,17 +500,17 @@ AUTOMAKE_OPTIONS = no-dependencies
 1_nonadios_example_SOURCES = 1_nonadios_example.c
 1_nonadios_example_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-1_nonadios_example_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+1_nonadios_example_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 2_adios_write_SOURCES = 2_adios_write.c
 2_adios_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-2_adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+2_adios_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 3_adios_read_SOURCES = 3_adios_read.c
 3_adios_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-3_adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+3_adios_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 4_adios_nfiles_SOURCES = 4_adios_nfiles.c
 4_adios_nfiles_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-4_adios_nfiles_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+4_adios_nfiles_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = config.xml gread_temperature.ch gwrite_temperature.ch
 all: all-am
@@ -452,18 +556,22 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-1_nonadios_example$(EXEEXT): $(1_nonadios_example_OBJECTS) $(1_nonadios_example_DEPENDENCIES) 
+
+1_nonadios_example$(EXEEXT): $(1_nonadios_example_OBJECTS) $(1_nonadios_example_DEPENDENCIES) $(EXTRA_1_nonadios_example_DEPENDENCIES) 
 	@rm -f 1_nonadios_example$(EXEEXT)
-	$(1_nonadios_example_LINK) $(1_nonadios_example_OBJECTS) $(1_nonadios_example_LDADD) $(LIBS)
-2_adios_write$(EXEEXT): $(2_adios_write_OBJECTS) $(2_adios_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(1_nonadios_example_LINK) $(1_nonadios_example_OBJECTS) $(1_nonadios_example_LDADD) $(LIBS)
+
+2_adios_write$(EXEEXT): $(2_adios_write_OBJECTS) $(2_adios_write_DEPENDENCIES) $(EXTRA_2_adios_write_DEPENDENCIES) 
 	@rm -f 2_adios_write$(EXEEXT)
-	$(2_adios_write_LINK) $(2_adios_write_OBJECTS) $(2_adios_write_LDADD) $(LIBS)
-3_adios_read$(EXEEXT): $(3_adios_read_OBJECTS) $(3_adios_read_DEPENDENCIES) 
+	$(AM_V_CCLD)$(2_adios_write_LINK) $(2_adios_write_OBJECTS) $(2_adios_write_LDADD) $(LIBS)
+
+3_adios_read$(EXEEXT): $(3_adios_read_OBJECTS) $(3_adios_read_DEPENDENCIES) $(EXTRA_3_adios_read_DEPENDENCIES) 
 	@rm -f 3_adios_read$(EXEEXT)
-	$(3_adios_read_LINK) $(3_adios_read_OBJECTS) $(3_adios_read_LDADD) $(LIBS)
-4_adios_nfiles$(EXEEXT): $(4_adios_nfiles_OBJECTS) $(4_adios_nfiles_DEPENDENCIES) 
+	$(AM_V_CCLD)$(3_adios_read_LINK) $(3_adios_read_OBJECTS) $(3_adios_read_LDADD) $(LIBS)
+
+4_adios_nfiles$(EXEEXT): $(4_adios_nfiles_OBJECTS) $(4_adios_nfiles_DEPENDENCIES) $(EXTRA_4_adios_nfiles_DEPENDENCIES) 
 	@rm -f 4_adios_nfiles$(EXEEXT)
-	$(4_adios_nfiles_LINK) $(4_adios_nfiles_OBJECTS) $(4_adios_nfiles_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(4_adios_nfiles_LINK) $(4_adios_nfiles_OBJECTS) $(4_adios_nfiles_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -472,13 +580,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -486,26 +594,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -517,15 +614,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -534,6 +627,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -582,10 +690,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -669,9 +782,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -681,7 +794,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/manual/config.xml b/examples/C/manual/config.xml
index 8b43093..5a3e1ea 100644
--- a/examples/C/manual/config.xml
+++ b/examples/C/manual/config.xml
@@ -15,7 +15,7 @@
     <method group="temperature" method="MPI"/>
     <!--method group="temperature" method="MPI"/-->
 
-    <buffer size-MB="1" allocate-time="now"/>
+    <buffer max-size-MB="1"/>
 
 </adios-config>
 
diff --git a/examples/C/query/Makefile.am b/examples/C/query/Makefile.am
index 8f6c02b..ad039eb 100644
--- a/examples/C/query/Makefile.am
+++ b/examples/C/query/Makefile.am
@@ -1,5 +1,4 @@
-INCLUDES = $(all_includes)
-INCLUDES += -I$(top_builddir)/src/public  -I$(top_srcdir)/src/public -I$(top_srcdir)/src/query
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public  -I$(top_srcdir)/src/public -I$(top_srcdir)/src/query
 
 AUTOMAKE_OPTIONS = no-dependencies
 
@@ -7,7 +6,7 @@ noinst_PROGRAMS = write_vars query_vars write_table query_table
 
 write_vars_SOURCES = write_vars.c
 write_vars_LDADD = $(top_builddir)/src/libadios_nompi.a 
-write_vars_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS)
+write_vars_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 write_vars_LDADD += $(ADIOSLIB_SEQ_LDADD)
 
 query_vars_SOURCES = query_vars.c
@@ -17,7 +16,7 @@ query_vars_LDADD += $(ADIOSREADLIB_SEQ_LDADD)
 
 write_table_SOURCES = write_table.c
 write_table_LDADD = $(top_builddir)/src/libadios_nompi.a 
-write_table_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS)
+write_table_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 write_table_LDADD += $(ADIOSLIB_SEQ_LDADD)
 
 query_table_SOURCES = query_table.c
diff --git a/examples/C/query/Makefile.in b/examples/C/query/Makefile.in
index fd8d467..80b2950 100644
--- a/examples/C/query/Makefile.in
+++ b/examples/C/query/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = write_vars$(EXEEXT) query_vars$(EXEEXT) \
 	write_table$(EXEEXT) query_table$(EXEEXT)
 subdir = examples/C/query
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,46 +131,93 @@ query_table_OBJECTS = $(am_query_table_OBJECTS)
 am__DEPENDENCIES_1 =
 query_table_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
 	$(am__DEPENDENCIES_1)
-query_table_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+query_table_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(query_table_LDFLAGS) $(LDFLAGS) -o $@
 am_query_vars_OBJECTS = query_vars.$(OBJEXT)
 query_vars_OBJECTS = $(am_query_vars_OBJECTS)
 query_vars_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
 	$(am__DEPENDENCIES_1)
-query_vars_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+query_vars_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(query_vars_LDFLAGS) $(LDFLAGS) -o $@
 am_write_table_OBJECTS = write_table.$(OBJEXT)
 write_table_OBJECTS = $(am_write_table_OBJECTS)
 write_table_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
 	$(am__DEPENDENCIES_1)
-write_table_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+write_table_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(write_table_LDFLAGS) $(LDFLAGS) -o $@
 am_write_vars_OBJECTS = write_vars.$(OBJEXT)
 write_vars_OBJECTS = $(am_write_vars_OBJECTS)
 write_vars_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
 	$(am__DEPENDENCIES_1)
-write_vars_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+write_vars_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(write_vars_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(query_table_SOURCES) $(query_vars_SOURCES) \
 	$(write_table_SOURCES) $(write_vars_SOURCES)
 DIST_SOURCES = $(query_table_SOURCES) $(query_vars_SOURCES) \
 	$(write_table_SOURCES) $(write_vars_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -136,6 +225,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -160,6 +250,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -168,6 +259,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -200,6 +293,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -253,17 +347,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -294,6 +391,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -314,10 +412,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -326,9 +427,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -340,6 +438,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -374,14 +473,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -390,13 +492,12 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-INCLUDES = $(all_includes) -I$(top_builddir)/src/public \
-	-I$(top_srcdir)/src/public -I$(top_srcdir)/src/query
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public  -I$(top_srcdir)/src/public -I$(top_srcdir)/src/query
 AUTOMAKE_OPTIONS = no-dependencies
 write_vars_SOURCES = write_vars.c
 write_vars_LDADD = $(top_builddir)/src/libadios_nompi.a \
 	$(ADIOSLIB_SEQ_LDADD)
-write_vars_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS)
+write_vars_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 query_vars_SOURCES = query_vars.c
 query_vars_LDADD = $(top_builddir)/src/libadiosread_nompi.a \
 	$(ADIOSREADLIB_SEQ_LDADD)
@@ -404,7 +505,7 @@ query_vars_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS)
 write_table_SOURCES = write_table.c
 write_table_LDADD = $(top_builddir)/src/libadios_nompi.a \
 	$(ADIOSLIB_SEQ_LDADD)
-write_table_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS)
+write_table_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 query_table_SOURCES = query_table.c
 query_table_LDADD = $(top_builddir)/src/libadiosread_nompi.a \
 	$(ADIOSREADLIB_SEQ_LDADD)
@@ -454,18 +555,22 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-query_table$(EXEEXT): $(query_table_OBJECTS) $(query_table_DEPENDENCIES) 
+
+query_table$(EXEEXT): $(query_table_OBJECTS) $(query_table_DEPENDENCIES) $(EXTRA_query_table_DEPENDENCIES) 
 	@rm -f query_table$(EXEEXT)
-	$(query_table_LINK) $(query_table_OBJECTS) $(query_table_LDADD) $(LIBS)
-query_vars$(EXEEXT): $(query_vars_OBJECTS) $(query_vars_DEPENDENCIES) 
+	$(AM_V_CCLD)$(query_table_LINK) $(query_table_OBJECTS) $(query_table_LDADD) $(LIBS)
+
+query_vars$(EXEEXT): $(query_vars_OBJECTS) $(query_vars_DEPENDENCIES) $(EXTRA_query_vars_DEPENDENCIES) 
 	@rm -f query_vars$(EXEEXT)
-	$(query_vars_LINK) $(query_vars_OBJECTS) $(query_vars_LDADD) $(LIBS)
-write_table$(EXEEXT): $(write_table_OBJECTS) $(write_table_DEPENDENCIES) 
+	$(AM_V_CCLD)$(query_vars_LINK) $(query_vars_OBJECTS) $(query_vars_LDADD) $(LIBS)
+
+write_table$(EXEEXT): $(write_table_OBJECTS) $(write_table_DEPENDENCIES) $(EXTRA_write_table_DEPENDENCIES) 
 	@rm -f write_table$(EXEEXT)
-	$(write_table_LINK) $(write_table_OBJECTS) $(write_table_LDADD) $(LIBS)
-write_vars$(EXEEXT): $(write_vars_OBJECTS) $(write_vars_DEPENDENCIES) 
+	$(AM_V_CCLD)$(write_table_LINK) $(write_table_OBJECTS) $(write_table_LDADD) $(LIBS)
+
+write_vars$(EXEEXT): $(write_vars_OBJECTS) $(write_vars_DEPENDENCIES) $(EXTRA_write_vars_DEPENDENCIES) 
 	@rm -f write_vars$(EXEEXT)
-	$(write_vars_LINK) $(write_vars_OBJECTS) $(write_vars_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(write_vars_LINK) $(write_vars_OBJECTS) $(write_vars_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -474,13 +579,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -488,26 +593,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -519,15 +613,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -536,6 +626,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -584,10 +689,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -671,18 +781,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/C/query/README_table.txt b/examples/C/query/README_table.txt
index 84f0bd7..07dab27 100644
--- a/examples/C/query/README_table.txt
+++ b/examples/C/query/README_table.txt
@@ -8,7 +8,7 @@ i.e.  "column 1 of A is 0" AND "column 2 < 96"
 =================================
 
 $ ./write_table
-$ bpls -l table.bp -d A -n 7 -f "%4d "
+$ bpls -l table.bp -d A -n 7 -f "%3g "
   integer  A         {10, 7} = -1 / 201 / 18.9714 / 40.7168 
     (0,0)       0    0   97   15    8    0    7 
     (1,0)       1    0   96   16    5   -1    7 
@@ -40,7 +40,7 @@ $ bpls -l table.bp -d -S Elements Columns
     (6, 0)    "Position Z"
 
 
-2. If ADIOS was built with FastBit, create the index file (optional)
+2.a If ADIOS was built with FastBit, create the index file (optional)
 ====================================================================
 
 $ adios_index_fastbit table.bp
@@ -53,11 +53,17 @@ $ du -sh  table.*
 4.0K	table.bp
 8.0K	table.idx
 
+2.b If ADIOS was built with Alacrity, the variable A will be indexed inside the table.bp
+=========================================================================================
+
 
 3. Evaluate the query
 =====================
 
-$ ./query_table 
+$ ./query_table fastbit
+or
+$ ./query_table alacrity
+
 File : table.bp
 Variable A has 10 rows and 7 columns
 
diff --git a/examples/C/query/query_table.c b/examples/C/query/query_table.c
index 9df7609..9b06a79 100644
--- a/examples/C/query/query_table.c
+++ b/examples/C/query/query_table.c
@@ -19,6 +19,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <string.h>
 #include "adios.h"       /* includes dummy MPI */
 #include "adios_query.h" /* includes the read API */
 
@@ -36,7 +37,7 @@ void read_rows (ADIOS_FILE *f, ADIOS_SELECTION *hits, int ncols)
     uint64_t *points = hits->u.points.points;
 
     /* Just read all data at once here, assuming it fits in memory */
-    int32_t *data = (int32_t*) malloc (Npoints * ncols * sizeof(int32_t));
+    float *data = (float*) malloc (Npoints * ncols * sizeof(float));
 
     /* We use one bounding box selection of a single row repeatedly, 
        modifying the offset based on the actual point's row number.
@@ -55,7 +56,7 @@ void read_rows (ADIOS_FILE *f, ADIOS_SELECTION *hits, int ncols)
     /* Get the column names, just for fun */
     ADIOS_VARINFO *v = adios_inq_var (f, "Columns");
     char *Columns = (char*) malloc (v->dims[0]*v->dims[1]);
-    //printf ("Allocate %lld bytes for column names\n", v->dims[0]*v->dims[1]);
+    //printf ("Allocate %" PRIu64 " bytes for column names\n", v->dims[0]*v->dims[1]);
     adios_schedule_read (f, NULL, "Columns", 0, 1, Columns);
     adios_perform_reads (f, 1);
 
@@ -67,7 +68,7 @@ void read_rows (ADIOS_FILE *f, ADIOS_SELECTION *hits, int ncols)
     printf ("\n----------------------------------------------------------------------------\n");
     for (n=0; n<Npoints; n++) {
         for (i=0; i<ncols; i++) {
-            printf ("%5d      ", data[n*ncols+i]);
+            printf ("%5g      ", data[n*ncols+i]);
         }
         printf ("\n");
     }
@@ -77,10 +78,10 @@ void read_rows (ADIOS_FILE *f, ADIOS_SELECTION *hits, int ncols)
     free (data);
     adios_selection_delete(box);
     adios_free_varinfo (v);
-
+    free (Columns);
 }
 
-void print_points (ADIOS_SELECTION *hits, int *KE)
+void print_points (ADIOS_SELECTION *hits, float *KE, uint64_t *wboffs)
 {
     int n;
     int Npoints = hits->u.points.npoints;
@@ -90,15 +91,16 @@ void print_points (ADIOS_SELECTION *hits, int *KE)
     printf ("\nHit           i       j    Kinetic E\n");
     printf ("----------------------------------------------\n");
     for (n=0; n<Npoints; n++) {
-        printf ("  %3d      %4lld    %4lld      %d\n",
-                n, points[2*n],points[2*n+1],KE[n]);
+        printf ("  %3d      %4" PRIu64 "    %4" PRIu64 "      %g\n",
+                n, points[2*n]+wboffs[0],points[2*n+1]+wboffs[1],KE[n]);
     }
     printf ("\n");
 }
 
-void query_columns(ADIOS_FILE* f, int nrows, int ncols)
+void query_columns(ADIOS_FILE* f, enum ADIOS_QUERY_METHOD method, ADIOS_VARINFO *vi)
 {
-
+    int nrows = vi->dims[0];
+    int ncols = vi->dims[1];
     printf("\n====== querying over columns of a table  =======\n");
     uint64_t offs1[] = {0,1};  // element
     uint64_t offs2[] = {0,2};  // potential
@@ -113,6 +115,9 @@ void query_columns(ADIOS_FILE* f, int nrows, int ncols)
     q2 = adios_query_create(f, col2, "A", ADIOS_LTEQ, "96"); // select Potential <= 96
     q  = adios_query_combine(q1, ADIOS_QUERY_OP_AND, q2);
     printf("Query: %s\n",q->condition);
+    adios_query_set_method (q, method);
+
+    adios_inq_var_blockinfo(f, vi);
 
     if (q!= NULL) {
         int timestep = 0;
@@ -120,29 +125,64 @@ void query_columns(ADIOS_FILE* f, int nrows, int ncols)
         int nBatches = 1;
         while (1) {
             /* Evaluate query, get the list of points (of a limited number at once) */
-            ADIOS_SELECTION* hits = NULL;
-            int hasMore = adios_query_evaluate(q, col3, timestep, batchSize, &hits);
-            printf("Number of hits returned in batch %d = %lld \n",nBatches, hits->u.points.npoints);
+            ADIOS_QUERY_RESULT *result = adios_query_evaluate(q, col3, timestep, batchSize);
+
+            if (result->status == ADIOS_QUERY_RESULT_ERROR) {
+                printf ("Query evaluation failed with error: %s\n", adios_errmsg());
+                break;
+            }
+
+            if (result->nselections == 0) {
+                printf ("Zero results returned in batch %d\n", nBatches);
+                break;
+            }
+
+            printf("Number of hits returned in batch %d = %lld points in %d containers\n",
+                    nBatches, result->npoints, result->nselections);
+
+            int n;
+            for (n = 0; n < result->nselections; n++)
+            {
+                ADIOS_SELECTION* hits = &(result->selections[n]);
+                const ADIOS_SELECTION_POINTS_STRUCT * pts = &(hits->u.points);
+                uint64_t * wboffs = calloc (pts->ndim, sizeof(uint64_t));
+                if (pts->container_selection &&
+                        pts->container_selection->type == ADIOS_SELECTION_WRITEBLOCK)
+                {
+                    int i;
+                    int blockidx = pts->container_selection->u.block.index;
+                    // calculate actual block index if multiple timesteps are available
+                    for (i = 0; i < timestep-1; i++)
+                        blockidx += vi->nblocks[i];
+                    // now record the offset of this block in global space
+                    // point coordinates are relative to block
+                    for (i = 0; i < pts->ndim; ++i) {
+                        wboffs[i] = vi->blockinfo[blockidx].start[i];
+                    }
+                }
 
-            if (hits->u.points.npoints > 0) {
                 /* Read the data of those points */
-                int *KE = (int *) malloc (sizeof(double)*hits->u.points.npoints);
+                float *KE = (float *) malloc (sizeof(double)*pts->npoints);
                 adios_schedule_read (f, hits, "A", timestep, 1, KE);
                 adios_perform_reads (f, 1);
 
-                print_points (hits, KE);
+                print_points (hits, KE, wboffs);
                 free (KE);
+                free (wboffs);
 
                 read_rows (f, hits, ncols);
             } 
 
             /* free resources used only in this batch */
-            free(hits->u.points.points);
-            adios_selection_delete(hits);
+            for (n=0; n < result->nselections; n++) {
+                adios_selection_delete (&(result->selections[n]));
+            }
 
-            if (hasMore <= 0) {
+            if (result->status == ADIOS_QUERY_NO_MORE_RESULTS) {
+                free (result);
                 break;
             }
+            free (result);
             nBatches++;
         }
 
@@ -156,11 +196,59 @@ void query_columns(ADIOS_FILE* f, int nrows, int ncols)
     adios_selection_delete(col3);
 }
 
+void printUsage(char *prgname)
+{
+    printf ("Usage: %s [fastbit|alacrity]\n"
+           "  Choose the query method to use.\n"
+           "  For ALACRITY, you need to build write_table with and ADIOS which has ALACRITY transformation.\n"
+           "  For FastBit, you need to run 'adios_index_fastbit table.bp' to generate the index 'table.idx'.\n"
+           ,prgname);
+}
+
 int main (int argc, char ** argv) 
 {
     ADIOS_FILE * f;
     MPI_Comm    comm_dummy = 0;  /* MPI_Comm is defined through adios.h/adios_read.h */
     adios_read_init_method(ADIOS_READ_METHOD_BP,0,"");
+    enum ADIOS_QUERY_METHOD query_method;
+
+    adios_read_init_method(ADIOS_READ_METHOD_BP,0,"");
+
+    if (!adios_query_is_method_available(ADIOS_QUERY_METHOD_ALACRITY) && 
+        !adios_query_is_method_available(ADIOS_QUERY_METHOD_FASTBIT)) 
+    {
+        printf ("This query test on tabular data is only supported by accurate "
+                "point-based query methods like FASTBIT and ALACRITY. "
+                "No such method is available in this ADIOS build.\n");
+        return 1;
+    }
+    if (argc > 1) {
+        if (!strncasecmp (argv[1], "alacrity", 8)) {
+            if (adios_query_is_method_available(ADIOS_QUERY_METHOD_ALACRITY)) {
+                query_method = ADIOS_QUERY_METHOD_ALACRITY;
+                printf ("Set query method to ALACRITY\n");
+            } else {
+                printf ("ERROR: The ALACRITY method is not available in this ADIOS build.\n"
+                        "Try FASTBIT but first run 'adios_index_fastbit table.bp'\n");
+                return 1;
+            }
+        } else if (!strncasecmp (argv[1], "fastbit", 7)) {
+            if (adios_query_is_method_available(ADIOS_QUERY_METHOD_FASTBIT)) {
+                query_method = ADIOS_QUERY_METHOD_FASTBIT;
+                printf ("Set query method to FASTBIT\n");
+            } else {
+                printf ("ERROR: The FASTBIT method is not available in this ADIOS build.\n"
+                        "Try ALACRITY but first run the write_table code with alacrity transformation!\n");
+                return 1;
+            }
+        } else {
+            printUsage(argv[0]);
+            return 1;
+        }
+    } else {
+        printUsage(argv[0]);
+        return 1;
+    }
 
     printf("File : %s\n",filename);
     f = adios_read_open_file (filename, ADIOS_READ_METHOD_BP, comm_dummy);
@@ -184,9 +272,10 @@ int main (int argc, char ** argv)
         return 2;
     }
 
-    printf ("Variable A has %lld rows and %lld columns\n", v->dims[0], v->dims[1]);
+    printf ("Variable A has %" PRIu64 " rows and %" PRIu64 " columns\n", v->dims[0], v->dims[1]);
 
-    query_columns(f, v->dims[0], v->dims[1]); 
+    query_columns(f, query_method, v);
+    adios_free_varinfo(v);
     adios_read_close(f);
     adios_read_finalize_method (ADIOS_READ_METHOD_BP);
     return 0;
diff --git a/examples/C/query/query_vars.c b/examples/C/query/query_vars.c
index b111fa8..1ec8cad 100644
--- a/examples/C/query/query_vars.c
+++ b/examples/C/query/query_vars.c
@@ -19,12 +19,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <string.h>
 #include "adios.h"       /* includes dummy MPI */
 #include "adios_query.h" /* includes the read API */
 
 const char filename[] = "vars.bp";
 
-void print_points (ADIOS_SELECTION *hits, double *P, double *V, double *T)
+void print_points (ADIOS_SELECTION *hits, uint64_t *wboffs, double *P, double *V, double *T)
 {
     int n;
     int Npoints = hits->u.points.npoints;
@@ -34,18 +35,30 @@ void print_points (ADIOS_SELECTION *hits, double *P, double *V, double *T)
     printf ("\nHit           i       j        P      V     T\n");
     printf ("----------------------------------------------\n");
     for (n=0; n<Npoints; n++) {
-        printf ("  %3d      %4lld    %4lld      %g   %g   %g\n",
-                n, points[2*n],points[2*n+1],P[n],V[n],T[n]);
+        printf ("  %3d      %4" PRIu64 "    %4" PRIu64 "      %g   %g   %g\n",
+                n, points[2*n]+wboffs[0],points[2*n+1]+wboffs[1],
+                P[n],V[n],T[n]);
     }
     printf ("\n");
 }
 
-void query_OneBoundBoxForAllVars(ADIOS_FILE* f)
+
+void print_block (ADIOS_VARINFO *vi, int blockid, double *P, double *V, double *T)
+{
+    int n;
+    printf ("    Block %d of dimensions { ", blockid);
+    for (n=0; n < vi->ndim; n++) {
+        printf ("%lld ", vi->blockinfo[blockid].count[n]);
+    }
+    printf ("}\n");
+}
+
+void query_OneBoundBoxForAllVars(ADIOS_FILE* f, enum ADIOS_QUERY_METHOD method)
 {
     printf("\n====== querying with one bound box for all variables =======\n");
     uint64_t start[] = {0,0};
     uint64_t count[] = {5,6};
-
+    int i;
     ADIOS_SELECTION* box = adios_selection_boundingbox(2, start, count);
     ADIOS_QUERY *q1, *q2, *q3, *q4, *q;
     q1 = adios_query_create(f, box, "P", ADIOS_GT, "80.0");
@@ -55,40 +68,113 @@ void query_OneBoundBoxForAllVars(ADIOS_FILE* f)
     q  = adios_query_combine(q3, ADIOS_QUERY_OP_AND, q4);
     printf("File : %s\n",filename);
     printf("Query: %s\n",q->condition);
+    adios_query_set_method (q, method);
+    ADIOS_VARINFO *vP = adios_inq_var (f, "P");
+    adios_inq_var_blockinfo(f, vP);
+
 
     if (q!= NULL) {
         int timestep = 0;
         int64_t batchSize = 20;
         int nBatches = 1;
         while (1) {
-            /* Evaluate query, get the list of points (of a limited number at once) */
-            ADIOS_SELECTION* hits = NULL;
-            int hasMore = adios_query_evaluate(q, box, timestep, batchSize, &hits);
-            printf("Number of hits returned in batch %d = %lld \n",nBatches, hits->u.points.npoints);
-
-            if (hits->u.points.npoints > 0) {
-                /* Read the data of those points */
-                double *P = (double *) malloc (sizeof(double)*hits->u.points.npoints);
-                double *V = (double *) malloc (sizeof(double)*hits->u.points.npoints);
-                double *T = (double *) malloc (sizeof(double)*hits->u.points.npoints);
-                adios_schedule_read (f, hits, "P", timestep, 1, P);
-                adios_schedule_read (f, hits, "V", timestep, 1, V);
-                adios_schedule_read (f, hits, "T", timestep, 1, T);
-                adios_perform_reads (f, 1);
-
-                print_points (hits, P, V, T);
-                free (P);
-                free (V);
-                free (T);
-            } 
+            /* Evaluate query, get the list of points or write blocks (of a limited number at once) */
+            ADIOS_QUERY_RESULT *result = adios_query_evaluate(q, box, timestep, batchSize);
+
+            if (result->status == ADIOS_QUERY_RESULT_ERROR) {
+                printf ("Query evaluation failed with error: %s\n", adios_errmsg());
+                break;
+            }
+
+            if (result->nselections == 0) {
+                printf ("Zero results returned in batch %d\n", nBatches);
+                break;
+            }
+
+            if (result->selections->type == ADIOS_SELECTION_POINTS)
+            {
+                // we have selection(s) and each one contains the points
+                printf("Number of hits returned in batch %d = %lld points in %d containers\n",
+                        nBatches, result->npoints, result->nselections);
+
+                for (i=0; i < result->nselections; i++)
+                {
+                    ADIOS_SELECTION* hits = &(result->selections[i]);
+                    const ADIOS_SELECTION_POINTS_STRUCT * pts = &(hits->u.points);
+                    uint64_t * wboffs = calloc (pts->ndim, sizeof(uint64_t));
+                    if (pts->container_selection &&
+                            pts->container_selection->type == ADIOS_SELECTION_WRITEBLOCK)
+                    {
+                        int i;
+                        int blockidx = pts->container_selection->u.block.index;
+                        // calculate actual block index if multiple timesteps are available
+                        for (i = 0; i < timestep-1; i++)
+                            blockidx += vP->nblocks[i];
+                        // now record the offset of this block in global space
+                        // point coordinates are relative to block
+                        for (i = 0; i < pts->ndim; ++i) {
+                            wboffs[i] = vP->blockinfo[blockidx].start[i];
+                        }
+                    }
+
+                    /* Read the data of those points */
+                    double *P = (double *) malloc (sizeof(double)*hits->u.points.npoints);
+                    double *V = (double *) malloc (sizeof(double)*hits->u.points.npoints);
+                    double *T = (double *) malloc (sizeof(double)*hits->u.points.npoints);
+                    adios_schedule_read (f, hits, "P", timestep, 1, P);
+                    adios_schedule_read (f, hits, "V", timestep, 1, V);
+                    adios_schedule_read (f, hits, "T", timestep, 1, T);
+                    adios_perform_reads (f, 1);
+
+                    print_points (hits, wboffs, P, V, T);
+                    free (P);
+                    free (V);
+                    free (T);
+                    free (wboffs);
+
+                }
+            }
+            else if (result->selections->type == ADIOS_SELECTION_WRITEBLOCK)
+            {
+                // we have multiple selections, each one is a writeblock
+                printf("Number of blocks returned in batch %d = %d \n",nBatches,
+                        result->nselections);
+
+                for (i=0; i < result->nselections; i++)
+                {
+                    uint64_t nelems = 1;
+                    int j;
+                    for (j=0; j < vP->ndim; j++) {
+                        nelems *= vP->blockinfo[result->selections[i].u.block.index].count[j];
+                    }
+                    double *P = (double *) malloc (sizeof(double)*nelems);
+                    double *V = (double *) malloc (sizeof(double)*nelems);
+                    double *T = (double *) malloc (sizeof(double)*nelems);
+
+                    adios_schedule_read (f, &result->selections[i], "P", timestep, 1, P);
+                    adios_schedule_read (f, &result->selections[i], "V", timestep, 1, V);
+                    adios_schedule_read (f, &result->selections[i], "T", timestep, 1, T);
+                    adios_perform_reads (f, 1);
+
+                    print_block (vP, result->selections[i].u.block.index, P, V, T);
+                    free (P);
+                    free (V);
+                    free (T);
+
+                }
+            }
 
             /* free resources used only in this batch */
-            free(hits->u.points.points);
-            adios_selection_delete(hits);
+            for (i=0; i < result->nselections; i++) {
+                adios_selection_delete (&(result->selections[i]));
+            }
 
-            if (hasMore <= 0) {
+            if (result->status == ADIOS_QUERY_NO_MORE_RESULTS) {
+                free (result);
                 break;
             }
+
+            free (result);
             nBatches++;
         }
 
@@ -100,13 +186,71 @@ void query_OneBoundBoxForAllVars(ADIOS_FILE* f)
     adios_query_free(q4);
     adios_query_free(q);
     adios_selection_delete(box);
+    adios_free_varinfo(vP);
+}
+
+void printUsage(char *prgname)
+{
+    printf ("Usage: %s [fastbit|alacrity]\n"
+           "  Choose the query method to use.\n"
+           "  For ALACRITY, you need to build write_vars with and ADIOS which has ALACRITY transformation.\n"
+           "  For FastBit, you need to run 'adios_index_fastbit vars.bp' to generate the index 'vars.idx'.\n"
+           ,prgname);
 }
 
 int main (int argc, char ** argv) 
 {
     ADIOS_FILE * f;
     MPI_Comm    comm_dummy = 0;  /* MPI_Comm is defined through adios.h/adios_read.h */
+    enum ADIOS_QUERY_METHOD query_method;
+
     adios_read_init_method(ADIOS_READ_METHOD_BP,0,"");
+    if (!adios_query_is_method_available(ADIOS_QUERY_METHOD_ALACRITY) &&
+        !adios_query_is_method_available(ADIOS_QUERY_METHOD_FASTBIT))
+    {
+        printf ("This query test on tabular data is only supported by accurate "
+                "point-based query methods like FASTBIT and ALACRITY. "
+                "No such method is available in this ADIOS build.\n");
+        return 1;
+    }
+
+    if (argc > 1) {
+        if (!strncasecmp (argv[1], "alacrity", 8)) {
+            if (adios_query_is_method_available(ADIOS_QUERY_METHOD_ALACRITY)) {
+                query_method = ADIOS_QUERY_METHOD_ALACRITY;
+                printf ("Set query method to ALACRITY\n");
+            } else {
+                printf ("ERROR: The ALACRITY method is not available in this ADIOS build.\n"
+                        "Try FASTBIT but first run 'adios_index_fastbit table.bp'\n");
+                return 1;
+            }
+        } else if (!strncasecmp (argv[1], "fastbit", 7)) {
+            if (adios_query_is_method_available(ADIOS_QUERY_METHOD_FASTBIT)) {
+                query_method = ADIOS_QUERY_METHOD_FASTBIT;
+                printf ("Set query method to FASTBIT\n");
+            } else {
+                printf ("ERROR: The FASTBIT method is not available in this ADIOS build.\n"
+                        "Try ALACRITY but first run the write_table code with alacrity transformation!\n");
+                return 1;
+            }
+        } else if (!strncasecmp (argv[1], "minmax", 7)) {
+            if (adios_query_is_method_available(ADIOS_QUERY_METHOD_MINMAX)) {
+                query_method = ADIOS_QUERY_METHOD_MINMAX;
+                printf ("Set query method to MINMAX\n");
+            } else {
+                printf ("ERROR: The MINMAX method is not available in this ADIOS build.\n"
+                        "Try ALACRITY or FASTBIT query methods\n");
+                return 1;
+            }
+        } else {
+            printUsage(argv[0]);
+            return 1;
+        }
+    } else {
+        query_method = ADIOS_QUERY_METHOD_UNKNOWN;
+        //printUsage(argv[0]);
+        //return 1;
+    }
 
     f = adios_read_open_file (filename, ADIOS_READ_METHOD_BP, comm_dummy);
     if (f == NULL) {
@@ -114,7 +258,7 @@ int main (int argc, char ** argv)
         return 1;
     }
 
-    query_OneBoundBoxForAllVars(f); 
+    query_OneBoundBoxForAllVars(f, query_method);
     //testNoBoxOnSelection(f);
     // testDefaultBoundBox(f);
     //testMultiBoundBox(f);
diff --git a/examples/C/query/write_table.c b/examples/C/query/write_table.c
index fc0d03f..beaebba 100644
--- a/examples/C/query/write_table.c
+++ b/examples/C/query/write_table.c
@@ -28,6 +28,7 @@
 #include <string.h>
 #include "adios.h"
 #include "adios_types.h"
+#include "adios_query.h" // to ask about availability of ALACRITY
 
 #ifdef DMALLOC
 #include "dmalloc.h"
@@ -46,7 +47,7 @@
 const int NX = 10;
 const int NY = 7;
 
-int32_t A[10][7] = { 
+float A[10][7] = {
 /*   id, Elem,   P,   KE,   x,  y,  z */
     {0,   0,     97,  15,   8,  0,  7},
     {1,   0,     96,  16,   5, -1,  7},
@@ -83,40 +84,46 @@ char Elements[3][9] = {
 
 int main (int argc, char ** argv) 
 {
-	int         size, i, block;
 	MPI_Comm    comm = 0; // dummy mpi 
 
 	/* ADIOS variables declarations for matching gwrite_temperature.ch */
 	uint64_t  adios_groupsize, adios_totalsize;
-        int64_t   g;
-        int64_t   f;
-        char dimstr[32];
+	int64_t   g;
+	int64_t   f;
+	char dimstr[32];
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 1);
+	adios_set_max_buffer_size (1);
 
-        adios_declare_group (&g, "table", "", adios_flag_yes);
-        adios_select_method (g, "POSIX1", "", "");
+	adios_declare_group (&g, "table", "", adios_flag_yes);
+	adios_select_method (g, "POSIX", "", "");
 
 	sprintf (dimstr, "%d,%d", NX, NY);
-        adios_define_var (g, "A" ,"", adios_integer, dimstr, dimstr, "0,0");
+	int64_t varA = adios_define_var (g, "A" ,"", adios_real, dimstr, dimstr, "0,0");
+
+	adios_read_init_method(ADIOS_READ_METHOD_BP,0,"");
+    if (adios_query_is_method_available (ADIOS_QUERY_METHOD_ALACRITY)) {
+        adios_set_transform (varA, "alacrity");
+        printf ("Turned on ALACRITY transformation for table A\n");
+    }
+
 	sprintf (dimstr, "%d,%d", n_of_elements, Elements_length);
-        adios_define_var (g, "Elements" ,"", adios_byte, dimstr, dimstr, "0,0");
+	adios_define_var (g, "Elements" ,"", adios_byte, dimstr, dimstr, "0,0");
 	sprintf (dimstr, "%d,%d", NY, Columns_length);
-        adios_define_var (g, "Columns" ,"", adios_byte, dimstr, dimstr, "0,0");
-   
-   
-        adios_open (&f, "table", "table.bp", "w", comm);
+	adios_define_var (g, "Columns" ,"", adios_byte, dimstr, dimstr, "0,0");
+
+
+	adios_open (&f, "table", "table.bp", "w", comm);
 
-        adios_groupsize = NX*NY*sizeof(int32_t)           /* size of A */
-                        + n_of_elements * Elements_length /* size of Elements */
-                        + NY * Columns_length;            /* size of Columns */
+	adios_groupsize = NX*NY*sizeof(int32_t)           /* size of A */
+	+ n_of_elements * Elements_length /* size of Elements */
+	+ NY * Columns_length;            /* size of Columns */
 
-        adios_group_size (f, adios_groupsize, &adios_totalsize);
+	adios_group_size (f, adios_groupsize, &adios_totalsize);
 	adios_write (f, "A", A);
 	adios_write (f, "Elements", Elements);
 	adios_write (f, "Columns", Columns);
-        adios_close (f);
+	adios_close (f);
 
 	adios_finalize (0);
 	return 0;
diff --git a/examples/C/query/write_vars.c b/examples/C/query/write_vars.c
index 1104210..64b04bd 100644
--- a/examples/C/query/write_vars.c
+++ b/examples/C/query/write_vars.c
@@ -25,6 +25,7 @@
 #include <string.h>
 #include "adios.h"
 #include "adios_types.h"
+#include "adios_query.h" // to ask about availability of ALACRITY
 
 #ifdef DMALLOC
 #include "dmalloc.h"
@@ -59,39 +60,45 @@ double V[5][6] = {
 
 int main (int argc, char ** argv) 
 {
-	int         size, i, block;
 	MPI_Comm    comm = 0; // dummy mpi 
 
 	/* ADIOS variables declarations for matching gwrite_temperature.ch */
 	uint64_t  adios_groupsize, adios_totalsize;
-        int64_t   g;
-        int64_t   f;
-        int64_t   Tid, Pid, Vid; // variable IDs
-        char dimstr[32];
+	int64_t   g;
+	int64_t   f;
+	int64_t   Tid, Pid, Vid; // variable IDs
+	char dimstr[32];
 
 	sprintf (dimstr, "%d,%d", NX, NY);
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 1);
-
-        adios_declare_group (&g, "vars", "", adios_flag_yes);
-        adios_select_method (g, "POSIX1", "", "");
-
-        Tid = adios_define_var (g, "T" ,"", adios_double, dimstr, dimstr, "0,0");
-        adios_set_transform (Tid, "none");
-        Pid = adios_define_var (g, "P" ,"", adios_double, dimstr, dimstr, "0,0");
-        adios_set_transform (Pid, "none");
-        Vid = adios_define_var (g, "V" ,"", adios_double, dimstr, dimstr, "0,0");
-        adios_set_transform (Vid, "none");
-   
-   
-        adios_open (&f, "vars", "vars.bp", "w", comm);
-        adios_groupsize = 3*NX*NY*sizeof(double);
-        adios_group_size (f, adios_groupsize, &adios_totalsize);
+	adios_set_max_buffer_size (1);
+
+	adios_declare_group (&g, "vars", "", adios_flag_yes);
+	adios_select_method (g, "POSIX", "", "");
+
+	Tid = adios_define_var (g, "T" ,"", adios_double, dimstr, dimstr, "0,0");
+	adios_set_transform (Tid, "none");
+	Pid = adios_define_var (g, "P" ,"", adios_double, dimstr, dimstr, "0,0");
+	adios_set_transform (Pid, "none");
+	Vid = adios_define_var (g, "V" ,"", adios_double, dimstr, dimstr, "0,0");
+	adios_set_transform (Vid, "none");
+
+    adios_read_init_method(ADIOS_READ_METHOD_BP,0,"");
+    if (adios_query_is_method_available (ADIOS_QUERY_METHOD_ALACRITY)) {
+        adios_set_transform (Tid, "alacrity");
+        adios_set_transform (Pid, "alacrity");
+        adios_set_transform (Vid, "alacrity");
+        printf ("Turned on ALACRITY transformation for array variables\n");
+    }
+
+	adios_open (&f, "vars", "vars.bp", "w", comm);
+	adios_groupsize = 3*NX*NY*sizeof(double);
+	adios_group_size (f, adios_groupsize, &adios_totalsize);
 	adios_write (f, "T", T);
 	adios_write (f, "P", P);
 	adios_write (f, "V", V);
-        adios_close (f);
+	adios_close (f);
 
 	adios_finalize (0);
 	return 0;
diff --git a/examples/C/read_all/Makefile.in b/examples/C/read_all/Makefile.in
index ac26962..101a6fb 100644
--- a/examples/C/read_all/Makefile.in
+++ b/examples/C/read_all/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = read_all$(EXEEXT) read_all_v1$(EXEEXT)
 subdir = examples/C/read_all
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ read_all_OBJECTS = $(am_read_all_OBJECTS)
 am__DEPENDENCIES_1 =
 read_all_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
 	$(am__DEPENDENCIES_1)
-read_all_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(read_all_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+read_all_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(read_all_LDFLAGS) $(LDFLAGS) -o $@
 am_read_all_v1_OBJECTS = read_all_v1-read_all_v1.$(OBJEXT)
 read_all_v1_OBJECTS = $(am_read_all_v1_OBJECTS)
 read_all_v1_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
 	$(am__DEPENDENCIES_1)
-read_all_v1_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+read_all_v1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(read_all_v1_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(read_all_SOURCES) $(read_all_v1_SOURCES)
 DIST_SOURCES = $(read_all_SOURCES) $(read_all_v1_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -429,12 +531,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-read_all$(EXEEXT): $(read_all_OBJECTS) $(read_all_DEPENDENCIES) 
+
+read_all$(EXEEXT): $(read_all_OBJECTS) $(read_all_DEPENDENCIES) $(EXTRA_read_all_DEPENDENCIES) 
 	@rm -f read_all$(EXEEXT)
-	$(read_all_LINK) $(read_all_OBJECTS) $(read_all_LDADD) $(LIBS)
-read_all_v1$(EXEEXT): $(read_all_v1_OBJECTS) $(read_all_v1_DEPENDENCIES) 
+	$(AM_V_CCLD)$(read_all_LINK) $(read_all_OBJECTS) $(read_all_LDADD) $(LIBS)
+
+read_all_v1$(EXEEXT): $(read_all_v1_OBJECTS) $(read_all_v1_DEPENDENCIES) $(EXTRA_read_all_v1_DEPENDENCIES) 
 	@rm -f read_all_v1$(EXEEXT)
-	$(read_all_v1_LINK) $(read_all_v1_OBJECTS) $(read_all_v1_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(read_all_v1_LINK) $(read_all_v1_OBJECTS) $(read_all_v1_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -443,25 +547,25 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 read_all-read_all.o: read_all.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all-read_all.o `test -f 'read_all.c' || echo '$(srcdir)/'`read_all.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all-read_all.o `test -f 'read_all.c' || echo '$(srcdir)/'`read_all.c
 
 read_all-read_all.obj: read_all.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all-read_all.obj `if test -f 'read_all.c'; then $(CYGPATH_W) 'read_all.c'; else $(CYGPATH_W) '$(srcdir)/read_all.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all-read_all.obj `if test -f 'read_all.c'; then $(CYGPATH_W) 'read_all.c'; else $(CYGPATH_W) '$(srcdir)/read_all.c'; fi`
 
 read_all_v1-read_all_v1.o: read_all_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_v1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all_v1-read_all_v1.o `test -f 'read_all_v1.c' || echo '$(srcdir)/'`read_all_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_v1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all_v1-read_all_v1.o `test -f 'read_all_v1.c' || echo '$(srcdir)/'`read_all_v1.c
 
 read_all_v1-read_all_v1.obj: read_all_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_v1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all_v1-read_all_v1.obj `if test -f 'read_all_v1.c'; then $(CYGPATH_W) 'read_all_v1.c'; else $(CYGPATH_W) '$(srcdir)/read_all_v1.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_all_v1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_all_v1-read_all_v1.obj `if test -f 'read_all_v1.c'; then $(CYGPATH_W) 'read_all_v1.c'; else $(CYGPATH_W) '$(srcdir)/read_all_v1.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -469,26 +573,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -500,15 +593,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -517,6 +606,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -565,10 +669,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -651,18 +760,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/C/read_all/read_all.c b/examples/C/read_all/read_all.c
index cb3b98e..ad6debb 100644
--- a/examples/C/read_all/read_all.c
+++ b/examples/C/read_all/read_all.c
@@ -24,7 +24,7 @@ int main (int argc, char ** argv)
     MPI_Comm    comm_dummy = 0;  /* MPI_Comm is defined through adios_read.h */
     void      * data = NULL;
     uint64_t    start[] = {0,0,0,0,0,0,0,0,0,0};
-    uint64_t    count[10], bytes_read = 0;
+    uint64_t    count[10];
     ADIOS_SELECTION *sel;
 
     if (argc < 2) {
@@ -61,9 +61,9 @@ int main (int argc, char ** argv)
                 if (v->nsteps > 1) {
                     printf(" %d*",v->nsteps);
                 }
-                printf("[%lld",v->dims[0]);
+                printf("[%" PRIu64,v->dims[0]);
                 for (j = 1; j < v->ndim; j++)
-                    printf(", %lld",v->dims[j]);
+                    printf(", %" PRIu64,v->dims[j]);
                 //printf("] = \n");
                 
                 if (v->type == adios_integer)
@@ -89,9 +89,9 @@ int main (int argc, char ** argv)
                         adios_perform_reads (f, 1);
 
                         printf("      Step %d:\n", t);
-                        if (bytes_read < 0) {
+                        if (adios_errno) {
                             printf ("%s\n", adios_errmsg());
-                        } else if (bytes_read > 1024*1024) {
+                        } else if (total_size > 1024*1024) {
                             printf ("Too big to print\n");
                         } else if (v->ndim == 1) {
                             printf ("        [");
@@ -136,8 +136,18 @@ int main (int argc, char ** argv)
             int  asize;
             void *adata;
             adios_get_attr_byid (f, i, &atype, &asize, &adata);
-            printf("    %-9s  %s = %s\n", adios_type_to_string(atype), 
-                    f->attr_namelist[i], value_to_string(atype, adata, 0));
+            int type_size = adios_type_size (atype, adata);
+            int nelems = asize / type_size;
+            printf("    %-9s  %s = ", adios_type_to_string(atype), f->attr_namelist[i]);
+            char *p = (char*)adata;
+            if (nelems>1) printf("{");
+            for (j=0; j<nelems; j++) {
+                if (j>0) printf(", ");
+                printf ("%s", value_to_string(atype, p, 0));
+                p += type_size;
+            }
+            if (nelems>1) printf("}");
+            printf("\n");
             free(adata);
         } /* attributes */
 
@@ -181,11 +191,11 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             break;
 
         case adios_long:
-            sprintf (s, "%lld", ((int64_t *) data)[idx]);
+            sprintf (s, "%" PRId64, ((int64_t *) data)[idx]);
             break;
 
         case adios_unsigned_long:
-            sprintf (s, "%llu", ((uint64_t *) data)[idx]);
+            sprintf (s, "%" PRIu64, ((uint64_t *) data)[idx]);
             break;
 
         case adios_real:
@@ -204,6 +214,10 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             return (char*) ((char *)data+idx);
             break;
 
+        case adios_string_array:
+            return (char*) *((char **)data+idx);
+            break;
+
         case adios_complex:
             sprintf (s, "(%g, %g)", 
                     ((float *) data)[2*idx], ((float *) data)[2*idx+1]);
diff --git a/examples/C/read_all/read_all_v1.c b/examples/C/read_all/read_all_v1.c
index dc3fb66..0f0e33e 100644
--- a/examples/C/read_all/read_all_v1.c
+++ b/examples/C/read_all/read_all_v1.c
@@ -14,6 +14,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdint.h>
+#include <inttypes.h>
 #include "adios_read.h"
 
 const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx);
@@ -24,7 +26,8 @@ int main (int argc, char ** argv)
     MPI_Comm    comm_dummy = 0;  /* MPI_Comm is defined through adios_read.h */
     void      * data = NULL;
     uint64_t    start[] = {0,0,0,0,0,0,0,0,0,0};
-    uint64_t    count[10], bytes_read = 0;
+    uint64_t    count[10];
+    int64_t     bytes_read = 0;
 
     if (argc < 2) {
         printf("Usage: %s <BP-file>\n", argv[0]);
@@ -65,9 +68,9 @@ int main (int argc, char ** argv)
                     printf(" = %s\n", value_to_string(v->type, v->value, 0));
                 } else {
                     /* Arrays have to be read in from the file */
-                    printf("[%lld",v->dims[0]);
+                    printf("[%" PRIu64,v->dims[0]);
                     for (j = 1; j < v->ndim; j++)
-                        printf(", %lld",v->dims[j]);
+                        printf(", %" PRIu64,v->dims[j]);
                     //printf("] = \n");
                     if (v->type == adios_integer)
                         printf("] = min=%d  max=%d  timedim=%d\n", (*(int*)v->gmin), (*(int*)v->gmax), v->timedim);
@@ -180,11 +183,11 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             break;
 
         case adios_long:
-            sprintf (s, "%lld", ((int64_t *) data)[idx]);
+            sprintf (s, "%" PRId64, ((int64_t *) data)[idx]);
             break;
 
         case adios_unsigned_long:
-            sprintf (s, "%llu", ((uint64_t *) data)[idx]);
+            sprintf (s, "%" PRIu64, ((uint64_t *) data)[idx]);
             break;
 
         case adios_real:
@@ -203,6 +206,10 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             return (char*) ((char *)data+idx);
             break;
 
+        case adios_string_array:
+            return (char*) *((char **)data+idx);
+            break;
+
         case adios_complex:
             sprintf (s, "(%g, %g)", 
                     ((float *) data)[2*idx], ((float *) data)[2*idx+1]);
diff --git a/examples/C/scalars/Makefile.am b/examples/C/scalars/Makefile.am
index 137e8af..a57a1c4 100644
--- a/examples/C/scalars/Makefile.am
+++ b/examples/C/scalars/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = scalars_write scalars_read scalars_write_step
 
 scalars_write_SOURCES = scalars_write.c
 scalars_write_LDADD = $(top_builddir)/src/libadios.a 
-scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_write_LDADD += $(ADIOSLIB_LDADD)
 scalars_read_SOURCES = scalars_read.c
 scalars_read_LDADD = $(top_builddir)/src/libadiosread.a 
@@ -18,7 +18,7 @@ scalars_read_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 scalars_read_LDADD += $(ADIOSREADLIB_LDADD)
 scalars_write_step_SOURCES = scalars_write.c
 scalars_write_step_LDADD = $(top_builddir)/src/libadios.a
-scalars_write_step_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_step_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_write_step_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp
diff --git a/examples/C/scalars/Makefile.in b/examples/C/scalars/Makefile.in
index 4b3b7d6..638587c 100644
--- a/examples/C/scalars/Makefile.in
+++ b/examples/C/scalars/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = scalars_write$(EXEEXT) scalars_read$(EXEEXT) \
 	scalars_write_step$(EXEEXT)
 subdir = examples/C/scalars
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,39 +131,87 @@ scalars_read_OBJECTS = $(am_scalars_read_OBJECTS)
 am__DEPENDENCIES_1 =
 scalars_read_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-scalars_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+scalars_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(scalars_read_LDFLAGS) $(LDFLAGS) -o $@
 am_scalars_write_OBJECTS = scalars_write.$(OBJEXT)
 scalars_write_OBJECTS = $(am_scalars_write_OBJECTS)
 scalars_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-scalars_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+scalars_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(scalars_write_LDFLAGS) $(LDFLAGS) -o $@
 am_scalars_write_step_OBJECTS = scalars_write.$(OBJEXT)
 scalars_write_step_OBJECTS = $(am_scalars_write_step_OBJECTS)
 scalars_write_step_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-scalars_write_step_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(scalars_write_step_LDFLAGS) $(LDFLAGS) -o $@
+scalars_write_step_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(scalars_write_step_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(scalars_read_SOURCES) $(scalars_write_SOURCES) \
 	$(scalars_write_step_SOURCES)
 DIST_SOURCES = $(scalars_read_SOURCES) $(scalars_write_SOURCES) \
 	$(scalars_write_step_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -129,6 +219,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -153,6 +244,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -161,6 +253,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -193,6 +287,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -246,17 +341,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -287,6 +385,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -307,10 +406,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -319,9 +421,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -333,6 +432,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -367,14 +467,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -388,7 +491,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 scalars_write_SOURCES = scalars_write.c
 scalars_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_read_SOURCES = scalars_read.c
 scalars_read_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -396,7 +499,7 @@ scalars_read_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 scalars_write_step_SOURCES = scalars_write.c
 scalars_write_step_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-scalars_write_step_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_step_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = scalars.xml gwrite_scalars.ch gread_scalars.ch job.pbs
 all: all-am
@@ -442,15 +545,18 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-scalars_read$(EXEEXT): $(scalars_read_OBJECTS) $(scalars_read_DEPENDENCIES) 
+
+scalars_read$(EXEEXT): $(scalars_read_OBJECTS) $(scalars_read_DEPENDENCIES) $(EXTRA_scalars_read_DEPENDENCIES) 
 	@rm -f scalars_read$(EXEEXT)
-	$(scalars_read_LINK) $(scalars_read_OBJECTS) $(scalars_read_LDADD) $(LIBS)
-scalars_write$(EXEEXT): $(scalars_write_OBJECTS) $(scalars_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(scalars_read_LINK) $(scalars_read_OBJECTS) $(scalars_read_LDADD) $(LIBS)
+
+scalars_write$(EXEEXT): $(scalars_write_OBJECTS) $(scalars_write_DEPENDENCIES) $(EXTRA_scalars_write_DEPENDENCIES) 
 	@rm -f scalars_write$(EXEEXT)
-	$(scalars_write_LINK) $(scalars_write_OBJECTS) $(scalars_write_LDADD) $(LIBS)
-scalars_write_step$(EXEEXT): $(scalars_write_step_OBJECTS) $(scalars_write_step_DEPENDENCIES) 
+	$(AM_V_CCLD)$(scalars_write_LINK) $(scalars_write_OBJECTS) $(scalars_write_LDADD) $(LIBS)
+
+scalars_write_step$(EXEEXT): $(scalars_write_step_OBJECTS) $(scalars_write_step_DEPENDENCIES) $(EXTRA_scalars_write_step_DEPENDENCIES) 
 	@rm -f scalars_write_step$(EXEEXT)
-	$(scalars_write_step_LINK) $(scalars_write_step_OBJECTS) $(scalars_write_step_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(scalars_write_step_LINK) $(scalars_write_step_OBJECTS) $(scalars_write_step_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -459,13 +565,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -473,26 +579,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -504,15 +599,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -521,6 +612,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -569,10 +675,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -656,9 +767,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -668,7 +779,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/scalars/scalars.xml b/examples/C/scalars/scalars.xml
index 96440be..59e1726 100644
--- a/examples/C/scalars/scalars.xml
+++ b/examples/C/scalars/scalars.xml
@@ -23,7 +23,7 @@
 
     <method group="scalars" method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/examples/C/scalars/scalars_read.c b/examples/C/scalars/scalars_read.c
index 9d7a30d..1d361e4 100644
--- a/examples/C/scalars/scalars_read.c
+++ b/examples/C/scalars/scalars_read.c
@@ -86,12 +86,12 @@ int main (int argc, char ** argv)
         printf("byte        v1  = %d\n", v1);
         printf("short       v2  = %d\n", v2);
         printf("integer     v3  = %d\n", v3);
-        printf("long        v4  = %lld\n", v4);
+        printf("long        v4  = %" PRId64 "\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);
+        printf("uns.long    v8  = %" PRIu64 "\n", v8);
 
         printf("float       v9  = %g\n", v9);
         printf("double      v10 = %g\n", v10);
diff --git a/examples/C/schema/Makefile.am b/examples/C/schema/Makefile.am
index 50ece6d..fcc1b18 100644
--- a/examples/C/schema/Makefile.am
+++ b/examples/C/schema/Makefile.am
@@ -9,43 +9,43 @@ all-local:
 noinst_PROGRAMS = uniform2d rectilinear2d structured2d tri2d triangle2d uniform2d_noxml rectilinear2d_noxml structured2d_noxml tri2d_noxml
 
 uniform2d_LDADD = $(top_builddir)/src/libadios.a
-uniform2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+uniform2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 uniform2d_LDADD += $(ADIOSLIB_LDADD)
 
 rectilinear2d_SOURCES =  rectilinear2d.c
 rectilinear2d_LDADD = $(top_builddir)/src/libadios.a
-rectilinear2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+rectilinear2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 rectilinear2d_LDADD += $(ADIOSLIB_LDADD)
 
 structured2d_SOURCES =  structured2d.c
 structured2d_LDADD = $(top_builddir)/src/libadios.a
-structured2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+structured2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 structured2d_LDADD += $(ADIOSLIB_LDADD)
 
 tri2d_SOURCES = tri2d.c
 tri2d_LDADD = $(top_builddir)/src/libadios.a
-tri2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_LDADD += $(ADIOSLIB_LDADD)
 
 triangle2d_SOURCES = triangle2d.c
 triangle2d_LDADD = $(top_builddir)/src/libadios.a 
-triangle2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+triangle2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 triangle2d_LDADD += $(ADIOSLIB_LDADD)
 
 uniform2d_noxml_LDADD = $(top_builddir)/src/libadios.a
-uniform2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+uniform2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 uniform2d_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 rectilinear2d_noxml_LDADD = $(top_builddir)/src/libadios.a
-rectilinear2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+rectilinear2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 rectilinear2d_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 structured2d_noxml_LDADD = $(top_builddir)/src/libadios.a
-structured2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+structured2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 structured2d_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 tri2d_noxml_LDADD = $(top_builddir)/src/libadios.a
-tri2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp
diff --git a/examples/C/schema/Makefile.in b/examples/C/schema/Makefile.in
index bef4cf4..a555630 100644
--- a/examples/C/schema/Makefile.in
+++ b/examples/C/schema/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -39,7 +83,7 @@ noinst_PROGRAMS = uniform2d$(EXEEXT) rectilinear2d$(EXEEXT) \
 	uniform2d_noxml$(EXEEXT) rectilinear2d_noxml$(EXEEXT) \
 	structured2d_noxml$(EXEEXT) tri2d_noxml$(EXEEXT)
 subdir = examples/C/schema
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -62,14 +106,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -91,77 +133,105 @@ rectilinear2d_OBJECTS = $(am_rectilinear2d_OBJECTS)
 am__DEPENDENCIES_1 =
 rectilinear2d_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-rectilinear2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+rectilinear2d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(rectilinear2d_LDFLAGS) $(LDFLAGS) -o $@
 rectilinear2d_noxml_SOURCES = rectilinear2d_noxml.c
 rectilinear2d_noxml_OBJECTS = rectilinear2d_noxml.$(OBJEXT)
 rectilinear2d_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-rectilinear2d_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(rectilinear2d_noxml_LDFLAGS) $(LDFLAGS) -o $@
+rectilinear2d_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(rectilinear2d_noxml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_structured2d_OBJECTS = structured2d.$(OBJEXT)
 structured2d_OBJECTS = $(am_structured2d_OBJECTS)
 structured2d_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-structured2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+structured2d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(structured2d_LDFLAGS) $(LDFLAGS) -o $@
 structured2d_noxml_SOURCES = structured2d_noxml.c
 structured2d_noxml_OBJECTS = structured2d_noxml.$(OBJEXT)
 structured2d_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-structured2d_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(structured2d_noxml_LDFLAGS) $(LDFLAGS) -o $@
+structured2d_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(structured2d_noxml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_tri2d_OBJECTS = tri2d.$(OBJEXT)
 tri2d_OBJECTS = $(am_tri2d_OBJECTS)
 tri2d_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-tri2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(tri2d_LDFLAGS) \
-	$(LDFLAGS) -o $@
+tri2d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(tri2d_LDFLAGS) $(LDFLAGS) -o $@
 tri2d_noxml_SOURCES = tri2d_noxml.c
 tri2d_noxml_OBJECTS = tri2d_noxml.$(OBJEXT)
 tri2d_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-tri2d_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+tri2d_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(tri2d_noxml_LDFLAGS) $(LDFLAGS) -o $@
 am_triangle2d_OBJECTS = triangle2d.$(OBJEXT)
 triangle2d_OBJECTS = $(am_triangle2d_OBJECTS)
 triangle2d_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-triangle2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+triangle2d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(triangle2d_LDFLAGS) $(LDFLAGS) -o $@
 uniform2d_SOURCES = uniform2d.c
 uniform2d_OBJECTS = uniform2d.$(OBJEXT)
 uniform2d_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-uniform2d_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+uniform2d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(uniform2d_LDFLAGS) $(LDFLAGS) -o $@
 uniform2d_noxml_SOURCES = uniform2d_noxml.c
 uniform2d_noxml_OBJECTS = uniform2d_noxml.$(OBJEXT)
 uniform2d_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-uniform2d_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(uniform2d_noxml_LDFLAGS) $(LDFLAGS) -o $@
+uniform2d_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(uniform2d_noxml_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(rectilinear2d_SOURCES) rectilinear2d_noxml.c \
 	$(structured2d_SOURCES) structured2d_noxml.c $(tri2d_SOURCES) \
 	tri2d_noxml.c $(triangle2d_SOURCES) uniform2d.c \
@@ -170,6 +240,28 @@ DIST_SOURCES = $(rectilinear2d_SOURCES) rectilinear2d_noxml.c \
 	$(structured2d_SOURCES) structured2d_noxml.c $(tri2d_SOURCES) \
 	tri2d_noxml.c $(triangle2d_SOURCES) uniform2d.c \
 	uniform2d_noxml.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -177,6 +269,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -201,6 +294,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -209,6 +303,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -241,6 +337,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -294,17 +391,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -335,6 +435,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -355,10 +456,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -367,9 +471,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -381,6 +482,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -415,14 +517,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -435,30 +540,30 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public
 AUTOMAKE_OPTIONS = no-dependencies
 uniform2d_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-uniform2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+uniform2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 rectilinear2d_SOURCES = rectilinear2d.c
 rectilinear2d_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-rectilinear2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+rectilinear2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 structured2d_SOURCES = structured2d.c
 structured2d_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-structured2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+structured2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_SOURCES = tri2d.c
 tri2d_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-tri2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 triangle2d_SOURCES = triangle2d.c
 triangle2d_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-triangle2d_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+triangle2d_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 uniform2d_noxml_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-uniform2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+uniform2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 rectilinear2d_noxml_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-rectilinear2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+rectilinear2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 structured2d_noxml_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-structured2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+structured2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-tri2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = uniform2d.xml uniform2d.readme uniform2d.png \
 	rectilinear2d.xml rectilinear2d.readme rectilinear2d.png \
@@ -509,33 +614,42 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-rectilinear2d$(EXEEXT): $(rectilinear2d_OBJECTS) $(rectilinear2d_DEPENDENCIES) 
+
+rectilinear2d$(EXEEXT): $(rectilinear2d_OBJECTS) $(rectilinear2d_DEPENDENCIES) $(EXTRA_rectilinear2d_DEPENDENCIES) 
 	@rm -f rectilinear2d$(EXEEXT)
-	$(rectilinear2d_LINK) $(rectilinear2d_OBJECTS) $(rectilinear2d_LDADD) $(LIBS)
-rectilinear2d_noxml$(EXEEXT): $(rectilinear2d_noxml_OBJECTS) $(rectilinear2d_noxml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(rectilinear2d_LINK) $(rectilinear2d_OBJECTS) $(rectilinear2d_LDADD) $(LIBS)
+
+rectilinear2d_noxml$(EXEEXT): $(rectilinear2d_noxml_OBJECTS) $(rectilinear2d_noxml_DEPENDENCIES) $(EXTRA_rectilinear2d_noxml_DEPENDENCIES) 
 	@rm -f rectilinear2d_noxml$(EXEEXT)
-	$(rectilinear2d_noxml_LINK) $(rectilinear2d_noxml_OBJECTS) $(rectilinear2d_noxml_LDADD) $(LIBS)
-structured2d$(EXEEXT): $(structured2d_OBJECTS) $(structured2d_DEPENDENCIES) 
+	$(AM_V_CCLD)$(rectilinear2d_noxml_LINK) $(rectilinear2d_noxml_OBJECTS) $(rectilinear2d_noxml_LDADD) $(LIBS)
+
+structured2d$(EXEEXT): $(structured2d_OBJECTS) $(structured2d_DEPENDENCIES) $(EXTRA_structured2d_DEPENDENCIES) 
 	@rm -f structured2d$(EXEEXT)
-	$(structured2d_LINK) $(structured2d_OBJECTS) $(structured2d_LDADD) $(LIBS)
-structured2d_noxml$(EXEEXT): $(structured2d_noxml_OBJECTS) $(structured2d_noxml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(structured2d_LINK) $(structured2d_OBJECTS) $(structured2d_LDADD) $(LIBS)
+
+structured2d_noxml$(EXEEXT): $(structured2d_noxml_OBJECTS) $(structured2d_noxml_DEPENDENCIES) $(EXTRA_structured2d_noxml_DEPENDENCIES) 
 	@rm -f structured2d_noxml$(EXEEXT)
-	$(structured2d_noxml_LINK) $(structured2d_noxml_OBJECTS) $(structured2d_noxml_LDADD) $(LIBS)
-tri2d$(EXEEXT): $(tri2d_OBJECTS) $(tri2d_DEPENDENCIES) 
+	$(AM_V_CCLD)$(structured2d_noxml_LINK) $(structured2d_noxml_OBJECTS) $(structured2d_noxml_LDADD) $(LIBS)
+
+tri2d$(EXEEXT): $(tri2d_OBJECTS) $(tri2d_DEPENDENCIES) $(EXTRA_tri2d_DEPENDENCIES) 
 	@rm -f tri2d$(EXEEXT)
-	$(tri2d_LINK) $(tri2d_OBJECTS) $(tri2d_LDADD) $(LIBS)
-tri2d_noxml$(EXEEXT): $(tri2d_noxml_OBJECTS) $(tri2d_noxml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(tri2d_LINK) $(tri2d_OBJECTS) $(tri2d_LDADD) $(LIBS)
+
+tri2d_noxml$(EXEEXT): $(tri2d_noxml_OBJECTS) $(tri2d_noxml_DEPENDENCIES) $(EXTRA_tri2d_noxml_DEPENDENCIES) 
 	@rm -f tri2d_noxml$(EXEEXT)
-	$(tri2d_noxml_LINK) $(tri2d_noxml_OBJECTS) $(tri2d_noxml_LDADD) $(LIBS)
-triangle2d$(EXEEXT): $(triangle2d_OBJECTS) $(triangle2d_DEPENDENCIES) 
+	$(AM_V_CCLD)$(tri2d_noxml_LINK) $(tri2d_noxml_OBJECTS) $(tri2d_noxml_LDADD) $(LIBS)
+
+triangle2d$(EXEEXT): $(triangle2d_OBJECTS) $(triangle2d_DEPENDENCIES) $(EXTRA_triangle2d_DEPENDENCIES) 
 	@rm -f triangle2d$(EXEEXT)
-	$(triangle2d_LINK) $(triangle2d_OBJECTS) $(triangle2d_LDADD) $(LIBS)
-uniform2d$(EXEEXT): $(uniform2d_OBJECTS) $(uniform2d_DEPENDENCIES) 
+	$(AM_V_CCLD)$(triangle2d_LINK) $(triangle2d_OBJECTS) $(triangle2d_LDADD) $(LIBS)
+
+uniform2d$(EXEEXT): $(uniform2d_OBJECTS) $(uniform2d_DEPENDENCIES) $(EXTRA_uniform2d_DEPENDENCIES) 
 	@rm -f uniform2d$(EXEEXT)
-	$(uniform2d_LINK) $(uniform2d_OBJECTS) $(uniform2d_LDADD) $(LIBS)
-uniform2d_noxml$(EXEEXT): $(uniform2d_noxml_OBJECTS) $(uniform2d_noxml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(uniform2d_LINK) $(uniform2d_OBJECTS) $(uniform2d_LDADD) $(LIBS)
+
+uniform2d_noxml$(EXEEXT): $(uniform2d_noxml_OBJECTS) $(uniform2d_noxml_DEPENDENCIES) $(EXTRA_uniform2d_noxml_DEPENDENCIES) 
 	@rm -f uniform2d_noxml$(EXEEXT)
-	$(uniform2d_noxml_LINK) $(uniform2d_noxml_OBJECTS) $(uniform2d_noxml_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(uniform2d_noxml_LINK) $(uniform2d_noxml_OBJECTS) $(uniform2d_noxml_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -544,13 +658,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -558,26 +672,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -589,15 +692,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -606,6 +705,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -654,10 +768,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -741,9 +860,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -753,7 +872,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/schema/rectilinear2d.xml b/examples/C/schema/rectilinear2d.xml
index b7eb9e1..8b401da 100644
--- a/examples/C/schema/rectilinear2d.xml
+++ b/examples/C/schema/rectilinear2d.xml
@@ -46,6 +46,6 @@
   <transport group="writer" method="VAR_MERGE">chunk_size=300000;io_method=MPI</transport>
   -->
 
-  <buffer size-MB="4" allocate-time="now"/>
+  <buffer max-size-MB="4"/>
 
 </adios-config>
diff --git a/examples/C/schema/rectilinear2d_noxml.c b/examples/C/schema/rectilinear2d_noxml.c
index 8f7d732..057a3ed 100644
--- a/examples/C/schema/rectilinear2d_noxml.c
+++ b/examples/C/schema/rectilinear2d_noxml.c
@@ -119,7 +119,7 @@ int main (int argc, char ** argv)
     char * dimemsions = "nx_global,ny_global";
  
 	adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 50);
+    adios_set_max_buffer_size (50);
 
     adios_declare_group (&m_adios_group, "rectilinear2d", "", adios_flag_yes);
     adios_select_method (m_adios_group, "MPI", "", "");
diff --git a/examples/C/schema/structured2d.xml b/examples/C/schema/structured2d.xml
index da43ec9..2e6a357 100644
--- a/examples/C/schema/structured2d.xml
+++ b/examples/C/schema/structured2d.xml
@@ -46,6 +46,6 @@
   <transport group="writer" method="VAR_MERGE">chunk_size=300000;io_method=MPI</transport>
   -->
 
-  <buffer size-MB="4" allocate-time="now"/>
+  <buffer max-size-MB="4"/>
 
 </adios-config>
diff --git a/examples/C/schema/structured2d_noxml.c b/examples/C/schema/structured2d_noxml.c
index cec5148..0eb03d1 100644
--- a/examples/C/schema/structured2d_noxml.c
+++ b/examples/C/schema/structured2d_noxml.c
@@ -120,7 +120,7 @@ int main (int argc, char ** argv)
     char * dimemsions = "nx_global,ny_global";
  
 	adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 50);
+    adios_set_max_buffer_size (50);
 
     adios_declare_group (&m_adios_group, "structured2d", "", adios_flag_yes);
     adios_select_method (m_adios_group, "MPI", "", "");
diff --git a/examples/C/schema/tri2d.xml b/examples/C/schema/tri2d.xml
index 658dd1e..18447d0 100644
--- a/examples/C/schema/tri2d.xml
+++ b/examples/C/schema/tri2d.xml
@@ -71,6 +71,6 @@
   <transport group="writer" method="VAR_MERGE">chunk_size=300000;io_method=MPI</transport>
   -->
 
-  <buffer size-MB="4" allocate-time="now"/>
+  <buffer max-size-MB="4"/>
 
 </adios-config>
diff --git a/examples/C/schema/tri2d_noxml.c b/examples/C/schema/tri2d_noxml.c
index f9bd773..2bfa37a 100644
--- a/examples/C/schema/tri2d_noxml.c
+++ b/examples/C/schema/tri2d_noxml.c
@@ -239,10 +239,10 @@ int main (int argc, char ** argv)
         C[i] = 1.0*rank;    
  
     char * schema_version = "1.1";
-    char * dimemsions = "nx_global,ny_global";
+    //char * dimemsions = "nx_global,ny_global";
  
 	adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 50);
+    adios_set_max_buffer_size (50);
 
     adios_declare_group (&m_adios_group, "tri2d", "", adios_flag_yes);
     adios_select_method (m_adios_group, "MPI", "", "");
diff --git a/examples/C/schema/triangle2d.xml b/examples/C/schema/triangle2d.xml
index e7d5db7..1dbbbc6 100644
--- a/examples/C/schema/triangle2d.xml
+++ b/examples/C/schema/triangle2d.xml
@@ -53,6 +53,6 @@
   <!--transport group="writer2D" method="DIMES">verbose=3</transport-->
   <!--transport group="writer2D" method="FLEXPATH">QUEUE_SIZE=10;verbose=3</transport-->
 
-  <buffer size-MB="40" allocate-time="now"/>
+  <buffer max-size-MB="40"/>
 
 </adios-config>
diff --git a/examples/C/schema/uniform2d.xml b/examples/C/schema/uniform2d.xml
index 90d406c..761cabd 100644
--- a/examples/C/schema/uniform2d.xml
+++ b/examples/C/schema/uniform2d.xml
@@ -44,6 +44,6 @@
   <transport group="writer" method="VAR_MERGE">chunk_size=300000;io_method=MPI</transport>
   -->
 
-  <buffer size-MB="4" allocate-time="now"/>
+  <buffer max-size-MB="4"/>
 
 </adios-config>
diff --git a/examples/C/schema/uniform2d_noxml.c b/examples/C/schema/uniform2d_noxml.c
index cade6ce..b8d408d 100644
--- a/examples/C/schema/uniform2d_noxml.c
+++ b/examples/C/schema/uniform2d_noxml.c
@@ -113,7 +113,7 @@ int main (int argc, char ** argv)
             data[i*ndy + j] = 1.0*rank;
     
 	adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 50);
+    adios_set_max_buffer_size (50);
 
     adios_declare_group (&m_adios_group, "uniform2d", "", adios_flag_yes);
     adios_select_method (m_adios_group, "MPI", "", "");
diff --git a/examples/C/stat/Makefile.am b/examples/C/stat/Makefile.am
index 39bc00f..a04a93e 100644
--- a/examples/C/stat/Makefile.am
+++ b/examples/C/stat/Makefile.am
@@ -11,7 +11,7 @@ noinst_PROGRAMS = stat_write stat_read
 
 stat_write_SOURCES = stat_write.c
 stat_write_LDADD = $(top_builddir)/src/libadios.a 
-stat_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+stat_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 stat_write_LDADD += $(ADIOSLIB_LDADD)
 stat_read_SOURCES = stat_read.c
 stat_read_LDADD = $(top_builddir)/src/libadiosread.a 
diff --git a/examples/C/stat/Makefile.in b/examples/C/stat/Makefile.in
index 32485de..8587a04 100644
--- a/examples/C/stat/Makefile.in
+++ b/examples/C/stat/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = stat_write$(EXEEXT) stat_read$(EXEEXT)
 subdir = examples/C/stat
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ stat_read_OBJECTS = $(am_stat_read_OBJECTS)
 am__DEPENDENCIES_1 =
 stat_read_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-stat_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+stat_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(stat_read_LDFLAGS) $(LDFLAGS) -o $@
 am_stat_write_OBJECTS = stat_write.$(OBJEXT)
 stat_write_OBJECTS = $(am_stat_write_OBJECTS)
 stat_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-stat_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+stat_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(stat_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(stat_read_SOURCES) $(stat_write_SOURCES)
 DIST_SOURCES = $(stat_read_SOURCES) $(stat_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,7 +480,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 stat_write_SOURCES = stat_write.c
 stat_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-stat_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+stat_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 stat_read_SOURCES = stat_read.c
 stat_read_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -428,12 +530,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-stat_read$(EXEEXT): $(stat_read_OBJECTS) $(stat_read_DEPENDENCIES) 
+
+stat_read$(EXEEXT): $(stat_read_OBJECTS) $(stat_read_DEPENDENCIES) $(EXTRA_stat_read_DEPENDENCIES) 
 	@rm -f stat_read$(EXEEXT)
-	$(stat_read_LINK) $(stat_read_OBJECTS) $(stat_read_LDADD) $(LIBS)
-stat_write$(EXEEXT): $(stat_write_OBJECTS) $(stat_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(stat_read_LINK) $(stat_read_OBJECTS) $(stat_read_LDADD) $(LIBS)
+
+stat_write$(EXEEXT): $(stat_write_OBJECTS) $(stat_write_DEPENDENCIES) $(EXTRA_stat_write_DEPENDENCIES) 
 	@rm -f stat_write$(EXEEXT)
-	$(stat_write_LINK) $(stat_write_OBJECTS) $(stat_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(stat_write_LINK) $(stat_write_OBJECTS) $(stat_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -442,13 +546,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -456,26 +560,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -487,15 +580,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -504,6 +593,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -552,10 +656,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -639,9 +748,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -651,7 +760,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/stat/stat.xml b/examples/C/stat/stat.xml
index 7bb524d..db771e6 100644
--- a/examples/C/stat/stat.xml
+++ b/examples/C/stat/stat.xml
@@ -11,7 +11,7 @@
   </adios-group>
 
   <method group="temperature" method="MPI"/>
-  <buffer size-MB="5" allocate-time="now"/>
+  <buffer max-size-MB="5"/>
   <!--temporarily disabled the following because the support for histogram 
        has yet to be implemented for the new read API. -->
   <!--analysis adios-group="temperature" var="temperature" break-points="0, 100, 1000, 10000" /-->
diff --git a/examples/C/transforms/Makefile.am b/examples/C/transforms/Makefile.am
index f9a3690..b4ae0a5 100644
--- a/examples/C/transforms/Makefile.am
+++ b/examples/C/transforms/Makefile.am
@@ -10,23 +10,23 @@ noinst_PROGRAMS = adios_global adios_read_subv adios_read_points adios_read_wb_s
 
 adios_global_SOURCES = adios_global.c
 adios_global_LDADD = $(top_builddir)/src/libadios.a 
-adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_LDADD += $(ADIOSLIB_LDADD)
 
 adios_read_subv_SOURCES = adios_read_subv.c
 adios_read_subv_LDADD = $(top_builddir)/src/libadiosread.a 
-adios_read_subv_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_read_subv_LDADD += $(ADIOSLIB_LDADD)
+adios_read_subv_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
+adios_read_subv_LDADD += $(ADIOSREADLIB_LDADD)
 
 adios_read_points_SOURCES = adios_read_points.c
 adios_read_points_LDADD = $(top_builddir)/src/libadiosread.a 
-adios_read_points_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_read_points_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS) 
 adios_read_points_LDADD += $(ADIOSLIB_LDADD)
 
 adios_read_wb_subpg_SOURCES = adios_read_wb_subpg.c
 adios_read_wb_subpg_LDADD = $(top_builddir)/src/libadiosread.a 
-adios_read_wb_subpg_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_read_wb_subpg_LDADD += $(ADIOSLIB_LDADD)
+adios_read_wb_subpg_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
+adios_read_wb_subpg_LDADD += $(ADIOSREADLIB_LDADD)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/examples/C/transforms/Makefile.in b/examples/C/transforms/Makefile.in
index d631626..646f0b9 100644
--- a/examples/C/transforms/Makefile.in
+++ b/examples/C/transforms/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = adios_global$(EXEEXT) adios_read_subv$(EXEEXT) \
 	adios_read_points$(EXEEXT) adios_read_wb_subpg$(EXEEXT)
 subdir = examples/C/transforms
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,46 +131,96 @@ adios_global_OBJECTS = $(am_adios_global_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_global_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_global_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_global_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(adios_global_LDFLAGS) $(LDFLAGS) -o $@
 am_adios_read_points_OBJECTS = adios_read_points.$(OBJEXT)
 adios_read_points_OBJECTS = $(am_adios_read_points_OBJECTS)
 adios_read_points_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_read_points_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_points_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_points_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_points_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_read_subv_OBJECTS = adios_read_subv.$(OBJEXT)
 adios_read_subv_OBJECTS = $(am_adios_read_subv_OBJECTS)
 adios_read_subv_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_read_subv_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_subv_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_subv_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_subv_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_read_wb_subpg_OBJECTS = adios_read_wb_subpg.$(OBJEXT)
 adios_read_wb_subpg_OBJECTS = $(am_adios_read_wb_subpg_OBJECTS)
 adios_read_wb_subpg_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_read_wb_subpg_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_wb_subpg_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_wb_subpg_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_wb_subpg_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_global_SOURCES) $(adios_read_points_SOURCES) \
 	$(adios_read_subv_SOURCES) $(adios_read_wb_subpg_SOURCES)
 DIST_SOURCES = $(adios_global_SOURCES) $(adios_read_points_SOURCES) \
 	$(adios_read_subv_SOURCES) $(adios_read_wb_subpg_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -136,6 +228,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -160,6 +253,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -168,6 +262,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -200,6 +296,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -253,17 +350,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -294,6 +394,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -314,10 +415,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -326,9 +430,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -340,6 +441,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -374,14 +476,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -396,19 +501,19 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 adios_global_SOURCES = adios_global.c
 adios_global_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_read_subv_SOURCES = adios_read_subv.c
 adios_read_subv_LDADD = $(top_builddir)/src/libadiosread.a \
-	$(ADIOSLIB_LDADD)
-adios_read_subv_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+	$(ADIOSREADLIB_LDADD)
+adios_read_subv_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 adios_read_points_SOURCES = adios_read_points.c
 adios_read_points_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSLIB_LDADD)
-adios_read_points_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_read_points_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS) 
 adios_read_wb_subpg_SOURCES = adios_read_wb_subpg.c
 adios_read_wb_subpg_LDADD = $(top_builddir)/src/libadiosread.a \
-	$(ADIOSLIB_LDADD)
-adios_read_wb_subpg_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+	$(ADIOSREADLIB_LDADD)
+adios_read_wb_subpg_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = adios_global.xml gread_temperature.ch gwrite_temperature.ch
 all: all-am
@@ -454,18 +559,22 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_global$(EXEEXT): $(adios_global_OBJECTS) $(adios_global_DEPENDENCIES) 
+
+adios_global$(EXEEXT): $(adios_global_OBJECTS) $(adios_global_DEPENDENCIES) $(EXTRA_adios_global_DEPENDENCIES) 
 	@rm -f adios_global$(EXEEXT)
-	$(adios_global_LINK) $(adios_global_OBJECTS) $(adios_global_LDADD) $(LIBS)
-adios_read_points$(EXEEXT): $(adios_read_points_OBJECTS) $(adios_read_points_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_global_LINK) $(adios_global_OBJECTS) $(adios_global_LDADD) $(LIBS)
+
+adios_read_points$(EXEEXT): $(adios_read_points_OBJECTS) $(adios_read_points_DEPENDENCIES) $(EXTRA_adios_read_points_DEPENDENCIES) 
 	@rm -f adios_read_points$(EXEEXT)
-	$(adios_read_points_LINK) $(adios_read_points_OBJECTS) $(adios_read_points_LDADD) $(LIBS)
-adios_read_subv$(EXEEXT): $(adios_read_subv_OBJECTS) $(adios_read_subv_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_points_LINK) $(adios_read_points_OBJECTS) $(adios_read_points_LDADD) $(LIBS)
+
+adios_read_subv$(EXEEXT): $(adios_read_subv_OBJECTS) $(adios_read_subv_DEPENDENCIES) $(EXTRA_adios_read_subv_DEPENDENCIES) 
 	@rm -f adios_read_subv$(EXEEXT)
-	$(adios_read_subv_LINK) $(adios_read_subv_OBJECTS) $(adios_read_subv_LDADD) $(LIBS)
-adios_read_wb_subpg$(EXEEXT): $(adios_read_wb_subpg_OBJECTS) $(adios_read_wb_subpg_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_subv_LINK) $(adios_read_subv_OBJECTS) $(adios_read_subv_LDADD) $(LIBS)
+
+adios_read_wb_subpg$(EXEEXT): $(adios_read_wb_subpg_OBJECTS) $(adios_read_wb_subpg_DEPENDENCIES) $(EXTRA_adios_read_wb_subpg_DEPENDENCIES) 
 	@rm -f adios_read_wb_subpg$(EXEEXT)
-	$(adios_read_wb_subpg_LINK) $(adios_read_wb_subpg_OBJECTS) $(adios_read_wb_subpg_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(adios_read_wb_subpg_LINK) $(adios_read_wb_subpg_OBJECTS) $(adios_read_wb_subpg_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -474,13 +583,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -488,26 +597,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -519,15 +617,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -536,6 +630,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -584,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -671,9 +785,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -683,7 +797,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/C/transforms/adios_global.xml b/examples/C/transforms/adios_global.xml
index a4d381b..c9e64f8 100644
--- a/examples/C/transforms/adios_global.xml
+++ b/examples/C/transforms/adios_global.xml
@@ -14,7 +14,7 @@
 
   <method group="temperature" method="MPI">stripe_count=1;stripe_size=10485760;num_aggregators=2;merging_pgs=0;num_ost=2</method>
 
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
diff --git a/examples/C/transforms/adios_read_points.c b/examples/C/transforms/adios_read_points.c
index 84dfcbc..58dbe0a 100644
--- a/examples/C/transforms/adios_read_points.c
+++ b/examples/C/transforms/adios_read_points.c
@@ -66,7 +66,7 @@ int main (int argc, char ** argv)
 
         printf("Points read (columns 2 and 6 in all rows):\n");
         for (i = 0; i < npoints; i++) {
-            printf("(%llu,%llu) = %.0lf\n", points[i*ndim+0], points[i*ndim+1], data[i]);
+            printf("(%" PRIu64 ",%" PRIu64 ") = %.0lf\n", points[i*ndim+0], points[i*ndim+1], data[i]);
         }
 
         adios_selection_delete (sel1);
diff --git a/examples/C/transforms/adios_read_subv.c b/examples/C/transforms/adios_read_subv.c
index cdd2b81..c0ee8cc 100644
--- a/examples/C/transforms/adios_read_subv.c
+++ b/examples/C/transforms/adios_read_subv.c
@@ -61,7 +61,7 @@ int main (int argc, char ** argv)
         adios_schedule_read (f, sel1, "temperature", 0, 1, data);
         adios_perform_reads (f, 1);
 
-        printf("Subvolume at (%llu,%llu) of size (%llu,%llu):\n", start[0], start[1], count[0], count[1]);
+        printf("Subvolume at (%" PRIu64 ",%" PRIu64 ") of size (%" PRIu64 ",%" PRIu64 "):\n", start[0], start[1], count[0], count[1]);
         for (i = 0; i < count[0]; i++) {
             printf("[ ");
             for (j = 0; j < count[1]; j++) {
diff --git a/examples/C/transforms/adios_read_wb_subpg.c b/examples/C/transforms/adios_read_wb_subpg.c
index bba924a..f2243ee 100644
--- a/examples/C/transforms/adios_read_wb_subpg.c
+++ b/examples/C/transforms/adios_read_wb_subpg.c
@@ -64,7 +64,7 @@ int main (int argc, char ** argv)
         adios_schedule_read (f, wbsel, "temperature", 0, 1, data);
         adios_perform_reads (f, 1);
 
-        printf("Sub-PG writeblock for block %d reading elements in linear range [%llu, %llu):\n",
+        printf("Sub-PG writeblock for block %d reading elements in linear range [%" PRIu64 ", %" PRIu64 "):\n",
                wbsel->u.block.index, wbsel->u.block.element_offset, wbsel->u.block.element_offset + wbsel->u.block.nelements);
         printf("[ ");
         for (i = 0; i < wbsel->u.block.nelements; i++)
diff --git a/examples/Fortran/Makefile.in b/examples/Fortran/Makefile.in
index 9e6465f..f04f53e 100644
--- a/examples/Fortran/Makefile.in
+++ b/examples/Fortran/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples/Fortran
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -423,22 +516,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -453,57 +549,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -519,12 +570,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -536,15 +582,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -553,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -589,13 +646,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -630,10 +684,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -711,22 +770,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 #time-index
 
diff --git a/examples/Fortran/arrays/Makefile.am b/examples/Fortran/arrays/Makefile.am
index 355e3b4..7eca4cc 100644
--- a/examples/Fortran/arrays/Makefile.am
+++ b/examples/Fortran/arrays/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = arrays_write arrays_read
 
 arrays_write_SOURCES = arrays_write.F90
 arrays_write_LDADD = $(top_builddir)/src/libadiosf.a 
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_write_LDADD += $(ADIOSLIB_LDADD)
 
 arrays_read_SOURCES = arrays_read.F90
diff --git a/examples/Fortran/arrays/Makefile.in b/examples/Fortran/arrays/Makefile.in
index 1995213..65c8cb3 100644
--- a/examples/Fortran/arrays/Makefile.in
+++ b/examples/Fortran/arrays/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = arrays_write$(EXEEXT) arrays_read$(EXEEXT)
 subdir = examples/Fortran/arrays
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,27 +130,74 @@ arrays_read_OBJECTS = $(am_arrays_read_OBJECTS)
 am__DEPENDENCIES_1 =
 arrays_read_DEPENDENCIES = $(top_builddir)/src/libadiosreadf.a \
 	$(am__DEPENDENCIES_1)
-arrays_read_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+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 = 
+arrays_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(arrays_read_LDFLAGS) $(LDFLAGS) -o $@
 am_arrays_write_OBJECTS = arrays_write.$(OBJEXT)
 arrays_write_OBJECTS = $(am_arrays_write_OBJECTS)
 arrays_write_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-arrays_write_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+arrays_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(arrays_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
 DIST_SOURCES = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -116,6 +205,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -140,6 +230,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -148,6 +239,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -180,6 +273,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -233,17 +327,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -274,6 +371,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -294,10 +392,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -306,9 +407,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -320,6 +418,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -354,14 +453,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -375,7 +477,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 arrays_write_SOURCES = arrays_write.F90
 arrays_write_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.F90
 arrays_read_LDADD = $(top_builddir)/src/libadiosreadf.a \
 	$(ADIOSREADLIB_LDADD)
@@ -429,12 +531,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) 
+
+arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) $(EXTRA_arrays_read_DEPENDENCIES) 
 	@rm -f arrays_read$(EXEEXT)
-	$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
-arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) 
+	$(AM_V_FCLD)$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
+
+arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) $(EXTRA_arrays_write_DEPENDENCIES) 
 	@rm -f arrays_write$(EXEEXT)
-	$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -443,13 +547,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -457,26 +561,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -488,15 +581,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -505,6 +594,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -553,10 +657,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -640,9 +749,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -652,7 +761,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/Fortran/arrays/arrays.xml b/examples/Fortran/arrays/arrays.xml
index 70115cf..db915c9 100644
--- a/examples/Fortran/arrays/arrays.xml
+++ b/examples/Fortran/arrays/arrays.xml
@@ -10,7 +10,7 @@
 
     <method group="arrays"  method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/examples/Fortran/global-array-time/Makefile.am b/examples/Fortran/global-array-time/Makefile.am
index 59247a5..417e91e 100644
--- a/examples/Fortran/global-array-time/Makefile.am
+++ b/examples/Fortran/global-array-time/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = adios_globaltime
 
 adios_globaltime_SOURCES = adios_globaltime.F90
 adios_globaltime_LDADD = $(top_builddir)/src/libadiosf.a 
-adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_globaltime_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp
diff --git a/examples/Fortran/global-array-time/Makefile.in b/examples/Fortran/global-array-time/Makefile.in
index 066eee9..9ee2fa0 100644
--- a/examples/Fortran/global-array-time/Makefile.in
+++ b/examples/Fortran/global-array-time/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = adios_globaltime$(EXEEXT)
 subdir = examples/Fortran/global-array-time
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,20 +130,68 @@ adios_globaltime_OBJECTS = $(am_adios_globaltime_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_globaltime_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-adios_globaltime_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(adios_globaltime_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+adios_globaltime_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(adios_globaltime_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(adios_globaltime_SOURCES)
 DIST_SOURCES = $(adios_globaltime_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -109,6 +199,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -133,6 +224,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -141,6 +233,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -173,6 +267,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -226,17 +321,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -267,6 +365,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -287,10 +386,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -299,9 +401,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -313,6 +412,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -347,14 +447,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -369,7 +472,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 adios_globaltime_SOURCES = adios_globaltime.F90
 adios_globaltime_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_globaltime_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 FCLINK = \
 	$(LIBTOOL) --mode=link --tag F77 $(FC) \
@@ -419,9 +522,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_globaltime$(EXEEXT): $(adios_globaltime_OBJECTS) $(adios_globaltime_DEPENDENCIES) 
+
+adios_globaltime$(EXEEXT): $(adios_globaltime_OBJECTS) $(adios_globaltime_DEPENDENCIES) $(EXTRA_adios_globaltime_DEPENDENCIES) 
 	@rm -f adios_globaltime$(EXEEXT)
-	$(adios_globaltime_LINK) $(adios_globaltime_OBJECTS) $(adios_globaltime_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(adios_globaltime_LINK) $(adios_globaltime_OBJECTS) $(adios_globaltime_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -430,13 +534,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -444,26 +548,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -475,15 +568,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -492,6 +581,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -540,10 +644,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -627,9 +736,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -639,7 +748,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/Fortran/global-array-time/adios_globaltime.xml b/examples/Fortran/global-array-time/adios_globaltime.xml
index c7cc978..a999a60 100644
--- a/examples/Fortran/global-array-time/adios_globaltime.xml
+++ b/examples/Fortran/global-array-time/adios_globaltime.xml
@@ -25,7 +25,7 @@
 
   <method group="restart" method="MPI"/>
 
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
diff --git a/examples/Fortran/global-array/Makefile.am b/examples/Fortran/global-array/Makefile.am
index 3abd135..852609d 100644
--- a/examples/Fortran/global-array/Makefile.am
+++ b/examples/Fortran/global-array/Makefile.am
@@ -10,17 +10,17 @@ noinst_PROGRAMS = adios_global adios_global_no_xml no_xml_write_byid
 
 adios_global_SOURCES = adios_global.F90
 adios_global_LDADD = $(top_builddir)/src/libadiosf.a 
-adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_LDADD += $(ADIOSLIB_LDADD)
 
 adios_global_no_xml_SOURCES = adios_global_no_xml.F90
 adios_global_no_xml_LDADD = $(top_builddir)/src/libadiosf.a 
-adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_no_xml_LDADD += $(ADIOSLIB_LDADD)
 
 no_xml_write_byid_SOURCES = no_xml_write_byid.F90
 no_xml_write_byid_LDADD = $(top_builddir)/src/libadiosf.a
-no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 no_xml_write_byid_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp
diff --git a/examples/Fortran/global-array/Makefile.in b/examples/Fortran/global-array/Makefile.in
index f233372..979a347 100644
--- a/examples/Fortran/global-array/Makefile.in
+++ b/examples/Fortran/global-array/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = adios_global$(EXEEXT) adios_global_no_xml$(EXEEXT) \
 	no_xml_write_byid$(EXEEXT)
 subdir = examples/Fortran/global-array
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,36 +131,85 @@ adios_global_OBJECTS = $(am_adios_global_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_global_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-adios_global_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_global_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(adios_global_LDFLAGS) $(LDFLAGS) -o $@
 am_adios_global_no_xml_OBJECTS = adios_global_no_xml.$(OBJEXT)
 adios_global_no_xml_OBJECTS = $(am_adios_global_no_xml_OBJECTS)
 adios_global_no_xml_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-adios_global_no_xml_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(adios_global_no_xml_LDFLAGS) $(LDFLAGS) -o $@
+adios_global_no_xml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(adios_global_no_xml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_no_xml_write_byid_OBJECTS = no_xml_write_byid.$(OBJEXT)
 no_xml_write_byid_OBJECTS = $(am_no_xml_write_byid_OBJECTS)
 no_xml_write_byid_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-no_xml_write_byid_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(no_xml_write_byid_LDFLAGS) $(LDFLAGS) -o $@
+no_xml_write_byid_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(no_xml_write_byid_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(adios_global_SOURCES) $(adios_global_no_xml_SOURCES) \
 	$(no_xml_write_byid_SOURCES)
 DIST_SOURCES = $(adios_global_SOURCES) $(adios_global_no_xml_SOURCES) \
 	$(no_xml_write_byid_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -126,6 +217,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -150,6 +242,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -158,6 +251,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -190,6 +285,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -243,17 +339,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -284,6 +383,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -304,10 +404,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -316,9 +419,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -330,6 +430,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -364,14 +465,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -385,15 +489,15 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 adios_global_SOURCES = adios_global.F90
 adios_global_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_global_no_xml_SOURCES = adios_global_no_xml.F90
 adios_global_no_xml_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_global_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 no_xml_write_byid_SOURCES = no_xml_write_byid.F90
 no_xml_write_byid_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+no_xml_write_byid_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 FCLINK = \
 	$(LIBTOOL) --mode=link --tag F77 $(FC) \
@@ -443,15 +547,18 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_global$(EXEEXT): $(adios_global_OBJECTS) $(adios_global_DEPENDENCIES) 
+
+adios_global$(EXEEXT): $(adios_global_OBJECTS) $(adios_global_DEPENDENCIES) $(EXTRA_adios_global_DEPENDENCIES) 
 	@rm -f adios_global$(EXEEXT)
-	$(adios_global_LINK) $(adios_global_OBJECTS) $(adios_global_LDADD) $(LIBS)
-adios_global_no_xml$(EXEEXT): $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_DEPENDENCIES) 
+	$(AM_V_FCLD)$(adios_global_LINK) $(adios_global_OBJECTS) $(adios_global_LDADD) $(LIBS)
+
+adios_global_no_xml$(EXEEXT): $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_DEPENDENCIES) $(EXTRA_adios_global_no_xml_DEPENDENCIES) 
 	@rm -f adios_global_no_xml$(EXEEXT)
-	$(adios_global_no_xml_LINK) $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_LDADD) $(LIBS)
-no_xml_write_byid$(EXEEXT): $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_DEPENDENCIES) 
+	$(AM_V_FCLD)$(adios_global_no_xml_LINK) $(adios_global_no_xml_OBJECTS) $(adios_global_no_xml_LDADD) $(LIBS)
+
+no_xml_write_byid$(EXEEXT): $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_DEPENDENCIES) $(EXTRA_no_xml_write_byid_DEPENDENCIES) 
 	@rm -f no_xml_write_byid$(EXEEXT)
-	$(no_xml_write_byid_LINK) $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(no_xml_write_byid_LINK) $(no_xml_write_byid_OBJECTS) $(no_xml_write_byid_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -460,13 +567,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -474,26 +581,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -505,15 +601,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -522,6 +614,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -570,10 +677,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -657,9 +769,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -669,7 +781,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/Fortran/global-array/adios_global.xml b/examples/Fortran/global-array/adios_global.xml
index ba89106..cb368c6 100644
--- a/examples/Fortran/global-array/adios_global.xml
+++ b/examples/Fortran/global-array/adios_global.xml
@@ -15,7 +15,7 @@
 
   <method group="temperature" method="MPI"/>
 
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
diff --git a/examples/Fortran/global-array/adios_global_no_xml.F90 b/examples/Fortran/global-array/adios_global_no_xml.F90
index 5542210..a170488 100644
--- a/examples/Fortran/global-array/adios_global_no_xml.F90
+++ b/examples/Fortran/global-array/adios_global_no_xml.F90
@@ -35,7 +35,7 @@ program adios_global
     call MPI_Comm_size (comm, size, ierr)
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (10, adios_err)
+    call adios_set_max_buffer_size (10) 
 
     call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
diff --git a/examples/Fortran/global-array/no_xml_write_byid.F90 b/examples/Fortran/global-array/no_xml_write_byid.F90
index e2bce3b..485f8d6 100644
--- a/examples/Fortran/global-array/no_xml_write_byid.F90
+++ b/examples/Fortran/global-array/no_xml_write_byid.F90
@@ -41,7 +41,7 @@ program no_xml_write_byid
     call MPI_Comm_size (comm, size, ierr)
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (10, adios_err)
+    call adios_set_max_buffer_size (10) 
 
     call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
diff --git a/examples/Fortran/scalars/Makefile.am b/examples/Fortran/scalars/Makefile.am
index 3ac9197..7b727b6 100644
--- a/examples/Fortran/scalars/Makefile.am
+++ b/examples/Fortran/scalars/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = scalars_write scalars_read
 
 scalars_write_SOURCES = scalars_write.F90
 scalars_write_LDADD = $(top_builddir)/src/libadiosf.a 
-scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_write_LDADD += $(ADIOSLIB_LDADD)
 
 scalars_read_SOURCES = scalars_read.F90
diff --git a/examples/Fortran/scalars/Makefile.in b/examples/Fortran/scalars/Makefile.in
index 31b0ad1..d16e41d 100644
--- a/examples/Fortran/scalars/Makefile.in
+++ b/examples/Fortran/scalars/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = scalars_write$(EXEEXT) scalars_read$(EXEEXT)
 subdir = examples/Fortran/scalars
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,27 +130,74 @@ scalars_read_OBJECTS = $(am_scalars_read_OBJECTS)
 am__DEPENDENCIES_1 =
 scalars_read_DEPENDENCIES = $(top_builddir)/src/libadiosreadf.a \
 	$(am__DEPENDENCIES_1)
-scalars_read_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+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 = 
+scalars_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(scalars_read_LDFLAGS) $(LDFLAGS) -o $@
 am_scalars_write_OBJECTS = scalars_write.$(OBJEXT)
 scalars_write_OBJECTS = $(am_scalars_write_OBJECTS)
 scalars_write_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-scalars_write_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+scalars_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(scalars_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(scalars_read_SOURCES) $(scalars_write_SOURCES)
 DIST_SOURCES = $(scalars_read_SOURCES) $(scalars_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -116,6 +205,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -140,6 +230,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -148,6 +239,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -180,6 +273,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -233,17 +327,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -274,6 +371,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -294,10 +392,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -306,9 +407,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -320,6 +418,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -354,14 +453,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,7 +478,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 scalars_write_SOURCES = scalars_write.F90
 scalars_write_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_read_SOURCES = scalars_read.F90
 scalars_read_LDADD = $(top_builddir)/src/libadiosreadf.a \
 	$(ADIOSREADLIB_LDADD)
@@ -430,12 +532,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-scalars_read$(EXEEXT): $(scalars_read_OBJECTS) $(scalars_read_DEPENDENCIES) 
+
+scalars_read$(EXEEXT): $(scalars_read_OBJECTS) $(scalars_read_DEPENDENCIES) $(EXTRA_scalars_read_DEPENDENCIES) 
 	@rm -f scalars_read$(EXEEXT)
-	$(scalars_read_LINK) $(scalars_read_OBJECTS) $(scalars_read_LDADD) $(LIBS)
-scalars_write$(EXEEXT): $(scalars_write_OBJECTS) $(scalars_write_DEPENDENCIES) 
+	$(AM_V_FCLD)$(scalars_read_LINK) $(scalars_read_OBJECTS) $(scalars_read_LDADD) $(LIBS)
+
+scalars_write$(EXEEXT): $(scalars_write_OBJECTS) $(scalars_write_DEPENDENCIES) $(EXTRA_scalars_write_DEPENDENCIES) 
 	@rm -f scalars_write$(EXEEXT)
-	$(scalars_write_LINK) $(scalars_write_OBJECTS) $(scalars_write_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(scalars_write_LINK) $(scalars_write_OBJECTS) $(scalars_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -444,13 +548,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -458,26 +562,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -489,15 +582,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -506,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -554,10 +658,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -641,9 +750,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -653,7 +762,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/examples/Fortran/scalars/scalars.xml b/examples/Fortran/scalars/scalars.xml
index 6da498c..b8bc0f5 100644
--- a/examples/Fortran/scalars/scalars.xml
+++ b/examples/Fortran/scalars/scalars.xml
@@ -24,7 +24,7 @@
 
     <method group="scalars" method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/examples/Fortran/schema/Makefile.am b/examples/Fortran/schema/Makefile.am
index 2a41c5e..642843e 100644
--- a/examples/Fortran/schema/Makefile.am
+++ b/examples/Fortran/schema/Makefile.am
@@ -10,27 +10,27 @@ noinst_PROGRAMS = uniform2d_f_noxml rectilinear2d_f_noxml structured2d_f_noxml t
 
 uniform2d_f_noxml_SOURCES = uniform2d_noxml.F90
 uniform2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a
-uniform2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+uniform2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 uniform2d_f_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 rectilinear2d_f_noxml_SOURCES = rectilinear2d_noxml.F90
 rectilinear2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a
-rectilinear2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+rectilinear2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 rectilinear2d_f_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 structured2d_f_noxml_SOURCES = structured2d_noxml.F90
 structured2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a
-structured2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+structured2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 structured2d_f_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 tri2d_f_noxml_SOURCES = tri2d_noxml.F90 
 tri2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a
-tri2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_f_noxml_LDADD += $(ADIOSLIB_LDADD)
 
 tri2d_f_noxml_seperate_SOURCES = tri2d_noxml_seperate.F90
 tri2d_f_noxml_seperate_LDADD = $(top_builddir)/src/libadiosf.a
-tri2d_f_noxml_seperate_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_f_noxml_seperate_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_f_noxml_seperate_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp
diff --git a/examples/Fortran/schema/Makefile.in b/examples/Fortran/schema/Makefile.in
index 92e6e1c..c7a37bd 100644
--- a/examples/Fortran/schema/Makefile.in
+++ b/examples/Fortran/schema/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -38,7 +82,7 @@ noinst_PROGRAMS = uniform2d_f_noxml$(EXEEXT) \
 	rectilinear2d_f_noxml$(EXEEXT) structured2d_f_noxml$(EXEEXT) \
 	tri2d_f_noxml$(EXEEXT) tri2d_f_noxml_seperate$(EXEEXT)
 subdir = examples/Fortran/schema
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +105,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -90,52 +132,103 @@ rectilinear2d_f_noxml_OBJECTS = $(am_rectilinear2d_f_noxml_OBJECTS)
 am__DEPENDENCIES_1 =
 rectilinear2d_f_noxml_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-rectilinear2d_f_noxml_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(rectilinear2d_f_noxml_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+rectilinear2d_f_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(rectilinear2d_f_noxml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_structured2d_f_noxml_OBJECTS = structured2d_noxml.$(OBJEXT)
 structured2d_f_noxml_OBJECTS = $(am_structured2d_f_noxml_OBJECTS)
 structured2d_f_noxml_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-structured2d_f_noxml_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(structured2d_f_noxml_LDFLAGS) $(LDFLAGS) -o $@
+structured2d_f_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(structured2d_f_noxml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_tri2d_f_noxml_OBJECTS = tri2d_noxml.$(OBJEXT)
 tri2d_f_noxml_OBJECTS = $(am_tri2d_f_noxml_OBJECTS)
 tri2d_f_noxml_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-tri2d_f_noxml_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+tri2d_f_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(tri2d_f_noxml_LDFLAGS) $(LDFLAGS) -o $@
 am_tri2d_f_noxml_seperate_OBJECTS = tri2d_noxml_seperate.$(OBJEXT)
 tri2d_f_noxml_seperate_OBJECTS = $(am_tri2d_f_noxml_seperate_OBJECTS)
 tri2d_f_noxml_seperate_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-tri2d_f_noxml_seperate_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(tri2d_f_noxml_seperate_LDFLAGS) $(LDFLAGS) -o $@
+tri2d_f_noxml_seperate_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(tri2d_f_noxml_seperate_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_uniform2d_f_noxml_OBJECTS = uniform2d_noxml.$(OBJEXT)
 uniform2d_f_noxml_OBJECTS = $(am_uniform2d_f_noxml_OBJECTS)
 uniform2d_f_noxml_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-uniform2d_f_noxml_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(uniform2d_f_noxml_LDFLAGS) $(LDFLAGS) -o $@
+uniform2d_f_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(uniform2d_f_noxml_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(rectilinear2d_f_noxml_SOURCES) \
 	$(structured2d_f_noxml_SOURCES) $(tri2d_f_noxml_SOURCES) \
 	$(tri2d_f_noxml_seperate_SOURCES) $(uniform2d_f_noxml_SOURCES)
 DIST_SOURCES = $(rectilinear2d_f_noxml_SOURCES) \
 	$(structured2d_f_noxml_SOURCES) $(tri2d_f_noxml_SOURCES) \
 	$(tri2d_f_noxml_seperate_SOURCES) $(uniform2d_f_noxml_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -143,6 +236,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -167,6 +261,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -175,6 +270,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -207,6 +304,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -260,17 +358,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -301,6 +402,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -321,10 +423,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -333,9 +438,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -347,6 +449,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -381,14 +484,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -403,23 +509,23 @@ AUTOMAKE_OPTIONS = no-dependencies
 uniform2d_f_noxml_SOURCES = uniform2d_noxml.F90
 uniform2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-uniform2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+uniform2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 rectilinear2d_f_noxml_SOURCES = rectilinear2d_noxml.F90
 rectilinear2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-rectilinear2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+rectilinear2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 structured2d_f_noxml_SOURCES = structured2d_noxml.F90
 structured2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-structured2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+structured2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_f_noxml_SOURCES = tri2d_noxml.F90 
 tri2d_f_noxml_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-tri2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_f_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 tri2d_f_noxml_seperate_SOURCES = tri2d_noxml_seperate.F90
 tri2d_f_noxml_seperate_LDADD = $(top_builddir)/src/libadiosf.a \
 	$(ADIOSLIB_LDADD)
-tri2d_f_noxml_seperate_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+tri2d_f_noxml_seperate_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 FCLINK = \
     $(LIBTOOL) --mode=link --tag F77 $(FC) \
@@ -468,21 +574,26 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-rectilinear2d_f_noxml$(EXEEXT): $(rectilinear2d_f_noxml_OBJECTS) $(rectilinear2d_f_noxml_DEPENDENCIES) 
+
+rectilinear2d_f_noxml$(EXEEXT): $(rectilinear2d_f_noxml_OBJECTS) $(rectilinear2d_f_noxml_DEPENDENCIES) $(EXTRA_rectilinear2d_f_noxml_DEPENDENCIES) 
 	@rm -f rectilinear2d_f_noxml$(EXEEXT)
-	$(rectilinear2d_f_noxml_LINK) $(rectilinear2d_f_noxml_OBJECTS) $(rectilinear2d_f_noxml_LDADD) $(LIBS)
-structured2d_f_noxml$(EXEEXT): $(structured2d_f_noxml_OBJECTS) $(structured2d_f_noxml_DEPENDENCIES) 
+	$(AM_V_FCLD)$(rectilinear2d_f_noxml_LINK) $(rectilinear2d_f_noxml_OBJECTS) $(rectilinear2d_f_noxml_LDADD) $(LIBS)
+
+structured2d_f_noxml$(EXEEXT): $(structured2d_f_noxml_OBJECTS) $(structured2d_f_noxml_DEPENDENCIES) $(EXTRA_structured2d_f_noxml_DEPENDENCIES) 
 	@rm -f structured2d_f_noxml$(EXEEXT)
-	$(structured2d_f_noxml_LINK) $(structured2d_f_noxml_OBJECTS) $(structured2d_f_noxml_LDADD) $(LIBS)
-tri2d_f_noxml$(EXEEXT): $(tri2d_f_noxml_OBJECTS) $(tri2d_f_noxml_DEPENDENCIES) 
+	$(AM_V_FCLD)$(structured2d_f_noxml_LINK) $(structured2d_f_noxml_OBJECTS) $(structured2d_f_noxml_LDADD) $(LIBS)
+
+tri2d_f_noxml$(EXEEXT): $(tri2d_f_noxml_OBJECTS) $(tri2d_f_noxml_DEPENDENCIES) $(EXTRA_tri2d_f_noxml_DEPENDENCIES) 
 	@rm -f tri2d_f_noxml$(EXEEXT)
-	$(tri2d_f_noxml_LINK) $(tri2d_f_noxml_OBJECTS) $(tri2d_f_noxml_LDADD) $(LIBS)
-tri2d_f_noxml_seperate$(EXEEXT): $(tri2d_f_noxml_seperate_OBJECTS) $(tri2d_f_noxml_seperate_DEPENDENCIES) 
+	$(AM_V_FCLD)$(tri2d_f_noxml_LINK) $(tri2d_f_noxml_OBJECTS) $(tri2d_f_noxml_LDADD) $(LIBS)
+
+tri2d_f_noxml_seperate$(EXEEXT): $(tri2d_f_noxml_seperate_OBJECTS) $(tri2d_f_noxml_seperate_DEPENDENCIES) $(EXTRA_tri2d_f_noxml_seperate_DEPENDENCIES) 
 	@rm -f tri2d_f_noxml_seperate$(EXEEXT)
-	$(tri2d_f_noxml_seperate_LINK) $(tri2d_f_noxml_seperate_OBJECTS) $(tri2d_f_noxml_seperate_LDADD) $(LIBS)
-uniform2d_f_noxml$(EXEEXT): $(uniform2d_f_noxml_OBJECTS) $(uniform2d_f_noxml_DEPENDENCIES) 
+	$(AM_V_FCLD)$(tri2d_f_noxml_seperate_LINK) $(tri2d_f_noxml_seperate_OBJECTS) $(tri2d_f_noxml_seperate_LDADD) $(LIBS)
+
+uniform2d_f_noxml$(EXEEXT): $(uniform2d_f_noxml_OBJECTS) $(uniform2d_f_noxml_DEPENDENCIES) $(EXTRA_uniform2d_f_noxml_DEPENDENCIES) 
 	@rm -f uniform2d_f_noxml$(EXEEXT)
-	$(uniform2d_f_noxml_LINK) $(uniform2d_f_noxml_OBJECTS) $(uniform2d_f_noxml_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(uniform2d_f_noxml_LINK) $(uniform2d_f_noxml_OBJECTS) $(uniform2d_f_noxml_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -491,13 +602,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -505,26 +616,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -536,15 +636,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -553,6 +649,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -601,10 +712,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -688,18 +804,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/Fortran/schema/rectilinear2d_noxml.F90 b/examples/Fortran/schema/rectilinear2d_noxml.F90
index 0edd1bd..7bd9da8 100644
--- a/examples/Fortran/schema/rectilinear2d_noxml.F90
+++ b/examples/Fortran/schema/rectilinear2d_noxml.F90
@@ -58,13 +58,13 @@ program rectilinear2d_f_noxml
     real*8, dimension(:), allocatable       :: X   ! X coordinate
     real*8, dimension(:), allocatable       :: Y   ! Y coordinate 
     real*8, dimension(:), allocatable       :: data
-    character(:), allocatable               :: schema_version, dimemsions 
+    character(len=20)                       :: schema_version, dimemsions 
 
     integer*4               :: offs_x, offs_y                      ! offset in x and y direction
     integer*4               :: nx_local, ny_local                  ! local address
     integer*4               :: posx, posy                          ! position index in the array
     integer*4               :: nx_global, ny_global                ! global address
-    integer*4               :: rank, i, j, k, p, p1, ierr, adios_err
+    integer*4               :: rank, i, j, ierr, adios_err
     integer*4               :: ndx, ndy                            ! size of array per processor
  
     !will work with 12 cores, which are arranged by npx=4, npy=3 (4x3)
@@ -122,7 +122,7 @@ program rectilinear2d_f_noxml
     dimemsions = "nx_global,ny_global"
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (50, adios_err)
+    call adios_set_max_buffer_size (50) 
     call adios_declare_group (m_adios_group, "rectilinear2d", "", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
diff --git a/examples/Fortran/schema/structured2d_noxml.F90 b/examples/Fortran/schema/structured2d_noxml.F90
index 6329520..eb4dc2f 100644
--- a/examples/Fortran/schema/structured2d_noxml.F90
+++ b/examples/Fortran/schema/structured2d_noxml.F90
@@ -58,7 +58,7 @@ program structured2d_f_noxml
     real*8, dimension(:), allocatable       :: X   ! X coordinate
     real*8, dimension(:), allocatable       :: Y   ! Y coordinate 
     real*8, dimension(:), allocatable       :: data
-    character(:), allocatable               :: schema_version, dimemsions
+    character(len=20)                       :: schema_version, dimemsions
 
     integer*4               :: rank, i, j, ierr, adios_err
     integer*4               :: ndx, ndy                            ! size of array per processor
@@ -127,7 +127,7 @@ program structured2d_f_noxml
     enddo
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (50, adios_err)
+    call adios_set_max_buffer_size (50) 
     call adios_declare_group (m_adios_group, "structured2d", "", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
diff --git a/examples/Fortran/schema/tri2d_noxml.F90 b/examples/Fortran/schema/tri2d_noxml.F90
index 45725e4..d470adc 100644
--- a/examples/Fortran/schema/tri2d_noxml.F90
+++ b/examples/Fortran/schema/tri2d_noxml.F90
@@ -56,14 +56,14 @@ program tri2d_f_noxml
     integer*8               :: varid
     integer*4               :: comm
 
-    integer*4               :: rank, i, j, k, p, p1, ierr, adios_err
+    integer*4               :: rank, i, j, p, p1, ierr, adios_err
     integer*4               :: npoints, num_cells
     integer*4               :: ndx, ndy                            ! size of array per processor
     real*8, dimension(:), allocatable       :: N                                   ! node centered variable
     real*8, dimension(:), allocatable       :: C                                   ! cell centered variable
     real*8, dimension(:,:), allocatable       :: points                              ! X,Y coordinate
     integer*4, dimension(:,:), allocatable    :: cells
-    character(:), allocatable            :: schema_version, dimemsions
+    character(len=20)                         :: schema_version, dimemsions
 
     integer*4               :: offs_x, offs_y                      ! offset in x and y direction
     integer*4               :: nx_local, ny_local                  ! local address
@@ -221,7 +221,7 @@ program tri2d_f_noxml
     dimemsions = "nx_global,ny_global"
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (10, adios_err)
+    call adios_set_max_buffer_size (10) 
     call adios_declare_group (m_adios_group, "tri2d", "", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
diff --git a/examples/Fortran/schema/tri2d_noxml_seperate.F90 b/examples/Fortran/schema/tri2d_noxml_seperate.F90
index 354e7c6..5806f6e 100644
--- a/examples/Fortran/schema/tri2d_noxml_seperate.F90
+++ b/examples/Fortran/schema/tri2d_noxml_seperate.F90
@@ -58,14 +58,14 @@ program tri2d_f_noxml
     integer*8               :: varid
     integer*4               :: comm
 
-    integer*4               :: rank, i, j, k, p, p1, ierr, adios_err
+    integer*4               :: rank, i, j, p, p1, ierr, adios_err
     integer*4               :: npoints, num_cells
     integer*4               :: ndx, ndy                            ! size of array per processor
     real*8, dimension(:), allocatable       :: N                                   ! node centered variable
     real*8, dimension(:), allocatable       :: C                                   ! cell centered variable
     real*8, dimension(:,:), allocatable     :: points                              ! X,Y coordinate
     integer*4, dimension(:,:), allocatable  :: cells
-    character(:), allocatable            :: schema_version, dimemsions
+    character(len=20)                       :: schema_version, dimemsions
 
     integer*4               :: offs_x, offs_y                      ! offset in x and y direction
     integer*4               :: nx_local, ny_local                  ! local address
@@ -224,7 +224,7 @@ program tri2d_f_noxml
     dimemsions = "nx_global,ny_global"
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (10, adios_err)
+    call adios_set_max_buffer_size (10) 
 
     !!
     !! Define the Data group
diff --git a/examples/Fortran/schema/uniform2d_noxml.F90 b/examples/Fortran/schema/uniform2d_noxml.F90
index daa73fc..af0d2d8 100644
--- a/examples/Fortran/schema/uniform2d_noxml.F90
+++ b/examples/Fortran/schema/uniform2d_noxml.F90
@@ -55,7 +55,7 @@ program uniform2d_f_noxml
     integer*8               :: m_adios_group
     integer*8               :: varid
     integer*4               :: comm
-    integer*4               :: rank, i, j, k, p, p1, ierr, adios_err
+    integer*4               :: rank, i, j, ierr, adios_err
     integer*4               :: ndx, ndy                            ! size of array per processor
     integer*4               :: O1, O2, S1, S2                      ! origin in x,y direction and spacing in x,y direction
     integer*4               :: offs_x, offs_y                      ! offset in x and y direction
@@ -63,7 +63,7 @@ program uniform2d_f_noxml
     integer*4               :: posx, posy                          ! position index in the array
     integer*4               :: nx_global, ny_global                ! global address
     real*8, dimension(:), allocatable       :: data
-    character(:), allocatable               :: schema_version, dimemsions, origin, spacing    
+    character(len=20)       :: schema_version, dimemsions, origin, spacing    
 
     !will work with 12 cores, which are arranged by npx=4, npy=3 (4x3)
     integer*4               :: npx                                 ! # of procs in x direction
@@ -116,7 +116,7 @@ program uniform2d_f_noxml
     enddo
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (50, adios_err)
+    call adios_set_max_buffer_size (50) 
     call adios_declare_group (m_adios_group, "uniform2d", "", 1, adios_err)    
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
diff --git a/examples/Makefile.in b/examples/Makefile.in
index c955f14..3f495ec 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = C Fortran
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -425,22 +518,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -455,57 +551,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -521,12 +572,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -538,15 +584,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -555,6 +597,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -591,13 +648,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -632,10 +686,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -713,22 +772,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/examples/coupling/coupling_reader_2D.xml b/examples/coupling/coupling_reader_2D.xml
index 98a19b2..cf9919e 100644
--- a/examples/coupling/coupling_reader_2D.xml
+++ b/examples/coupling/coupling_reader_2D.xml
@@ -22,6 +22,6 @@
 
   <transport group="reader2D" method="MPI"/>
 
-  <buffer size-MB="400" allocate-time="now"/>
+  <buffer max-size-MB="400"/>
 
 </adios-config>
diff --git a/examples/coupling/coupling_writer_2D.xml b/examples/coupling/coupling_writer_2D.xml
index 2583751..252c5fd 100644
--- a/examples/coupling/coupling_writer_2D.xml
+++ b/examples/coupling/coupling_writer_2D.xml
@@ -38,6 +38,6 @@
   <transport group="writer2D" method="DATASPACES">verbose=3</transport>
   <!--transport group="writer2D" method="FLEXPATH">QUEUE_SIZE=10;verbose=3</transport-->
 
-  <buffer size-MB="40" allocate-time="now"/>
+  <buffer max-size-MB="40"/>
 
 </adios-config>
diff --git a/examples/skel/genarray3d/genarray3d.xml b/examples/skel/genarray3d/genarray3d.xml
index a1eac8b..4d131e5 100644
--- a/examples/skel/genarray3d/genarray3d.xml
+++ b/examples/skel/genarray3d/genarray3d.xml
@@ -43,6 +43,6 @@
 
   <method group="genarray" method="POSIX"/>
 
-  <buffer size-MB="256" allocate-time="now"/>
+  <buffer max-size-MB="256"/>
 
 </adios-config>
diff --git a/examples/skel/geos5/geos5.xml b/examples/skel/geos5/geos5.xml
index 2fe83c8..0c891dd 100755
--- a/examples/skel/geos5/geos5.xml
+++ b/examples/skel/geos5/geos5.xml
@@ -296,6 +296,6 @@
     <method group="geosgcm" method="MPI"/>
     <!--method group="geosgcm" method="TIME_AGG">time_steps=10,step_break=10,io_method=MPI</method-->
 
- <buffer size-MB="512" allocate-time="now"/>
+ <buffer max-size-MB="512"/>
 </adios-config>
 
diff --git a/examples/skel/grapes/grapes.xml b/examples/skel/grapes/grapes.xml
index 09651f8..23bb555 100644
--- a/examples/skel/grapes/grapes.xml
+++ b/examples/skel/grapes/grapes.xml
@@ -34,7 +34,7 @@
  </adios-group>
  <method group="post_process" method="MPI_LUSTRE">
 stripe_count=32;stripe_size=1048576;block_size=1048576</method>
- <buffer size-MB="500" allocate-time="now" />
+ <buffer max-size-MB="500" />
 <!--
 Estimation about the size of output data by a process at a time
 The adios_group for every process has such descriptive variables like gndx, gndy, gndz, nproc, ndx, ndy, ndz,offx, offy and offz.
diff --git a/examples/skel/gts/gts.xml b/examples/skel/gts/gts.xml
index 21d77cc..cf70401 100644
--- a/examples/skel/gts/gts.xml
+++ b/examples/skel/gts/gts.xml
@@ -78,5 +78,5 @@
 
 <!-- method priority="3" method="MPI_AMR" iterations="100" group="restart"/ -->
 <method priority="3" method="POSIX" group="restart"/>
-<buffer size-MB="256" allocate-time="now" />
+<buffer max-size-MB="256" />
 </adios-config>
diff --git a/examples/skel/picongpu/picongpu.xml b/examples/skel/picongpu/picongpu.xml
index 2835f2c..3d6139e 100644
--- a/examples/skel/picongpu/picongpu.xml
+++ b/examples/skel/picongpu/picongpu.xml
@@ -29,6 +29,6 @@
 
     <method group="fields" method="MPI" />
 
-    <buffer size-MB="32" allocate-time="now"/>
+    <buffer max-size-MB="32"/>
 
 </adios-config>
diff --git a/examples/skel/picongpu/picongpu_skel.xml b/examples/skel/picongpu/picongpu_skel.xml
index e7d5a49..9d7ba24 100644
--- a/examples/skel/picongpu/picongpu_skel.xml
+++ b/examples/skel/picongpu/picongpu_skel.xml
@@ -29,6 +29,6 @@
 
     <method group="fields" method="MPI">***skel-parameters***</method>
 
-    <buffer allocate-time="now" size-MB="32"/>
+    <buffer max-size-MB="32"/>
 
 </adios-config>
\ No newline at end of file
diff --git a/examples/skel/s3d/s3d.xml b/examples/skel/s3d/s3d.xml
index e9fa3de..fbcede5 100644
--- a/examples/skel/s3d/s3d.xml
+++ b/examples/skel/s3d/s3d.xml
@@ -23,4 +23,4 @@ dimensions="nx,ny,nz" /><var name="HCO" type="double"
 dimensions="nx,ny,nz" /><var name="N2" type="double"
 dimensions="nx,ny,nz" /></global-bounds> </adios-group> <method
 group="restart" method="MPI_AMR"> stripe_count=1,stripe_size=25600000,block_size=25600000,num_aggregators=1920,merging_pgs=0
-</method> <buffer size-MB="200" allocate-time="now" /> </adios-config>
+</method> <buffer max-size-MB="200" /> </adios-config>
diff --git a/examples/staging/stage_write/genarray_stream.xml b/examples/staging/stage_write/genarray_stream.xml
index b99aeea..dd120b7 100644
--- a/examples/staging/stage_write/genarray_stream.xml
+++ b/examples/staging/stage_write/genarray_stream.xml
@@ -53,6 +53,6 @@
 
   <method group="genarray" method="FLEXPATH">verbose=3</method>
 
-  <buffer size-MB="20" allocate-time="now"/>
+  <buffer max-size-MB="20"/>
 
 </adios-config>
diff --git a/examples/staging/stage_write/stage_write.c b/examples/staging/stage_write/stage_write.c
index 24d8178..bd6dfd2 100644
--- a/examples/staging/stage_write/stage_write.c
+++ b/examples/staging/stage_write/stage_write.c
@@ -359,7 +359,7 @@ int process_metadata(int step)
         return 1;
     }
     print0 ("Rank %d: allocate %llu MB for output buffer\n", rank, bufsize/1048576+1);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, bufsize/1048576+1); 
+    adios_set_max_buffer_size (bufsize/1048576+1); 
 
     // allocate read buffer
     bufsize = largest_block + 128;
diff --git a/examples/staging/stage_write_varyingsize/decompose_block.o b/examples/staging/stage_write_varyingsize/decompose_block.o
deleted file mode 100644
index 282b12e..0000000
Binary files a/examples/staging/stage_write_varyingsize/decompose_block.o and /dev/null differ
diff --git a/examples/staging/stage_write_varyingsize/genarray_varying b/examples/staging/stage_write_varyingsize/genarray_varying
deleted file mode 100755
index f36de26..0000000
Binary files a/examples/staging/stage_write_varyingsize/genarray_varying and /dev/null differ
diff --git a/examples/staging/stage_write_varyingsize/genarray_varying.o b/examples/staging/stage_write_varyingsize/genarray_varying.o
deleted file mode 100644
index 2b8f39a..0000000
Binary files a/examples/staging/stage_write_varyingsize/genarray_varying.o and /dev/null differ
diff --git a/examples/staging/stage_write_varyingsize/genarray_varying.xml b/examples/staging/stage_write_varyingsize/genarray_varying.xml
index f97d871..09f80bb 100644
--- a/examples/staging/stage_write_varyingsize/genarray_varying.xml
+++ b/examples/staging/stage_write_varyingsize/genarray_varying.xml
@@ -53,6 +53,6 @@
 
   <method group="genarray" method="DATASPACES">verbose=3</method>
 
-  <buffer size-MB="20" allocate-time="now"/>
+  <buffer max-size-MB="20"/>
 
 </adios-config>
diff --git a/examples/staging/stage_write_varyingsize/genarray_varying_comm.mod b/examples/staging/stage_write_varyingsize/genarray_varying_comm.mod
deleted file mode 100644
index 2dac388..0000000
--- a/examples/staging/stage_write_varyingsize/genarray_varying_comm.mod
+++ /dev/null
@@ -1,122 +0,0 @@
-V27 0x4 genarray_varying_comm
-20 genarray_varying.F90 S622 0
-07/23/2015  08:59:31
-enduse
-D 56 18 12
-D 58 21 9 3 45 43 0 1 0 0 1
- 19 23 37 19 23 21
- 25 29 39 25 29 27
- 31 35 41 31 35 33
-D 61 21 6 1 0 16 0 0 0 0 0
- 0 16 0 3 16 0
-D 64 18 46
-S 622 24 0 0 0 8 1 0 5031 5 0 A 0 0 0 0 0 0 0 0 0 0 0 0 59 0 0 0 0 0 0 0 0 24 0 0 0 0 0 0 genarray_varying_comm
-S 623 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 624 6 4 0 0 56 625 622 5053 4 0 A 0 0 0 0 0 0 0 0 0 0 0 0 684 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 outputfile
-S 625 6 4 0 0 56 669 622 5064 4 0 A 0 0 0 0 0 256 0 0 0 0 0 0 684 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 inputfile
-S 626 6 4 0 0 6 627 622 5074 4 0 A 0 0 0 0 0 0 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 npx
-S 627 6 4 0 0 6 628 622 5078 4 0 A 0 0 0 0 0 4 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 npy
-S 628 6 4 0 0 6 629 622 5082 4 0 A 0 0 0 0 0 8 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 npz
-S 629 6 4 0 0 6 630 622 5086 4 0 A 0 0 0 0 0 12 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 ndx
-S 630 6 4 0 0 6 631 622 5090 4 0 A 0 0 0 0 0 16 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 ndy
-S 631 6 4 0 0 6 632 622 5094 4 0 A 0 0 0 0 0 20 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 ndz
-S 632 6 4 0 0 6 633 622 5098 4 0 A 0 0 0 0 0 24 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 timesteps
-S 633 6 4 0 0 6 634 622 5108 4 0 A 0 0 0 0 0 28 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 sleeptime
-S 634 6 4 0 0 16 635 622 5118 4 0 A 0 0 0 0 0 32 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 common_size
-S 635 6 4 0 0 6 636 622 5130 4 0 A 0 0 0 0 0 36 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 gndx
-S 636 6 4 0 0 6 637 622 5135 4 0 A 0 0 0 0 0 40 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 gndy
-S 637 6 4 0 0 6 638 622 5140 4 0 A 0 0 0 0 0 44 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 gndz
-S 638 6 4 0 0 6 639 622 5145 4 0 A 0 0 0 0 0 48 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 offx
-S 639 6 4 0 0 6 640 622 5150 4 0 A 0 0 0 0 0 52 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 offy
-S 640 6 4 0 0 6 641 622 5155 4 0 A 0 0 0 0 0 56 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 offz
-S 641 6 4 0 0 6 642 622 5160 40800006 0 A 0 0 0 0 0 60 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 z_b_0
-S 642 6 4 0 0 6 643 622 5166 40800006 0 A 0 0 0 0 0 64 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 z_b_1
-S 643 6 4 0 0 6 661 622 5172 40800006 0 A 0 0 0 0 0 68 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 z_b_2
-S 644 7 6 0 0 58 1 622 5178 10a00004 51 A 0 0 0 0 0 0 647 0 0 0 649 0 0 0 0 0 0 0 0 646 0 0 648 622 0 0 0 0 double_xyz
-S 645 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 646 8 4 0 0 61 626 622 5189 40822004 1020 A 0 0 0 0 0 0 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 double_xyz$sd
-S 647 6 4 0 0 7 648 622 5203 40802001 1020 A 0 0 0 0 0 0 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 double_xyz$p
-S 648 6 4 0 0 7 646 622 5216 40802000 1020 A 0 0 0 0 0 0 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 double_xyz$o
-S 649 22 1 0 0 8 1 622 5229 40000000 1000 A 0 0 0 0 0 0 0 644 0 0 0 0 646 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 double_xyz$arrdsc
-S 650 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 651 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 652 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 653 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 654 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 655 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 656 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 657 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 658 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 659 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 660 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 661 6 4 0 0 6 662 622 5247 4 0 A 0 0 0 0 0 72 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 wrank
-S 662 6 4 0 0 6 663 622 5253 4 0 A 0 0 0 0 0 76 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 wnproc
-S 663 6 4 0 0 6 664 622 5260 4 0 A 0 0 0 0 0 80 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 app_comm
-S 664 6 4 0 0 6 665 622 5269 4 0 A 0 0 0 0 0 84 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 color
-S 665 6 4 0 0 6 666 622 5275 4 0 A 0 0 0 0 0 88 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 rank
-S 666 6 4 0 0 6 667 622 5280 4 0 A 0 0 0 0 0 92 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 nproc
-S 667 6 4 0 0 6 675 622 5286 4 0 A 0 0 0 0 0 96 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 ierr
-S 668 3 0 0 0 6 0 1 0 0 0 A 0 0 0 0 0 0 0 0 0 200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
-S 669 6 4 0 0 64 670 622 5291 4 0 A 0 0 0 0 0 512 0 0 0 0 0 0 684 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 group
-S 670 6 4 0 0 64 1 622 5297 4 0 A 0 0 0 0 0 712 0 0 0 0 0 0 684 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 filename
-S 671 6 4 0 0 7 672 622 5306 4 0 A 0 0 0 0 0 0 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 handle
-S 672 6 4 0 0 7 673 622 5313 4 0 A 0 0 0 0 0 8 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 total_size
-S 673 6 4 0 0 7 674 622 5324 4 0 A 0 0 0 0 0 16 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 group_size
-S 674 6 4 0 0 7 676 622 5335 4 0 A 0 0 0 0 0 24 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 adios_totalsize
-S 675 6 4 0 0 6 1 622 5351 4 0 A 0 0 0 0 0 100 0 0 0 0 0 0 685 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 err
-S 676 6 4 0 0 9 677 622 5355 4 0 A 0 0 0 0 0 32 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 start_time
-S 677 6 4 0 0 9 678 622 5366 4 0 A 0 0 0 0 0 40 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 end_time
-S 678 6 4 0 0 9 679 622 5375 4 0 A 0 0 0 0 0 48 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 total_time
-S 679 6 4 0 0 9 680 622 5386 4 0 A 0 0 0 0 0 56 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 gbs
-S 680 6 4 0 0 9 681 622 5390 4 0 A 0 0 0 0 0 64 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 sz
-S 681 6 4 0 0 9 682 622 5393 4 0 A 0 0 0 0 0 72 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 io_start_time
-S 682 6 4 0 0 9 683 622 5407 4 0 A 0 0 0 0 0 80 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 io_end_time
-S 683 6 4 0 0 9 1 622 5419 4 0 A 0 0 0 0 0 88 0 0 0 0 0 0 686 0 0 0 0 0 0 0 0 0 0 622 0 0 0 0 io_total_time
-S 684 11 0 0 0 8 1 622 5433 40800000 805000 A 0 0 0 0 0 912 0 0 624 670 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _genarray_varying_comm$1
-S 685 11 0 0 0 8 684 622 5458 40800000 805000 A 0 0 0 0 0 240 0 0 647 675 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _genarray_varying_comm$0
-S 686 11 0 0 0 8 685 622 5483 40800000 805000 A 0 0 0 0 0 96 0 0 671 683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _genarray_varying_comm$2
-A 12 2 0 0 0 6 623 0 0 0 12 0 0 0 0 0 0 0 0 0
-A 16 2 0 0 0 6 645 0 0 0 16 0 0 0 0 0 0 0 0 0
-A 17 2 0 0 0 6 650 0 0 0 17 0 0 0 0 0 0 0 0 0
-A 18 1 0 1 0 61 646 0 0 0 0 0 0 0 0 0 0 0 0 0
-A 19 10 0 0 0 6 18 1 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 17
-A 20 2 0 0 0 6 651 0 0 0 20 0 0 0 0 0 0 0 0 0
-A 21 10 0 0 19 6 18 4 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 20
-A 22 4 0 0 0 6 21 0 3 0 0 0 0 2 0 0 0 0 0 0
-A 23 4 0 0 7 6 19 0 22 0 0 0 0 1 0 0 0 0 0 0
-A 24 2 0 0 0 6 652 0 0 0 24 0 0 0 0 0 0 0 0 0
-A 25 10 0 0 21 6 18 7 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 24
-A 26 2 0 0 0 6 653 0 0 0 26 0 0 0 0 0 0 0 0 0
-A 27 10 0 0 25 6 18 10 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 26
-A 28 4 0 0 0 6 27 0 3 0 0 0 0 2 0 0 0 0 0 0
-A 29 4 0 0 0 6 25 0 28 0 0 0 0 1 0 0 0 0 0 0
-A 30 2 0 0 0 6 654 0 0 0 30 0 0 0 0 0 0 0 0 0
-A 31 10 0 0 27 6 18 13 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 30
-A 32 2 0 0 0 6 655 0 0 0 32 0 0 0 0 0 0 0 0 0
-A 33 10 0 0 31 6 18 16 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 32
-A 34 4 0 0 0 6 33 0 3 0 0 0 0 2 0 0 0 0 0 0
-A 35 4 0 0 0 6 31 0 34 0 0 0 0 1 0 0 0 0 0 0
-A 36 2 0 0 0 6 656 0 0 0 36 0 0 0 0 0 0 0 0 0
-A 37 10 0 0 33 6 18 19 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 36
-A 38 2 0 0 0 6 657 0 0 0 38 0 0 0 0 0 0 0 0 0
-A 39 10 0 0 37 6 18 22 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 38
-A 40 2 0 0 0 6 658 0 0 0 40 0 0 0 0 0 0 0 0 0
-A 41 10 0 0 39 6 18 25 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 40
-A 42 2 0 0 0 6 659 0 0 0 42 0 0 0 0 0 0 0 0 0
-A 43 10 0 0 41 6 18 28 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 42
-A 44 2 0 0 0 6 660 0 0 0 44 0 0 0 0 0 0 0 0 0
-A 45 10 0 0 43 6 18 31 0 0 0 0 0 0 0 0 0 0 0 0
-X 1 44
-A 46 2 0 0 0 6 668 0 0 0 46 0 0 0 0 0 0 0 0 0
-Z
-Z
diff --git a/examples/staging/stage_write_varyingsize/stage_write b/examples/staging/stage_write_varyingsize/stage_write
deleted file mode 100755
index 1728864..0000000
Binary files a/examples/staging/stage_write_varyingsize/stage_write and /dev/null differ
diff --git a/examples/staging/stage_write_varyingsize/stage_write.c b/examples/staging/stage_write_varyingsize/stage_write.c
index d877513..b35806e 100644
--- a/examples/staging/stage_write_varyingsize/stage_write.c
+++ b/examples/staging/stage_write_varyingsize/stage_write.c
@@ -376,7 +376,7 @@ int process_metadata(int step)
     if (step == 1)
     {
         print0 ("Rank %d: allocate %llu MB for output buffer\n", rank, bufsize/1048576+1);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, bufsize/1048576+1); 
+        adios_set_max_buffer_size (bufsize/1048576+1); 
     }
 
     // allocate read buffer
diff --git a/examples/staging/stage_write_varyingsize/stage_write.o b/examples/staging/stage_write_varyingsize/stage_write.o
deleted file mode 100644
index 2875c01..0000000
Binary files a/examples/staging/stage_write_varyingsize/stage_write.o and /dev/null differ
diff --git a/examples/staging/stage_write_varyingsize/utils.o b/examples/staging/stage_write_varyingsize/utils.o
deleted file mode 100644
index 4132438..0000000
Binary files a/examples/staging/stage_write_varyingsize/utils.o and /dev/null differ
diff --git a/runconf b/runconf
index ea41c5a..d497636 100755
--- a/runconf
+++ b/runconf
@@ -21,17 +21,13 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
     echo "Configure on SITH for $TARGET env. for user ${USER}"
     module unload hdf5
     module unload netcdf
-    module unload mxml
     module unload python
-    module unload PE-gnu
-    module unload PE-pgi
-    module unload PE-intel
-    module unload PE-pathscale
-    module unload pgi gcc intel pathscale
-    module load PE-$TARGET
-    module load mxml/2.9
-    MXMLDIR=$MXML_DIR
-    module unload mxml
+    #module unload PE-gnu
+    #module unload PE-pgi
+    #module unload PE-intel
+    #module unload PE-pathscale
+    #module unload pgi gcc intel pathscale
+    #module load PE-$TARGET
     module load python
     # Use both seq hdf5 (for utils) and 
     #   parallel hdf5 (for PHDF5 method)
@@ -54,7 +50,9 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
     module unload netcdf
     #module load szip
     module load bzip2
-    #module load dataspaces/1.5.0
+    module unload dataspaces
+    unset DATASPACES_DIR
+    module load dataspaces/1.6.0
     export MPICC=mpicc
     export MPICXX=mpiCC
     export MPIFC=mpif90
@@ -65,15 +63,16 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
     WITHFLEX=""
     WITHFGR=""
     WITHFASTBIT=""
-    unset DATASPACES_DIR
+    WITHALACRITY=""
     if [ "$TARGET" == "pgi" ]; then
         export CC=pgcc
         export CXX=pgCC
         export FC=pgf90
         WITHFLEX="--with-flexpath=/ccs/proj/e2e/chaos/sith/$TARGET"
         WITHFGR="--with-fgr=/ccs/proj/e2e/qliu/tap" 
+        WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/sith/pgi"
         WITHFASTBIT="--with-fastbit=/sw/redhat6/fastbit/svn/rhel6_gnu4.4.7"
-        DATASPACES_DIR="/ccs/proj/e2e/dataspaces/sith-tcp/1.6.pgi"
+        #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/sith-tcp/1.6.pgi"
         #DATASPACES_DIR="/ccs/home/hbui/usr/software/dataspaces-dev"
     elif [ "$TARGET" == "gnu" ]; then
         export CC=gcc
@@ -82,12 +81,15 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
         #export CFLAGS="$CFLAGS -gdwarf-3" 
         #export FCFLAGS="$FCFLAGS -gdwarf-3" 
         WITHFLEX="--with-flexpath=/ccs/proj/e2e/chaos/sith/$TARGET"
+        WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/sith/gnu"
         WITHFASTBIT="--with-fastbit=/sw/redhat6/fastbit/svn/rhel6_gnu4.8.2"
-        DATASPACES_DIR="/ccs/proj/e2e/dataspaces/sith-tcp/1.6.gnu"
+        #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/sith-tcp/1.6.gnu"
     elif [ "$TARGET" == "intel" ]; then
         export CC=icc
         export CXX=icpc
         export FC=ifort
+        WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/sith/intel"
+        WITHFASTBIT="--with-fastbit=/sw/redhat6/fastbit/svn/rhel6_gnu4.8.2"
     else
         echo "TARGET must be pgi or gnu or intel"
         exit 1
@@ -95,21 +97,23 @@ if [ `hostname | cut -c 1-4` == "sith" ]; then
         
     $SRCDIR/configure --prefix=/ccs/proj/e2e/${USER}/ADIOS/sith.$TARGET \
         --config-cache \
+        --disable-maintainer-mode \
         --enable-dependency-tracking \
         --enable-research-transports \
         --with-lustre \
-        --with-mxml=$MXMLDIR \
         --with-hdf5=${SEQ_HDF5_DIR} \
         --with-hdf5-libs="${SEQ_HDF5_CLIB}" \
-        --with-netcdf=${SEQ_NC_DIR} \
-        --with-netcdf-libs="${SEQ_NC_CLIB}" \
         --with-zlib \
         --with-bzip2=$BZIP2_DIR \
-        --without-infiniband --with-dataspaces=$DATASPACES_DIR \
+        --with-dataspaces=$DATASPACES_DIR \
         $WITHFLEX \
         $WITHFASTBIT \
+        $WITHALACRITY \
         --with-aplod=/ccs/proj/e2e/ncsu/sith.gnu \
         --with-isobar=/ccs/proj/e2e/ncsu/sith.gnu \
+        #$WITHFASTBIT \
+        #--with-netcdf=${SEQ_NC_DIR} \
+        #--with-netcdf-libs="${SEQ_NC_CLIB}" \
         #--with-dimes=$DATASPACES_DIR \
         #--with-glib=/ccs/proj/e2e/qliu/glib
         #$WITHFGR \
@@ -139,7 +143,6 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
         exit 1
     fi
     echo "Configure on Rhea for $TARGET env. for user ${USER}"
-    module unload mxml
     module unload hdf5
     module unload netcdf
     module unload PE-gnu
@@ -149,9 +152,6 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
     module unload pgi gcc intel pathscale
     module unload python
     module load PE-$TARGET
-    module load mxml
-    MXMLDIR=$MXML_DIR
-    module unload mxml
     module load python
     # Use both seq hdf5 (for utils) and 
     #   parallel hdf5 (for PHDF5 method)
@@ -202,10 +202,10 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
     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-mxml=$MXMLDIR 
         #--with-hdf5=${SEQ_HDF5_DIR} \
         #--with-hdf5-libs="${SEQ_HDF5_CLIB}" \
         #--with-phdf5=${PAR_HDF5_DIR} \
@@ -241,7 +241,6 @@ elif [ `hostname | cut -c 1-4` == "yona" ]; then
     module unload pgi gcc intel pathscale
     #module unload python
     module load PE-$TARGET
-    module load mxml
     #module load python
     # Use both seq hdf5 (for utils) and 
     #   parallel hdf5 (for PHDF5 method)
@@ -292,6 +291,8 @@ elif [ `hostname | cut -c 1-4` == "yona" ]; then
         
     export CFLAGS="-g -fPIC" 
     ${SRCDIR}/configure --prefix=/ccs/proj/e2e/pnorbert/ADIOS/yona.$TARGET \
+        --config-cache \
+        --disable-maintainer-mode \
         --enable-dependency-tracking \
         --enable-research-transports  \
         --with-hdf5=${SEQ_HDF5_DIR} \
@@ -311,145 +312,96 @@ elif [ `hostname | cut -c 1-4` == "yona" ]; then
 
 elif [ `hostname | cut -c 1-5` == "titan" ]; then
 
-    BUILD_STAGING=true
     #source /opt/modules/default/etc/modules.sh
     TARGET=`module list 2>&1 | grep "PrgEnv"- | sed "s/^.*PrgEnv-\([a-z]*\).*/\1/"`
-    if [ $BUILD_STAGING == "false" ]; then
     
-        ################
-        # Titan #
-        ################
-        #TARGET=pgi
-        echo "Configure on TITAN (XK7) for $TARGET env."
-        export CC=cc
-        export FC=ftn
-        export CXX=CC
-        module unload szip
-        module unload hdf5
-        module unload netcdf
-        module unload netcdf-hdf5parallel
-        module unload hdf5-parallel
-        module unload mxml
-        module unload PrgEnv-gnu
-        module unload PrgEnv-pgi
-        module unload PrgEnv-intel
-        module unload PrgEnv-cray
-        #module unload papi
-        module load PrgEnv-$TARGET
-        #module unload intel
-        #module load intel/13.1.3.192
-        module swap craype-interlagos craype-istanbul
-        #module load szip
-        #module load xt-papi
-        module load mxml
-        # use the two lines below for openmpi
-        #export CC=mpicc
-        #export FC=mpif90
-        CFLAGS="-g -fPIC -O0" ${SRCDIR}/configure --prefix=/ccs/proj/e2e/${USER}/ADIOS/xk6.$TARGET \
-            --enable-dependency-tracking \
-            --with-lustre
-            #--with-fgr=/ccs/proj/e2e/qliu/tap \
-            #--with-hdf5=/opt/cray/hdf5/1.8.7/pgi/109 \
-            #--with-phdf5=/opt/cray/hdf5-parallel/1.8.7/pgi/109 \
-#            --with-dmalloc=/ccs/proj/e2e/qliu/dmalloc.$TARGET
-#            --enable-research-transports \
-#            --with-netcdf=/opt/cray/netcdf/3.6.2/netcdf-${TARGET} \
-#            --with-nc4par=/opt/cray/netcdf-hdf5parallel/4.0.1.3/netcdf-hdf5parallel-$TARGET \
-#            --with-phdf5=/opt/cray/hdf5-parallel/1.8.4.1/hdf5-parallel-$TARGET \
-#            --with-hdf5=/sw/xt5/hdf5/1.8.2/cnl2.1_gnu7.2.3 \
-#            --with-hdf5=/sw/xt5/hdf5/1.8.2/cnl2.1_gnu4.2.0 \
-#            --with-mxml=/ccs/proj/e2e/pnorbert/mxml.xt5.$TARGET \
-            
-    else 
-    
-        ##########################
-        # Titan + staging #
-        ##########################
-        #TARGET=pgi
-        echo "Configure on TITAN (XK7) including staging methods for $TARGET env."
-        export CC=cc
-        export FC=ftn
-        export CXX=CC
-        module unload szip
-        module unload hdf5
-        module unload netcdf
-        module unload hdf5-parallel
-        module unload netcdf-hdf5parallel
-        module unload mxml
-        module unload fastbit
-        module unload PrgEnv-gnu
-        module unload PrgEnv-pgi
-        module unload PrgEnv-intel
-        module unload PrgEnv-cray
-        #module unload papi
-        #module unload xtpe-quadcore
-        module load PrgEnv-$TARGET
-        module swap craype-interlagos craype-istanbul
-        module swap cray-libsci
-        module load dataspaces/1.4.0
-        unset EXTRA_CFLAGS
-        unset EXTRA_LIBS
-        unset LDFLAGS
-        if [ "$TARGET" == "pgi" ]; then
-            #module swap pgi pgi/11.8.0
-            # FASTBIT needs libstdc++ and -pgcpplibs flag
-            export LDFLAGS="-pgcpplibs" 
-            export EXTRA_LIBS="/opt/gcc/4.8.2/snos/lib64/libstdc++.a"
-            #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/titan/$TARGET"
-            WITHFLEX=""
-        elif [ "$TARGET" == "gnu" ]; then
-            # NSSI/FLEXPATH/FASTBIT needs libstdc++
-            export LDFLAGS="-pgcpplibs" 
-            export EXTRA_LIBS="${GCC_PATH}/snos/lib64/libstdc++.a"
-            WITHFLEX="--with-flexpath=/ccs/proj/e2e/chaos/titan/$TARGET"
-            # FASTBIT needs libstdc++
-            #export EXTRA_LIBS="/opt/gcc/4.8.2/snos/lib64/libstdc++.a"
-            #module swap gcc gcc/4.4.4
-            #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/titan/$TARGET"
-        elif [ "$TARGET" == "cray" ]; then
-            export EXTRA_CFLAGS="-h gnu"
-        fi
-     
-        # NOTE hdf5-parallel module does not work with C++ compiler
-        #module load hdf5-parallel
-        #module load netcdf-hdf5parallel
-        module load szip
-        #module load papi
-        module load mxml/2.9
+    #########
+    # Titan #
+    #########
+    #TARGET=pgi
+    echo "Configure on TITAN (XK7) including staging methods for $TARGET env."
+    module unload szip
+    module unload hdf5
+    module unload netcdf
+    module unload hdf5-parallel
+    module unload netcdf-hdf5parallel
+    module unload fastbit
+    module unload craype-interlagos craype-interlagos-cu 
+    module unload craype-barcelona craype-abudhabi craype-abudhabi-cu 
+    module unload craype-ivybridge craype-sandybridge craype-haswell 
+    module unload craype-mc8 craype-mc12
+    module load craype-istanbul
+    module load dataspaces # /1.6.1
+    unset EXTRA_CFLAGS
+    unset EXTRA_LIBS
+    unset LDFLAGS
+    unset WITHFLEX
+    unset WITHFASTBIT
+    export CC=cc
+    export FC=ftn
+    export CXX=CC
+    if [ "$TARGET" == "pgi" ]; then
+        # FASTBIT needs libstdc++ and -pgcpplibs flag
+        export LDFLAGS="-pgcpplibs" 
+        #export EXTRA_LIBS="/opt/gcc/4.9.0/snos/lib64/libstdc++.a"
+        #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/titan/$target-cpu"
+    elif [ "$TARGET" == "gnu" ]; then
+        #export CC=gcc
+        #export FC=gfortran
+        #export CXX=g++
+        #export MPICC=cc
+        #export MPIFC=ftn
+        #export MPICXX=CC
+        # NSSI/FLEXPATH/FASTBIT needs libstdc++
+        export LDFLAGS="" 
         module load fastbit
-        # use the two lines below for openmpi
-        #export CC=mpicc
-        #export FC=mpif90
-        export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK -DDART_DO_VERSIONING" 
-        export CFLAGS="-fPIC -g -O2 ${EXTRA_CFLAGS}" 
-        LIBS="$EXTRA_LIBS" ${SRCDIR}/configure --prefix=/ccs/proj/e2e/${USER}/ADIOS/xk6.$TARGET \
-        --enable-dependency-tracking \
-        --disable-maintainer-mode \
-        --with-cray-pmi=/opt/cray/pmi/default \
-        --with-cray-ugni-incdir=/opt/cray/gni-headers/default/include \
-        --with-cray-ugni-libdir=/opt/cray/ugni/default/lib64 \
-        --with-dataspaces=$DATASPACES_DIR \
-        --with-dimes=$DATASPACES_DIR \
-        $WITHFLEX \
-        --with-fastbit=$FASTBIT_DIR \
-        --with-lustre \
-        --disable-timers --disable-timer-events \
-        --with-zlib --with-bzip2 
-
-        #--enable-skel-timing
-        #--with-fgr=/ccs/proj/e2e/qliu/tap \
-        #--with-glib=/ccs/proj/e2e/qliu/glib \
-        #--with-netcdf=/opt/cray/netcdf/3.6.2/netcdf-${TARGET} \
-        #--with-hdf5=/sw/xt5/hdf5/1.8.2/cnl2.1_gnu4.2.0 \
-        #--with-nc4par=/opt/cray/netcdf-hdf5parallel/4.0.1.3/netcdf-hdf5parallel-$TARGET \
-        #--with-phdf5=/opt/cray/hdf5-parallel/1.8.4.1/hdf5-parallel-$TARGET \
-        #--with-dimes=/ccs/proj/e2e/pnorbert/spaces/$TARGET
-        #--with-nssi=/ccs/proj/e2e/pnorbert/nssi/xt5/$TARGET \
-        #--with-datatap=/ccs/home/zf2/work/pe.$TARGET \
-        #--with-datatap=/ccs/proj/e2e/pnorbert/datatap/xt5/$TARGET \
-    
+        WITHFLEX="--with-flexpath=/ccs/proj/e2e/chaos/titan/$TARGET"
+        # FASTBIT needs libstdc++
+        WITHFASTBIT="--with-fastbit=$FASTBIT_DIR"
+        #export EXTRA_LIBS="${GCC_PATH}/snos/lib64/libstdc++.a"
+        #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/titan/$TARGET"
+    elif [ "$TARGET" == "cray" ]; then
+        export EXTRA_CFLAGS="-h gnu"
     fi
-    
+ 
+    # NOTE hdf5-parallel module does not work with C++ compiler
+    #module load hdf5-parallel
+    #module load netcdf-hdf5parallel
+    module load szip
+    #module load papi
+    # use the two lines below for openmpi
+    #export CC=mpicc
+    #export FC=mpif90
+    export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK -DDART_DO_VERSIONING" 
+    export CFLAGS="-fPIC -g -O2 ${EXTRA_CFLAGS}" 
+    LIBS="$EXTRA_LIBS" ${SRCDIR}/configure --prefix=/ccs/proj/e2e/${USER}/ADIOS/xk6.$TARGET \
+    --enable-dependency-tracking \
+    --disable-maintainer-mode \
+    --with-cray-pmi=/opt/cray/pmi/default \
+    --with-cray-ugni-incdir=/opt/cray/gni-headers/default/include \
+    --with-cray-ugni-libdir=/opt/cray/ugni/default/lib64 \
+    --with-dataspaces=$DATASPACES_DIR \
+    --with-dimes=$DATASPACES_DIR \
+    --without-infiniband \
+    $WITHFLEX \
+    $WITHFASTBIT \
+    --with-lustre \
+    --disable-timers --disable-timer-events \
+    --with-zlib --with-bzip2 
+
+    #--enable-skel-timing
+    #--with-fgr=/ccs/proj/e2e/qliu/tap \
+    #--with-glib=/ccs/proj/e2e/qliu/glib \
+    #--with-netcdf=/opt/cray/netcdf/3.6.2/netcdf-${TARGET} \
+    #--with-hdf5=/sw/xt5/hdf5/1.8.2/cnl2.1_gnu4.2.0 \
+    #--with-nc4par=/opt/cray/netcdf-hdf5parallel/4.0.1.3/netcdf-hdf5parallel-$TARGET \
+    #--with-phdf5=/opt/cray/hdf5-parallel/1.8.4.1/hdf5-parallel-$TARGET \
+    #--with-dimes=/ccs/proj/e2e/pnorbert/spaces/$TARGET
+    #--with-nssi=/ccs/proj/e2e/pnorbert/nssi/xt5/$TARGET \
+    #--with-datatap=/ccs/home/zf2/work/pe.$TARGET \
+    #--with-datatap=/ccs/proj/e2e/pnorbert/datatap/xt5/$TARGET \
+
+
 
 
 elif [ `hostname | cut -c 1-4` == "eos-" ]; then
@@ -469,13 +421,8 @@ elif [ `hostname | cut -c 1-4` == "eos-" ]; then
       module unload netcdf
       module unload netcdf-hdf5parallel
       module unload hdf5-parallel
-      module unload PrgEnv-gnu
-      module unload PrgEnv-pgi
-      module unload PrgEnv-intel
-      module unload PrgEnv-cray
       module unload papi
       module unload pmi
-      module load PrgEnv-$TARGET
       if [ "$TARGET" == "pgi" ]; then
           # NSSI needs -pgcpplibs flag 
           export LDFLAGS="-pgcpplibs" 
@@ -492,13 +439,16 @@ elif [ `hostname | cut -c 1-4` == "eos-" ]; then
           unset EXTRA_LIBS 
           unset EXTRA_CFLAGS 
       fi
-      module load mxml
       module load pmi
+      module load craype-hugepages2M
       CFLAGS="-g -fPIC ${EXTRA_CFLAGS}" ${SRCDIR}/configure --prefix=/ccs/proj/e2e/pnorbert/ADIOS/eos.$TARGET \
+          --disable-maintainer-mode \
           --enable-dependency-tracking \
           --with-cray-pmi=/opt/cray/pmi/default \
           --with-cray-ugni-incdir=/opt/cray/gni-headers/default/include \
           --with-cray-ugni-libdir=/opt/cray/ugni/default/lib64 \
+          --with-dataspaces=/ccs/proj/e2e/dataspaces/eos/1.6.1/$TARGET \
+          --with-dimes=/ccs/proj/e2e/dataspaces/eos/1.6.1/$TARGET \
             
 
 elif [ `hostname | cut -c 1-7` == "chester" ]; then
@@ -517,44 +467,48 @@ elif [ `hostname | cut -c 1-7` == "chester" ]; then
       module unload netcdf
       module unload netcdf-hdf5parallel
       module unload hdf5-parallel
-      module unload PrgEnv-gnu
-      module unload PrgEnv-pgi
-      module unload PrgEnv-intel
-      module unload PrgEnv-cray
-      module unload papi
-      module unload pmi
-      module load PrgEnv-$TARGET
-      module swap cray-libsci
       module swap craype-interlagos craype-istanbul
-      module load dataspaces/1.4.0
-      unset FLEXPATH
+      module load dataspaces/1.6.0
+      module load fastbit
+      WITHFASTBIT=""
+      WITHALACRITY=""
       if [ "$TARGET" == "pgi" ]; then
-          # NSSI needs -pgcpplibs flag 
+          export CC=pgcc
+          export FC=pgf90
+          export CXX=pgc++
+          export MPICC=cc
+          export MPIFC=ftn
+          export MPICXX=CC
+          # FASTBIT, ALACRITY need -pgcpplibs flag 
+          WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/xk6/pgi"
           export LDFLAGS="-pgcpplibs" 
           unset EXTRA_LIBS 
       elif [ "$TARGET" == "gnu" ]; then
-          # NSSI needs libstdc++
-          unset LDFLAGS 
-          export EXTRA_LIBS="/opt/gcc/4.7.1/snos/lib64/libstdc++.a"
+          export CC=gcc
+          export FC=gfortran
+          export CXX=g++
+          export MPICC=cc
+          export MPIFC=ftn
+          export MPICXX=CC
+          # FASTBIT, ALACRITY needs libstdc++
+          # PROBLEM: there is libstdc++.so and libtool uses that in any case leading to link error 
+          #WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/xk6/gnu"
+          #WITHFASTBIT="--with-fastbit=${FASTBIT_DIR}"
+          #export LDFLAGS="-static -static-libstdc++"
+          #export EXTRA_LIBS="${GCC_PATH}/snos/lib64/libstdc++.a"
           export FLEXPATH="--with-flexpath=/ccs/proj/e2e/chaos/titan/gnu"
           #module swap gcc gcc/4.4.4
       elif [ "$TARGET" == "cray" ]; then
           export EXTRA_CFLAGS="-h gnu"
+          WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/xk6/cray"
       else
           unset LDFLAGS 
           unset EXTRA_LIBS 
           unset EXTRA_CFLAGS 
       fi
-      #module load szip
-      #module load xt-papi
-      module load mxml
-      module load pmi
-      module load rca
-      # use the two lines below for openmpi
-      #export CC=mpicc
-      #export FC=mpif90
-      CFLAGS="-g -fPIC ${EXTRA_CFLAGS}" LDFLAGS="$CRAY_RCA_POST_LINK_OPTS" \
+      CFLAGS="-g -fPIC ${EXTRA_CFLAGS}" LDFLAGS="$LDFLAGS $CRAY_RCA_POST_LINK_OPTS" \
       ${SRCDIR}/configure --prefix=/ccs/proj/e2e/pnorbert/ADIOS/chester.$TARGET \
+          --disable-maintainer-mode \
           --enable-dependency-tracking \
           --with-cray-pmi=/opt/cray/pmi/default \
           --with-cray-ugni-incdir=/opt/cray/gni-headers/default/include \
@@ -562,6 +516,8 @@ elif [ `hostname | cut -c 1-7` == "chester" ]; then
           --with-dataspaces=$DATASPACES_DIR \
           --with-dimes=$DATASPACES_DIR \
           $FLEXPATH \
+          $WITHALACRITY \
+          $WITHFASTBIT \
           --without-infiniband 
 #            --with-lustre=/opt/xt-lustre-ss/2.2_1.6.5/usr \
 #            --with-dmalloc=/ccs/proj/e2e/qliu/dmalloc.$TARGET \
@@ -571,7 +527,6 @@ elif [ `hostname | cut -c 1-7` == "chester" ]; then
 #            --with-phdf5=/opt/cray/hdf5-parallel/1.8.4.1/hdf5-parallel-$TARGET \
 #            --with-hdf5=/sw/xt5/hdf5/1.8.2/cnl2.1_gnu7.2.3 \
 #            --with-hdf5=/sw/xt5/hdf5/1.8.2/cnl2.1_gnu4.2.0 \
-#            --with-mxml=/ccs/proj/e2e/pnorbert/mxml.xt5.$TARGET \
 #          --with-cray-ugni-incdir=/opt/cray/gni-headers/2.1-1.0400.4351.3.1.gem/include \
             
 
@@ -593,8 +548,8 @@ elif [ `hostname -f | cut -c 1-4` == "mira" ]; then
     export CC=xlc_r
 
     ${SRCDIR}/configure --prefix=/home/qliu/4se/ADIOS \
+            --disable-maintainer-mode \
             --enable-dependency-tracking \
-            --with-mxml=/home/qliu/mxml \
             --without-datatap --without-infiniband --with-bgq
 
 elif [ `hostname -f | cut -c 1-5` == "vesta" ]; then
@@ -609,29 +564,26 @@ elif [ `hostname -f | cut -c 1-5` == "vesta" ]; then
     export CC=bgxlc
 
     ${SRCDIR}/configure --prefix=/home/qliu/ADIOS \
+            --disable-maintainer-mode \
             --enable-dependency-tracking \
-            --with-mxml=/home/qliu/mxml \
             --without-datatap --without-infiniband --with-bgq
 
-elif [ `hostname | cut -c 1-6` == "edison" ]; then
+
+elif [ `hostname | cut -c 1-4` == "cori" ]; then
+
     ##########
-    # EDISON #
+    # CORI #
     ##########
     TARGET=`module list 2>&1 | grep "PrgEnv"- | sed "s/^.*PrgEnv-\([a-z]*\).*/\1/"`
-    echo "Configure on EDISON for $TARGET env."
+    echo "Configure on CORI for $TARGET env."
     export MPICC=cc
     export MPICXX=CC
     export MPIFC=ftn
+    module unload darshan
     module unload hdf5
     module unload netcdf
     module unload hdf5-parallel
     module unload netcdf-hdf5parallel
-    module unload PrgEnv-gnu
-    module unload PrgEnv-pgi
-    module unload PrgEnv-pathscale
-    module unload PrgEnv-cray
-    module load PrgEnv-$TARGET
-    module swap cray-libsci
     module load python
     WITHDART=""
     if [ "$TARGET" == "pgi" ]; then
@@ -639,90 +591,89 @@ elif [ `hostname | cut -c 1-6` == "edison" ]; then
         export CXX=pgCC
         export FC=pgf90
         export LDFLAGS="-pgcpplibs"
-        #WITHDART="--with-dataspaces=/global/homes/p/pnorbert/dataspaces/1.1.0/$TARGET"
     elif [ "$TARGET" == "gnu" ]; then
         export CC=gcc
         export CXX=g++
         export FC=gfortran
         export LDFLAGS=""
-        #WITHDART="--with-dataspaces=/global/homes/p/pnorbert/dataspaces/1.1.0/$TARGET"
     elif [ "$TARGET" == "intel" ]; then
         export CC=icc
         export CXX=icpc
         export FC=ifort
         export LDFLAGS=""
-        WITHDART=""
     elif [ "$TARGET" == "cray" ]; then
         export EXTRA_CFLAGS="-h gnu"
         export CC=cc
         export CXX=CC
         export FC=ftn
         export LDFLAGS=""
-        WITHDART=""
         export EXTRA_CFLAGS="-h gnu"
     else
-        echo "TARGET must be pgi or gnu or intel"
+        echo "TARGET must be one of [ pgi | gnu | intel | cray ]"
         exit 1
     fi
+
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-fPIC ${EXTRA_CFLAGS}"
-    ${SRCDIR}/configure --prefix=/global/homes/p/pnorbert/adios/master/edison/$TARGET \
+    ${SRCDIR}/configure --prefix=/global/homes/p/pnorbert/adios/1.10.0/cori/$TARGET \
+        --disable-maintainer-mode \
         --enable-dependency-tracking \
-        --with-mxml=$HOME/mxml/mxml.edison \
         --with-lustre=/usr \
-        $WITHDART \
         --with-cray-pmi-incdir=/opt/cray/pmi/default/include \
         --with-cray-pmi-libdir=/opt/cray/pmi/default/lib64 \
         --with-cray-ugni-incdir=/opt/cray/gni-headers/default/include \
         --with-cray-ugni-libdir=/opt/cray/ugni/default/lib64 \
-	--without-infiniband \
+        --without-infiniband \
         --without-hdf5 --without-netcdf
 
-elif [ `hostname | cut -c 1-6` == "hopper" ]; then
+elif [ `hostname | cut -c 1-6` == "edison" ]; then
     ##########
-    # Hopper #
+    # EDISON #
     ##########
     TARGET=`module list 2>&1 | grep "PrgEnv"- | sed "s/^.*PrgEnv-\([a-z]*\).*/\1/"`
-    echo "Configure on HOPPER for $TARGET env."
+    echo "Configure on EDISON for $TARGET env."
     export MPICC=cc
     export MPICXX=CC
-    export MPIFC=ftn
+    export MPIFC=ftn 
+    module unload darshan
+    module unload automake
+    module unload autoconf
     module unload hdf5
     module unload netcdf
     module unload hdf5-parallel
     module unload netcdf-hdf5parallel
-    #module unload PrgEnv-gnu
-    #module unload PrgEnv-pgi
-    #module unload PrgEnv-pathscale
-    #module unload PrgEnv-cray
-    #module load PrgEnv-$TARGET
-    #module swap cray-libsci
+    module unload PrgEnv-gnu
+    module unload PrgEnv-pgi
+    module unload PrgEnv-pathscale
+    module unload PrgEnv-cray
+    module load PrgEnv-$TARGET
+    module swap cray-libsci
+    module unload darshan
+    module load automake/1.15
+    module load autoconf
     module load python
+    WITHDART=""
     if [ "$TARGET" == "pgi" ]; then
         export CC=pgcc
         export CXX=pgCC
         export FC=pgf90
         export LDFLAGS="-pgcpplibs"
-        WITHDART="--with-dataspaces=/global/homes/p/pnorbert/dataspaces/1.1.0/$TARGET"
     elif [ "$TARGET" == "gnu" ]; then
         export CC=gcc
         export CXX=g++
         export FC=gfortran
         export LDFLAGS=""
-        WITHDART="--with-dataspaces=/global/homes/p/pnorbert/dataspaces/1.1.0/$TARGET"
     elif [ "$TARGET" == "intel" ]; then
         export CC=icc
         export CXX=icpc
         export FC=ifort
         export LDFLAGS=""
-        WITHDART=""
     elif [ "$TARGET" == "cray" ]; then
         export EXTRA_CFLAGS="-h gnu"
         export CC=cc
         export CXX=CC
         export FC=ftn
         export LDFLAGS=""
-        WITHDART=""
         export EXTRA_CFLAGS="-h gnu"
     else
         echo "TARGET must be pgi or gnu or intel"
@@ -730,86 +681,76 @@ elif [ `hostname | cut -c 1-6` == "hopper" ]; then
     fi
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-fPIC ${EXTRA_CFLAGS}"
-    ${SRCDIR}/configure --prefix=/project/projectdirs/m499/adios/devel-hopper-$TARGET \
+    ${SRCDIR}/configure --prefix=/global/homes/p/pnorbert/adios/master/edison/$TARGET \
+        --disable-maintainer-mode \
         --enable-dependency-tracking \
-        --with-mxml=$HOME/mxml/mxml.hopper \
         --with-lustre=/usr \
-        $WITHDART \
         --with-cray-pmi-incdir=/opt/cray/pmi/default/include \
         --with-cray-pmi-libdir=/opt/cray/pmi/default/lib64 \
         --with-cray-ugni-incdir=/opt/cray/gni-headers/default/include \
         --with-cray-ugni-libdir=/opt/cray/ugni/default/lib64 \
-	--without-infiniband \
+    	--without-infiniband \
         --without-hdf5 --without-netcdf
 
-
-elif [ `hostname | cut -c 1-6` == "kraken" ]; then
-    ##########
-    # Kraken #
-    ##########
-    source /opt/modules/default/etc/modules.sh
-    TARGET=`module list 2>&1 | grep PrgEnv | sed "s/^.*Env-\([a-z]*\).*/\1/"`
-
-    if [ -z "$TARGET" ]; then
-        echo "Cannot determine Programming environment. Exit"
-        exit 1
-    fi
-    echo ""
-    echo "Configure KRAKEN for the $TARGET compiler"
-    echo ""
-    export CC=cc
-    export FC=ftn
-    export CXX=CC
-    module unload szip
-    module unload hdf5
-    module unload netcdf
-    module unload hdf5-parallel
-    module unload netcdf-hdf5parallel
-    module unload xt-papi
-    module unload papi
-    if [ "$TARGET" == "pgi" ]; then
-        #module swap pgi pgi/10.4.0
-        # NSSI needs -pgcpplibs flag 
-        export EXTRA_LIBS=""
-        export LDFLAGS="-pgcpplibs" 
-    elif [ "$TARGET" == "gnu" ]; then
-        # NSSI needs libstdc++
-        export EXTRA_LIBS="/opt/gcc/4.4.4/snos/lib64/libstdc++.a"
-        export LDFLAGS="" 
-        #module swap gcc gcc/4.4.4
-    fi
-
-    module load szip
-    module load mxml
-    module load subversion
-    export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK" 
-    export CFLAGS="-fPIC -g -O0" 
-    ${SRCDIR}/configure --prefix=/${HOME}/adios/$TARGET \
-        --enable-dependency-tracking \
-        --with-portals=yes \
-        --without-netcdf --without-nc4par --without-hdf5 --without-phdf5 \
-        --with-dataspaces=${HOME}/dataspaces/1.3.0/$TARGET
-
-
 elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ]; then
 
     #######
     # Mac #
     #######
     echo "Configure on Mac"
-    # Installed MacPorts and GCC4.4 and OpenMPI 1.4.2 ports 
-    # But should work with default mpicc and gcc, using --disable-fortran
-    export CC=/opt/local/bin/gcc-mp-4.4
-    export FC=/opt/local/bin/gfortran-mp-4.4
-    export CXX=/opt/local/bin/g++-mp-4.4
-    export MPICC=/opt/local/bin/openmpicc
-    export MPIFC=/opt/local/bin/openmpif90
-    export MPICXX=/opt/local/bin/openmpicxx
-    CFLAGS="-g -DO_LARGEFILE=0 -fno-common" ${SRCDIR}/configure --prefix=/opt/adios \
-        --with-mxml=/opt/mxml \
-        --with-netcdf=/opt/netcdf \
-        --with-phdf5=/opt/hdf5 \
-        --with-hdf5=/opt/hdf5.seq
+    #   but using Apple's default gcc compiler
+#    export OMPI_CC=$CC
+#    export OMPI_FC=$FC
+#    export OMPI_CXX=$CXX
+    # 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
+    #
+    USE_GCC5=false
+    if [ $USE_GCC5 == "true" ]; then
+        # If want to use gcc/gfortran 5.3.0
+        export CC=/usr/local/bin/gcc-5
+        export CXX=/usr/local/bin/g++-5
+        export FC=/usr/local/bin/gfortran
+        export OMPI_CC=/usr/local/bin/gcc-5
+        export OMPI_CXX=/usr/local/bin/g++-5
+        export OMPI_FC=/usr/local/bin/gfortran
+        export WITHALACRITY="--with-alacrity=/opt/alacrity/gcc5"
+        export WITHFASTBIT="--without-fastbit"
+        # 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" 
+        echo "Configure using gcc-5"
+    else
+        # If want to use clang C/C++ and gfortran 5.3.0
+        export CC=/usr/bin/gcc
+        export CXX=/usr/bin/g++
+        export FC=/usr/local/bin/gfortran
+        unset OMPI_CC
+        unset OMPI_CXX
+        unset OMPI_FC
+        export WITHALACRITY="--with-alacrity=/opt/alacrity/clang"
+        export WITHFASTBIT="--with-fastbit=/opt/fastbit"
+        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++
+        # Manual fix: use mpif90 for that build command, or use "gfortran ... -Wl,-flat_namespace" command
+    fi
+    # The rest is common for all
+    export MPICC=/usr/local/bin/mpicc
+    export MPIFC=/usr/local/bin/mpif90
+    export MPICXX=/usr/local/bin/mpicxx
+
+    export CFLAGS="-g -O0 -DO_LARGEFILE=0 -fno-common -Wall" 
+    export CXXFLAGS="-g -O0"
+    export FCFLAGS="-g -O0"
+    ${SRCDIR}/configure --prefix=/opt/adios --disable-shared \
+        --with-zlib \
+        ${WITHALACRITY} \
+        ${WITHFASTBIT} \
+        --with-phdf5=/usr/local 
+    #    --disable-mpi --disable-write --disable-fortran \
+    #        --with-netcdf=/opt/netcdf \
+    #        --with-hdf5=/opt/hdf5.seq
 
 
 elif [ `hostname | cut -c 1-7` == "ubuntu" ]; then
@@ -821,7 +762,6 @@ elif [ `hostname | cut -c 1-7` == "ubuntu" ]; then
     export CC=mpicc
     ${SRCDIR}/configure --prefix=/usr/local/adios \
         --enable-dependency-tracking \
-        --with-mxml=/usr/local/adios 
         #--with-hdf5=/usr/local/hdf5-serial\
         #--with-phdf5=/usr/local \
         #--with-netcdf=/usr 
@@ -837,7 +777,6 @@ elif [ `hostname | cut -c 1-7` == "nostril" ]; then
     export CFLAGS="-fPIC"
     ${SRCDIR}/configure --prefix=/apps/adios/trunk \
         --enable-dependency-tracking \
-        --with-mxml=/usr \
         --without-netcdf --without-nc4par --without-hdf5 --without-phdf5
         #--with-hdf5=/usr/local/hdf5-serial\
         #--with-phdf5=/usr/local \
@@ -852,7 +791,6 @@ elif [ `hostname | cut -c 1-6` == "tomato" ]; then
     export CC=mpicc
     ${SRCDIR}/configure --prefix=/home/thkorde/local \
         --enable-dependency-tracking \
-        --with-mxml=/home/thkorde/local \
         --with-phdf5=/home/thkorde/local \
         --with-hdf5=/home/thkorde/local \
         --with-netcdf=/home/thkorde/local
@@ -868,8 +806,7 @@ elif [ `hostname | cut -c 1-4` == "qliu" ]; then
     export CFLAGS="-g -O0 -fPIC"
     ${SRCDIR}/configure --prefix=/home/qliu/ADIOS \
         --enable-dependency-tracking \
-        --with-mxml=/home/qliu/mxml \
-    --with-phdf5=/home/thkorde/local \
+        --with-phdf5=/home/thkorde/local \
         #--with-hdf5=/home/thkorde/local \
         #--with-netcdf=/home/thkorde/local
 
@@ -888,7 +825,6 @@ elif [ `hostname | cut -c 1-2` == "ln" ]; then
 
     ${SRCDIR}/configure --prefix=/vol6/home/Jeremy/adios-install \
         --enable-dependency-tracking \
-        --with-mxml=/vol6/home/Jeremy/mxml-install \
         --enable-skel-timing \
         --disable-maintainer-mode 
 
@@ -902,6 +838,26 @@ elif [ `hostname | cut -c 1-2` == "ln" ]; then
         #--with-isobar=/opt/isobar \
         #--with-flexpath=/opt/chaos
 
+elif [ `hostname | cut -c 1-9` == "PC0098504" ]; then
+
+    #######################
+    #      Linux PC       # 
+    #######################
+    echo "Configure on Linux PC."
+    export MPICC=mpicc
+    export MPICXX=mpicxx
+    export MPIFC=mpif90
+    export CC=gcc
+    export CXX=g++
+    export FC=gfortran
+    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 \
+        --enable-dependency-tracking \
+        --enable-timers \
+        --disable-timer-events 
+
 elif [ `hostname | cut -c 1-7` == "adiosVM" ]; then
 
     #######################
@@ -916,22 +872,22 @@ 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.9 \
+    ${SRCDIR}/configure --prefix=/opt/adios/1.10 \
         --disable-maintainer-mode \
         --enable-dependency-tracking \
-        --with-mxml=/opt/mxml \
+        --enable-timers \
+        --disable-timer-events \
         --with-zlib \
         --with-bzip2 \
         --with-szip=/opt/szip \
         --with-isobar=/opt/isobar \
         --with-flexpath=/opt/chaos \
+        --with-dataspaces=/opt/dataspaces --without-infiniband \
         --with-fastbit=/opt/fastbit \
-        --with-hdf5=/opt/hdf5-1.8.12 \
-        --with-phdf5=/opt/hdf5-1.8.12-parallel \
-        --with-netcdf=/opt/netcdf-4.3.0 \
-        --enable-timers \
-        --disable-timer-events
-
+        --with-alacrity=/opt/alacrity \
+        --with-hdf5=/opt/hdf5-1.8.17 \
+        --with-phdf5=/opt/hdf5-1.8.17-parallel \
+        --with-netcdf=/opt/netcdf-4.4.0 \
 
 
 else
diff --git a/scripts/FindADIOS.cmake b/scripts/FindADIOS.cmake
index 9071655..074cf74 100644
--- a/scripts/FindADIOS.cmake
+++ b/scripts/FindADIOS.cmake
@@ -99,11 +99,11 @@ if(ADIOS_FIND_COMPONENTS)
     foreach(COMP ${ADIOS_FIND_COMPONENTS})
         string(TOLOWER ${COMP} comp)
         if(comp STREQUAL "fortran")
-            set(OPTLIST ${OPTLIST} f)
+            set(OPTLIST "${OPTLIST}f")
         elseif(comp STREQUAL "readonly")
-            set(OPTLIST ${OPTLIST} r)
+            set(OPTLIST "${OPTLIST}r")
         elseif(comp STREQUAL "sequential")
-            set(OPTLIST ${OPTLIST} s)
+            set(OPTLIST "${OPTLIST}s")
         else()
             message("ADIOS component ${COMP} is not supported. Please use fortran, readonly, or sequential")
         endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 727f8ba..c332765 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,16 @@
+
+# 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)
+endif(BUILD_MXML)
+
 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)
@@ -105,6 +115,7 @@ set(query_common_HDRS query/common_query.h
 
 set(query_common_SOURCES ${query_common_HDRS}
                          query/common_query.c
+                         query/common_query_read.c
                          query/adios_query_hooks.c
                          query/query_utils.c)
 
@@ -149,6 +160,9 @@ if(BUILD_WRITE)
                      ${transforms_write_SOURCES} 
                      ${query_C_SOURCES}
                      core/util.c 
+                     core/strutil.c 
+                     core/a2sel.c 
+                     core/adios_clock.c 
                      core/qhashtbl.c 
                      read/read_bp.c 
                      read/read_bp_staged.c 
@@ -157,7 +171,6 @@ if(BUILD_WRITE)
                      write/adios_mpi_lustre.c
                      write/adios_mpi_amr.c
                      write/adios_posix.c
-                     write/adios_posix1.c
                      write/adios_var_merge.c)
 
     if(HAVE_BGQ)
@@ -191,12 +204,14 @@ if(BUILD_WRITE)
                      core/adios_socket.c 
                      core/adios_logger.c 
                      core/util.c 
+                     core/strutil.c 
+                     core/a2sel.c 
+                     core/adios_clock.c 
                      core/qhashtbl.c 
                      read/read_bp.c 
                      read/read_bp_staged.c 
                      read/read_bp_staged1.c 
-                     write/adios_posix.c 
-                     write/adios_posix1.c)
+                     write/adios_posix.c)
 
 #start adiosf.a and adiosf_v1.a
     if(BUILD_FORTRAN)
@@ -224,12 +239,14 @@ if(BUILD_WRITE)
                        core/adios_socket.c 
                        core/adios_logger.c 
                        core/util.c 
+                       core/strutil.c 
+                       core/a2sel.c 
+                       core/adios_clock.c 
                        core/qhashtbl.c 
                        read/read_bp.c 
                        read/read_bp_staged.c 
                        read/read_bp_staged1.c 
-                       write/adios_posix.c 
-                       write/adios_posix1.c)
+                       write/adios_posix.c)
 
         set(FortranLibMPISources write/adios_mpi.c
                          write/adios_mpi_lustre.c
@@ -371,8 +388,13 @@ if(BUILD_WRITE)
     endif(RESEARCH_TRANSPORTS)
 
 # add library adios and adios_nompi
-    add_library(adios STATIC ${libadios_a_SOURCES})
-    add_library(adios_nompi STATIC ${libadios_nompi_a_SOURCES})
+    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)
     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}")
@@ -447,10 +469,17 @@ 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
-        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})
+        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)
         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}")
@@ -496,6 +525,9 @@ set(libadiosread_a_SOURCES core/adios_bp_v1.c
                       core/adios_read_hooks.c 
                       core/adios_logger.c 
                       core/util.c 
+                      core/strutil.c 
+                      core/a2sel.c
+                      core/adios_clock.c 
                       core/qhashtbl.c 
                       read/read_bp.c 
                       read/read_bp_staged.c 
@@ -561,6 +593,9 @@ if(BUILD_FORTRAN)
                       core/adios_read_hooks.c 
                       core/adios_logger.c 
                       core/util.c 
+                      core/strutil.c 
+                      core/a2sel.c
+                      core/adios_clock.c 
                       core/qhashtbl.c 
                       read/read_bp.c 
                       read/read_bp_staged.c 
@@ -682,6 +717,9 @@ set(libadiosread_nompi_a_SOURCES core/mpidummy.c
                       core/adios_read_hooks.c 
 #                      core/adios_transport_hooks.c 
                       core/util.c 
+                      core/strutil.c 
+                      core/a2sel.c
+                      core/adios_clock.c 
                       core/qhashtbl.c 
                       read/read_bp.c)
 
@@ -742,6 +780,9 @@ if(BUILD_FORTRAN)
                           core/globals.c 
                           core/adios_read_hooks.c 
                           core/util.c 
+                          core/strutil.c 
+                          core/a2sel.c
+                          core/adios_clock.c 
                           core/qhashtbl.c 
                           read/read_bp.c)
     if(HAVE_DATASPACES)
@@ -804,6 +845,9 @@ set(libadios_internal_nompi_a_SOURCES core/mpidummy.c
                                     core/adios_logger.c 
                                     core/adios_timing.c 
                                     core/util.c 
+                                    core/strutil.c 
+                                    core/a2sel.c
+                                    core/adios_clock.c 
                                     core/qhashtbl.c 
                                     core/futils.c 
                                     core/adios_transport_hooks.c)
@@ -815,7 +859,11 @@ endif(BUILD_WRITE)
 
 set(libadios_internal_nompi_a_CPPFLAGS "${MACRODEFFLAG}_INTERNAL ${ADIOSLIB_EXTRA_CPPFLAGS} ${ADIOSLIB_INT_CPPFLAGS} ${ADIOSLIB_CPPFLAGS}")
 
-add_library(adios_internal_nompi ${libadios_internal_nompi_a_SOURCES})
+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)
 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 b310a41..d1bc164 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,36 +1,54 @@
 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
+if BUILD_MXML
+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}   \
+                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-entity.${OBJEXT}   \
+                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-index.${OBJEXT}    \
+                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-search.${OBJEXT}   \
+                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-file.${OBJEXT}     \
+                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-node.${OBJEXT}     \
+                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-set.${OBJEXT} 
+endif BUILD_MXML
+
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 METASOURCES=AUTO
 
 bin_PROGRAMS=
-if HAVE_NSSI
-
-bin_PROGRAMS+=nssi-staging-server
-
-nssi_staging_server_SOURCES = nssi/nssi_staging_server.cpp nssi/aggregation.cpp
-nssi_staging_server_CFLAGS=$(ADIOSLIB_CFLAGS)
-nssi_staging_server_CPPFLAGS=$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
-nssi_staging_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
-nssi_staging_server_LDADD = $(top_builddir)/src/libadios.a
-nssi_staging_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
-
-bin_PROGRAMS+=nssi-coupling-server
-
-nssi_coupling_server_SOURCES = nssi/nssi_coupling_server.cpp
-nssi_coupling_server_CFLAGS=$(ADIOSLIB_CFLAGS)
-nssi_coupling_server_CPPFLAGS=$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL # $(MACRODEFFLAG)USE_TIMERS
-nssi_coupling_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
-nssi_coupling_server_LDADD = $(top_builddir)/src/libadios.a
-nssi_coupling_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
-
-endif # HAVE_NSSI
+#if HAVE_NSSI
+#
+#bin_PROGRAMS+=nssi-staging-server
+#
+#nssi_staging_server_SOURCES = nssi/nssi_staging_server.cpp nssi/aggregation.cpp
+#nssi_staging_server_CFLAGS=$(ADIOSLIB_CFLAGS)
+#nssi_staging_server_CPPFLAGS=$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#nssi_staging_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+#nssi_staging_server_LDADD = $(top_builddir)/src/libadios.a
+#nssi_staging_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
+#
+#bin_PROGRAMS+=nssi-coupling-server
+#
+#nssi_coupling_server_SOURCES = nssi/nssi_coupling_server.cpp
+#nssi_coupling_server_CFLAGS=$(ADIOSLIB_CFLAGS)
+#nssi_coupling_server_CPPFLAGS=$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL # $(MACRODEFFLAG)USE_TIMERS
+#nssi_coupling_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+#nssi_coupling_server_LDADD = $(top_builddir)/src/libadios.a
+#nssi_coupling_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
+#
+#endif # HAVE_NSSI
 
 CLEANFILES= 
 include_HEADERS=
 nodist_include_HEADERS=
 lib_LIBRARIES=
 
+EXTRA_DEPENDENCY_CPPFLAGS=
+
 libadiosread_a_CPPFLAGS=$(AM_CPPFLAGS)
 libadiosreadf_a_CPPFLAGS=$(AM_CPPFLAGS)
 libadiosread_nompi_a_CPPFLAGS=$(AM_CPPFLAGS)
@@ -69,6 +87,7 @@ transforms_write_HDRS = core/transforms/adios_transforms_write.h \
                         core/transforms/adios_transforms_hooks_write.h \
                         core/transforms/adios_transforms_specparse.h
 
+
 transforms_common_SOURCES = $(transforms_common_HDRS) \
                             core/transforms/adios_transforms_common.c \
                             core/transforms/adios_transforms_hooks.c \
@@ -103,6 +122,7 @@ transforms_write_SOURCES = $(transforms_write_HDRS) \
 query_common_HDRS = query/common_query.h query/adios_query_hooks.h query/query_utils.h
 query_common_SOURCES = $(query_common_HDRS) \
                        query/common_query.c  \
+                       query/common_query_read.c  \
                        query/adios_query_hooks.c \
                        query/query_utils.c
 
@@ -119,230 +139,312 @@ query_SOURCES      = $(query_common_SOURCES) \
 query_C_SOURCES    = $(query_SOURCES) query/adios_query.c
 query_F_SOURCES    = $(query_SOURCES) query/adiosf_query.c
 
-if BUILD_WRITE
-lib_LIBRARIES += libadios.a libadios_nompi.a
-libadios_a_SOURCES = core/adios.c \
-                     core/common_adios.c \
-                     core/adios_internals.c \
-                     core/adios_internals_mxml.c \
-                     core/buffer.c \
-                     core/adios_bp_v1.c  \
-                     core/adios_endianness.c \
-                     core/bp_utils.c \
-                     core/futils.c \
-                     core/adios_error.c \
-                     core/adios_read.c \
-                     core/adios_read_v1.c \
-                     core/common_read.c \
-                     core/adios_infocache.c \
-                     core/adios_read_ext.c \
-                     core/globals.c \
-                     core/adios_timing.c \
-                     core/adios_read_hooks.c \
-                     core/adios_transport_hooks.c \
-                     core/adios_socket.c \
-                     core/adios_logger.c \
-                     core/util.c \
-                     core/qhashtbl.c \
-                     $(transforms_common_SOURCES) \
-                     $(transforms_read_SOURCES) \
-                     $(transforms_write_SOURCES) \
-                     $(query_C_SOURCES) \
-                     read/read_bp.c \
-                     read/read_bp_staged.c \
-                     read/read_bp_staged1.c \
-                     write/adios_mpi.c \
-                     write/adios_mpi_lustre.c \
-                     write/adios_mpi_amr.c \
-                     write/adios_posix.c \
-                     write/adios_posix1.c \
-                     write/adios_var_merge.c 
-if HAVE_BGQ
-libadios_a_SOURCES += write/adios_mpi_bgq.c 
-endif
-libadios_nompi_a_SOURCES = core/adios.c \
-                     core/common_adios.c \
-                     core/adios_internals.c \
-                     core/adios_internals_mxml.c \
-                     $(transforms_common_SOURCES) \
-                     $(transforms_read_SOURCES) \
-                     $(transforms_write_SOURCES) \
-                     $(query_C_SOURCES) \
-                     core/buffer.c \
-                     core/adios_bp_v1.c  \
-                     core/adios_endianness.c \
-                     core/bp_utils.c \
-                     core/futils.c \
-                     core/adios_error.c \
-                     core/adios_read.c \
-                     core/adios_read_v1.c \
-                     core/common_read.c \
-                     core/adios_infocache.c \
-                     core/adios_read_ext.c \
-                     core/globals.c \
-                     core/mpidummy.c \
-                     core/adios_timing.c \
-                     core/adios_read_hooks.c \
-                     core/adios_transport_hooks.c \
-                     core/adios_socket.c \
-                     core/adios_logger.c \
-                     core/util.c \
-                     core/qhashtbl.c \
-                     read/read_bp.c \
-                     read/read_bp_staged.c \
-                     read/read_bp_staged1.c \
-                     write/adios_posix.c \
-                     write/adios_posix1.c 
-
 
+noinst_LIBRARIES = libcoreonce.a 
+libcoreonce_a_SOURCES = core/a2sel.c \
+                            core/adios_bp_v1.c \
+                            core/adios_clock.c \
+                            core/adios_endianness.c \
+                            core/adios_error.c \
+                            core/adios_infocache.c \
+                            core/adios_logger.c \
+                            core/adios_socket.c \
+                            core/buffer.c \
+                            core/futils.c \
+                            core/globals.c \
+                            core/qhashtbl.c \
+                            core/strutil.c \
+                            core/util.c \
+                            $(transforms_common_SOURCES) \
+                            $(transforms_write_SOURCES) \
+                            $(transforms_read_SOURCES) 
+
+libcoreonce_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_SEQ_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+
+
+####################
+#  WRITE libraries #
+####################
 
-if BUILD_FORTRAN
-lib_LIBRARIES += libadiosf.a libadiosf_v1.a libadiosf_nompi.a libadiosf_nompi_v1.a
-FortranLibSources = core/adiosf.c \
-                     core/common_adios.c \
-                     core/adios_internals.c \
-                     core/adios_internals_mxml.c \
-                     $(transforms_common_SOURCES) \
-                     $(transforms_read_SOURCES) \
-                     $(transforms_write_SOURCES) \
-                     $(query_F_SOURCES) \
-                     core/buffer.c \
-                     core/adios_bp_v1.c  \
-                     core/adios_endianness.c\
-                     core/futils.c \
-                     core/adios_error.c \
-                     core/bp_utils.c \
-                     core/common_read.c \
-                     core/adios_infocache.c \
-                     core/adios_read_ext.c \
-                     core/globals.c \
-                     core/adios_timing.c \
-                     core/adios_read_hooks.c \
-                     core/adios_transport_hooks.c \
-                     core/adios_socket.c \
-                     core/adios_logger.c \
-                     core/util.c \
-                     core/qhashtbl.c \
-                     read/read_bp.c \
-                     read/read_bp_staged.c \
-                     read/read_bp_staged1.c \
-                     write/adios_posix.c \
-                     write/adios_posix1.c 
-
-FortranLibMPISources =  write/adios_mpi.c \
-                     write/adios_mpi_lustre.c \
-                     write/adios_mpi_amr.c \
-                     write/adios_var_merge.c
-if HAVE_BGQ
-FortranLibMPISources += write/adios_mpi_bgq.c  
-endif
-FortranLibSEQSources = core/mpidummy.c
+if BUILD_WRITE
 
-endif # BUILD_FORTRAN
+CLibSources =           core/adios.c \
+                        core/common_adios.c \
+                        core/adios_internals.c \
+                        core/adios_internals_mxml.c \
+                        $(query_C_SOURCES) \
+                        core/bp_utils.c \
+                        core/adios_read.c \
+                        core/adios_read_v1.c \
+                        core/common_read.c \
+                        core/adios_read_ext.c \
+                        core/adios_timing.c \
+                        core/adios_read_hooks.c \
+                        core/adios_transport_hooks.c \
+                        core/util_mpi.c \
+                        read/read_bp.c \
+                        read/read_bp_staged.c \
+                        read/read_bp_staged1.c \
+                        write/adios_posix.c 
+
+CLibParallelSources =   write/adios_mpi.c \
+                        write/adios_mpi_lustre.c \
+                        write/adios_mpi_amr.c \
+                        write/adios_var_merge.c 
+
+CLibSEQSources =        core/mpidummy.c
+
+FortranLibSources =     core/adiosf.c \
+                        core/common_adios.c \
+                        core/adios_internals.c \
+                        core/adios_internals_mxml.c \
+                        $(query_F_SOURCES) \
+                        core/bp_utils.c \
+                        core/common_read.c \
+                        core/adios_infocache.c \
+                        core/adios_read_ext.c \
+                        core/adios_timing.c \
+                        core/adios_read_hooks.c \
+                        core/adios_transport_hooks.c \
+                        core/util_mpi.c \
+                        read/read_bp.c \
+                        read/read_bp_staged.c \
+                        read/read_bp_staged1.c \
+                        write/adios_posix.c 
+
+FortranLibParallelSources =  write/adios_mpi.c \
+                        write/adios_mpi_lustre.c \
+                        write/adios_mpi_amr.c \
+                        write/adios_var_merge.c
+
+FortranLibSEQSources =  core/mpidummy.c
 
-libadios_a_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
-libadios_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
-libadios_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_SEQ_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
-libadios_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
-libadiosf_a_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
-libadiosf_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
-libadiosf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_SEQ_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
-libadiosf_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
-
-if HAVE_DATASPACES
-libadios_a_SOURCES += write/adios_dataspaces.c read/read_dataspaces.c
-#libadios_nompi_a_SOURCES += write/adios_dataspaces.c read/read_dataspaces.c
+if HAVE_FLEXPATH
+CLibSources += write/adios_flexpath.c  read/read_flexpath.c
 if BUILD_FORTRAN
-FortranLibMPISources += write/adios_dataspaces.c read/read_dataspaces.c
+FortranLibSources += write/adios_flexpath.c read/read_flexpath.c
 endif
 endif
 
-if HAVE_DIMES
-libadios_a_SOURCES += write/adios_dimes.c read/read_dimes.c
-#libadios_nompi_a_SOURCES += write/adios_dimes.c read/read_dimes.c
+if HAVE_ICEE
+CLibSources += write/adios_icee.c  read/read_icee.c
 if BUILD_FORTRAN
-FortranLibMPISources += write/adios_dimes.c read/read_dimes.c
+FortranLibSources += write/adios_icee.c read/read_icee.c
 endif
 endif
 
-if HAVE_DATATAP
-libadios_a_SOURCES += write/adios_datatap.c read/read_datatap.c
-libadios_nompi_a_SOURCES += write/adios_datatap.c read/read_datatap.c
+if HAVE_BGQ
+CLibParallelSources += write/adios_mpi_bgq.c 
 if BUILD_FORTRAN
-FortranLibSources += write/adios_datatap.c read/read_datatap.c
-endif
+FortranLibParallelSources += write/adios_mpi_bgq.c  
+endif 
+endif 
+
+if HAVE_DATASPACES
+CLibParallelSources += write/adios_dataspaces.c read/read_dataspaces.c
+if BUILD_FORTRAN
+FortranLibParallelSources += write/adios_dataspaces.c read/read_dataspaces.c
+endif 
 endif 
 
+if HAVE_DIMES
+CLibParallelSources += write/adios_dimes.c read/read_dimes.c
+if BUILD_FORTRAN
+FortranLibParallelSources += write/adios_dimes.c read/read_dimes.c
+endif 
+endif 
 
 if HAVE_PHDF5
-libadios_a_SOURCES += write/adios_phdf5.c 
-PHDF5_CPPFLAGS += $(MACRODEFFLAG)PHDF5 $(MACRODEFFLAG)H5_USE_16_API 
-libadios_a_CPPFLAGS += $(PHDF5_CPPFLAGS)
+CLibParallelSources += write/adios_phdf5.c 
+EXTRA_DEPENDENCY_CPPFLAGS += $(MACRODEFFLAG)PHDF5 $(MACRODEFFLAG)H5_USE_16_API 
 if BUILD_FORTRAN
-FortranLibMPISources += write/adios_phdf5.c 
-libadiosf_a_CPPFLAGS += $(PHDF5_CPPFLAGS)
+FortranLibParallelSources += write/adios_phdf5.c 
 endif
 endif
 
 if HAVE_NC4PAR
-libadios_a_SOURCES += write/adios_nc4.c 
+CLibParallelSources += write/adios_nc4.c 
 if BUILD_FORTRAN
-FortranLibMPISources += write/adios_nc4.c 
+FortranLibParallelSources += write/adios_nc4.c 
 endif
 endif
 
+#if HAVE_DATATAP
+#CLibSources += write/adios_datatap.c read/read_datatap.c
+#if BUILD_FORTRAN
+#FortranLibSources += write/adios_datatap.c read/read_datatap.c
+#endif
+#endif 
+
 if HAVE_FLEXPATH
-libadios_a_SOURCES += write/adios_flexpath.c  read/read_flexpath.c
-libadios_nompi_a_SOURCES += write/adios_flexpath.c  read/read_flexpath.c
+CLibSources += write/adios_flexpath.c  read/read_flexpath.c
 if BUILD_FORTRAN
 FortranLibSources += write/adios_flexpath.c read/read_flexpath.c
 endif
 endif
 
 if HAVE_ICEE
-libadios_a_SOURCES += write/adios_icee.c read/read_icee.c
-libadios_nompi_a_SOURCES += write/adios_icee.c  read/read_icee.c
+CLibSources += write/adios_icee.c read/read_icee.c
 if BUILD_FORTRAN
 FortranLibSources += write/adios_icee.c read/read_icee.c
 endif
 endif
 
-if HAVE_NSSI
-dist_libadios_a_SOURCES = nssi/adios_nssi_args.x
-nodist_libadios_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
-libadios_a_SOURCES += nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
-libadios_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#if HAVE_NSSI
+#dist_libadios_a_SOURCES = nssi/adios_nssi_args.x
+#nodist_libadios_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#CLibSources += nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
+#libadios_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#if BUILD_FORTRAN
+#nodist_libadiosf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#dist_libadiosf_a_SOURCES = nssi/adios_nssi_args.x
+#FortranLibSources += nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
+#libadiosf_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#endif
+#
+## The next line forces automake to build adios_nssi_args.[ch] before compiling adios_nssi_config.c
+## Note, the order of dist_*SOURCES and nodist_*SOURCES above should but does not solve this alone.
+#adios_nssi_config.c: adios_nssi_args.c
+#
+#adios_nssi_args.h:  $(srcdir)/nssi/adios_nssi_args.x Makefile.am
+#        rm -f $@
+###        @echo "#include <lwfs/lwfs_config.h>" >> $@
+###        @echo "#ifndef LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
+###        @echo "#define LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
+###        @echo "struct sockaddr_in { " >> $@
+###        @echo '  int a;' >> $@
+###        @echo '};' >> $@
+###        @echo '#endif' >> $@;
+#        rpcgen -h $(srcdir)/nssi/adios_nssi_args.x >> $@
+#
+#adios_nssi_args.c: adios_nssi_args.h 
+#        rm -f adios_nssi_args.c
+#        rpcgen -c $(srcdir)/nssi/adios_nssi_args.x \
+#                | grep -v "include \"\.\." > adios_nssi_args.c
+#
+#CLEANFILES += adios_nssi_args.c adios_nssi_args.h
+#
+#endif # HAVE_NSSI
+
+
+
+#
+# Rules to build Sequential C+Fortran write libraries
+#
+
+#
+#    Sequential C write library
+#
+lib_LIBRARIES += libadios_nompi.a
+libadios_nompi_a_SOURCES = $(CLibSources) $(CLibSEQSources)
+libadios_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_SEQ_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+libadios_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
+libadios_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
+if BUILD_MXML
+libadios_nompi_a_LIBADD += ${MXML_OBJECTS} 
+endif
+# force building the noinst_LIBRARIES first, before libadios_nompi.a
+EXTRA_libadios_nompi_a_DEPENDENCIES = libcoreonce.a 
+if !RESEARCH_TRANSPORTS
+libadios_nompi_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+endif !RESEARCH_TRANSPORTS
+
+#
+#    Sequential Fortran write library
+#
 if BUILD_FORTRAN
-nodist_libadiosf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
-dist_libadiosf_a_SOURCES = nssi/adios_nssi_args.x
-FortranLibSources += nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
-libadiosf_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+lib_LIBRARIES += libadiosf_nompi.a libadiosf_nompi_v1.a
+libadiosf_nompi_a_SOURCES = $(FortranLibSources) $(FortranLibSEQSources) core/adiosf_read.c
+libadiosf_nompi_v1_a_SOURCES = $(FortranLibSources) $(FortranLibSEQSources) core/adiosf_read_v1.c
+libadiosf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_SEQ_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+libadiosf_nompi_v1_a_CPPFLAGS = $(libadiosf_nompi_a_CPPFLAGS) 
+libadiosf_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
+libadiosf_nompi_v1_a_CFLAGS = $(libadiosf_nompi_a_CFLAGS) 
+libadiosf_nompi_a_SOURCES += core/adiosf_defs_mod.f90 \
+                             core/adiosf_write_mod.f90 \
+                             core/adiosf_read_mod.f90  \
+                             query/adios_query_mod.f90
+libadiosf_nompi_v1_a_SOURCES += core/adiosf_defs_mod.f90 \
+                                core/adiosf_write_mod.f90 
+
+libadiosf_nompi_a_LIBADD =  $(libcoreonce_a_OBJECTS)
+libadiosf_nompi_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+if BUILD_MXML
+libadiosf_nompi_a_LIBADD += ${MXML_OBJECTS}
+libadiosf_nompi_v1_a_LIBADD += ${MXML_OBJECTS} 
+endif
+EXTRA_libadiosf_nompi_a_DEPENDENCIES = libcoreonce.a 
+EXTRA_libadiosf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
+if !RESEARCH_TRANSPORTS
+libadiosf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+endif !RESEARCH_TRANSPORTS
+
+core/adiosf_write_mod.$(OBJEXT): core/adiosf_defs_mod.$(OBJEXT)
+adios_write_mod.mod: core/adiosf_write_mod.$(OBJEXT)
+
+endif BUILD_FORTRAN
+
+
+#
+# Rules to build Parallel C+Fortran write libraries
+#
+
+if HAVE_MPI
+
+#
+#    Parallel C Write library
+#
+lib_LIBRARIES += libadios.a
+libadios_a_SOURCES = $(CLibSources) $(CLibParallelSources)
+libadios_a_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(EXTRA_DEPENDENCY_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+libadios_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+
+
+libadios_a_LIBADD = $(libcoreonce_a_OBJECTS) 
+if BUILD_MXML
+libadios_a_LIBADD += ${MXML_OBJECTS} 
 endif
+# force building the noinst_LIBRARIES first, before libadios.a
+EXTRA_libadios_a_DEPENDENCIES = libcoreonce.a 
 
-# The next line forces automake to build adios_nssi_args.[ch] before compiling adios_nssi_config.c
-# Note, the order of dist_*SOURCES and nodist_*SOURCES above should but does not solve this alone.
-adios_nssi_config.c: adios_nssi_args.c
 
-adios_nssi_args.h:  $(srcdir)/nssi/adios_nssi_args.x Makefile.am
-	rm -f $@
-#	@echo "#include <lwfs/lwfs_config.h>" >> $@
-#	@echo "#ifndef LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
-#	@echo "#define LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
-#	@echo "struct sockaddr_in { " >> $@
-#	@echo '  int a;' >> $@
-#	@echo '};' >> $@
-#	@echo '#endif' >> $@;
-	rpcgen -h $(srcdir)/nssi/adios_nssi_args.x >> $@
 
-adios_nssi_args.c: adios_nssi_args.h 
-	rm -f adios_nssi_args.c
-	rpcgen -c $(srcdir)/nssi/adios_nssi_args.x \
-		| grep -v "include \"\.\." > adios_nssi_args.c
+if BUILD_FORTRAN
+#
+#    Parallel Fortran Write library
+#
+# Build two different Fortran libraries, for the two read APIs
+lib_LIBRARIES += libadiosf.a libadiosf_v1.a
+libadiosf_a_SOURCES = $(FortranLibSources) $(FortranLibParallelSources) core/adiosf_read.c
+libadiosf_v1_a_SOURCES = $(FortranLibSources) $(FortranLibParallelSources) core/adiosf_read_v1.c
+libadiosf_a_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(EXTRA_DEPENDENCY_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+libadiosf_v1_a_CPPFLAGS = $(libadiosf_a_CPPFLAGS) 
+libadiosf_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+libadiosf_v1_a_CFLAGS = $(libadiosf_a_CFLAGS) 
+
+libadiosf_a_SOURCES += core/adiosf_defs_mod.f90 \
+                       core/adiosf_write_mod.f90 \
+                       core/adiosf_read_mod.f90 \
+                       query/adios_query_mod.f90
 
-CLEANFILES += adios_nssi_args.c adios_nssi_args.h
+libadiosf_v1_a_SOURCES += core/adiosf_defs_mod.f90 \
+                          core/adiosf_write_mod.f90 
 
-endif # HAVE_NSSI
+libadiosf_a_LIBADD = $(libcoreonce_a_OBJECTS)
+libadiosf_v1_a_LIBADD =  $(libcoreonce_a_OBJECTS)
+if BUILD_MXML
+libadiosf_a_LIBADD += ${MXML_OBJECTS}
+libadiosf_v1_a_LIBADD += ${MXML_OBJECTS}
+endif
+EXTRA_libadiosf_a_DEPENDENCIES = libcoreonce.a 
+EXTRA_libadiosf_v1_a_DEPENDENCIES = libcoreonce.a 
 
+#nodist_libadiosreadf_a_SOURCES += adios_write.mod
+nodist_include_HEADERS += adios_write_mod.mod 
+CLEANFILES += adios_write_mod.mod
+
+endif BUILD_FORTRAN
 
 if RESEARCH_TRANSPORTS
 #libadios_a_SOURCES += write/adios_mpi_stagger.c \
@@ -353,97 +455,154 @@ if RESEARCH_TRANSPORTS
 #                      write/adios_mpi_amr1.c \
 #                      write/adios_adaptive.c 
 if BUILD_FORTRAN
-#FortranLibMPISources += write/adios_mpi_stagger.c \
+#FortranLibParallelSources += write/adios_mpi_stagger.c \
 #                       write/adios_mpi_aggregate.c \
 #                       write/adios_provenance.c \
 #                       write/adios_mpi_cio.c \
 #                       write/adios_mpi_stripe.c \
 #                       write/adios_mpi_amr1.c \
 #                       write/adios_adaptive.c 
-endif
-else
+endif BUILD_FORTRAN
+else !RESEARCH_TRANSPORTS
 libadios_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
-libadios_nompi_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
-libadiosf_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
-libadiosf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
-endif  # RESEARCH_TRANSPORTS
-
-# Build four different Fortran libraries, for the two read APIs
-# and their sequential versions
 if BUILD_FORTRAN
-libadiosf_a_SOURCES = $(FortranLibSources) $(FortranLibMPISources) core/adiosf_read.c
-libadiosf_v1_a_SOURCES = $(FortranLibSources) $(FortranLibMPISources) core/adiosf_read_v1.c
-libadiosf_nompi_a_SOURCES = $(FortranLibSources) $(FortranLibSEQSources) core/adiosf_read.c
-libadiosf_nompi_v1_a_SOURCES = $(FortranLibSources) $(FortranLibSEQSources) core/adiosf_read_v1.c
-libadiosf_v1_a_CPPFLAGS = $(libadiosf_a_CPPFLAGS) 
-libadiosf_v1_a_CFLAGS = $(libadiosf_a_CFLAGS) 
-libadiosf_nompi_v1_a_CPPFLAGS = $(libadiosf_nompi_a_CPPFLAGS) 
-libadiosf_nompi_v1_a_CFLAGS = $(libadiosf_nompi_a_CFLAGS) 
+libadiosf_a_CPPFLAGS += $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+endif BUILD_FORTRAN
+endif !RESEARCH_TRANSPORTS
 
-libadiosf_a_SOURCES += core/adiosf_defs_mod.f90 \
-                       core/adiosf_write_mod.f90 \
-                       core/adiosf_read_mod.f90 \
-                       query/adios_query_mod.f90
+# End of building Parallel Write libs
+endif HAVE_MPI
 
-libadiosf_nompi_a_SOURCES += core/adiosf_defs_mod.f90 \
-                             core/adiosf_write_mod.f90 \
-                             core/adiosf_read_mod.f90  \
-                             query/adios_query_mod.f90
+# End of building all Write libs
+endif BUILD_WRITE
 
-libadiosf_v1_a_SOURCES += core/adiosf_defs_mod.f90 \
-                          core/adiosf_write_mod.f90 
 
-libadiosf_nompi_v1_a_SOURCES += core/adiosf_defs_mod.f90 \
-                                core/adiosf_write_mod.f90 
+####################
+#  READ libraries #
+####################
 
-#nodist_libadiosreadf_a_SOURCES += adios_write.mod
-nodist_include_HEADERS += adios_write_mod.mod 
-CLEANFILES += adios_write_mod.mod
+#
+# Rules to build Sequential C+Fortran Read libraries 
+#
 
-adiosf_write_mod.$(OBJEXT): adiosf_defs_mod.$(OBJEXT)
-adios_write_mod.mod: adiosf_write_mod.$(OBJEXT)
+#
+#    Sequential C Read library
+#
+lib_LIBRARIES += libadiosread_nompi.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 
+                                          
+#if HAVE_DATATAP
+#libadiosread_nompi_a_SOURCES += read/read_datatap.c
+#endif
+if HAVE_FLEXPATH
+libadiosread_nompi_a_SOURCES += read/read_flexpath.c
+endif
+if HAVE_ICEE
+libadiosread_nompi_a_SOURCES += read/read_icee.c
+endif
+#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
+#libadiosread_nompi_a_SOURCES += nssi/adios_nssi_config.c read/read_nssi.c
+#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
+if HAVE_DMALLOC
+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)
+EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a 
 
+if BUILD_FORTRAN
+#
+#    Sequential Fortran Read libraries
+#
+lib_LIBRARIES += libadiosreadf_nompi.a libadiosreadf_nompi_v1.a
+FortranReadSeqLibSource = core/mpidummy.c\
+                          core/bp_utils.c \
+                          core/common_read.c \
+                          core/adios_read_ext.c \
+                          $(query_F_SOURCES) \
+                          core/adios_read_hooks.c \
+                          core/util_mpi.c \
+                          read/read_bp.c 
+#if HAVE_DATASPACES
+#FortranReadSeqLibSource += read/read_dataspaces.c
+#endif
+#if HAVE_DIMES
+#FortranReadSeqLibSource += read/read_dimes.c
+#endif
+#if HAVE_DATATAP
+#FortranReadSeqLibSource += read/read_datatap.c
+#endif
+if HAVE_FLEXPATH
+FortranReadSeqLibSource += read/read_flexpath.c
 endif
+if HAVE_ICEE
+FortranReadSeqLibSource += read/read_icee.c
+endif
+#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
+#FortranReadSeqLibSource += nssi/adios_nssi_config.c read/read_nssi.c
+#libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#libadiosreadf_nompi_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+#libadiosreadf_nompi_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
+#endif
 
+libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+libadiosreadf_nompi_a_SOURCES = $(FortranReadSeqLibSource) core/adiosf_read.c
+libadiosreadf_nompi_v1_a_SOURCES = $(FortranReadSeqLibSource) core/adiosf_read_v1.c
+libadiosreadf_nompi_v1_a_CPPFLAGS = $(libadiosreadf_nompi_a_CPPFLAGS)
+libadiosreadf_nompi_v1_a_CFLAGS = $(libadiosreadf_nompi_a_CFLAGS)
 
-endif   # BUILD_WRITE
+libadiosreadf_nompi_a_SOURCES += core/adiosf_defs_mod.f90 \
+                   	         core/adiosf_read_mod.f90 \
+                        	 query/adios_query_mod.f90
+libadiosreadf_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
+libadiosreadf_nompi_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+EXTRA_libadiosreadf_nompi_a_DEPENDENCIES = libcoreonce.a 
+EXTRA_libadiosreadf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
 
-include_HEADERS += public/adios.h \
-                   public/adios_version.h \
-                   public/adios_types.h \
-                   public/adios_read.h \
-                   public/adios_error.h \
-                   public/adios_mpi.h \
-                   public/mpidummy.h \
-                   public/adios_read_v1.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
+core/adiosf_read_mod.$(OBJEXT): core/adiosf_defs_mod.$(OBJEXT)
+adios_read_mod.mod: core/adiosf_read_mod.$(OBJEXT)
+
+query/adios_query_mod.$(OBJEXT): core/adiosf_read_mod.$(OBJEXT) adios_read_mod.mod
+adios_query_mod.mod: query/adios_query_mod.$(OBJEXT)
+
+adios_defs_mod.mod: core/adiosf_defs_mod.$(OBJEXT)
+
+endif  BUILD_FORTRAN
+
+
+#
+# Rules to build Parallel C+Fortran write libraries
+#
 
+if HAVE_MPI
+
+#
+#    Parallel C Read library
+#
 lib_LIBRARIES += libadiosread.a
-libadiosread_a_SOURCES = core/adios_bp_v1.c \
-                      core/adios_endianness.c \
-                      core/bp_utils.c \
-                      core/futils.c \
-                      core/adios_error.c \
+libadiosread_a_SOURCES = core/bp_utils.c \
                       core/adios_read.c \
                       core/adios_read_v1.c \
                       core/common_read.c \
-                      core/adios_infocache.c \
                       core/adios_read_ext.c \
-                      $(transforms_common_SOURCES) \
-                      $(transforms_read_SOURCES) \
                       $(query_C_SOURCES) \
-                      core/globals.c \
                       core/adios_read_hooks.c \
-                      core/adios_logger.c \
-                      core/util.c \
-                      core/qhashtbl.c \
+                      core/util_mpi.c \
                       read/read_bp.c \
                       read/read_bp_staged.c \
                       read/read_bp_staged1.c 
@@ -453,44 +612,43 @@ endif
 if HAVE_DIMES
 libadiosread_a_SOURCES += read/read_dimes.c
 endif
-if HAVE_DATATAP
-libadiosread_a_SOURCES += read/read_datatap.c
-endif
+#if HAVE_DATATAP
+#libadiosread_a_SOURCES += read/read_datatap.c
+#endif
 if HAVE_FLEXPATH
 libadiosread_a_SOURCES += read/read_flexpath.c
 endif
 if HAVE_ICEE
 libadiosread_a_SOURCES += read/read_icee.c
 endif
-if HAVE_NSSI
-dist_libadiosread_a_SOURCES = nssi/adios_nssi_args.x
-nodist_libadiosread_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
-libadiosread_a_SOURCES += nssi/adios_nssi_config.c read/read_nssi.c
-libadiosread_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
-#libadiosread_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
-libadiosread_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
+#if HAVE_NSSI
+#dist_libadiosread_a_SOURCES = nssi/adios_nssi_args.x
+#nodist_libadiosread_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#libadiosread_a_SOURCES += nssi/adios_nssi_config.c read/read_nssi.c
+#libadiosread_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+##libadiosread_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+#libadiosread_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
+#endif
+if HAVE_DMALLOC
+libadiosread_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC 
 endif
 
+
 libadiosread_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+libadiosread_a_LIBADD = $(libcoreonce_a_OBJECTS)
+EXTRA_libadiosread_a_DEPENDENCIES = libcoreonce.a 
 
 if BUILD_FORTRAN
+#
+#    Parallel Fortran Read libraries
+#
 lib_LIBRARIES += libadiosreadf.a libadiosreadf_v1.a
-FortranReadLibSource = core/adios_bp_v1.c \
-                      core/adios_endianness.c \
-                      core/bp_utils.c \
-                      core/futils.c \
-                      core/adios_error.c \
+FortranReadLibSource = core/bp_utils.c \
                       core/common_read.c \
-                      core/adios_infocache.c \
                       core/adios_read_ext.c \
-                      $(transforms_common_SOURCES) \
-                      $(transforms_read_SOURCES) \
                       $(query_F_SOURCES) \
-                      core/globals.c \
                       core/adios_read_hooks.c \
-                      core/adios_logger.c \
-                      core/util.c \
-                      core/qhashtbl.c \
+                      core/util_mpi.c \
                       read/read_bp.c \
                       read/read_bp_staged.c \
                       read/read_bp_staged1.c 
@@ -500,22 +658,22 @@ endif
 if HAVE_DIMES
 FortranReadLibSource += read/read_dimes.c
 endif
-if HAVE_DATATAP
-FortranReadLibSource += read/read_datatap.c
-endif
+#if HAVE_DATATAP
+#FortranReadLibSource += read/read_datatap.c
+#endif
 if HAVE_FLEXPATH 
 FortranReadLibSource += read/read_flexpath.c
 endif
 if HAVE_ICEE 
 FortranReadLibSource += read/read_icee.c
 endif
-if HAVE_NSSI
-dist_libadiosreadf_a_SOURCES = nssi/adios_nssi_args.x
-nodist_libadiosreadf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
-FortranReadLibSource += nssi/adios_nssi_config.c read/read_nssi.c
-libadiosreadf_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
-libadiosreadf_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
-endif
+#if HAVE_NSSI
+#dist_libadiosreadf_a_SOURCES = nssi/adios_nssi_args.x
+#nodist_libadiosreadf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#FortranReadLibSource += nssi/adios_nssi_config.c read/read_nssi.c
+#libadiosreadf_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#libadiosreadf_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
+#endif
 
 libadiosreadf_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
 
@@ -528,199 +686,109 @@ libadiosreadf_a_SOURCES += core/adiosf_defs_mod.f90 \
                            core/adiosf_read_mod.f90 \
                            query/adios_query_mod.f90
 
+libadiosreadf_a_LIBADD = $(libcoreonce_a_OBJECTS)
+libadiosreadf_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+EXTRA_libadiosreadf_a_DEPENDENCIES = libcoreonce.a 
+EXTRA_libadiosreadf_v1_a_DEPENDENCIES = libcoreonce.a 
+
 #nodist_libadiosreadf_a_SOURCES += adios_read_mod.mod
 nodist_include_HEADERS += adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
 CLEANFILES += adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
 
-adiosf_read_mod.$(OBJEXT): adiosf_defs_mod.$(OBJEXT)
-adios_read_mod.mod: adiosf_read_mod.$(OBJEXT)
+endif BUILD_FORTRAN
 
-adios_query_mod.$(OBJEXT): adiosf_read_mod.$(OBJEXT)
-adios_query_mod.mod: adios_query_mod.$(OBJEXT)
+# End of building parallel read libraries
+endif HAVE_MPI
 
-adios_defs_mod.mod: adiosf_defs_mod.$(OBJEXT)
 
-endif
-
-lib_LIBRARIES += libadiosread_nompi.a
-libadiosread_nompi_a_SOURCES = core/mpidummy.c\
-                      core/adios_bp_v1.c \
-                      core/adios_endianness.c \
-                      core/bp_utils.c \
-                      core/futils.c \
-                      core/adios_error.c \
-                      core/adios_read.c \
-                      core/adios_read_v1.c \
-                      core/common_read.c \
-                      core/adios_infocache.c \
-                      core/adios_read_ext.c \
-                      $(transforms_common_SOURCES) \
-                      $(transforms_read_SOURCES) \
-                      $(query_C_SOURCES) \
-                      core/adios_logger.c \
-                      core/buffer.c \
-                      core/globals.c \
-                      core/adios_read_hooks.c \
-                      core/util.c \
-                      core/qhashtbl.c \
-                      read/read_bp.c 
-
-					  
-#if HAVE_DATASPACES
-#libadiosread_nompi_a_SOURCES += read/read_dataspaces.c
-#endif
-#if HAVE_DIMES
-#libadiosread_nompi_a_SOURCES += read/read_dimes.c
-#endif
-if HAVE_DATATAP
-libadiosread_nompi_a_SOURCES += read/read_datatap.c
-endif
-if HAVE_FLEXPATH
-libadiosread_nompi_a_SOURCES += read/read_flexpath.c
-endif
-if HAVE_ICEE
-libadiosread_nompi_a_SOURCES += read/read_icee.c
-endif
-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
-libadiosread_nompi_a_SOURCES += nssi/adios_nssi_config.c read/read_nssi.c
-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
-libadiosread_nompi_a_CPPFLAGS  += $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+##########################################
+# INTERNAL Library for some of the tools #
+##########################################
 
 # Note: utils/adios_lint needs to link with adios_internals_mxml.o which depends
 #       on adios_internals.c, buffer.c and adios_transport_hooks.c. 
-#       We put these objects in libadiosread_nompi
+#       We put these objects in libadios_internal_nompi
 #       so we do not need to make another _nompi lib just for adios_lint
-if BUILD_FORTRAN
-lib_LIBRARIES += libadiosreadf_nompi.a libadiosreadf_nompi_v1.a
-FortranReadSeqLibSource = core/mpidummy.c\
-                          core/adios_bp_v1.c \
-                          core/adios_endianness.c \
-                          core/bp_utils.c \
-                          core/futils.c \
-                          core/adios_error.c \
-                          core/adios_logger.c \
-                          core/common_read.c \
-                          core/adios_infocache.c \
-                          core/adios_read_ext.c \
-                          $(transforms_common_SOURCES) \
-                          $(transforms_read_SOURCES) \
-                          $(query_F_SOURCES) \
-                          core/globals.c \
-                          core/adios_read_hooks.c \
-                          core/util.c \
-                          core/qhashtbl.c \
-                          read/read_bp.c 
-#if HAVE_DATASPACES
-#FortranReadSeqLibSource += read/read_dataspaces.c
-#endif
-#if HAVE_DIMES
-#FortranReadSeqLibSource += read/read_dimes.c
-#endif
-if HAVE_DATATAP
-FortranReadSeqLibSource += read/read_datatap.c
-endif
-if HAVE_FLEXPATH
-FortranReadSeqLibSource += read/read_flexpath.c
-endif
-if HAVE_ICEE
-FortranReadSeqLibSource += read/read_icee.c
-endif
-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
-FortranReadSeqLibSource += nssi/adios_nssi_config.c read/read_nssi.c
-libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
-libadiosreadf_nompi_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
-libadiosreadf_nompi_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
-endif
-
-libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
-libadiosreadf_nompi_a_SOURCES = $(FortranReadSeqLibSource) core/adiosf_read.c
-libadiosreadf_nompi_v1_a_SOURCES = $(FortranReadSeqLibSource) core/adiosf_read_v1.c
-libadiosreadf_nompi_v1_a_CPPFLAGS = $(libadiosreadf_nompi_a_CPPFLAGS)
-libadiosreadf_nompi_v1_a_CFLAGS = $(libadiosreadf_nompi_a_CFLAGS)
-
-endif  #BUILD_FORTRAN
-
-noinst_LIBRARIES = libadios_internal_nompi.a
+noinst_LIBRARIES += libadios_internal_nompi.a
 libadios_internal_nompi_a_SOURCES = core/mpidummy.c \
-                                    core/adios_bp_v1.c \
-                                    core/adios_endianness.c \
                                     core/bp_utils.c \
                                     core/adios_internals.c \
-                                    $(transforms_common_SOURCES) \
-                                    $(transforms_write_SOURCES) \
+                                    core/util_mpi.c \
                                     $(query_C_SOURCES) \
-                                    core/buffer.c \
-                                    core/adios_error.c \
-                                    core/adios_logger.c \
                                     core/adios_timing.c \
-                                    core/util.c \
-                                    core/qhashtbl.c \
-                                    core/futils.c \
                                     core/adios_transport_hooks.c 
+libadios_internal_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
 if BUILD_WRITE
 libadios_internal_nompi_a_SOURCES += core/adios_internals_mxml.c 
+if BUILD_MXML
+libadios_internal_nompi_a_LIBADD += ${MXML_OBJECTS}
+endif
 endif
+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)
 #Note: $(MACRODEFFLAG)NOMPI chokes IBM's bgxlf compiler but it can pass $(MACRODEFFLAG)_NOMPI. 
 
-if HAVE_DMALLOC
-libadiosread_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC 
-libadiosread_nompi_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC 
-#if BUILD_FORTRAN
-#libadiosreadf_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC $(DMALLOC_CPPFLAGS)
-#libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC $(DMALLOC_CPPFLAGS)
-#endif
-endif
-
-CC=$(MPICC)
-CXX=$(MPICXX)
 
+if HAVE_MPI
+override CC=$(MPICC)
+override CXX=$(MPICXX)
+endif
 
 #bin_PROGRAMS+=adios_flags
 #nodist_adios_flags_SOURCES = adios_flags.h 
 #adios_flags_SOURCES = adios_flags.c 
 #adios_flags.h:  
-#	rm -f $@
-#	@echo "#define ADIOS_CFLAGS \"$(libadios_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOS_LDFLAGS \"$(libadios_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSF_CFLAGS \"$(libadiosf_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSF_LDFLAGS \"$(libadiosf_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_CFLAGS \"$(libadiosread_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_LDFLAGS \"$(libadiosread_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_CFLAGS \"$(libadiosreadf_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_LDFLAGS \"$(libadiosreadf_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_NOMPI_CFLAGS \"$(libadiosread_nompi_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_NOMPI_LDFLAGS \"$(libadiosread_nompi_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_NOMPI_CFLAGS \"$(libadiosreadf_nompi_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_NOMPI_LDFLAGS \"$(libadiosreadf_nompi_a_LDFLAGS)\"" >> $@
+#        rm -f $@
+#        @echo "#define ADIOS_CFLAGS \"$(libadios_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOS_LDFLAGS \"$(libadios_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSF_CFLAGS \"$(libadiosf_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSF_LDFLAGS \"$(libadiosf_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_CFLAGS \"$(libadiosread_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_LDFLAGS \"$(libadiosread_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_CFLAGS \"$(libadiosreadf_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_LDFLAGS \"$(libadiosreadf_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_NOMPI_CFLAGS \"$(libadiosread_nompi_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_NOMPI_LDFLAGS \"$(libadiosread_nompi_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_NOMPI_CFLAGS \"$(libadiosreadf_nompi_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_NOMPI_LDFLAGS \"$(libadiosreadf_nompi_a_LDFLAGS)\"" >> $@
 #adios_flags.c: adios_flags.h
 
-
+include_HEADERS += public/adios.h \
+                   public/adios_version.h \
+                   public/adios_types.h \
+                   public/adios_read.h \
+                   public/adios_error.h \
+                   public/adios_mpi.h \
+                   public/mpidummy.h \
+                   public/adios_read_v1.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
+                 
 EXTRA_DIST = core/adios_bp_v1.h core/adios_endianness.h \
              core/adios_internals.h core/adios_internals_mxml.h core/adios_logger.h \
              core/adios_read_hooks.h core/adios_socket.h core/adios_timing.h \
-	     core/adios_icee.h \
+             core/adios_icee.h core/a2sel.h core/adios_clock.h \
              core/adios_socket.h core/adios_transport_hooks.h \
              core/bp_types.h core/bp_utils.h core/buffer.h core/common_adios.h \
              core/common_read.h core/adios_infocache.h core/futils.h core/globals.h core/ds_metadata.h \
-             core/util.h core/flexpath.h core/qhashtbl.h \
-	     public/adios_version.h.in \
+             core/types.h core/util.h core/strutil.h core/flexpath.h core/qhashtbl.h \
+             public/adios_version.h.in core/util_mpi.h \
              $(transforms_common_HDRS) $(transforms_read_HDRS) $(transforms_write_HDRS) \
              $(query_common_HDRS) $(query_method_HDRS) \
              transforms/transform_plugins.h \
-	     transforms/adios_transform_identity_read.h \
-	     transforms/adios_transform_szip.h \
-	     transforms/adios_transform_alacrity_common.h \
-	     transforms/adios_transform_template_read.c \
-	     transforms/adios_transform_template_write.c \
-             query/Makefile.plugins.cmake \
-             nssi/adios_nssi_config.h nssi/aggregation.h nssi/io_timer.h 
+             transforms/adios_transform_identity_read.h \
+             transforms/adios_transform_szip.h \
+             transforms/adios_transform_alacrity_common.h \
+             transforms/adios_transform_template_read.c \
+             transforms/adios_transform_template_write.c \
+             query/Makefile.plugins.cmake 
+#             nssi/adios_nssi_config.h nssi/aggregation.h nssi/io_timer.h 
 
diff --git a/src/Makefile.in b/src/Makefile.in
index 547aeb2..a6f14f5 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -18,6 +17,51 @@
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,47 +80,115 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-bin_PROGRAMS = $(am__EXEEXT_1)
- at HAVE_NSSI_TRUE@am__append_1 = nssi-staging-server \
- at HAVE_NSSI_TRUE@	nssi-coupling-server
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/query/Makefile.plugins \
-	$(srcdir)/transforms/Makefile.plugins
- at HAVE_FASTBIT_TRUE@am__append_2 = query/query_fastbit.c \
+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 \
 @HAVE_FASTBIT_TRUE@	query/fastbit_adios.c
- at HAVE_FASTBIT_TRUE@am__append_3 = query/fastbit_adios.h
- at HAVE_ALACRITY_TRUE@am__append_4 = query/query_alac.c
- at BUILD_WRITE_TRUE@am__append_5 = libadios.a libadios_nompi.a
- at BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__append_6 = write/adios_mpi_bgq.c 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__append_7 = libadiosf.a libadiosf_v1.a libadiosf_nompi.a libadiosf_nompi_v1.a
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__append_8 = write/adios_mpi_bgq.c  
- at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__append_9 = write/adios_dataspaces.c read/read_dataspaces.c
-#libadios_nompi_a_SOURCES += write/adios_dataspaces.c read/read_dataspaces.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__append_10 = write/adios_dataspaces.c read/read_dataspaces.c
- at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__append_11 = write/adios_dimes.c read/read_dimes.c
-#libadios_nompi_a_SOURCES += write/adios_dimes.c read/read_dimes.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__append_12 = write/adios_dimes.c read/read_dimes.c
- at BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__append_13 = write/adios_datatap.c read/read_datatap.c
- at BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__append_14 = write/adios_datatap.c read/read_datatap.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__append_15 = write/adios_datatap.c read/read_datatap.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_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_18 = $(PHDF5_CPPFLAGS)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_19 = write/adios_phdf5.c 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_20 = $(PHDF5_CPPFLAGS)
- at BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__append_21 = write/adios_nc4.c 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__append_22 = write/adios_nc4.c 
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_23 = write/adios_flexpath.c  read/read_flexpath.c
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_24 = write/adios_flexpath.c  read/read_flexpath.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_25 = write/adios_flexpath.c read/read_flexpath.c
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_26 = write/adios_icee.c read/read_icee.c
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_27 = write/adios_icee.c  read/read_icee.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_28 = write/adios_icee.c read/read_icee.c
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__append_29 = nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__append_30 = $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__append_31 = nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__append_32 = $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__append_33 = adios_nssi_args.c adios_nssi_args.h
+ 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 
+
+#if HAVE_DATATAP
+#CLibSources += write/adios_datatap.c read/read_datatap.c
+#if BUILD_FORTRAN
+#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
+
+#if HAVE_NSSI
+#dist_libadios_a_SOURCES = nssi/adios_nssi_args.x
+#nodist_libadios_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#CLibSources += nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
+#libadios_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#if BUILD_FORTRAN
+#nodist_libadiosf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#dist_libadiosf_a_SOURCES = nssi/adios_nssi_args.x
+#FortranLibSources += nssi/adios_nssi_config.c write/adios_nssi.c nssi/adios_nssi_filter.c read/read_nssi.c
+#libadiosf_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#endif
+#
+#adios_nssi_config.c: adios_nssi_args.c
+#
+#adios_nssi_args.h:  $(srcdir)/nssi/adios_nssi_args.x Makefile.am
+#        rm -f $@
+###        @echo "#include <lwfs/lwfs_config.h>" >> $@
+###        @echo "#ifndef LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
+###        @echo "#define LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
+###        @echo "struct sockaddr_in { " >> $@
+###        @echo '  int a;' >> $@
+###        @echo '};' >> $@
+###        @echo '#endif' >> $@;
+#        rpcgen -h $(srcdir)/nssi/adios_nssi_args.x >> $@
+#
+#adios_nssi_args.c: adios_nssi_args.h 
+#        rm -f adios_nssi_args.c
+#        rpcgen -c $(srcdir)/nssi/adios_nssi_args.x \
+#                | grep -v "include \"\.\." > adios_nssi_args.c
+#
+#CLEANFILES += adios_nssi_args.c adios_nssi_args.h
+#
+#endif # HAVE_NSSI
+
+#
+# Rules to build Sequential C+Fortran write libraries
+#
+
+#
+#    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
+
+#
+#    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
+
+#
+# Rules to build Parallel C+Fortran write libraries
+#
+
+#
+#    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} 
+
+#
+#    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}
+
+#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
 
 #libadios_a_SOURCES += write/adios_mpi_stagger.c \
 #                      write/adios_mpi_aggregate.c \
@@ -85,84 +197,105 @@ DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
 #                      write/adios_mpi_stripe.c \
 #                      write/adios_mpi_amr1.c \
 #                      write/adios_adaptive.c 
-#FortranLibMPISources += write/adios_mpi_stagger.c \
+#FortranLibParallelSources += write/adios_mpi_stagger.c \
 #                       write/adios_mpi_aggregate.c \
 #                       write/adios_provenance.c \
 #                       write/adios_mpi_cio.c \
 #                       write/adios_mpi_stripe.c \
 #                       write/adios_mpi_amr1.c \
 #                       write/adios_adaptive.c 
- at BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_34 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
- at BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_35 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
- at BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_36 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
- at BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_37 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
-
-#nodist_libadiosreadf_a_SOURCES += adios_write.mod
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__append_38 = adios_write_mod.mod 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__append_39 = adios_write_mod.mod
- at HAVE_DATASPACES_TRUE@am__append_40 = read/read_dataspaces.c
- at HAVE_DIMES_TRUE@am__append_41 = read/read_dimes.c
- at HAVE_DATATAP_TRUE@am__append_42 = read/read_datatap.c
- at HAVE_FLEXPATH_TRUE@am__append_43 = read/read_flexpath.c
- at HAVE_ICEE_TRUE@am__append_44 = read/read_icee.c
- at HAVE_NSSI_TRUE@am__append_45 = nssi/adios_nssi_config.c read/read_nssi.c
- at HAVE_NSSI_TRUE@am__append_46 = $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
-#libadiosread_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
- at HAVE_NSSI_TRUE@am__append_47 = $(ADIOSLIB_CFLAGS) 
- at BUILD_FORTRAN_TRUE@am__append_48 = libadiosreadf.a libadiosreadf_v1.a
- at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE at am__append_49 = read/read_dataspaces.c
- at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE at am__append_50 = read/read_dimes.c
- at BUILD_FORTRAN_TRUE@@HAVE_DATATAP_TRUE at am__append_51 = read/read_datatap.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
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__append_54 = nssi/adios_nssi_config.c read/read_nssi.c
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__append_55 = $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__append_56 = $(ADIOSLIB_CFLAGS) 
- at BUILD_FORTRAN_TRUE@am__append_57 = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
-
-#nodist_libadiosreadf_a_SOURCES += adios_read_mod.mod
- at BUILD_FORTRAN_TRUE@am__append_58 = adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
- at BUILD_FORTRAN_TRUE@am__append_59 = adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
+ 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
 
-#if HAVE_DATASPACES
-#libadiosread_nompi_a_SOURCES += read/read_dataspaces.c
+#if HAVE_DATATAP
+#libadiosread_nompi_a_SOURCES += read/read_datatap.c
 #endif
-#if HAVE_DIMES
-#libadiosread_nompi_a_SOURCES += read/read_dimes.c
+ at HAVE_FLEXPATH_TRUE@am__append_39 = read/read_flexpath.c
+ at HAVE_ICEE_TRUE@am__append_40 = 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
+#libadiosread_nompi_a_SOURCES += nssi/adios_nssi_config.c read/read_nssi.c
+#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_DATATAP_TRUE@am__append_60 = read/read_datatap.c
- at HAVE_FLEXPATH_TRUE@am__append_61 = read/read_flexpath.c
- at HAVE_ICEE_TRUE@am__append_62 = read/read_icee.c
- at HAVE_NSSI_TRUE@am__append_63 = nssi/adios_nssi_config.c read/read_nssi.c
- at HAVE_NSSI_TRUE@am__append_64 = $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
- at HAVE_NSSI_TRUE@am__append_65 = $(ADIOSLIB_CFLAGS) 
+ at HAVE_DMALLOC_TRUE@am__append_41 = $(MACRODEFFLAG)DMALLOC 
 
-# Note: utils/adios_lint needs to link with adios_internals_mxml.o which depends
-#       on adios_internals.c, buffer.c and adios_transport_hooks.c. 
-#       We put these objects in libadiosread_nompi
-#       so we do not need to make another _nompi lib just for adios_lint
- at BUILD_FORTRAN_TRUE@am__append_66 = libadiosreadf_nompi.a libadiosreadf_nompi_v1.a
+#
+#    Sequential Fortran Read libraries
+#
+ at BUILD_FORTRAN_TRUE@am__append_42 = libadiosreadf_nompi.a libadiosreadf_nompi_v1.a
 #if HAVE_DATASPACES
 #FortranReadSeqLibSource += read/read_dataspaces.c
 #endif
 #if HAVE_DIMES
 #FortranReadSeqLibSource += read/read_dimes.c
 #endif
- at BUILD_FORTRAN_TRUE@@HAVE_DATATAP_TRUE at am__append_67 = read/read_datatap.c
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__append_68 = read/read_flexpath.c
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__append_69 = read/read_icee.c
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__append_70 = nssi/adios_nssi_config.c read/read_nssi.c
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__append_71 = $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	$(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	$(ADIOSLIB_CPPFLAGS) # \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	$(MACRODEFFLAG)USE_TIMERS
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__append_72 = $(ADIOSLIB_CFLAGS) 
- at BUILD_FORTRAN_TRUE@am__append_73 = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
- at BUILD_WRITE_TRUE@am__append_74 = core/adios_internals_mxml.c 
-#Note: $(MACRODEFFLAG)NOMPI chokes IBM's bgxlf compiler but it can pass $(MACRODEFFLAG)_NOMPI. 
- at HAVE_DMALLOC_TRUE@am__append_75 = $(MACRODEFFLAG)DMALLOC 
- at HAVE_DMALLOC_TRUE@am__append_76 = $(MACRODEFFLAG)DMALLOC 
+#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
+#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
+#FortranReadSeqLibSource += nssi/adios_nssi_config.c read/read_nssi.c
+#libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#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)
+
+#
+# Rules to build Parallel C+Fortran write libraries
+#
+
+#
+#    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
+#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
+#if HAVE_NSSI
+#dist_libadiosread_a_SOURCES = nssi/adios_nssi_args.x
+#nodist_libadiosread_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#libadiosread_a_SOURCES += nssi/adios_nssi_config.c read/read_nssi.c
+#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)
+
+#
+#    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
+#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
+#if HAVE_NSSI
+#dist_libadiosreadf_a_SOURCES = nssi/adios_nssi_args.x
+#nodist_libadiosreadf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
+#FortranReadLibSource += nssi/adios_nssi_config.c read/read_nssi.c
+#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)
+
+#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}
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
@@ -186,14 +319,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -230,1945 +361,974 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
 	"$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"
 LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
 ARFLAGS = cru
+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 = 
 libadios_a_AR = $(AR) $(ARFLAGS)
-libadios_a_LIBADD =
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_1 = $(MXML_OBJECTS)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_DEPENDENCIES =  \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_1)
 am__libadios_a_SOURCES_DIST = core/adios.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
-	core/buffer.c core/adios_bp_v1.c core/adios_endianness.c \
-	core/bp_utils.c core/futils.c core/adios_error.c \
-	core/adios_read.c core/adios_read_v1.c core/common_read.c \
-	core/adios_infocache.c core/adios_read_ext.c core/globals.c \
-	core/adios_timing.c core/adios_read_hooks.c \
-	core/adios_transport_hooks.c core/adios_socket.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c \
-	core/adios_copyspec.h core/adios_subvolume.h \
-	core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	core/transforms/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
 	query/common_query.h query/adios_query_hooks.h \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adios_query.c read/read_bp.c \
-	read/read_bp_staged.c read/read_bp_staged1.c write/adios_mpi.c \
-	write/adios_mpi_lustre.c write/adios_mpi_amr.c \
-	write/adios_posix.c write/adios_posix1.c \
-	write/adios_var_merge.c write/adios_mpi_bgq.c \
-	write/adios_dataspaces.c read/read_dataspaces.c \
-	write/adios_dimes.c read/read_dimes.c write/adios_datatap.c \
-	read/read_datatap.c write/adios_phdf5.c write/adios_nc4.c \
-	write/adios_flexpath.c read/read_flexpath.c write/adios_icee.c \
-	read/read_icee.c nssi/adios_nssi_config.c write/adios_nssi.c \
-	nssi/adios_nssi_filter.c read/read_nssi.c
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adios_query.c core/bp_utils.c core/adios_read.c \
+	core/adios_read_v1.c core/common_read.c core/adios_read_ext.c \
+	core/adios_timing.c core/adios_read_hooks.c \
+	core/adios_transport_hooks.c core/util_mpi.c read/read_bp.c \
+	read/read_bp_staged.c read/read_bp_staged1.c \
+	write/adios_posix.c write/adios_flexpath.c \
+	read/read_flexpath.c write/adios_icee.c read/read_icee.c \
+	write/adios_mpi.c write/adios_mpi_lustre.c \
+	write/adios_mpi_amr.c write/adios_var_merge.c \
+	write/adios_mpi_bgq.c write/adios_dataspaces.c \
+	read/read_dataspaces.c write/adios_dimes.c read/read_dimes.c \
+	write/adios_phdf5.c write/adios_nc4.c
+am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_1 =
 am__objects_2 = $(am__objects_1) \
-	libadios_a-adios_transforms_common.$(OBJEXT) \
-	libadios_a-adios_transforms_hooks.$(OBJEXT) \
-	libadios_a-adios_copyspec.$(OBJEXT) \
-	libadios_a-adios_subvolume.$(OBJEXT)
-am__objects_3 = libadios_a-adios_transform_identity_read.$(OBJEXT) \
-	libadios_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadios_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadios_a-adios_transform_szip_read.$(OBJEXT) \
-	libadios_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadios_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadios_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_4 = $(am__objects_1) \
-	libadios_a-adios_transforms_read.$(OBJEXT) \
-	libadios_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadios_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadios_a-adios_transforms_datablock.$(OBJEXT) \
-	libadios_a-adios_patchdata.$(OBJEXT) \
-	libadios_a-adios_selection_util.$(OBJEXT) $(am__objects_3)
-am__objects_5 = libadios_a-adios_transform_identity_write.$(OBJEXT) \
-	libadios_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadios_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadios_a-adios_transform_szip_write.$(OBJEXT) \
-	libadios_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadios_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadios_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_6 = $(am__objects_1) \
-	libadios_a-adios_transforms_write.$(OBJEXT) \
-	libadios_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadios_a-adios_transforms_util.$(OBJEXT) \
-	libadios_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_5)
-am__objects_7 = $(am__objects_1) libadios_a-common_query.$(OBJEXT) \
-	libadios_a-adios_query_hooks.$(OBJEXT) \
-	libadios_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_8 = libadios_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadios_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_9 = libadios_a-query_alac.$(OBJEXT)
-am__objects_10 = $(am__objects_1)
-am__objects_11 = $(am__objects_8) $(am__objects_9) $(am__objects_10)
-am__objects_12 = $(am__objects_7) $(am__objects_11)
-am__objects_13 = $(am__objects_12) libadios_a-adios_query.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__objects_14 = libadios_a-adios_mpi_bgq.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__objects_15 = libadios_a-adios_dataspaces.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE@	libadios_a-read_dataspaces.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__objects_16 = libadios_a-adios_dimes.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE@	libadios_a-read_dimes.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__objects_17 = libadios_a-adios_datatap.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE@	libadios_a-read_datatap.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__objects_18 = libadios_a-adios_phdf5.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__objects_19 = libadios_a-adios_nc4.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_20 = libadios_a-adios_flexpath.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	libadios_a-read_flexpath.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_21 = libadios_a-adios_icee.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	libadios_a-read_icee.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__objects_22 = libadios_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadios_a-adios_nssi.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadios_a-adios_nssi_filter.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadios_a-read_nssi.$(OBJEXT)
- at BUILD_WRITE_TRUE@am_libadios_a_OBJECTS = libadios_a-adios.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-common_adios.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_internals.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_internals_mxml.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-buffer.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_endianness.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-bp_utils.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-futils.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_error.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_read.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_read_v1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-common_read.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_infocache.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_read_ext.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-globals.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_timing.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_transport_hooks.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_socket.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_logger.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-util.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-qhashtbl.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	$(am__objects_2) $(am__objects_4) \
- at BUILD_WRITE_TRUE@	$(am__objects_6) $(am__objects_13) \
- at BUILD_WRITE_TRUE@	libadios_a-read_bp.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-read_bp_staged.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_mpi.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_mpi_lustre.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_mpi_amr.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_posix.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_posix1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_a-adios_var_merge.$(OBJEXT) \
+	query/libadios_a-common_query.$(OBJEXT) \
+	query/libadios_a-common_query_read.$(OBJEXT) \
+	query/libadios_a-adios_query_hooks.$(OBJEXT) \
+	query/libadios_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_3 =  \
+ at HAVE_FASTBIT_TRUE@	query/libadios_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadios_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_4 =  \
+ at HAVE_ALACRITY_TRUE@	query/libadios_a-query_alac.$(OBJEXT)
+am__objects_5 = $(am__objects_1)
+am__objects_6 = query/libadios_a-query_minmax.$(OBJEXT) \
+	$(am__objects_3) $(am__objects_4) $(am__objects_5)
+am__objects_7 = $(am__objects_2) $(am__objects_6)
+am__objects_8 = $(am__objects_7) \
+	query/libadios_a-adios_query.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_9 = write/libadios_a-adios_flexpath.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	read/libadios_a-read_flexpath.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_10 = write/libadios_a-adios_icee.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	read/libadios_a-read_icee.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_11 = core/libadios_a-adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-common_adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_internals.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_internals_mxml.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_8) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-bp_utils.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_read_v1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-common_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_timing.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-adios_transport_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_a-util_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadios_a-read_bp.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadios_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadios_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadios_a-adios_posix.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_9) $(am__objects_10) \
+ at BUILD_WRITE_TRUE@	$(am__objects_9) $(am__objects_10)
+ at BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__objects_12 = write/libadios_a-adios_mpi_bgq.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__objects_13 = write/libadios_a-adios_dataspaces.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE@	read/libadios_a-read_dataspaces.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__objects_14 = write/libadios_a-adios_dimes.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE@	read/libadios_a-read_dimes.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__objects_15 = write/libadios_a-adios_phdf5.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__objects_16 = write/libadios_a-adios_nc4.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_17 =  \
+ at BUILD_WRITE_TRUE@	write/libadios_a-adios_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadios_a-adios_mpi_lustre.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadios_a-adios_mpi_amr.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadios_a-adios_var_merge.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_12) $(am__objects_13) \
 @BUILD_WRITE_TRUE@	$(am__objects_14) $(am__objects_15) \
- at BUILD_WRITE_TRUE@	$(am__objects_16) $(am__objects_17) \
- at BUILD_WRITE_TRUE@	$(am__objects_18) $(am__objects_19) \
- at BUILD_WRITE_TRUE@	$(am__objects_20) $(am__objects_21) \
- at BUILD_WRITE_TRUE@	$(am__objects_22)
-am__dist_libadios_a_SOURCES_DIST = nssi/adios_nssi_args.x
-dist_libadios_a_OBJECTS =
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at nodist_libadios_a_OBJECTS = libadios_a-adios_nssi_args.$(OBJEXT)
-libadios_a_OBJECTS = $(am_libadios_a_OBJECTS) \
-	$(dist_libadios_a_OBJECTS) $(nodist_libadios_a_OBJECTS)
+ at BUILD_WRITE_TRUE@	$(am__objects_16)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am_libadios_a_OBJECTS =  \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__objects_11) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__objects_17)
+libadios_a_OBJECTS = $(am_libadios_a_OBJECTS)
 libadios_internal_nompi_a_AR = $(AR) $(ARFLAGS)
-libadios_internal_nompi_a_LIBADD =
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__DEPENDENCIES_2 =  \
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@	$(MXML_OBJECTS)
+libadios_internal_nompi_a_DEPENDENCIES = $(am__DEPENDENCIES_2)
 am__libadios_internal_nompi_a_SOURCES_DIST = core/mpidummy.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/bp_utils.c \
-	core/adios_internals.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
+	core/bp_utils.c core/adios_internals.c core/util_mpi.c \
 	query/common_query.h query/adios_query_hooks.h \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adios_query.c core/buffer.c \
-	core/adios_error.c core/adios_logger.c core/adios_timing.c \
-	core/util.c core/qhashtbl.c core/futils.c \
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adios_query.c core/adios_timing.c \
 	core/adios_transport_hooks.c core/adios_internals_mxml.c
-am__objects_23 = $(am__objects_1) \
-	libadios_internal_nompi_a-adios_transforms_common.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transforms_hooks.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_copyspec.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_subvolume.$(OBJEXT)
-am__objects_24 = libadios_internal_nompi_a-adios_transform_identity_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transform_szip_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_25 = $(am__objects_1) \
-	libadios_internal_nompi_a-adios_transforms_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transforms_util.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_24)
-am__objects_26 = $(am__objects_1) \
-	libadios_internal_nompi_a-common_query.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_query_hooks.$(OBJEXT) \
-	libadios_internal_nompi_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_27 = libadios_internal_nompi_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadios_internal_nompi_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_28 = libadios_internal_nompi_a-query_alac.$(OBJEXT)
-am__objects_29 = $(am__objects_27) $(am__objects_28) $(am__objects_10)
-am__objects_30 = $(am__objects_26) $(am__objects_29)
-am__objects_31 = $(am__objects_30) \
-	libadios_internal_nompi_a-adios_query.$(OBJEXT)
- at BUILD_WRITE_TRUE@am__objects_32 = libadios_internal_nompi_a-adios_internals_mxml.$(OBJEXT)
+am__objects_18 = $(am__objects_1) \
+	query/libadios_internal_nompi_a-common_query.$(OBJEXT) \
+	query/libadios_internal_nompi_a-common_query_read.$(OBJEXT) \
+	query/libadios_internal_nompi_a-adios_query_hooks.$(OBJEXT) \
+	query/libadios_internal_nompi_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_19 = query/libadios_internal_nompi_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadios_internal_nompi_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_20 = query/libadios_internal_nompi_a-query_alac.$(OBJEXT)
+am__objects_21 =  \
+	query/libadios_internal_nompi_a-query_minmax.$(OBJEXT) \
+	$(am__objects_19) $(am__objects_20) $(am__objects_5)
+am__objects_22 = $(am__objects_18) $(am__objects_21)
+am__objects_23 = $(am__objects_22) \
+	query/libadios_internal_nompi_a-adios_query.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_24 = core/libadios_internal_nompi_a-adios_internals_mxml.$(OBJEXT)
 am_libadios_internal_nompi_a_OBJECTS =  \
-	libadios_internal_nompi_a-mpidummy.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_bp_v1.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_endianness.$(OBJEXT) \
-	libadios_internal_nompi_a-bp_utils.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_internals.$(OBJEXT) \
-	$(am__objects_23) $(am__objects_25) $(am__objects_31) \
-	libadios_internal_nompi_a-buffer.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_error.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_logger.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_timing.$(OBJEXT) \
-	libadios_internal_nompi_a-util.$(OBJEXT) \
-	libadios_internal_nompi_a-qhashtbl.$(OBJEXT) \
-	libadios_internal_nompi_a-futils.$(OBJEXT) \
-	libadios_internal_nompi_a-adios_transport_hooks.$(OBJEXT) \
-	$(am__objects_32)
+	core/libadios_internal_nompi_a-mpidummy.$(OBJEXT) \
+	core/libadios_internal_nompi_a-bp_utils.$(OBJEXT) \
+	core/libadios_internal_nompi_a-adios_internals.$(OBJEXT) \
+	core/libadios_internal_nompi_a-util_mpi.$(OBJEXT) \
+	$(am__objects_23) \
+	core/libadios_internal_nompi_a-adios_timing.$(OBJEXT) \
+	core/libadios_internal_nompi_a-adios_transport_hooks.$(OBJEXT) \
+	$(am__objects_24)
 libadios_internal_nompi_a_OBJECTS =  \
 	$(am_libadios_internal_nompi_a_OBJECTS)
 libadios_nompi_a_AR = $(AR) $(ARFLAGS)
-libadios_nompi_a_LIBADD =
+ at BUILD_WRITE_TRUE@libadios_nompi_a_DEPENDENCIES =  \
+ at BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_2)
 am__libadios_nompi_a_SOURCES_DIST = core/adios.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
-	core/adios_copyspec.h core/adios_subvolume.h \
-	core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	core/transforms/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
 	query/common_query.h query/adios_query_hooks.h \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adios_query.c core/buffer.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/bp_utils.c \
-	core/futils.c core/adios_error.c core/adios_read.c \
-	core/adios_read_v1.c core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/globals.c core/mpidummy.c \
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adios_query.c core/bp_utils.c core/adios_read.c \
+	core/adios_read_v1.c core/common_read.c core/adios_read_ext.c \
 	core/adios_timing.c core/adios_read_hooks.c \
-	core/adios_transport_hooks.c core/adios_socket.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c read/read_bp.c \
+	core/adios_transport_hooks.c core/util_mpi.c read/read_bp.c \
 	read/read_bp_staged.c read/read_bp_staged1.c \
-	write/adios_posix.c write/adios_posix1.c write/adios_datatap.c \
-	read/read_datatap.c write/adios_flexpath.c \
-	read/read_flexpath.c write/adios_icee.c read/read_icee.c
-am__objects_33 = $(am__objects_1) \
-	libadios_nompi_a-adios_transforms_common.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_hooks.$(OBJEXT) \
-	libadios_nompi_a-adios_copyspec.$(OBJEXT) \
-	libadios_nompi_a-adios_subvolume.$(OBJEXT)
-am__objects_34 =  \
-	libadios_nompi_a-adios_transform_identity_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_szip_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_35 = $(am__objects_1) \
-	libadios_nompi_a-adios_transforms_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_datablock.$(OBJEXT) \
-	libadios_nompi_a-adios_patchdata.$(OBJEXT) \
-	libadios_nompi_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_34)
-am__objects_36 =  \
-	libadios_nompi_a-adios_transform_identity_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_szip_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_37 = $(am__objects_1) \
-	libadios_nompi_a-adios_transforms_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_util.$(OBJEXT) \
-	libadios_nompi_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_36)
-am__objects_38 = $(am__objects_1) \
-	libadios_nompi_a-common_query.$(OBJEXT) \
-	libadios_nompi_a-adios_query_hooks.$(OBJEXT) \
-	libadios_nompi_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_39 =  \
- at HAVE_FASTBIT_TRUE@	libadios_nompi_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadios_nompi_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_40 =  \
- at HAVE_ALACRITY_TRUE@	libadios_nompi_a-query_alac.$(OBJEXT)
-am__objects_41 = $(am__objects_39) $(am__objects_40) $(am__objects_10)
-am__objects_42 = $(am__objects_38) $(am__objects_41)
-am__objects_43 = $(am__objects_42) \
-	libadios_nompi_a-adios_query.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__objects_44 = libadios_nompi_a-adios_datatap.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE@	libadios_nompi_a-read_datatap.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_45 = libadios_nompi_a-adios_flexpath.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	libadios_nompi_a-read_flexpath.$(OBJEXT)
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_46 = libadios_nompi_a-adios_icee.$(OBJEXT) \
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	libadios_nompi_a-read_icee.$(OBJEXT)
- at BUILD_WRITE_TRUE@am_libadios_nompi_a_OBJECTS =  \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-common_adios.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_internals.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_internals_mxml.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	$(am__objects_33) $(am__objects_35) \
- at BUILD_WRITE_TRUE@	$(am__objects_37) $(am__objects_43) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-buffer.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_endianness.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-bp_utils.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-futils.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_error.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_read.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_read_v1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-common_read.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_infocache.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_read_ext.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-globals.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-mpidummy.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_timing.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_transport_hooks.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_socket.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_logger.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-util.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-qhashtbl.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-read_bp.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-read_bp_staged.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_posix.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	libadios_nompi_a-adios_posix1.$(OBJEXT) \
- at BUILD_WRITE_TRUE@	$(am__objects_44) $(am__objects_45) \
- at BUILD_WRITE_TRUE@	$(am__objects_46)
+	write/adios_posix.c write/adios_flexpath.c \
+	read/read_flexpath.c write/adios_icee.c read/read_icee.c \
+	core/mpidummy.c
+am__objects_25 = $(am__objects_1) \
+	query/libadios_nompi_a-common_query.$(OBJEXT) \
+	query/libadios_nompi_a-common_query_read.$(OBJEXT) \
+	query/libadios_nompi_a-adios_query_hooks.$(OBJEXT) \
+	query/libadios_nompi_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_26 = query/libadios_nompi_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadios_nompi_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_27 = query/libadios_nompi_a-query_alac.$(OBJEXT)
+am__objects_28 = query/libadios_nompi_a-query_minmax.$(OBJEXT) \
+	$(am__objects_26) $(am__objects_27) $(am__objects_5)
+am__objects_29 = $(am__objects_25) $(am__objects_28)
+am__objects_30 = $(am__objects_29) \
+	query/libadios_nompi_a-adios_query.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_31 = write/libadios_nompi_a-adios_flexpath.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	read/libadios_nompi_a-read_flexpath.$(OBJEXT)
+ at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_32 = write/libadios_nompi_a-adios_icee.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	read/libadios_nompi_a-read_icee.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_33 =  \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-common_adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_internals.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_internals_mxml.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_30) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-bp_utils.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_read_v1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-common_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_timing.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-adios_transport_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-util_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadios_nompi_a-read_bp.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadios_nompi_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadios_nompi_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadios_nompi_a-adios_posix.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_31) $(am__objects_32) \
+ at BUILD_WRITE_TRUE@	$(am__objects_31) $(am__objects_32)
+ at BUILD_WRITE_TRUE@am__objects_34 =  \
+ at BUILD_WRITE_TRUE@	core/libadios_nompi_a-mpidummy.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am_libadios_nompi_a_OBJECTS = $(am__objects_33) \
+ at BUILD_WRITE_TRUE@	$(am__objects_34)
 libadios_nompi_a_OBJECTS = $(am_libadios_nompi_a_OBJECTS)
 libadiosf_a_AR = $(AR) $(ARFLAGS)
-libadiosf_a_LIBADD =
+ 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)
 am__libadiosf_a_SOURCES_DIST = core/adiosf.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
-	core/adios_copyspec.h core/adios_subvolume.h \
-	core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	core/transforms/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
 	query/common_query.h query/adios_query_hooks.h \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/buffer.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/futils.c \
-	core/adios_error.c core/bp_utils.c core/common_read.c \
-	core/adios_infocache.c core/adios_read_ext.c core/globals.c \
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/bp_utils.c core/common_read.c \
+	core/adios_infocache.c core/adios_read_ext.c \
 	core/adios_timing.c core/adios_read_hooks.c \
-	core/adios_transport_hooks.c core/adios_socket.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c read/read_bp.c \
+	core/adios_transport_hooks.c core/util_mpi.c read/read_bp.c \
 	read/read_bp_staged.c read/read_bp_staged1.c \
-	write/adios_posix.c write/adios_posix1.c write/adios_datatap.c \
-	read/read_datatap.c write/adios_flexpath.c \
+	write/adios_posix.c write/adios_flexpath.c \
 	read/read_flexpath.c write/adios_icee.c read/read_icee.c \
-	nssi/adios_nssi_config.c write/adios_nssi.c \
-	nssi/adios_nssi_filter.c read/read_nssi.c write/adios_mpi.c \
-	write/adios_mpi_lustre.c write/adios_mpi_amr.c \
-	write/adios_var_merge.c write/adios_mpi_bgq.c \
-	write/adios_dataspaces.c read/read_dataspaces.c \
-	write/adios_dimes.c read/read_dimes.c write/adios_phdf5.c \
-	write/adios_nc4.c core/adiosf_read.c core/adiosf_defs_mod.f90 \
-	core/adiosf_write_mod.f90 core/adiosf_read_mod.f90 \
-	query/adios_query_mod.f90
-am__objects_47 = $(am__objects_1) \
-	libadiosf_a-adios_transforms_common.$(OBJEXT) \
-	libadiosf_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosf_a-adios_copyspec.$(OBJEXT) \
-	libadiosf_a-adios_subvolume.$(OBJEXT)
-am__objects_48 = libadiosf_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosf_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosf_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosf_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosf_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosf_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosf_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_49 = $(am__objects_1) \
-	libadiosf_a-adios_transforms_read.$(OBJEXT) \
-	libadiosf_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosf_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosf_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosf_a-adios_patchdata.$(OBJEXT) \
-	libadiosf_a-adios_selection_util.$(OBJEXT) $(am__objects_48)
-am__objects_50 = libadiosf_a-adios_transform_identity_write.$(OBJEXT) \
-	libadiosf_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadiosf_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadiosf_a-adios_transform_szip_write.$(OBJEXT) \
-	libadiosf_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadiosf_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadiosf_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_51 = $(am__objects_1) \
-	libadiosf_a-adios_transforms_write.$(OBJEXT) \
-	libadiosf_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadiosf_a-adios_transforms_util.$(OBJEXT) \
-	libadiosf_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_50)
-am__objects_52 = $(am__objects_1) libadiosf_a-common_query.$(OBJEXT) \
-	libadiosf_a-adios_query_hooks.$(OBJEXT) \
-	libadiosf_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_53 =  \
- at HAVE_FASTBIT_TRUE@	libadiosf_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosf_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_54 = libadiosf_a-query_alac.$(OBJEXT)
-am__objects_55 = $(am__objects_53) $(am__objects_54) $(am__objects_10)
-am__objects_56 = $(am__objects_52) $(am__objects_55)
-am__objects_57 = $(am__objects_56) libadiosf_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__objects_58 = libadiosf_a-adios_datatap.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE@	libadiosf_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_59 = libadiosf_a-adios_flexpath.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	libadiosf_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_60 = libadiosf_a-adios_icee.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	libadiosf_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__objects_61 = libadiosf_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_a-adios_nssi.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_a-adios_nssi_filter.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_62 = libadiosf_a-adiosf.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-common_adios.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_internals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_internals_mxml.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_47) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_49) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_51) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_57) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-buffer.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_timing.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_transport_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_socket.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-read_bp_staged.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_posix.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_posix1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_58) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_59) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_60) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_61)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__objects_63 = libadiosf_a-adios_mpi_bgq.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__objects_64 = libadiosf_a-adios_dataspaces.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE@	libadiosf_a-read_dataspaces.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__objects_65 = libadiosf_a-adios_dimes.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE@	libadiosf_a-read_dimes.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__objects_66 = libadiosf_a-adios_phdf5.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__objects_67 = libadiosf_a-adios_nc4.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_68 = libadiosf_a-adios_mpi.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_mpi_lustre.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_mpi_amr.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adios_var_merge.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_63) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_64) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_65) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_66) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_67)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am_libadiosf_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_62) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_68) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_a-adiosf_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_defs_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_write_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_read_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adios_query_mod.$(OBJEXT)
-am__dist_libadiosf_a_SOURCES_DIST = nssi/adios_nssi_args.x
-dist_libadiosf_a_OBJECTS =
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at nodist_libadiosf_a_OBJECTS = libadiosf_a-adios_nssi_args.$(OBJEXT)
-libadiosf_a_OBJECTS = $(am_libadiosf_a_OBJECTS) \
-	$(dist_libadiosf_a_OBJECTS) $(nodist_libadiosf_a_OBJECTS)
+	write/adios_mpi.c write/adios_mpi_lustre.c \
+	write/adios_mpi_amr.c write/adios_var_merge.c \
+	write/adios_mpi_bgq.c write/adios_dataspaces.c \
+	read/read_dataspaces.c write/adios_dimes.c read/read_dimes.c \
+	write/adios_phdf5.c write/adios_nc4.c core/adiosf_read.c \
+	core/adiosf_defs_mod.f90 core/adiosf_write_mod.f90 \
+	core/adiosf_read_mod.f90 query/adios_query_mod.f90
+am__objects_35 = $(am__objects_1) \
+	query/libadiosf_a-common_query.$(OBJEXT) \
+	query/libadiosf_a-common_query_read.$(OBJEXT) \
+	query/libadiosf_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosf_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_36 =  \
+ at HAVE_FASTBIT_TRUE@	query/libadiosf_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosf_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_37 =  \
+ at HAVE_ALACRITY_TRUE@	query/libadiosf_a-query_alac.$(OBJEXT)
+am__objects_38 = query/libadiosf_a-query_minmax.$(OBJEXT) \
+	$(am__objects_36) $(am__objects_37) $(am__objects_5)
+am__objects_39 = $(am__objects_35) $(am__objects_38)
+am__objects_40 = $(am__objects_39) \
+	query/libadiosf_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_41 = write/libadiosf_a-adios_flexpath.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	read/libadiosf_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_42 = write/libadiosf_a-adios_icee.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	read/libadiosf_a-read_icee.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_43 = core/libadiosf_a-adiosf.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-common_adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_internals.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_internals_mxml.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_40) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-bp_utils.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-common_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_infocache.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_timing.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-adios_transport_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_a-util_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_a-read_bp.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_a-adios_posix.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_41) $(am__objects_42) \
+ at BUILD_WRITE_TRUE@	$(am__objects_41) $(am__objects_42)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__objects_44 = write/libadiosf_a-adios_mpi_bgq.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__objects_45 = write/libadiosf_a-adios_dataspaces.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE@	read/libadiosf_a-read_dataspaces.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__objects_46 = write/libadiosf_a-adios_dimes.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE@	read/libadiosf_a-read_dimes.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__objects_47 = write/libadiosf_a-adios_phdf5.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__objects_48 = write/libadiosf_a-adios_nc4.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_49 =  \
+ at BUILD_WRITE_TRUE@	write/libadiosf_a-adios_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_a-adios_mpi_lustre.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_a-adios_mpi_amr.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_a-adios_var_merge.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_44) $(am__objects_45) \
+ at BUILD_WRITE_TRUE@	$(am__objects_46) $(am__objects_47) \
+ at BUILD_WRITE_TRUE@	$(am__objects_48)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am_libadiosf_a_OBJECTS = $(am__objects_43) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__objects_49) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/libadiosf_a-adiosf_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_defs_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_write_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read_mod.$(OBJEXT) \
+ at 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)
-libadiosf_nompi_a_LIBADD =
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__DEPENDENCIES_4 = $(MXML_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_DEPENDENCIES =  \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_4)
 am__libadiosf_nompi_a_SOURCES_DIST = core/adiosf.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
-	core/adios_copyspec.h core/adios_subvolume.h \
-	core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	core/transforms/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
 	query/common_query.h query/adios_query_hooks.h \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/buffer.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/futils.c \
-	core/adios_error.c core/bp_utils.c core/common_read.c \
-	core/adios_infocache.c core/adios_read_ext.c core/globals.c \
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/bp_utils.c core/common_read.c \
+	core/adios_infocache.c core/adios_read_ext.c \
 	core/adios_timing.c core/adios_read_hooks.c \
-	core/adios_transport_hooks.c core/adios_socket.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c read/read_bp.c \
+	core/adios_transport_hooks.c core/util_mpi.c read/read_bp.c \
 	read/read_bp_staged.c read/read_bp_staged1.c \
-	write/adios_posix.c write/adios_posix1.c write/adios_datatap.c \
-	read/read_datatap.c write/adios_flexpath.c \
+	write/adios_posix.c write/adios_flexpath.c \
 	read/read_flexpath.c write/adios_icee.c read/read_icee.c \
-	nssi/adios_nssi_config.c write/adios_nssi.c \
-	nssi/adios_nssi_filter.c read/read_nssi.c core/mpidummy.c \
-	core/adiosf_read.c core/adiosf_defs_mod.f90 \
+	core/mpidummy.c core/adiosf_read.c core/adiosf_defs_mod.f90 \
 	core/adiosf_write_mod.f90 core/adiosf_read_mod.f90 \
 	query/adios_query_mod.f90
-am__objects_69 = $(am__objects_1) \
-	libadiosf_nompi_a-adios_transforms_common.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosf_nompi_a-adios_copyspec.$(OBJEXT) \
-	libadiosf_nompi_a-adios_subvolume.$(OBJEXT)
-am__objects_70 =  \
-	libadiosf_nompi_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_71 = $(am__objects_1) \
-	libadiosf_nompi_a-adios_transforms_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosf_nompi_a-adios_patchdata.$(OBJEXT) \
-	libadiosf_nompi_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_70)
-am__objects_72 =  \
-	libadiosf_nompi_a-adios_transform_identity_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_szip_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_73 = $(am__objects_1) \
-	libadiosf_nompi_a-adios_transforms_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_util.$(OBJEXT) \
-	libadiosf_nompi_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_72)
-am__objects_74 = $(am__objects_1) \
-	libadiosf_nompi_a-common_query.$(OBJEXT) \
-	libadiosf_nompi_a-adios_query_hooks.$(OBJEXT) \
-	libadiosf_nompi_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_75 =  \
- at HAVE_FASTBIT_TRUE@	libadiosf_nompi_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosf_nompi_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_76 =  \
- at HAVE_ALACRITY_TRUE@	libadiosf_nompi_a-query_alac.$(OBJEXT)
-am__objects_77 = $(am__objects_75) $(am__objects_76) $(am__objects_10)
-am__objects_78 = $(am__objects_74) $(am__objects_77)
-am__objects_79 = $(am__objects_78) \
-	libadiosf_nompi_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__objects_80 = libadiosf_nompi_a-adios_datatap.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE@	libadiosf_nompi_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_81 = libadiosf_nompi_a-adios_flexpath.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	libadiosf_nompi_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_82 = libadiosf_nompi_a-adios_icee.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	libadiosf_nompi_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__objects_83 = libadiosf_nompi_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_nompi_a-adios_nssi.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_nompi_a-adios_nssi_filter.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_nompi_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_84 = libadiosf_nompi_a-adiosf.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-common_adios.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_internals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_internals_mxml.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_69) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_71) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_73) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_79) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-buffer.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_timing.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_transport_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_socket.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-read_bp_staged.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_posix.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adios_posix1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_80) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_81) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_82) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_83)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_85 = libadiosf_nompi_a-mpidummy.$(OBJEXT)
+am__objects_50 = $(am__objects_1) \
+	query/libadiosf_nompi_a-common_query.$(OBJEXT) \
+	query/libadiosf_nompi_a-common_query_read.$(OBJEXT) \
+	query/libadiosf_nompi_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosf_nompi_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_51 = query/libadiosf_nompi_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosf_nompi_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_52 = query/libadiosf_nompi_a-query_alac.$(OBJEXT)
+am__objects_53 = query/libadiosf_nompi_a-query_minmax.$(OBJEXT) \
+	$(am__objects_51) $(am__objects_52) $(am__objects_5)
+am__objects_54 = $(am__objects_50) $(am__objects_53)
+am__objects_55 = $(am__objects_54) \
+	query/libadiosf_nompi_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_56 = write/libadiosf_nompi_a-adios_flexpath.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	read/libadiosf_nompi_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_57 = write/libadiosf_nompi_a-adios_icee.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	read/libadiosf_nompi_a-read_icee.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_58 =  \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adiosf.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-common_adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_internals.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_internals_mxml.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_55) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-bp_utils.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-common_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_infocache.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_timing.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adios_transport_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-util_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_nompi_a-read_bp.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_nompi_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_nompi_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_nompi_a-adios_posix.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_56) $(am__objects_57) \
+ at BUILD_WRITE_TRUE@	$(am__objects_56) $(am__objects_57)
+ at BUILD_WRITE_TRUE@am__objects_59 =  \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-mpidummy.$(OBJEXT)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am_libadiosf_nompi_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_84) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_85) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_a-adiosf_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_defs_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_write_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_read_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adios_query_mod.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_58) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_59) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/libadiosf_nompi_a-adiosf_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_defs_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_write_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_read_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	query/adios_query_mod.$(OBJEXT)
 libadiosf_nompi_a_OBJECTS = $(am_libadiosf_nompi_a_OBJECTS)
 libadiosf_nompi_v1_a_AR = $(AR) $(ARFLAGS)
-libadiosf_nompi_v1_a_LIBADD =
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_v1_a_DEPENDENCIES =  \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_4)
 am__libadiosf_nompi_v1_a_SOURCES_DIST = core/adiosf.c \
 	core/common_adios.c core/adios_internals.c \
-	core/adios_internals_mxml.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	core/transforms/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
-	query/common_query.h query/adios_query_hooks.h \
-	query/query_utils.h query/common_query.c \
+	core/adios_internals_mxml.c query/common_query.h \
+	query/adios_query_hooks.h query/query_utils.h \
+	query/common_query.c query/common_query_read.c \
 	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/buffer.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/futils.c \
-	core/adios_error.c core/bp_utils.c core/common_read.c \
-	core/adios_infocache.c core/adios_read_ext.c core/globals.c \
+	query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/bp_utils.c core/common_read.c \
+	core/adios_infocache.c core/adios_read_ext.c \
 	core/adios_timing.c core/adios_read_hooks.c \
-	core/adios_transport_hooks.c core/adios_socket.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c read/read_bp.c \
+	core/adios_transport_hooks.c core/util_mpi.c read/read_bp.c \
 	read/read_bp_staged.c read/read_bp_staged1.c \
-	write/adios_posix.c write/adios_posix1.c write/adios_datatap.c \
-	read/read_datatap.c write/adios_flexpath.c \
+	write/adios_posix.c write/adios_flexpath.c \
 	read/read_flexpath.c write/adios_icee.c read/read_icee.c \
-	nssi/adios_nssi_config.c write/adios_nssi.c \
-	nssi/adios_nssi_filter.c read/read_nssi.c core/mpidummy.c \
-	core/adiosf_read_v1.c core/adiosf_defs_mod.f90 \
+	core/mpidummy.c core/adiosf_read_v1.c core/adiosf_defs_mod.f90 \
 	core/adiosf_write_mod.f90
-am__objects_86 = $(am__objects_1) \
-	libadiosf_nompi_v1_a-adios_transforms_common.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_copyspec.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_subvolume.$(OBJEXT)
-am__objects_87 =  \
-	libadiosf_nompi_v1_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_88 = $(am__objects_1) \
-	libadiosf_nompi_v1_a-adios_transforms_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_patchdata.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_87)
-am__objects_89 =  \
-	libadiosf_nompi_v1_a-adios_transform_identity_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_szip_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_90 = $(am__objects_1) \
-	libadiosf_nompi_v1_a-adios_transforms_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_util.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_89)
-am__objects_91 = $(am__objects_1) \
-	libadiosf_nompi_v1_a-common_query.$(OBJEXT) \
-	libadiosf_nompi_v1_a-adios_query_hooks.$(OBJEXT) \
-	libadiosf_nompi_v1_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_92 = libadiosf_nompi_v1_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosf_nompi_v1_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_93 =  \
- at HAVE_ALACRITY_TRUE@	libadiosf_nompi_v1_a-query_alac.$(OBJEXT)
-am__objects_94 = $(am__objects_92) $(am__objects_93) $(am__objects_10)
-am__objects_95 = $(am__objects_91) $(am__objects_94)
-am__objects_96 = $(am__objects_95) \
-	libadiosf_nompi_v1_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__objects_97 = libadiosf_nompi_v1_a-adios_datatap.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE@	libadiosf_nompi_v1_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_98 = libadiosf_nompi_v1_a-adios_flexpath.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	libadiosf_nompi_v1_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_99 = libadiosf_nompi_v1_a-adios_icee.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	libadiosf_nompi_v1_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__objects_100 = libadiosf_nompi_v1_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_nompi_v1_a-adios_nssi.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_nompi_v1_a-adios_nssi_filter.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_nompi_v1_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_101 = libadiosf_nompi_v1_a-adiosf.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-common_adios.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_internals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_internals_mxml.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_86) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_88) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_90) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_96) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-buffer.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_timing.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_transport_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_socket.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-read_bp_staged.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_posix.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adios_posix1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_97) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_98) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_99) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_100)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_102 = libadiosf_nompi_v1_a-mpidummy.$(OBJEXT)
+am__objects_60 = $(am__objects_1) \
+	query/libadiosf_nompi_v1_a-common_query.$(OBJEXT) \
+	query/libadiosf_nompi_v1_a-common_query_read.$(OBJEXT) \
+	query/libadiosf_nompi_v1_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosf_nompi_v1_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_61 = query/libadiosf_nompi_v1_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosf_nompi_v1_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_62 = query/libadiosf_nompi_v1_a-query_alac.$(OBJEXT)
+am__objects_63 = query/libadiosf_nompi_v1_a-query_minmax.$(OBJEXT) \
+	$(am__objects_61) $(am__objects_62) $(am__objects_5)
+am__objects_64 = $(am__objects_60) $(am__objects_63)
+am__objects_65 = $(am__objects_64) \
+	query/libadiosf_nompi_v1_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_66 = write/libadiosf_nompi_v1_a-adios_flexpath.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	read/libadiosf_nompi_v1_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_67 = write/libadiosf_nompi_v1_a-adios_icee.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	read/libadiosf_nompi_v1_a-read_icee.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_68 =  \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adiosf.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-common_adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_internals.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_internals_mxml.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_65) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-bp_utils.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-common_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_infocache.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_timing.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adios_transport_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-util_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_nompi_v1_a-read_bp.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_nompi_v1_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_nompi_v1_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_nompi_v1_a-adios_posix.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_66) $(am__objects_67) \
+ at BUILD_WRITE_TRUE@	$(am__objects_66) $(am__objects_67)
+ at BUILD_WRITE_TRUE@am__objects_69 = core/libadiosf_nompi_v1_a-mpidummy.$(OBJEXT)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am_libadiosf_nompi_v1_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_101) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_102) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_nompi_v1_a-adiosf_read_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_defs_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_write_mod.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_68) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_69) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/libadiosf_nompi_v1_a-adiosf_read_v1.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_defs_mod.$(OBJEXT) \
+ at 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)
-libadiosf_v1_a_LIBADD =
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_DEPENDENCIES = $(am__DEPENDENCIES_3)
 am__libadiosf_v1_a_SOURCES_DIST = core/adiosf.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
-	core/adios_copyspec.h core/adios_subvolume.h \
-	core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	core/transforms/adios_transforms_write.h \
-	core/transforms/adios_transforms_hooks_write.h \
-	core/transforms/adios_transforms_specparse.h \
-	core/transforms/adios_transforms_write.c \
-	core/transforms/adios_transforms_hooks_write.c \
-	core/transforms/adios_transforms_util.c \
-	core/transforms/adios_transforms_specparse.c \
-	core/transforms/plugindetect/detect_plugin_write_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_write_hook_reg.h \
-	transforms/adios_transform_identity_write.c \
-	transforms/adios_transform_zlib_write.c \
-	transforms/adios_transform_bzip2_write.c \
-	transforms/adios_transform_szip_write.c \
-	transforms/adios_transform_isobar_write.c \
-	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c \
 	query/common_query.h query/adios_query_hooks.h \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/buffer.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/futils.c \
-	core/adios_error.c core/bp_utils.c core/common_read.c \
-	core/adios_infocache.c core/adios_read_ext.c core/globals.c \
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/bp_utils.c core/common_read.c \
+	core/adios_infocache.c core/adios_read_ext.c \
 	core/adios_timing.c core/adios_read_hooks.c \
-	core/adios_transport_hooks.c core/adios_socket.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c read/read_bp.c \
+	core/adios_transport_hooks.c core/util_mpi.c read/read_bp.c \
 	read/read_bp_staged.c read/read_bp_staged1.c \
-	write/adios_posix.c write/adios_posix1.c write/adios_datatap.c \
-	read/read_datatap.c write/adios_flexpath.c \
+	write/adios_posix.c write/adios_flexpath.c \
 	read/read_flexpath.c write/adios_icee.c read/read_icee.c \
-	nssi/adios_nssi_config.c write/adios_nssi.c \
-	nssi/adios_nssi_filter.c read/read_nssi.c write/adios_mpi.c \
-	write/adios_mpi_lustre.c write/adios_mpi_amr.c \
-	write/adios_var_merge.c write/adios_mpi_bgq.c \
-	write/adios_dataspaces.c read/read_dataspaces.c \
-	write/adios_dimes.c read/read_dimes.c write/adios_phdf5.c \
-	write/adios_nc4.c core/adiosf_read_v1.c \
+	write/adios_mpi.c write/adios_mpi_lustre.c \
+	write/adios_mpi_amr.c write/adios_var_merge.c \
+	write/adios_mpi_bgq.c write/adios_dataspaces.c \
+	read/read_dataspaces.c write/adios_dimes.c read/read_dimes.c \
+	write/adios_phdf5.c write/adios_nc4.c core/adiosf_read_v1.c \
 	core/adiosf_defs_mod.f90 core/adiosf_write_mod.f90
-am__objects_103 = $(am__objects_1) \
-	libadiosf_v1_a-adios_transforms_common.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosf_v1_a-adios_copyspec.$(OBJEXT) \
-	libadiosf_v1_a-adios_subvolume.$(OBJEXT)
-am__objects_104 =  \
-	libadiosf_v1_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_105 = $(am__objects_1) \
-	libadiosf_v1_a-adios_transforms_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosf_v1_a-adios_patchdata.$(OBJEXT) \
-	libadiosf_v1_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_104)
-am__objects_106 =  \
-	libadiosf_v1_a-adios_transform_identity_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_zlib_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_bzip2_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_szip_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_isobar_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_aplod_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transform_alacrity_write.$(OBJEXT)
-am__objects_107 = $(am__objects_1) \
-	libadiosf_v1_a-adios_transforms_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_hooks_write.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_util.$(OBJEXT) \
-	libadiosf_v1_a-adios_transforms_specparse.$(OBJEXT) \
-	$(am__objects_106)
-am__objects_108 = $(am__objects_1) \
-	libadiosf_v1_a-common_query.$(OBJEXT) \
-	libadiosf_v1_a-adios_query_hooks.$(OBJEXT) \
-	libadiosf_v1_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_109 =  \
- at HAVE_FASTBIT_TRUE@	libadiosf_v1_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosf_v1_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_110 =  \
- at HAVE_ALACRITY_TRUE@	libadiosf_v1_a-query_alac.$(OBJEXT)
-am__objects_111 = $(am__objects_109) $(am__objects_110) \
-	$(am__objects_10)
-am__objects_112 = $(am__objects_108) $(am__objects_111)
-am__objects_113 = $(am__objects_112) \
-	libadiosf_v1_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE at am__objects_114 = libadiosf_v1_a-adios_datatap.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATATAP_TRUE@	libadiosf_v1_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_115 = libadiosf_v1_a-adios_flexpath.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	libadiosf_v1_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_116 = libadiosf_v1_a-adios_icee.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	libadiosf_v1_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at am__objects_117 = libadiosf_v1_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_v1_a-adios_nssi.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_v1_a-adios_nssi_filter.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	libadiosf_v1_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_118 = libadiosf_v1_a-adiosf.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-common_adios.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_internals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_internals_mxml.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_103) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_105) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_107) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_113) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-buffer.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_timing.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_transport_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_socket.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-read_bp_staged.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_posix.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_posix1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_114) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_115) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_116) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_117)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__objects_119 = libadiosf_v1_a-adios_mpi_bgq.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__objects_120 = libadiosf_v1_a-adios_dataspaces.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE@	libadiosf_v1_a-read_dataspaces.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__objects_121 = libadiosf_v1_a-adios_dimes.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE@	libadiosf_v1_a-read_dimes.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__objects_122 = libadiosf_v1_a-adios_phdf5.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__objects_123 = libadiosf_v1_a-adios_nc4.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__objects_124 = libadiosf_v1_a-adios_mpi.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_mpi_lustre.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_mpi_amr.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adios_var_merge.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_119) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_120) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_121) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_122) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_123)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am_libadiosf_v1_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_118) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__objects_124) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	libadiosf_v1_a-adiosf_read_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_defs_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	adiosf_write_mod.$(OBJEXT)
+am__objects_70 = $(am__objects_1) \
+	query/libadiosf_v1_a-common_query.$(OBJEXT) \
+	query/libadiosf_v1_a-common_query_read.$(OBJEXT) \
+	query/libadiosf_v1_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosf_v1_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_71 = query/libadiosf_v1_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosf_v1_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_72 =  \
+ at HAVE_ALACRITY_TRUE@	query/libadiosf_v1_a-query_alac.$(OBJEXT)
+am__objects_73 = query/libadiosf_v1_a-query_minmax.$(OBJEXT) \
+	$(am__objects_71) $(am__objects_72) $(am__objects_5)
+am__objects_74 = $(am__objects_70) $(am__objects_73)
+am__objects_75 = $(am__objects_74) \
+	query/libadiosf_v1_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_76 = write/libadiosf_v1_a-adios_flexpath.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE@	read/libadiosf_v1_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__objects_77 = write/libadiosf_v1_a-adios_icee.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE@	read/libadiosf_v1_a-read_icee.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_78 =  \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adiosf.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-common_adios.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_internals.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_internals_mxml.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_75) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-bp_utils.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-common_read.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_infocache.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_timing.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-adios_transport_hooks.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	core/libadiosf_v1_a-util_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_v1_a-read_bp.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_v1_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	read/libadiosf_v1_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_v1_a-adios_posix.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_76) $(am__objects_77) \
+ at BUILD_WRITE_TRUE@	$(am__objects_76) $(am__objects_77)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__objects_79 = write/libadiosf_v1_a-adios_mpi_bgq.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__objects_80 = write/libadiosf_v1_a-adios_dataspaces.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE@	read/libadiosf_v1_a-read_dataspaces.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__objects_81 = write/libadiosf_v1_a-adios_dimes.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE@	read/libadiosf_v1_a-read_dimes.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__objects_82 = write/libadiosf_v1_a-adios_phdf5.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__objects_83 = write/libadiosf_v1_a-adios_nc4.$(OBJEXT)
+ at BUILD_WRITE_TRUE@am__objects_84 =  \
+ at BUILD_WRITE_TRUE@	write/libadiosf_v1_a-adios_mpi.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_v1_a-adios_mpi_lustre.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_v1_a-adios_mpi_amr.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	write/libadiosf_v1_a-adios_var_merge.$(OBJEXT) \
+ at BUILD_WRITE_TRUE@	$(am__objects_79) $(am__objects_80) \
+ at BUILD_WRITE_TRUE@	$(am__objects_81) $(am__objects_82) \
+ at BUILD_WRITE_TRUE@	$(am__objects_83)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am_libadiosf_v1_a_OBJECTS = $(am__objects_78) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__objects_84) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/libadiosf_v1_a-adiosf_read_v1.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_defs_mod.$(OBJEXT) \
+ at 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_LIBADD =
-am__libadiosread_a_SOURCES_DIST = core/adios_bp_v1.c \
-	core/adios_endianness.c core/bp_utils.c core/futils.c \
-	core/adios_error.c core/adios_read.c core/adios_read_v1.c \
-	core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
+libadiosread_a_DEPENDENCIES =
+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 \
 	query/query_utils.h query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adios_query.c core/globals.c \
-	core/adios_read_hooks.c core/adios_logger.c core/util.c \
-	core/qhashtbl.c read/read_bp.c read/read_bp_staged.c \
-	read/read_bp_staged1.c read/read_dataspaces.c \
-	read/read_dimes.c read/read_datatap.c read/read_flexpath.c \
-	read/read_icee.c nssi/adios_nssi_config.c read/read_nssi.c
-am__objects_125 = $(am__objects_1) \
-	libadiosread_a-adios_transforms_common.$(OBJEXT) \
-	libadiosread_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosread_a-adios_copyspec.$(OBJEXT) \
-	libadiosread_a-adios_subvolume.$(OBJEXT)
-am__objects_126 =  \
-	libadiosread_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosread_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosread_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosread_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosread_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosread_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosread_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_127 = $(am__objects_1) \
-	libadiosread_a-adios_transforms_read.$(OBJEXT) \
-	libadiosread_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosread_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosread_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosread_a-adios_patchdata.$(OBJEXT) \
-	libadiosread_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_126)
-am__objects_128 = $(am__objects_1) \
-	libadiosread_a-common_query.$(OBJEXT) \
-	libadiosread_a-adios_query_hooks.$(OBJEXT) \
-	libadiosread_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_129 =  \
- at HAVE_FASTBIT_TRUE@	libadiosread_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosread_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_130 =  \
- at HAVE_ALACRITY_TRUE@	libadiosread_a-query_alac.$(OBJEXT)
-am__objects_131 = $(am__objects_129) $(am__objects_130) \
-	$(am__objects_10)
-am__objects_132 = $(am__objects_128) $(am__objects_131)
-am__objects_133 = $(am__objects_132) \
-	libadiosread_a-adios_query.$(OBJEXT)
- at HAVE_DATASPACES_TRUE@am__objects_134 = libadiosread_a-read_dataspaces.$(OBJEXT)
- at HAVE_DIMES_TRUE@am__objects_135 =  \
- at HAVE_DIMES_TRUE@	libadiosread_a-read_dimes.$(OBJEXT)
- at HAVE_DATATAP_TRUE@am__objects_136 =  \
- at HAVE_DATATAP_TRUE@	libadiosread_a-read_datatap.$(OBJEXT)
- at HAVE_FLEXPATH_TRUE@am__objects_137 =  \
- at HAVE_FLEXPATH_TRUE@	libadiosread_a-read_flexpath.$(OBJEXT)
- at HAVE_ICEE_TRUE@am__objects_138 = libadiosread_a-read_icee.$(OBJEXT)
- at HAVE_NSSI_TRUE@am__objects_139 =  \
- at HAVE_NSSI_TRUE@	libadiosread_a-adios_nssi_config.$(OBJEXT) \
- at HAVE_NSSI_TRUE@	libadiosread_a-read_nssi.$(OBJEXT)
-am_libadiosread_a_OBJECTS = libadiosread_a-adios_bp_v1.$(OBJEXT) \
-	libadiosread_a-adios_endianness.$(OBJEXT) \
-	libadiosread_a-bp_utils.$(OBJEXT) \
-	libadiosread_a-futils.$(OBJEXT) \
-	libadiosread_a-adios_error.$(OBJEXT) \
-	libadiosread_a-adios_read.$(OBJEXT) \
-	libadiosread_a-adios_read_v1.$(OBJEXT) \
-	libadiosread_a-common_read.$(OBJEXT) \
-	libadiosread_a-adios_infocache.$(OBJEXT) \
-	libadiosread_a-adios_read_ext.$(OBJEXT) $(am__objects_125) \
-	$(am__objects_127) $(am__objects_133) \
-	libadiosread_a-globals.$(OBJEXT) \
-	libadiosread_a-adios_read_hooks.$(OBJEXT) \
-	libadiosread_a-adios_logger.$(OBJEXT) \
-	libadiosread_a-util.$(OBJEXT) \
-	libadiosread_a-qhashtbl.$(OBJEXT) \
-	libadiosread_a-read_bp.$(OBJEXT) \
-	libadiosread_a-read_bp_staged.$(OBJEXT) \
-	libadiosread_a-read_bp_staged1.$(OBJEXT) $(am__objects_134) \
-	$(am__objects_135) $(am__objects_136) $(am__objects_137) \
-	$(am__objects_138) $(am__objects_139)
-am__dist_libadiosread_a_SOURCES_DIST = nssi/adios_nssi_args.x
-dist_libadiosread_a_OBJECTS =
- at HAVE_NSSI_TRUE@nodist_libadiosread_a_OBJECTS =  \
- at HAVE_NSSI_TRUE@	libadiosread_a-adios_nssi_args.$(OBJEXT)
-libadiosread_a_OBJECTS = $(am_libadiosread_a_OBJECTS) \
-	$(dist_libadiosread_a_OBJECTS) \
-	$(nodist_libadiosread_a_OBJECTS)
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adios_query.c core/adios_read_hooks.c core/util_mpi.c \
+	read/read_bp.c read/read_bp_staged.c read/read_bp_staged1.c \
+	read/read_dataspaces.c read/read_dimes.c read/read_flexpath.c \
+	read/read_icee.c
+am__objects_85 = $(am__objects_1) \
+	query/libadiosread_a-common_query.$(OBJEXT) \
+	query/libadiosread_a-common_query_read.$(OBJEXT) \
+	query/libadiosread_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosread_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_86 = query/libadiosread_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosread_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_87 =  \
+ at HAVE_ALACRITY_TRUE@	query/libadiosread_a-query_alac.$(OBJEXT)
+am__objects_88 = query/libadiosread_a-query_minmax.$(OBJEXT) \
+	$(am__objects_86) $(am__objects_87) $(am__objects_5)
+am__objects_89 = $(am__objects_85) $(am__objects_88)
+am__objects_90 = $(am__objects_89) \
+	query/libadiosread_a-adios_query.$(OBJEXT)
+ at HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__objects_91 = read/libadiosread_a-read_dataspaces.$(OBJEXT)
+ at HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__objects_92 = read/libadiosread_a-read_dimes.$(OBJEXT)
+ at HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__objects_93 = read/libadiosread_a-read_flexpath.$(OBJEXT)
+ at HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__objects_94 = read/libadiosread_a-read_icee.$(OBJEXT)
+ at HAVE_MPI_TRUE@am_libadiosread_a_OBJECTS =  \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-bp_utils.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-adios_read.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-adios_read_v1.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-common_read.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-adios_read_ext.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	$(am__objects_90) \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-adios_read_hooks.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	core/libadiosread_a-util_mpi.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	read/libadiosread_a-read_bp.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	read/libadiosread_a-read_bp_staged.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	read/libadiosread_a-read_bp_staged1.$(OBJEXT) \
+ at HAVE_MPI_TRUE@	$(am__objects_91) $(am__objects_92) \
+ at 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_LIBADD =
+libadiosread_nompi_a_DEPENDENCIES =
 am__libadiosread_nompi_a_SOURCES_DIST = core/mpidummy.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/bp_utils.c \
-	core/futils.c core/adios_error.c core/adios_read.c \
-	core/adios_read_v1.c core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	query/common_query.h query/adios_query_hooks.h \
-	query/query_utils.h query/common_query.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 \
+	query/adios_query_hooks.h query/query_utils.h \
+	query/common_query.c query/common_query_read.c \
 	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adios_query.c core/adios_logger.c \
-	core/buffer.c core/globals.c core/adios_read_hooks.c \
-	core/util.c core/qhashtbl.c read/read_bp.c read/read_datatap.c \
-	read/read_flexpath.c read/read_icee.c nssi/adios_nssi_config.c \
-	read/read_nssi.c
-am__objects_140 = $(am__objects_1) \
-	libadiosread_nompi_a-adios_transforms_common.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosread_nompi_a-adios_copyspec.$(OBJEXT) \
-	libadiosread_nompi_a-adios_subvolume.$(OBJEXT)
-am__objects_141 =  \
-	libadiosread_nompi_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_142 = $(am__objects_1) \
-	libadiosread_nompi_a-adios_transforms_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosread_nompi_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosread_nompi_a-adios_patchdata.$(OBJEXT) \
-	libadiosread_nompi_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_141)
-am__objects_143 = $(am__objects_1) \
-	libadiosread_nompi_a-common_query.$(OBJEXT) \
-	libadiosread_nompi_a-adios_query_hooks.$(OBJEXT) \
-	libadiosread_nompi_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_144 = libadiosread_nompi_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosread_nompi_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_145 =  \
- at HAVE_ALACRITY_TRUE@	libadiosread_nompi_a-query_alac.$(OBJEXT)
-am__objects_146 = $(am__objects_144) $(am__objects_145) \
-	$(am__objects_10)
-am__objects_147 = $(am__objects_143) $(am__objects_146)
-am__objects_148 = $(am__objects_147) \
-	libadiosread_nompi_a-adios_query.$(OBJEXT)
- at HAVE_DATATAP_TRUE@am__objects_149 = libadiosread_nompi_a-read_datatap.$(OBJEXT)
- at HAVE_FLEXPATH_TRUE@am__objects_150 = libadiosread_nompi_a-read_flexpath.$(OBJEXT)
- at HAVE_ICEE_TRUE@am__objects_151 =  \
- at HAVE_ICEE_TRUE@	libadiosread_nompi_a-read_icee.$(OBJEXT)
- at HAVE_NSSI_TRUE@am__objects_152 = libadiosread_nompi_a-adios_nssi_config.$(OBJEXT) \
- at HAVE_NSSI_TRUE@	libadiosread_nompi_a-read_nssi.$(OBJEXT)
+	query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adios_query.c core/adios_read_hooks.c core/util_mpi.c \
+	read/read_bp.c read/read_flexpath.c read/read_icee.c
+am__objects_95 = $(am__objects_1) \
+	query/libadiosread_nompi_a-common_query.$(OBJEXT) \
+	query/libadiosread_nompi_a-common_query_read.$(OBJEXT) \
+	query/libadiosread_nompi_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosread_nompi_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_96 = query/libadiosread_nompi_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosread_nompi_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_97 = query/libadiosread_nompi_a-query_alac.$(OBJEXT)
+am__objects_98 = query/libadiosread_nompi_a-query_minmax.$(OBJEXT) \
+	$(am__objects_96) $(am__objects_97) $(am__objects_5)
+am__objects_99 = $(am__objects_95) $(am__objects_98)
+am__objects_100 = $(am__objects_99) \
+	query/libadiosread_nompi_a-adios_query.$(OBJEXT)
+ at HAVE_FLEXPATH_TRUE@am__objects_101 = read/libadiosread_nompi_a-read_flexpath.$(OBJEXT)
+ at HAVE_ICEE_TRUE@am__objects_102 =  \
+ at HAVE_ICEE_TRUE@	read/libadiosread_nompi_a-read_icee.$(OBJEXT)
 am_libadiosread_nompi_a_OBJECTS =  \
-	libadiosread_nompi_a-mpidummy.$(OBJEXT) \
-	libadiosread_nompi_a-adios_bp_v1.$(OBJEXT) \
-	libadiosread_nompi_a-adios_endianness.$(OBJEXT) \
-	libadiosread_nompi_a-bp_utils.$(OBJEXT) \
-	libadiosread_nompi_a-futils.$(OBJEXT) \
-	libadiosread_nompi_a-adios_error.$(OBJEXT) \
-	libadiosread_nompi_a-adios_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_read_v1.$(OBJEXT) \
-	libadiosread_nompi_a-common_read.$(OBJEXT) \
-	libadiosread_nompi_a-adios_infocache.$(OBJEXT) \
-	libadiosread_nompi_a-adios_read_ext.$(OBJEXT) \
-	$(am__objects_140) $(am__objects_142) $(am__objects_148) \
-	libadiosread_nompi_a-adios_logger.$(OBJEXT) \
-	libadiosread_nompi_a-buffer.$(OBJEXT) \
-	libadiosread_nompi_a-globals.$(OBJEXT) \
-	libadiosread_nompi_a-adios_read_hooks.$(OBJEXT) \
-	libadiosread_nompi_a-util.$(OBJEXT) \
-	libadiosread_nompi_a-qhashtbl.$(OBJEXT) \
-	libadiosread_nompi_a-read_bp.$(OBJEXT) $(am__objects_149) \
-	$(am__objects_150) $(am__objects_151) $(am__objects_152)
-am__dist_libadiosread_nompi_a_SOURCES_DIST = nssi/adios_nssi_args.x
-dist_libadiosread_nompi_a_OBJECTS =
- at HAVE_NSSI_TRUE@nodist_libadiosread_nompi_a_OBJECTS = libadiosread_nompi_a-adios_nssi_args.$(OBJEXT)
-libadiosread_nompi_a_OBJECTS = $(am_libadiosread_nompi_a_OBJECTS) \
-	$(dist_libadiosread_nompi_a_OBJECTS) \
-	$(nodist_libadiosread_nompi_a_OBJECTS)
+	core/libadiosread_nompi_a-mpidummy.$(OBJEXT) \
+	core/libadiosread_nompi_a-bp_utils.$(OBJEXT) \
+	core/libadiosread_nompi_a-adios_read.$(OBJEXT) \
+	core/libadiosread_nompi_a-adios_read_v1.$(OBJEXT) \
+	core/libadiosread_nompi_a-common_read.$(OBJEXT) \
+	core/libadiosread_nompi_a-adios_read_ext.$(OBJEXT) \
+	$(am__objects_100) \
+	core/libadiosread_nompi_a-adios_read_hooks.$(OBJEXT) \
+	core/libadiosread_nompi_a-util_mpi.$(OBJEXT) \
+	read/libadiosread_nompi_a-read_bp.$(OBJEXT) $(am__objects_101) \
+	$(am__objects_102)
+libadiosread_nompi_a_OBJECTS = $(am_libadiosread_nompi_a_OBJECTS)
 libadiosreadf_a_AR = $(AR) $(ARFLAGS)
-libadiosreadf_a_LIBADD =
-am__libadiosreadf_a_SOURCES_DIST = core/adios_bp_v1.c \
-	core/adios_endianness.c core/bp_utils.c core/futils.c \
-	core/adios_error.c core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	query/common_query.h query/adios_query_hooks.h \
-	query/query_utils.h query/common_query.c \
+libadiosreadf_a_DEPENDENCIES =
+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 \
+	query/common_query.c query/common_query_read.c \
 	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/globals.c \
-	core/adios_read_hooks.c core/adios_logger.c core/util.c \
-	core/qhashtbl.c read/read_bp.c read/read_bp_staged.c \
-	read/read_bp_staged1.c read/read_dataspaces.c \
-	read/read_dimes.c read/read_datatap.c read/read_flexpath.c \
-	read/read_icee.c nssi/adios_nssi_config.c read/read_nssi.c \
-	core/adiosf_read.c core/adiosf_defs_mod.f90 \
+	query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/adios_read_hooks.c core/util_mpi.c \
+	read/read_bp.c read/read_bp_staged.c read/read_bp_staged1.c \
+	read/read_dataspaces.c read/read_dimes.c read/read_flexpath.c \
+	read/read_icee.c core/adiosf_read.c core/adiosf_defs_mod.f90 \
 	core/adiosf_read_mod.f90 query/adios_query_mod.f90
-am__objects_153 = $(am__objects_1) \
-	libadiosreadf_a-adios_transforms_common.$(OBJEXT) \
-	libadiosreadf_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosreadf_a-adios_copyspec.$(OBJEXT) \
-	libadiosreadf_a-adios_subvolume.$(OBJEXT)
-am__objects_154 =  \
-	libadiosreadf_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_155 = $(am__objects_1) \
-	libadiosreadf_a-adios_transforms_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosreadf_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosreadf_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosreadf_a-adios_patchdata.$(OBJEXT) \
-	libadiosreadf_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_154)
-am__objects_156 = $(am__objects_1) \
-	libadiosreadf_a-common_query.$(OBJEXT) \
-	libadiosreadf_a-adios_query_hooks.$(OBJEXT) \
-	libadiosreadf_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_157 =  \
- at HAVE_FASTBIT_TRUE@	libadiosreadf_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosreadf_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_158 =  \
- at HAVE_ALACRITY_TRUE@	libadiosreadf_a-query_alac.$(OBJEXT)
-am__objects_159 = $(am__objects_157) $(am__objects_158) \
-	$(am__objects_10)
-am__objects_160 = $(am__objects_156) $(am__objects_159)
-am__objects_161 = $(am__objects_160) \
-	libadiosreadf_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE at am__objects_162 = libadiosreadf_a-read_dataspaces.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE at am__objects_163 = libadiosreadf_a-read_dimes.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DATATAP_TRUE at am__objects_164 = libadiosreadf_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_165 = libadiosreadf_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__objects_166 = libadiosreadf_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__objects_167 = libadiosreadf_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	libadiosreadf_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@am__objects_168 =  \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_153) $(am__objects_155) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_161) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-read_bp_staged.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_162) $(am__objects_163) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_164) $(am__objects_165) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_166) $(am__objects_167)
- at BUILD_FORTRAN_TRUE@am_libadiosreadf_a_OBJECTS = $(am__objects_168) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_a-adiosf_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	adiosf_defs_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	adiosf_read_mod.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	adios_query_mod.$(OBJEXT)
-am__dist_libadiosreadf_a_SOURCES_DIST = nssi/adios_nssi_args.x
-dist_libadiosreadf_a_OBJECTS =
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at nodist_libadiosreadf_a_OBJECTS = libadiosreadf_a-adios_nssi_args.$(OBJEXT)
-libadiosreadf_a_OBJECTS = $(am_libadiosreadf_a_OBJECTS) \
-	$(dist_libadiosreadf_a_OBJECTS) \
-	$(nodist_libadiosreadf_a_OBJECTS)
+am__objects_103 = $(am__objects_1) \
+	query/libadiosreadf_a-common_query.$(OBJEXT) \
+	query/libadiosreadf_a-common_query_read.$(OBJEXT) \
+	query/libadiosreadf_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosreadf_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_104 = query/libadiosreadf_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosreadf_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_105 = query/libadiosreadf_a-query_alac.$(OBJEXT)
+am__objects_106 = query/libadiosreadf_a-query_minmax.$(OBJEXT) \
+	$(am__objects_104) $(am__objects_105) $(am__objects_5)
+am__objects_107 = $(am__objects_103) $(am__objects_106)
+am__objects_108 = $(am__objects_107) \
+	query/libadiosreadf_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__objects_109 = read/libadiosreadf_a-read_dataspaces.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__objects_110 = read/libadiosreadf_a-read_dimes.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__objects_111 = read/libadiosreadf_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__objects_112 = read/libadiosreadf_a-read_icee.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__objects_113 = core/libadiosreadf_a-bp_utils.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_a-common_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_108) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_a-util_mpi.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/libadiosreadf_a-read_bp.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/libadiosreadf_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/libadiosreadf_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_109) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_110) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_111) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_112)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am_libadiosreadf_a_OBJECTS =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_113) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_a-adiosf_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adiosf_defs_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read_mod.$(OBJEXT) \
+ at 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_LIBADD =
+libadiosreadf_nompi_a_DEPENDENCIES =
 am__libadiosreadf_nompi_a_SOURCES_DIST = core/mpidummy.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/bp_utils.c \
-	core/futils.c core/adios_error.c core/adios_logger.c \
-	core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
+	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 query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/globals.c \
-	core/adios_read_hooks.c core/util.c core/qhashtbl.c \
-	read/read_bp.c read/read_datatap.c read/read_flexpath.c \
-	read/read_icee.c nssi/adios_nssi_config.c read/read_nssi.c \
-	core/adiosf_read.c
-am__objects_169 = $(am__objects_1) \
-	libadiosreadf_nompi_a-adios_transforms_common.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_copyspec.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_subvolume.$(OBJEXT)
-am__objects_170 =  \
-	libadiosreadf_nompi_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_171 = $(am__objects_1) \
-	libadiosreadf_nompi_a-adios_transforms_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_patchdata.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_170)
-am__objects_172 = $(am__objects_1) \
-	libadiosreadf_nompi_a-common_query.$(OBJEXT) \
-	libadiosreadf_nompi_a-adios_query_hooks.$(OBJEXT) \
-	libadiosreadf_nompi_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_173 = libadiosreadf_nompi_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosreadf_nompi_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_174 = libadiosreadf_nompi_a-query_alac.$(OBJEXT)
-am__objects_175 = $(am__objects_173) $(am__objects_174) \
-	$(am__objects_10)
-am__objects_176 = $(am__objects_172) $(am__objects_175)
-am__objects_177 = $(am__objects_176) \
-	libadiosreadf_nompi_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DATATAP_TRUE at am__objects_178 = libadiosreadf_nompi_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_179 = libadiosreadf_nompi_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__objects_180 = libadiosreadf_nompi_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__objects_181 = libadiosreadf_nompi_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	libadiosreadf_nompi_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@am__objects_182 =  \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-mpidummy.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_169) $(am__objects_171) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_177) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_178) $(am__objects_179) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_180) $(am__objects_181)
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/adios_read_hooks.c core/util_mpi.c \
+	read/read_bp.c read/read_flexpath.c read/read_icee.c \
+	core/adiosf_read.c core/adiosf_defs_mod.f90 \
+	core/adiosf_read_mod.f90 query/adios_query_mod.f90
+am__objects_114 = $(am__objects_1) \
+	query/libadiosreadf_nompi_a-common_query.$(OBJEXT) \
+	query/libadiosreadf_nompi_a-common_query_read.$(OBJEXT) \
+	query/libadiosreadf_nompi_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosreadf_nompi_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_115 = query/libadiosreadf_nompi_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosreadf_nompi_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_116 = query/libadiosreadf_nompi_a-query_alac.$(OBJEXT)
+am__objects_117 = query/libadiosreadf_nompi_a-query_minmax.$(OBJEXT) \
+	$(am__objects_115) $(am__objects_116) $(am__objects_5)
+am__objects_118 = $(am__objects_114) $(am__objects_117)
+am__objects_119 = $(am__objects_118) \
+	query/libadiosreadf_nompi_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_120 = read/libadiosreadf_nompi_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__objects_121 = read/libadiosreadf_nompi_a-read_icee.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@am__objects_122 = core/libadiosreadf_nompi_a-mpidummy.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_a-bp_utils.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_a-common_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	$(am__objects_119) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_a-util_mpi.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	read/libadiosreadf_nompi_a-read_bp.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	$(am__objects_120) $(am__objects_121)
 @BUILD_FORTRAN_TRUE at am_libadiosreadf_nompi_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@	$(am__objects_182) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_a-adiosf_read.$(OBJEXT)
-am__dist_libadiosreadf_nompi_a_SOURCES_DIST = nssi/adios_nssi_args.x
-dist_libadiosreadf_nompi_a_OBJECTS =
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at nodist_libadiosreadf_nompi_a_OBJECTS = libadiosreadf_nompi_a-adios_nssi_args.$(OBJEXT)
-libadiosreadf_nompi_a_OBJECTS = $(am_libadiosreadf_nompi_a_OBJECTS) \
-	$(dist_libadiosreadf_nompi_a_OBJECTS) \
-	$(nodist_libadiosreadf_nompi_a_OBJECTS)
+ at BUILD_FORTRAN_TRUE@	$(am__objects_122) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_a-adiosf_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/adiosf_defs_mod.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/adiosf_read_mod.$(OBJEXT) \
+ at 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_LIBADD =
+libadiosreadf_nompi_v1_a_DEPENDENCIES =
 am__libadiosreadf_nompi_v1_a_SOURCES_DIST = core/mpidummy.c \
-	core/adios_bp_v1.c core/adios_endianness.c core/bp_utils.c \
-	core/futils.c core/adios_error.c core/adios_logger.c \
-	core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
+	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 query/common_query.c \
-	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/globals.c \
-	core/adios_read_hooks.c core/util.c core/qhashtbl.c \
-	read/read_bp.c read/read_datatap.c read/read_flexpath.c \
-	read/read_icee.c nssi/adios_nssi_config.c read/read_nssi.c \
+	query/common_query_read.c query/adios_query_hooks.c \
+	query/query_utils.c query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/adios_read_hooks.c core/util_mpi.c \
+	read/read_bp.c read/read_flexpath.c read/read_icee.c \
 	core/adiosf_read_v1.c
-am__objects_183 = $(am__objects_1) \
-	libadiosreadf_nompi_v1_a-adios_transforms_common.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_copyspec.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_subvolume.$(OBJEXT)
-am__objects_184 = libadiosreadf_nompi_v1_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_185 = $(am__objects_1) \
-	libadiosreadf_nompi_v1_a-adios_transforms_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_patchdata.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_184)
-am__objects_186 = $(am__objects_1) \
-	libadiosreadf_nompi_v1_a-common_query.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-adios_query_hooks.$(OBJEXT) \
-	libadiosreadf_nompi_v1_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_187 = libadiosreadf_nompi_v1_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosreadf_nompi_v1_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_188 = libadiosreadf_nompi_v1_a-query_alac.$(OBJEXT)
-am__objects_189 = $(am__objects_187) $(am__objects_188) \
-	$(am__objects_10)
-am__objects_190 = $(am__objects_186) $(am__objects_189)
-am__objects_191 = $(am__objects_190) \
-	libadiosreadf_nompi_v1_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DATATAP_TRUE at am__objects_192 = libadiosreadf_nompi_v1_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_193 = libadiosreadf_nompi_v1_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__objects_194 = libadiosreadf_nompi_v1_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__objects_195 = libadiosreadf_nompi_v1_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	libadiosreadf_nompi_v1_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@am__objects_196 = libadiosreadf_nompi_v1_a-mpidummy.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_183) $(am__objects_185) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_191) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_192) $(am__objects_193) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_194) $(am__objects_195)
+am__objects_123 = $(am__objects_1) \
+	query/libadiosreadf_nompi_v1_a-common_query.$(OBJEXT) \
+	query/libadiosreadf_nompi_v1_a-common_query_read.$(OBJEXT) \
+	query/libadiosreadf_nompi_v1_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosreadf_nompi_v1_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_124 = query/libadiosreadf_nompi_v1_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosreadf_nompi_v1_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_125 = query/libadiosreadf_nompi_v1_a-query_alac.$(OBJEXT)
+am__objects_126 =  \
+	query/libadiosreadf_nompi_v1_a-query_minmax.$(OBJEXT) \
+	$(am__objects_124) $(am__objects_125) $(am__objects_5)
+am__objects_127 = $(am__objects_123) $(am__objects_126)
+am__objects_128 = $(am__objects_127) \
+	query/libadiosreadf_nompi_v1_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_129 = read/libadiosreadf_nompi_v1_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__objects_130 = read/libadiosreadf_nompi_v1_a-read_icee.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@am__objects_131 = core/libadiosreadf_nompi_v1_a-mpidummy.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_v1_a-bp_utils.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_v1_a-common_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_v1_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	$(am__objects_128) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_v1_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_v1_a-util_mpi.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	read/libadiosreadf_nompi_v1_a-read_bp.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@	$(am__objects_129) $(am__objects_130)
 @BUILD_FORTRAN_TRUE at am_libadiosreadf_nompi_v1_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@	$(am__objects_196) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_nompi_v1_a-adiosf_read_v1.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@	$(am__objects_131) \
+ at BUILD_FORTRAN_TRUE@	core/libadiosreadf_nompi_v1_a-adiosf_read_v1.$(OBJEXT)
 libadiosreadf_nompi_v1_a_OBJECTS =  \
 	$(am_libadiosreadf_nompi_v1_a_OBJECTS)
 libadiosreadf_v1_a_AR = $(AR) $(ARFLAGS)
-libadiosreadf_v1_a_LIBADD =
-am__libadiosreadf_v1_a_SOURCES_DIST = core/adios_bp_v1.c \
-	core/adios_endianness.c core/bp_utils.c core/futils.c \
-	core/adios_error.c core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c core/adios_copyspec.h \
-	core/adios_subvolume.h core/adios_selection_util.h \
-	core/transforms/adios_transforms_common.h \
-	core/transforms/adios_transforms_hooks.h \
-	core/transforms/adios_transforms_util.h \
-	core/transforms/adios_transforms_common.c \
-	core/transforms/adios_transforms_hooks.c core/adios_copyspec.c \
-	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/adios_transforms_read.h \
-	core/transforms/adios_transforms_hooks_read.h \
-	core/transforms/adios_transforms_reqgroup.h \
-	core/transforms/adios_transforms_datablock.h \
-	core/transforms/adios_transforms_transinfo.h \
-	core/transforms/adios_patchdata.h \
-	core/transforms/adios_transforms_read.c \
-	core/transforms/adios_transforms_hooks_read.c \
-	core/transforms/adios_transforms_reqgroup.c \
-	core/transforms/adios_transforms_datablock.c \
-	core/transforms/adios_patchdata.c core/adios_selection_util.c \
-	core/transforms/plugindetect/detect_plugin_read_hook_decls.h \
-	core/transforms/plugindetect/detect_plugin_read_hook_reg.h \
-	transforms/adios_transform_identity_read.c \
-	transforms/adios_transform_zlib_read.c \
-	transforms/adios_transform_bzip2_read.c \
-	transforms/adios_transform_szip_read.c \
-	transforms/adios_transform_isobar_read.c \
-	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c \
-	query/common_query.h query/adios_query_hooks.h \
-	query/query_utils.h query/common_query.c \
+libadiosreadf_v1_a_DEPENDENCIES =
+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 \
+	query/common_query.c query/common_query_read.c \
 	query/adios_query_hooks.c query/query_utils.c \
-	query/query_fastbit.c query/fastbit_adios.c query/query_alac.c \
-	query/fastbit_adios.h query/adiosf_query.c core/globals.c \
-	core/adios_read_hooks.c core/adios_logger.c core/util.c \
-	core/qhashtbl.c read/read_bp.c read/read_bp_staged.c \
-	read/read_bp_staged1.c read/read_dataspaces.c \
-	read/read_dimes.c read/read_datatap.c read/read_flexpath.c \
-	read/read_icee.c nssi/adios_nssi_config.c read/read_nssi.c \
-	core/adiosf_read_v1.c
-am__objects_197 = $(am__objects_1) \
-	libadiosreadf_v1_a-adios_transforms_common.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transforms_hooks.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_copyspec.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_subvolume.$(OBJEXT)
-am__objects_198 =  \
-	libadiosreadf_v1_a-adios_transform_identity_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transform_zlib_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transform_bzip2_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transform_szip_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transform_isobar_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transform_aplod_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transform_alacrity_read.$(OBJEXT)
-am__objects_199 = $(am__objects_1) \
-	libadiosreadf_v1_a-adios_transforms_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transforms_hooks_read.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transforms_reqgroup.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_transforms_datablock.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_patchdata.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_selection_util.$(OBJEXT) \
-	$(am__objects_198)
-am__objects_200 = $(am__objects_1) \
-	libadiosreadf_v1_a-common_query.$(OBJEXT) \
-	libadiosreadf_v1_a-adios_query_hooks.$(OBJEXT) \
-	libadiosreadf_v1_a-query_utils.$(OBJEXT)
- at HAVE_FASTBIT_TRUE@am__objects_201 =  \
- at HAVE_FASTBIT_TRUE@	libadiosreadf_v1_a-query_fastbit.$(OBJEXT) \
- at HAVE_FASTBIT_TRUE@	libadiosreadf_v1_a-fastbit_adios.$(OBJEXT)
- at HAVE_ALACRITY_TRUE@am__objects_202 =  \
- at HAVE_ALACRITY_TRUE@	libadiosreadf_v1_a-query_alac.$(OBJEXT)
-am__objects_203 = $(am__objects_201) $(am__objects_202) \
-	$(am__objects_10)
-am__objects_204 = $(am__objects_200) $(am__objects_203)
-am__objects_205 = $(am__objects_204) \
-	libadiosreadf_v1_a-adiosf_query.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE at am__objects_206 = libadiosreadf_v1_a-read_dataspaces.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE at am__objects_207 = libadiosreadf_v1_a-read_dimes.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_DATATAP_TRUE at am__objects_208 = libadiosreadf_v1_a-read_datatap.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__objects_209 = libadiosreadf_v1_a-read_flexpath.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__objects_210 = libadiosreadf_v1_a-read_icee.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at am__objects_211 = libadiosreadf_v1_a-adios_nssi_config.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE@	libadiosreadf_v1_a-read_nssi.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@am__objects_212 =  \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_bp_v1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_endianness.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-bp_utils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-futils.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_error.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-common_read.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_infocache.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_read_ext.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_197) $(am__objects_199) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_205) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-globals.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_read_hooks.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adios_logger.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-util.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-qhashtbl.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-read_bp.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-read_bp_staged.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-read_bp_staged1.$(OBJEXT) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_206) $(am__objects_207) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_208) $(am__objects_209) \
- at BUILD_FORTRAN_TRUE@	$(am__objects_210) $(am__objects_211)
- at BUILD_FORTRAN_TRUE@am_libadiosreadf_v1_a_OBJECTS =  \
- at BUILD_FORTRAN_TRUE@	$(am__objects_212) \
- at BUILD_FORTRAN_TRUE@	libadiosreadf_v1_a-adiosf_read_v1.$(OBJEXT)
+	query/query_minmax.c query/query_fastbit.c \
+	query/fastbit_adios.c query/query_alac.c query/fastbit_adios.h \
+	query/adiosf_query.c core/adios_read_hooks.c core/util_mpi.c \
+	read/read_bp.c read/read_bp_staged.c read/read_bp_staged1.c \
+	read/read_dataspaces.c read/read_dimes.c read/read_flexpath.c \
+	read/read_icee.c core/adiosf_read_v1.c
+am__objects_132 = $(am__objects_1) \
+	query/libadiosreadf_v1_a-common_query.$(OBJEXT) \
+	query/libadiosreadf_v1_a-common_query_read.$(OBJEXT) \
+	query/libadiosreadf_v1_a-adios_query_hooks.$(OBJEXT) \
+	query/libadiosreadf_v1_a-query_utils.$(OBJEXT)
+ at HAVE_FASTBIT_TRUE@am__objects_133 = query/libadiosreadf_v1_a-query_fastbit.$(OBJEXT) \
+ at HAVE_FASTBIT_TRUE@	query/libadiosreadf_v1_a-fastbit_adios.$(OBJEXT)
+ at HAVE_ALACRITY_TRUE@am__objects_134 = query/libadiosreadf_v1_a-query_alac.$(OBJEXT)
+am__objects_135 = query/libadiosreadf_v1_a-query_minmax.$(OBJEXT) \
+	$(am__objects_133) $(am__objects_134) $(am__objects_5)
+am__objects_136 = $(am__objects_132) $(am__objects_135)
+am__objects_137 = $(am__objects_136) \
+	query/libadiosreadf_v1_a-adiosf_query.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__objects_138 = read/libadiosreadf_v1_a-read_dataspaces.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__objects_139 = read/libadiosreadf_v1_a-read_dimes.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__objects_140 = read/libadiosreadf_v1_a-read_flexpath.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__objects_141 = read/libadiosreadf_v1_a-read_icee.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__objects_142 = core/libadiosreadf_v1_a-bp_utils.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_v1_a-common_read.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_v1_a-adios_read_ext.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_137) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_v1_a-adios_read_hooks.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_v1_a-util_mpi.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/libadiosreadf_v1_a-read_bp.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/libadiosreadf_v1_a-read_bp_staged.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/libadiosreadf_v1_a-read_bp_staged1.$(OBJEXT) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_138) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_139) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_140) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_141)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am_libadiosreadf_v1_a_OBJECTS =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__objects_142) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/libadiosreadf_v1_a-adiosf_read_v1.$(OBJEXT)
 libadiosreadf_v1_a_OBJECTS = $(am_libadiosreadf_v1_a_OBJECTS)
- at HAVE_NSSI_TRUE@am__EXEEXT_1 = nssi-staging-server$(EXEEXT) \
- at HAVE_NSSI_TRUE@	nssi-coupling-server$(EXEEXT)
+libcoreonce_a_AR = $(AR) $(ARFLAGS)
+libcoreonce_a_LIBADD =
+am__objects_143 = $(am__objects_1) \
+	core/transforms/libcoreonce_a-adios_transforms_common.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_hooks.$(OBJEXT) \
+	core/libcoreonce_a-adios_copyspec.$(OBJEXT) \
+	core/libcoreonce_a-adios_subvolume.$(OBJEXT)
+am__objects_144 = transforms/libcoreonce_a-adios_transform_identity_write.$(OBJEXT) \
+	transforms/libcoreonce_a-adios_transform_zlib_write.$(OBJEXT) \
+	transforms/libcoreonce_a-adios_transform_bzip2_write.$(OBJEXT) \
+	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)
+am__objects_145 = $(am__objects_1) \
+	core/transforms/libcoreonce_a-adios_transforms_write.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_hooks_write.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_util.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_specparse.$(OBJEXT) \
+	$(am__objects_144)
+am__objects_146 = transforms/libcoreonce_a-adios_transform_identity_read.$(OBJEXT) \
+	transforms/libcoreonce_a-adios_transform_zlib_read.$(OBJEXT) \
+	transforms/libcoreonce_a-adios_transform_bzip2_read.$(OBJEXT) \
+	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)
+am__objects_147 = $(am__objects_1) \
+	core/transforms/libcoreonce_a-adios_transforms_read.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_hooks_read.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_reqgroup.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_transforms_datablock.$(OBJEXT) \
+	core/transforms/libcoreonce_a-adios_patchdata.$(OBJEXT) \
+	core/libcoreonce_a-adios_selection_util.$(OBJEXT) \
+	$(am__objects_146)
+am_libcoreonce_a_OBJECTS = core/libcoreonce_a-a2sel.$(OBJEXT) \
+	core/libcoreonce_a-adios_bp_v1.$(OBJEXT) \
+	core/libcoreonce_a-adios_clock.$(OBJEXT) \
+	core/libcoreonce_a-adios_endianness.$(OBJEXT) \
+	core/libcoreonce_a-adios_error.$(OBJEXT) \
+	core/libcoreonce_a-adios_infocache.$(OBJEXT) \
+	core/libcoreonce_a-adios_logger.$(OBJEXT) \
+	core/libcoreonce_a-adios_socket.$(OBJEXT) \
+	core/libcoreonce_a-buffer.$(OBJEXT) \
+	core/libcoreonce_a-futils.$(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)
+libcoreonce_a_OBJECTS = $(am_libcoreonce_a_OBJECTS)
 PROGRAMS = $(bin_PROGRAMS)
-am__nssi_coupling_server_SOURCES_DIST = nssi/nssi_coupling_server.cpp
- at HAVE_NSSI_TRUE@am_nssi_coupling_server_OBJECTS = nssi_coupling_server-nssi_coupling_server.$(OBJEXT)
-nssi_coupling_server_OBJECTS = $(am_nssi_coupling_server_OBJECTS)
-am__DEPENDENCIES_1 =
- at HAVE_NSSI_TRUE@nssi_coupling_server_DEPENDENCIES =  \
- at HAVE_NSSI_TRUE@	$(top_builddir)/src/libadios.a \
- at HAVE_NSSI_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nssi_coupling_server_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(nssi_coupling_server_LDFLAGS) $(LDFLAGS) -o $@
-am__nssi_staging_server_SOURCES_DIST = nssi/nssi_staging_server.cpp \
-	nssi/aggregation.cpp
- at HAVE_NSSI_TRUE@am_nssi_staging_server_OBJECTS = nssi_staging_server-nssi_staging_server.$(OBJEXT) \
- at HAVE_NSSI_TRUE@	nssi_staging_server-aggregation.$(OBJEXT)
-nssi_staging_server_OBJECTS = $(am_nssi_staging_server_OBJECTS)
- at HAVE_NSSI_TRUE@nssi_staging_server_DEPENDENCIES =  \
- at HAVE_NSSI_TRUE@	$(top_builddir)/src/libadios.a \
- at HAVE_NSSI_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nssi_staging_server_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(nssi_staging_server_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
+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 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
 FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
+LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
+AM_V_FC = $(am__v_FC_ at AM_V@)
+am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
+am__v_FC_0 = @echo "  FC      " $@;
+am__v_FC_1 = 
 FCLD = $(FC)
-FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(libadios_a_SOURCES) $(dist_libadios_a_SOURCES) \
-	$(nodist_libadios_a_SOURCES) \
-	$(libadios_internal_nompi_a_SOURCES) \
+FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
+SOURCES = $(libadios_a_SOURCES) $(libadios_internal_nompi_a_SOURCES) \
 	$(libadios_nompi_a_SOURCES) $(libadiosf_a_SOURCES) \
-	$(dist_libadiosf_a_SOURCES) $(nodist_libadiosf_a_SOURCES) \
 	$(libadiosf_nompi_a_SOURCES) $(libadiosf_nompi_v1_a_SOURCES) \
 	$(libadiosf_v1_a_SOURCES) $(libadiosread_a_SOURCES) \
-	$(dist_libadiosread_a_SOURCES) \
-	$(nodist_libadiosread_a_SOURCES) \
-	$(libadiosread_nompi_a_SOURCES) \
-	$(dist_libadiosread_nompi_a_SOURCES) \
-	$(nodist_libadiosread_nompi_a_SOURCES) \
-	$(libadiosreadf_a_SOURCES) $(dist_libadiosreadf_a_SOURCES) \
-	$(nodist_libadiosreadf_a_SOURCES) \
+	$(libadiosread_nompi_a_SOURCES) $(libadiosreadf_a_SOURCES) \
 	$(libadiosreadf_nompi_a_SOURCES) \
-	$(dist_libadiosreadf_nompi_a_SOURCES) \
-	$(nodist_libadiosreadf_nompi_a_SOURCES) \
 	$(libadiosreadf_nompi_v1_a_SOURCES) \
-	$(libadiosreadf_v1_a_SOURCES) $(nssi_coupling_server_SOURCES) \
-	$(nssi_staging_server_SOURCES)
+	$(libadiosreadf_v1_a_SOURCES) $(libcoreonce_a_SOURCES)
 DIST_SOURCES = $(am__libadios_a_SOURCES_DIST) \
-	$(am__dist_libadios_a_SOURCES_DIST) \
 	$(am__libadios_internal_nompi_a_SOURCES_DIST) \
 	$(am__libadios_nompi_a_SOURCES_DIST) \
 	$(am__libadiosf_a_SOURCES_DIST) \
-	$(am__dist_libadiosf_a_SOURCES_DIST) \
 	$(am__libadiosf_nompi_a_SOURCES_DIST) \
 	$(am__libadiosf_nompi_v1_a_SOURCES_DIST) \
 	$(am__libadiosf_v1_a_SOURCES_DIST) \
 	$(am__libadiosread_a_SOURCES_DIST) \
-	$(am__dist_libadiosread_a_SOURCES_DIST) \
 	$(am__libadiosread_nompi_a_SOURCES_DIST) \
-	$(am__dist_libadiosread_nompi_a_SOURCES_DIST) \
 	$(am__libadiosreadf_a_SOURCES_DIST) \
-	$(am__dist_libadiosreadf_a_SOURCES_DIST) \
 	$(am__libadiosreadf_nompi_a_SOURCES_DIST) \
-	$(am__dist_libadiosreadf_nompi_a_SOURCES_DIST) \
 	$(am__libadiosreadf_nompi_v1_a_SOURCES_DIST) \
 	$(am__libadiosreadf_v1_a_SOURCES_DIST) \
-	$(am__nssi_coupling_server_SOURCES_DIST) \
-	$(am__nssi_staging_server_SOURCES_DIST)
+	$(libcoreonce_a_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 HEADERS = $(include_HEADERS) $(nodist_include_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+DIST_SUBDIRS = mxml
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -2193,6 +1353,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -2201,14 +1362,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
-#if BUILD_FORTRAN
-#libadiosreadf_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC $(DMALLOC_CPPFLAGS)
-#libadiosreadf_nompi_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC $(DMALLOC_CPPFLAGS)
-#endif
-CC = $(MPICC)
+CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -2220,7 +1379,7 @@ CRAY_UGNI_CPPFLAGS = @CRAY_UGNI_CPPFLAGS@
 CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
-CXX = $(MPICXX)
+CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -2237,6 +1396,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -2290,17 +1450,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -2331,6 +1494,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -2338,7 +1502,7 @@ PAMI_LDFLAGS = @PAMI_LDFLAGS@
 PAMI_LIBS = @PAMI_LIBS@
 PATHPROG = @PATHPROG@
 PATH_SEPARATOR = @PATH_SEPARATOR@
-PHDF5_CPPFLAGS = @PHDF5_CPPFLAGS@ $(am__append_17)
+PHDF5_CPPFLAGS = @PHDF5_CPPFLAGS@
 PHDF5_LDFLAGS = @PHDF5_LDFLAGS@
 PHDF5_LIBS = @PHDF5_LIBS@
 PORTALS_CFLAGS = @PORTALS_CFLAGS@
@@ -2351,10 +1515,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -2363,9 +1530,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -2377,6 +1541,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -2411,14 +1576,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -2428,23 +1596,63 @@ 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
-AUTOMAKE_OPTIONS = no-dependencies
+ at BUILD_MXML_TRUE@SUBDIRS = mxml 
+ at BUILD_MXML_TRUE@MXML_BUILDDIR = mxml/mxml-2.9
+ at BUILD_MXML_TRUE@MXML_LIB = libmxml_a
+ at BUILD_MXML_TRUE@MXML_OBJECTS = ${MXML_BUILDDIR}/${MXML_LIB}-mxml-attr.${OBJEXT}     \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-get.${OBJEXT}      \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-private.${OBJEXT}  \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-string.${OBJEXT}   \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-entity.${OBJEXT}   \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-index.${OBJEXT}    \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-search.${OBJEXT}   \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-file.${OBJEXT}     \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-node.${OBJEXT}     \
+ at BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-set.${OBJEXT} 
+
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 METASOURCES = AUTO
- at HAVE_NSSI_TRUE@nssi_staging_server_SOURCES = nssi/nssi_staging_server.cpp nssi/aggregation.cpp
- at HAVE_NSSI_TRUE@nssi_staging_server_CFLAGS = $(ADIOSLIB_CFLAGS)
- at HAVE_NSSI_TRUE@nssi_staging_server_CPPFLAGS = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
- at HAVE_NSSI_TRUE@nssi_staging_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
- at HAVE_NSSI_TRUE@nssi_staging_server_LDADD =  \
- at HAVE_NSSI_TRUE@	$(top_builddir)/src/libadios.a \
- at HAVE_NSSI_TRUE@	$(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
- at HAVE_NSSI_TRUE@nssi_coupling_server_SOURCES = nssi/nssi_coupling_server.cpp
- at HAVE_NSSI_TRUE@nssi_coupling_server_CFLAGS = $(ADIOSLIB_CFLAGS)
- at HAVE_NSSI_TRUE@nssi_coupling_server_CPPFLAGS = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL # $(MACRODEFFLAG)USE_TIMERS
- at HAVE_NSSI_TRUE@nssi_coupling_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
- at HAVE_NSSI_TRUE@nssi_coupling_server_LDADD =  \
- at HAVE_NSSI_TRUE@	$(top_builddir)/src/libadios.a \
- at HAVE_NSSI_TRUE@	$(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
-CLEANFILES = $(am__append_33) $(am__append_39) $(am__append_59)
+#if HAVE_NSSI
+#
+#bin_PROGRAMS+=nssi-staging-server
+#
+#nssi_staging_server_SOURCES = nssi/nssi_staging_server.cpp nssi/aggregation.cpp
+#nssi_staging_server_CFLAGS=$(ADIOSLIB_CFLAGS)
+#nssi_staging_server_CPPFLAGS=$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
+#nssi_staging_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+#nssi_staging_server_LDADD = $(top_builddir)/src/libadios.a
+#nssi_staging_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
+#
+#bin_PROGRAMS+=nssi-coupling-server
+#
+#nssi_coupling_server_SOURCES = nssi/nssi_coupling_server.cpp
+#nssi_coupling_server_CFLAGS=$(ADIOSLIB_CFLAGS)
+#nssi_coupling_server_CPPFLAGS=$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL # $(MACRODEFFLAG)USE_TIMERS
+#nssi_coupling_server_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+#nssi_coupling_server_LDADD = $(top_builddir)/src/libadios.a
+#nssi_coupling_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
+#
+#endif # HAVE_NSSI
+CLEANFILES = $(am__append_36) $(am__append_60)
+
+#bin_PROGRAMS+=adios_flags
+#nodist_adios_flags_SOURCES = adios_flags.h 
+#adios_flags_SOURCES = adios_flags.c 
+#adios_flags.h:  
+#        rm -f $@
+#        @echo "#define ADIOS_CFLAGS \"$(libadios_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOS_LDFLAGS \"$(libadios_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSF_CFLAGS \"$(libadiosf_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSF_LDFLAGS \"$(libadiosf_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_CFLAGS \"$(libadiosread_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_LDFLAGS \"$(libadiosread_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_CFLAGS \"$(libadiosreadf_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_LDFLAGS \"$(libadiosreadf_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_NOMPI_CFLAGS \"$(libadiosread_nompi_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREAD_NOMPI_LDFLAGS \"$(libadiosread_nompi_a_LDFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_NOMPI_CFLAGS \"$(libadiosreadf_nompi_a_CPPFLAGS)\"" >> $@
+#        @echo "#define ADIOSREADF_NOMPI_LDFLAGS \"$(libadiosreadf_nompi_a_LDFLAGS)\"" >> $@
+#adios_flags.c: adios_flags.h
 include_HEADERS = public/adios.h public/adios_version.h \
 	public/adios_types.h public/adios_read.h public/adios_error.h \
 	public/adios_mpi.h public/mpidummy.h public/adios_read_v1.h \
@@ -2452,23 +1660,38 @@ include_HEADERS = public/adios.h public/adios_version.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_38) $(am__append_58)
-lib_LIBRARIES = $(am__append_5) $(am__append_7) libadiosread.a \
-	$(am__append_48) libadiosread_nompi.a $(am__append_66)
-libadiosread_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_46) \
-	$(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) \
-	$(am__append_75)
-libadiosreadf_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_55) \
-	$(am__append_57)
-libadiosread_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_64) \
+nodist_include_HEADERS = $(am__append_35) $(am__append_59)
+
+# End of building Parallel Write libs
+
+# End of building all Write libs
+
+####################
+#  READ libraries #
+####################
+
+#
+# Rules to build Sequential C+Fortran Read libraries 
+#
+
+#
+#    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) \
 	$(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) \
-	$(ADIOSREADLIB_CPPFLAGS) $(am__append_76)
-libadiosreadf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_71) \
-	$(am__append_73)
-libadiosread_a_CFLAGS = $(am__append_47)
-libadiosreadf_a_CFLAGS = $(am__append_56)
-libadiosread_nompi_a_CFLAGS = $(am__append_65)
-libadiosreadf_nompi_a_CFLAGS = $(am__append_72)
+	$(ADIOSREADLIB_CPPFLAGS)
+libadiosreadf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_45)
+libadiosread_a_CFLAGS = 
+libadiosreadf_a_CFLAGS = 
+libadiosread_nompi_a_CFLAGS = 
+libadiosreadf_nompi_a_CFLAGS = 
 
 # Identity plugin:
 
@@ -2551,153 +1774,104 @@ transforms_write_SOURCES = $(transforms_write_HDRS) \
 query_common_HDRS = query/common_query.h query/adios_query_hooks.h query/query_utils.h
 query_common_SOURCES = $(query_common_HDRS) \
                        query/common_query.c  \
+                       query/common_query_read.c  \
                        query/adios_query_hooks.c \
                        query/query_utils.c
 
 
 # Include source files that are specific to each query plugin
-query_method_HDRS = $(am__append_3)
-query_method_SOURCES = $(am__append_2) $(am__append_4) \
-	$(query_method_HDRS)
+query_method_HDRS = $(am__append_2)
+query_method_SOURCES = query/query_minmax.c $(am__append_1) \
+	$(am__append_3) $(query_method_HDRS)
 query_SOURCES = $(query_common_SOURCES) \
                      $(query_method_SOURCES)
 
 query_C_SOURCES = $(query_SOURCES) query/adios_query.c
 query_F_SOURCES = $(query_SOURCES) query/adiosf_query.c
- at BUILD_WRITE_TRUE@libadios_a_SOURCES = core/adios.c \
+
+# End of building parallel read libraries
+
+##########################################
+# INTERNAL Library for some of the tools #
+##########################################
+
+# Note: utils/adios_lint needs to link with adios_internals_mxml.o which depends
+#       on adios_internals.c, buffer.c and adios_transport_hooks.c. 
+#       We put these objects in libadios_internal_nompi
+#       so we do not need to make another _nompi lib just for adios_lint
+noinst_LIBRARIES = libcoreonce.a libadios_internal_nompi.a
+libcoreonce_a_SOURCES = core/a2sel.c \
+                            core/adios_bp_v1.c \
+                            core/adios_clock.c \
+                            core/adios_endianness.c \
+                            core/adios_error.c \
+                            core/adios_infocache.c \
+                            core/adios_logger.c \
+                            core/adios_socket.c \
+                            core/buffer.c \
+                            core/futils.c \
+                            core/globals.c \
+                            core/qhashtbl.c \
+                            core/strutil.c \
+                            core/util.c \
+                            $(transforms_common_SOURCES) \
+                            $(transforms_write_SOURCES) \
+                            $(transforms_read_SOURCES) 
+
+libcoreonce_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_SEQ_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
+libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+
+####################
+#  WRITE libraries #
+####################
+ at BUILD_WRITE_TRUE@CLibSources = core/adios.c core/common_adios.c \
+ at BUILD_WRITE_TRUE@	core/adios_internals.c \
+ at BUILD_WRITE_TRUE@	core/adios_internals_mxml.c \
+ at BUILD_WRITE_TRUE@	$(query_C_SOURCES) core/bp_utils.c \
+ at BUILD_WRITE_TRUE@	core/adios_read.c core/adios_read_v1.c \
+ at BUILD_WRITE_TRUE@	core/common_read.c core/adios_read_ext.c \
+ at BUILD_WRITE_TRUE@	core/adios_timing.c core/adios_read_hooks.c \
+ at BUILD_WRITE_TRUE@	core/adios_transport_hooks.c core/util_mpi.c \
+ at BUILD_WRITE_TRUE@	read/read_bp.c read/read_bp_staged.c \
+ at 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@CLibParallelSources = write/adios_mpi.c \
+ at BUILD_WRITE_TRUE@	write/adios_mpi_lustre.c \
+ at 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@CLibSEQSources = core/mpidummy.c
+ at BUILD_WRITE_TRUE@FortranLibSources = core/adiosf.c \
 @BUILD_WRITE_TRUE@	core/common_adios.c core/adios_internals.c \
- at BUILD_WRITE_TRUE@	core/adios_internals_mxml.c core/buffer.c \
- at BUILD_WRITE_TRUE@	core/adios_bp_v1.c core/adios_endianness.c \
- at BUILD_WRITE_TRUE@	core/bp_utils.c core/futils.c \
- at BUILD_WRITE_TRUE@	core/adios_error.c core/adios_read.c \
- at BUILD_WRITE_TRUE@	core/adios_read_v1.c core/common_read.c \
- at BUILD_WRITE_TRUE@	core/adios_infocache.c core/adios_read_ext.c \
- at BUILD_WRITE_TRUE@	core/globals.c core/adios_timing.c \
+ at BUILD_WRITE_TRUE@	core/adios_internals_mxml.c \
+ at BUILD_WRITE_TRUE@	$(query_F_SOURCES) core/bp_utils.c \
+ at BUILD_WRITE_TRUE@	core/common_read.c core/adios_infocache.c \
+ at BUILD_WRITE_TRUE@	core/adios_read_ext.c core/adios_timing.c \
 @BUILD_WRITE_TRUE@	core/adios_read_hooks.c \
- at BUILD_WRITE_TRUE@	core/adios_transport_hooks.c \
- at BUILD_WRITE_TRUE@	core/adios_socket.c core/adios_logger.c \
- at BUILD_WRITE_TRUE@	core/util.c core/qhashtbl.c \
- at BUILD_WRITE_TRUE@	$(transforms_common_SOURCES) \
- at BUILD_WRITE_TRUE@	$(transforms_read_SOURCES) \
- at BUILD_WRITE_TRUE@	$(transforms_write_SOURCES) \
- at BUILD_WRITE_TRUE@	$(query_C_SOURCES) read/read_bp.c \
- at BUILD_WRITE_TRUE@	read/read_bp_staged.c read/read_bp_staged1.c \
- at BUILD_WRITE_TRUE@	write/adios_mpi.c write/adios_mpi_lustre.c \
- at BUILD_WRITE_TRUE@	write/adios_mpi_amr.c write/adios_posix.c \
- at BUILD_WRITE_TRUE@	write/adios_posix1.c write/adios_var_merge.c \
- at BUILD_WRITE_TRUE@	$(am__append_6) $(am__append_9) \
+ at BUILD_WRITE_TRUE@	core/adios_transport_hooks.c core/util_mpi.c \
+ at BUILD_WRITE_TRUE@	read/read_bp.c read/read_bp_staged.c \
+ at 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@FortranLibParallelSources = write/adios_mpi.c \
+ at BUILD_WRITE_TRUE@	write/adios_mpi_lustre.c \
+ at BUILD_WRITE_TRUE@	write/adios_mpi_amr.c \
+ at BUILD_WRITE_TRUE@	write/adios_var_merge.c $(am__append_9) \
 @BUILD_WRITE_TRUE@	$(am__append_11) $(am__append_13) \
- at BUILD_WRITE_TRUE@	$(am__append_16) $(am__append_21) \
- at BUILD_WRITE_TRUE@	$(am__append_23) $(am__append_26) \
- at BUILD_WRITE_TRUE@	$(am__append_29)
- at BUILD_WRITE_TRUE@libadios_nompi_a_SOURCES = core/adios.c \
- at BUILD_WRITE_TRUE@	core/common_adios.c core/adios_internals.c \
- at BUILD_WRITE_TRUE@	core/adios_internals_mxml.c \
- at BUILD_WRITE_TRUE@	$(transforms_common_SOURCES) \
- at BUILD_WRITE_TRUE@	$(transforms_read_SOURCES) \
- at BUILD_WRITE_TRUE@	$(transforms_write_SOURCES) \
- at BUILD_WRITE_TRUE@	$(query_C_SOURCES) core/buffer.c \
- at BUILD_WRITE_TRUE@	core/adios_bp_v1.c core/adios_endianness.c \
- at BUILD_WRITE_TRUE@	core/bp_utils.c core/futils.c \
- at BUILD_WRITE_TRUE@	core/adios_error.c core/adios_read.c \
- at BUILD_WRITE_TRUE@	core/adios_read_v1.c core/common_read.c \
- at BUILD_WRITE_TRUE@	core/adios_infocache.c core/adios_read_ext.c \
- at BUILD_WRITE_TRUE@	core/globals.c core/mpidummy.c \
- at BUILD_WRITE_TRUE@	core/adios_timing.c core/adios_read_hooks.c \
- at BUILD_WRITE_TRUE@	core/adios_transport_hooks.c \
- at BUILD_WRITE_TRUE@	core/adios_socket.c core/adios_logger.c \
- at BUILD_WRITE_TRUE@	core/util.c core/qhashtbl.c read/read_bp.c \
- at BUILD_WRITE_TRUE@	read/read_bp_staged.c read/read_bp_staged1.c \
- at BUILD_WRITE_TRUE@	write/adios_posix.c write/adios_posix1.c \
- at BUILD_WRITE_TRUE@	$(am__append_14) $(am__append_24) \
- at BUILD_WRITE_TRUE@	$(am__append_27)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at FortranLibSources =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/common_adios.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_internals.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_internals_mxml.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(transforms_common_SOURCES) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(transforms_read_SOURCES) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(transforms_write_SOURCES) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(query_F_SOURCES) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/buffer.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_bp_v1.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_endianness.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/futils.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_error.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/bp_utils.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/common_read.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_infocache.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_read_ext.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/globals.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_timing.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_read_hooks.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_transport_hooks.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_socket.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adios_logger.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/util.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/qhashtbl.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	read/read_bp.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	read/read_bp_staged.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	read/read_bp_staged1.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	write/adios_posix.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	write/adios_posix1.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_15) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_25) \
- 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 at FortranLibMPISources =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	write/adios_mpi.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	write/adios_mpi_lustre.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	write/adios_mpi_amr.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	write/adios_var_merge.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_8) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_10) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_12) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_19) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_22)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at FortranLibSEQSources = core/mpidummy.c
- at BUILD_WRITE_TRUE@libadios_a_CPPFLAGS = $(AM_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_CPPFLAGS) $(am__append_18) \
- at BUILD_WRITE_TRUE@	$(am__append_30) $(am__append_34)
- at BUILD_WRITE_TRUE@libadios_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+ at BUILD_WRITE_TRUE@	$(am__append_16) $(am__append_18)
+ at BUILD_WRITE_TRUE@FortranLibSEQSources = core/mpidummy.c
+ at BUILD_WRITE_TRUE@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_35)
+ at BUILD_WRITE_TRUE@	$(ADIOSLIB_SEQ_CPPFLAGS) $(am__append_25)
 @BUILD_WRITE_TRUE at libadios_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
- at BUILD_WRITE_TRUE@libadiosf_a_CPPFLAGS = $(AM_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_CPPFLAGS) $(am__append_20) \
- at BUILD_WRITE_TRUE@	$(am__append_32) $(am__append_36)
- at BUILD_WRITE_TRUE@libadiosf_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
- at BUILD_WRITE_TRUE@libadiosf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(MACRODEFFLAG)_NOMPI \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_SEQ_CPPFLAGS) $(am__append_37)
- at BUILD_WRITE_TRUE@libadiosf_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at dist_libadios_a_SOURCES = nssi/adios_nssi_args.x
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at nodist_libadios_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at nodist_libadiosf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at dist_libadiosf_a_SOURCES = nssi/adios_nssi_args.x
-
-# Build four different Fortran libraries, for the two read APIs
-# and their sequential versions
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_a_SOURCES =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(FortranLibSources) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(FortranLibMPISources) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_read.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_defs_mod.f90 \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_write_mod.f90 \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_read_mod.f90 \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	query/adios_query_mod.f90
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_v1_a_SOURCES =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(FortranLibSources) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(FortranLibMPISources) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_read_v1.c \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_defs_mod.f90 \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_write_mod.f90
+ at BUILD_WRITE_TRUE@libadios_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS) \
+ at BUILD_WRITE_TRUE@	$(am__append_24)
+# force building the noinst_LIBRARIES first, before libadios_nompi.a
+ at BUILD_WRITE_TRUE@EXTRA_libadios_nompi_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_SOURCES =  \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(FortranLibSources) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(FortranLibSEQSources) \
@@ -2712,131 +1886,153 @@ query_F_SOURCES = $(query_SOURCES) query/adiosf_query.c
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_read_v1.c \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_defs_mod.f90 \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_write_mod.f90
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_v1_a_CPPFLAGS = $(libadiosf_a_CPPFLAGS) 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_v1_a_CFLAGS = $(libadiosf_a_CFLAGS) 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_CPPFLAGS =  \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(AM_CPPFLAGS) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(MACRODEFFLAG)_NOMPI \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(ADIOSLIB_SEQ_CPPFLAGS) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_29)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_v1_a_CPPFLAGS = $(libadiosf_nompi_a_CPPFLAGS) 
+ at 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) 
-libadiosread_a_SOURCES = core/adios_bp_v1.c core/adios_endianness.c \
-	core/bp_utils.c core/futils.c core/adios_error.c \
+ at 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 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 at EXTRA_libadiosf_nompi_a_DEPENDENCIES = libcoreonce.a 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at EXTRA_libadiosf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_SOURCES = $(CLibSources) $(CLibParallelSources)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_CPPFLAGS = $(AM_CPPFLAGS) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_CPPFLAGS) \
+ at 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 at libadios_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_LIBADD =  \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(libcoreonce_a_OBJECTS) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_31)
+# force building the noinst_LIBRARIES first, before libadios.a
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at EXTRA_libadios_a_DEPENDENCIES = libcoreonce.a 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_SOURCES = $(FortranLibSources) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(FortranLibParallelSources) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read.c \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_defs_mod.f90 \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_write_mod.f90 \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read_mod.f90 \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	query/adios_query_mod.f90
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_SOURCES = $(FortranLibSources) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(FortranLibParallelSources) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read_v1.c \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_defs_mod.f90 \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_write_mod.f90
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_CPPFLAGS = $(AM_CPPFLAGS) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_CPPFLAGS) \
+ at 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 at libadiosf_v1_a_CPPFLAGS = $(libadiosf_a_CPPFLAGS) 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_CFLAGS = $(libadiosf_a_CFLAGS) 
+ at 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 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 at EXTRA_libadiosf_a_DEPENDENCIES = libcoreonce.a 
+ at 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_infocache.c core/adios_read_ext.c \
-	$(transforms_common_SOURCES) $(transforms_read_SOURCES) \
-	$(query_C_SOURCES) core/globals.c core/adios_read_hooks.c \
-	core/adios_logger.c core/util.c core/qhashtbl.c read/read_bp.c \
-	read/read_bp_staged.c read/read_bp_staged1.c $(am__append_40) \
-	$(am__append_41) $(am__append_42) $(am__append_43) \
-	$(am__append_44) $(am__append_45)
- at HAVE_NSSI_TRUE@dist_libadiosread_a_SOURCES = nssi/adios_nssi_args.x
- at HAVE_NSSI_TRUE@nodist_libadiosread_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
- at BUILD_FORTRAN_TRUE@FortranReadLibSource = core/adios_bp_v1.c \
- at BUILD_FORTRAN_TRUE@	core/adios_endianness.c core/bp_utils.c \
- at BUILD_FORTRAN_TRUE@	core/futils.c core/adios_error.c \
- at BUILD_FORTRAN_TRUE@	core/common_read.c core/adios_infocache.c \
- at BUILD_FORTRAN_TRUE@	core/adios_read_ext.c \
- at BUILD_FORTRAN_TRUE@	$(transforms_common_SOURCES) \
- at BUILD_FORTRAN_TRUE@	$(transforms_read_SOURCES) \
- at BUILD_FORTRAN_TRUE@	$(query_F_SOURCES) core/globals.c \
- at BUILD_FORTRAN_TRUE@	core/adios_read_hooks.c \
- at BUILD_FORTRAN_TRUE@	core/adios_logger.c core/util.c \
- at BUILD_FORTRAN_TRUE@	core/qhashtbl.c read/read_bp.c \
- at BUILD_FORTRAN_TRUE@	read/read_bp_staged.c \
- at BUILD_FORTRAN_TRUE@	read/read_bp_staged1.c $(am__append_49) \
- at BUILD_FORTRAN_TRUE@	$(am__append_50) $(am__append_51) \
- at BUILD_FORTRAN_TRUE@	$(am__append_52) $(am__append_53) \
- at BUILD_FORTRAN_TRUE@	$(am__append_54)
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at dist_libadiosreadf_a_SOURCES = nssi/adios_nssi_args.x
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at nodist_libadiosreadf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
- at BUILD_FORTRAN_TRUE@libadiosreadf_a_SOURCES = $(FortranReadLibSource) \
+	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)
+EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a 
+ at BUILD_FORTRAN_TRUE@FortranReadSeqLibSource = core/mpidummy.c \
+ at BUILD_FORTRAN_TRUE@	core/bp_utils.c core/common_read.c \
+ at BUILD_FORTRAN_TRUE@	core/adios_read_ext.c $(query_F_SOURCES) \
+ at 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@libadiosreadf_nompi_a_SOURCES =  \
+ at BUILD_FORTRAN_TRUE@	$(FortranReadSeqLibSource) \
 @BUILD_FORTRAN_TRUE@	core/adiosf_read.c \
 @BUILD_FORTRAN_TRUE@	core/adiosf_defs_mod.f90 \
 @BUILD_FORTRAN_TRUE@	core/adiosf_read_mod.f90 \
 @BUILD_FORTRAN_TRUE@	query/adios_query_mod.f90
- at BUILD_FORTRAN_TRUE@libadiosreadf_v1_a_SOURCES = $(FortranReadLibSource) core/adiosf_read_v1.c
- at BUILD_FORTRAN_TRUE@libadiosreadf_v1_a_CPPFLAGS = $(libadiosreadf_a_CPPFLAGS)
- at BUILD_FORTRAN_TRUE@libadiosreadf_v1_a_CFLAGS = $(libadiosreadf_a_CFLAGS)
-libadiosread_nompi_a_SOURCES = core/mpidummy.c core/adios_bp_v1.c \
-	core/adios_endianness.c core/bp_utils.c core/futils.c \
-	core/adios_error.c core/adios_read.c core/adios_read_v1.c \
-	core/common_read.c core/adios_infocache.c \
-	core/adios_read_ext.c $(transforms_common_SOURCES) \
-	$(transforms_read_SOURCES) $(query_C_SOURCES) \
-	core/adios_logger.c core/buffer.c core/globals.c \
-	core/adios_read_hooks.c core/util.c core/qhashtbl.c \
-	read/read_bp.c $(am__append_60) $(am__append_61) \
-	$(am__append_62) $(am__append_63)
- at HAVE_NSSI_TRUE@dist_libadiosread_nompi_a_SOURCES = nssi/adios_nssi_args.x
- at HAVE_NSSI_TRUE@nodist_libadiosread_nompi_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
- at BUILD_FORTRAN_TRUE@FortranReadSeqLibSource = core/mpidummy.c \
- at BUILD_FORTRAN_TRUE@	core/adios_bp_v1.c core/adios_endianness.c \
- at BUILD_FORTRAN_TRUE@	core/bp_utils.c core/futils.c \
- at BUILD_FORTRAN_TRUE@	core/adios_error.c core/adios_logger.c \
- at BUILD_FORTRAN_TRUE@	core/common_read.c core/adios_infocache.c \
- at BUILD_FORTRAN_TRUE@	core/adios_read_ext.c \
- at BUILD_FORTRAN_TRUE@	$(transforms_common_SOURCES) \
- at BUILD_FORTRAN_TRUE@	$(transforms_read_SOURCES) \
- at BUILD_FORTRAN_TRUE@	$(query_F_SOURCES) core/globals.c \
- at BUILD_FORTRAN_TRUE@	core/adios_read_hooks.c core/util.c \
- at BUILD_FORTRAN_TRUE@	core/qhashtbl.c read/read_bp.c \
- at BUILD_FORTRAN_TRUE@	$(am__append_67) $(am__append_68) \
- at BUILD_FORTRAN_TRUE@	$(am__append_69) $(am__append_70)
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at dist_libadiosreadf_nompi_a_SOURCES = nssi/adios_nssi_args.x
- at BUILD_FORTRAN_TRUE@@HAVE_NSSI_TRUE at nodist_libadiosreadf_nompi_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
- at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_a_SOURCES = $(FortranReadSeqLibSource) core/adiosf_read.c
 @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)
-noinst_LIBRARIES = libadios_internal_nompi.a
-libadios_internal_nompi_a_SOURCES = core/mpidummy.c core/adios_bp_v1.c \
-	core/adios_endianness.c core/bp_utils.c core/adios_internals.c \
-	$(transforms_common_SOURCES) $(transforms_write_SOURCES) \
-	$(query_C_SOURCES) core/buffer.c core/adios_error.c \
-	core/adios_logger.c core/adios_timing.c core/util.c \
-	core/qhashtbl.c core/futils.c core/adios_transport_hooks.c \
-	$(am__append_74)
+ 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@EXTRA_libadiosreadf_nompi_a_DEPENDENCIES = libcoreonce.a 
+ at BUILD_FORTRAN_TRUE@EXTRA_libadiosreadf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
+ at HAVE_MPI_TRUE@libadiosread_a_SOURCES = core/bp_utils.c \
+ at HAVE_MPI_TRUE@	core/adios_read.c core/adios_read_v1.c \
+ at HAVE_MPI_TRUE@	core/common_read.c core/adios_read_ext.c \
+ at HAVE_MPI_TRUE@	$(query_C_SOURCES) core/adios_read_hooks.c \
+ at HAVE_MPI_TRUE@	core/util_mpi.c read/read_bp.c \
+ at 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@EXTRA_libadiosread_a_DEPENDENCIES = libcoreonce.a 
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at FortranReadLibSource =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/bp_utils.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/common_read.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adios_read_ext.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(query_F_SOURCES) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adios_read_hooks.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/util_mpi.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/read_bp.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/read_bp_staged.c \
+ at 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 at libadiosreadf_a_SOURCES =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(FortranReadLibSource) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read.c \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adiosf_defs_mod.f90 \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read_mod.f90 \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	query/adios_query_mod.f90
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_SOURCES = $(FortranReadLibSource) core/adiosf_read_v1.c
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_CPPFLAGS = $(libadiosreadf_a_CPPFLAGS)
+ at 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 EXTRA_libadiosreadf_a_DEPENDENCIES = libcoreonce.a 
+ at 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)
+libadios_internal_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS) \
+	$(am__append_62)
+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)
-
-#bin_PROGRAMS+=adios_flags
-#nodist_adios_flags_SOURCES = adios_flags.h 
-#adios_flags_SOURCES = adios_flags.c 
-#adios_flags.h:  
-#	rm -f $@
-#	@echo "#define ADIOS_CFLAGS \"$(libadios_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOS_LDFLAGS \"$(libadios_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSF_CFLAGS \"$(libadiosf_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSF_LDFLAGS \"$(libadiosf_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_CFLAGS \"$(libadiosread_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_LDFLAGS \"$(libadiosread_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_CFLAGS \"$(libadiosreadf_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_LDFLAGS \"$(libadiosreadf_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_NOMPI_CFLAGS \"$(libadiosread_nompi_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREAD_NOMPI_LDFLAGS \"$(libadiosread_nompi_a_LDFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_NOMPI_CFLAGS \"$(libadiosreadf_nompi_a_CPPFLAGS)\"" >> $@
-#	@echo "#define ADIOSREADF_NOMPI_LDFLAGS \"$(libadiosreadf_nompi_a_LDFLAGS)\"" >> $@
-#adios_flags.c: adios_flags.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 \
              core/adios_read_hooks.h core/adios_socket.h core/adios_timing.h \
-	     core/adios_icee.h \
+             core/adios_icee.h core/a2sel.h core/adios_clock.h \
              core/adios_socket.h core/adios_transport_hooks.h \
              core/bp_types.h core/bp_utils.h core/buffer.h core/common_adios.h \
              core/common_read.h core/adios_infocache.h core/futils.h core/globals.h core/ds_metadata.h \
-             core/util.h core/flexpath.h core/qhashtbl.h \
-	     public/adios_version.h.in \
+             core/types.h core/util.h core/strutil.h core/flexpath.h core/qhashtbl.h \
+             public/adios_version.h.in core/util_mpi.h \
              $(transforms_common_HDRS) $(transforms_read_HDRS) $(transforms_write_HDRS) \
              $(query_common_HDRS) $(query_method_HDRS) \
              transforms/transform_plugins.h \
-	     transforms/adios_transform_identity_read.h \
-	     transforms/adios_transform_szip.h \
-	     transforms/adios_transform_alacrity_common.h \
-	     transforms/adios_transform_template_read.c \
-	     transforms/adios_transform_template_write.c \
-             query/Makefile.plugins.cmake \
-             nssi/adios_nssi_config.h nssi/aggregation.h nssi/io_timer.h 
+             transforms/adios_transform_identity_read.h \
+             transforms/adios_transform_szip.h \
+             transforms/adios_transform_alacrity_common.h \
+             transforms/adios_transform_template_read.c \
+             transforms/adios_transform_template_write.c \
+             query/Makefile.plugins.cmake 
 
-all: all-am
+all: all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .c .cpp .f90 .lo .o .obj
+.SUFFIXES: .c .f90 .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/transforms/Makefile.plugins $(srcdir)/query/Makefile.plugins $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -2858,6 +2054,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/transforms/Makefile.plugins $(srcdir)/query/Makefile.plugins:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -2869,7 +2066,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-libLIBRARIES: $(lib_LIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -2877,6 +2073,8 @@ install-libLIBRARIES: $(lib_LIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
 	@$(POST_INSTALL)
@@ -2893,77 +2091,671 @@ uninstall-libLIBRARIES:
 	@$(NORMAL_UNINSTALL)
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
 
 clean-libLIBRARIES:
 	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libadios.a: $(libadios_a_OBJECTS) $(libadios_a_DEPENDENCIES) 
-	-rm -f libadios.a
-	$(libadios_a_AR) libadios.a $(libadios_a_OBJECTS) $(libadios_a_LIBADD)
-	$(RANLIB) libadios.a
-libadios_internal_nompi.a: $(libadios_internal_nompi_a_OBJECTS) $(libadios_internal_nompi_a_DEPENDENCIES) 
-	-rm -f libadios_internal_nompi.a
-	$(libadios_internal_nompi_a_AR) libadios_internal_nompi.a $(libadios_internal_nompi_a_OBJECTS) $(libadios_internal_nompi_a_LIBADD)
-	$(RANLIB) libadios_internal_nompi.a
-libadios_nompi.a: $(libadios_nompi_a_OBJECTS) $(libadios_nompi_a_DEPENDENCIES) 
-	-rm -f libadios_nompi.a
-	$(libadios_nompi_a_AR) libadios_nompi.a $(libadios_nompi_a_OBJECTS) $(libadios_nompi_a_LIBADD)
-	$(RANLIB) libadios_nompi.a
-libadiosf.a: $(libadiosf_a_OBJECTS) $(libadiosf_a_DEPENDENCIES) 
-	-rm -f libadiosf.a
-	$(libadiosf_a_AR) libadiosf.a $(libadiosf_a_OBJECTS) $(libadiosf_a_LIBADD)
-	$(RANLIB) libadiosf.a
-libadiosf_nompi.a: $(libadiosf_nompi_a_OBJECTS) $(libadiosf_nompi_a_DEPENDENCIES) 
-	-rm -f libadiosf_nompi.a
-	$(libadiosf_nompi_a_AR) libadiosf_nompi.a $(libadiosf_nompi_a_OBJECTS) $(libadiosf_nompi_a_LIBADD)
-	$(RANLIB) libadiosf_nompi.a
-libadiosf_nompi_v1.a: $(libadiosf_nompi_v1_a_OBJECTS) $(libadiosf_nompi_v1_a_DEPENDENCIES) 
-	-rm -f libadiosf_nompi_v1.a
-	$(libadiosf_nompi_v1_a_AR) libadiosf_nompi_v1.a $(libadiosf_nompi_v1_a_OBJECTS) $(libadiosf_nompi_v1_a_LIBADD)
-	$(RANLIB) libadiosf_nompi_v1.a
-libadiosf_v1.a: $(libadiosf_v1_a_OBJECTS) $(libadiosf_v1_a_DEPENDENCIES) 
-	-rm -f libadiosf_v1.a
-	$(libadiosf_v1_a_AR) libadiosf_v1.a $(libadiosf_v1_a_OBJECTS) $(libadiosf_v1_a_LIBADD)
-	$(RANLIB) libadiosf_v1.a
-libadiosread.a: $(libadiosread_a_OBJECTS) $(libadiosread_a_DEPENDENCIES) 
-	-rm -f libadiosread.a
-	$(libadiosread_a_AR) libadiosread.a $(libadiosread_a_OBJECTS) $(libadiosread_a_LIBADD)
-	$(RANLIB) libadiosread.a
-libadiosread_nompi.a: $(libadiosread_nompi_a_OBJECTS) $(libadiosread_nompi_a_DEPENDENCIES) 
-	-rm -f libadiosread_nompi.a
-	$(libadiosread_nompi_a_AR) libadiosread_nompi.a $(libadiosread_nompi_a_OBJECTS) $(libadiosread_nompi_a_LIBADD)
-	$(RANLIB) libadiosread_nompi.a
-libadiosreadf.a: $(libadiosreadf_a_OBJECTS) $(libadiosreadf_a_DEPENDENCIES) 
-	-rm -f libadiosreadf.a
-	$(libadiosreadf_a_AR) libadiosreadf.a $(libadiosreadf_a_OBJECTS) $(libadiosreadf_a_LIBADD)
-	$(RANLIB) libadiosreadf.a
-libadiosreadf_nompi.a: $(libadiosreadf_nompi_a_OBJECTS) $(libadiosreadf_nompi_a_DEPENDENCIES) 
-	-rm -f libadiosreadf_nompi.a
-	$(libadiosreadf_nompi_a_AR) libadiosreadf_nompi.a $(libadiosreadf_nompi_a_OBJECTS) $(libadiosreadf_nompi_a_LIBADD)
-	$(RANLIB) libadiosreadf_nompi.a
-libadiosreadf_nompi_v1.a: $(libadiosreadf_nompi_v1_a_OBJECTS) $(libadiosreadf_nompi_v1_a_DEPENDENCIES) 
-	-rm -f libadiosreadf_nompi_v1.a
-	$(libadiosreadf_nompi_v1_a_AR) libadiosreadf_nompi_v1.a $(libadiosreadf_nompi_v1_a_OBJECTS) $(libadiosreadf_nompi_v1_a_LIBADD)
-	$(RANLIB) libadiosreadf_nompi_v1.a
-libadiosreadf_v1.a: $(libadiosreadf_v1_a_OBJECTS) $(libadiosreadf_v1_a_DEPENDENCIES) 
-	-rm -f libadiosreadf_v1.a
-	$(libadiosreadf_v1_a_AR) libadiosreadf_v1.a $(libadiosreadf_v1_a_OBJECTS) $(libadiosreadf_v1_a_LIBADD)
-	$(RANLIB) libadiosreadf_v1.a
+core/$(am__dirstamp):
+	@$(MKDIR_P) core
+	@: > core/$(am__dirstamp)
+core/libadios_a-adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-common_adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_internals.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_internals_mxml.$(OBJEXT): core/$(am__dirstamp)
+query/$(am__dirstamp):
+	@$(MKDIR_P) query
+	@: > query/$(am__dirstamp)
+query/libadios_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-common_query_read.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-adios_query_hooks.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-query_fastbit.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-fastbit_adios.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_a-adios_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadios_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_read_v1.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_timing.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_read_hooks.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-adios_transport_hooks.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/$(am__dirstamp):
+	@$(MKDIR_P) read
+	@: > read/$(am__dirstamp)
+read/libadios_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadios_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadios_a-read_bp_staged1.$(OBJEXT): read/$(am__dirstamp)
+write/$(am__dirstamp):
+	@$(MKDIR_P) write
+	@: > write/$(am__dirstamp)
+write/libadios_a-adios_posix.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_flexpath.$(OBJEXT): write/$(am__dirstamp)
+read/libadios_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+write/libadios_a-adios_icee.$(OBJEXT): write/$(am__dirstamp)
+read/libadios_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+write/libadios_a-adios_mpi.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_mpi_lustre.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_mpi_amr.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_var_merge.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_mpi_bgq.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_dataspaces.$(OBJEXT): write/$(am__dirstamp)
+read/libadios_a-read_dataspaces.$(OBJEXT): read/$(am__dirstamp)
+write/libadios_a-adios_dimes.$(OBJEXT): write/$(am__dirstamp)
+read/libadios_a-read_dimes.$(OBJEXT): read/$(am__dirstamp)
+write/libadios_a-adios_phdf5.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_a-adios_nc4.$(OBJEXT): write/$(am__dirstamp)
+
+libadios.a: $(libadios_a_OBJECTS) $(libadios_a_DEPENDENCIES) $(EXTRA_libadios_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadios.a
+	$(AM_V_AR)$(libadios_a_AR) libadios.a $(libadios_a_OBJECTS) $(libadios_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadios.a
+core/libadios_internal_nompi_a-mpidummy.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_internal_nompi_a-bp_utils.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_internal_nompi_a-adios_internals.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_internal_nompi_a-util_mpi.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadios_internal_nompi_a-common_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-query_utils.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-query_minmax.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-query_alac.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_internal_nompi_a-adios_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+core/libadios_internal_nompi_a-adios_timing.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_internal_nompi_a-adios_transport_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_internal_nompi_a-adios_internals_mxml.$(OBJEXT):  \
+	core/$(am__dirstamp)
+
+libadios_internal_nompi.a: $(libadios_internal_nompi_a_OBJECTS) $(libadios_internal_nompi_a_DEPENDENCIES) $(EXTRA_libadios_internal_nompi_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadios_internal_nompi.a
+	$(AM_V_AR)$(libadios_internal_nompi_a_AR) libadios_internal_nompi.a $(libadios_internal_nompi_a_OBJECTS) $(libadios_internal_nompi_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadios_internal_nompi.a
+core/libadios_nompi_a-adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-common_adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_internals.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_internals_mxml.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadios_nompi_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_nompi_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_nompi_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadios_nompi_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_nompi_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_nompi_a-query_fastbit.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_nompi_a-fastbit_adios.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_nompi_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadios_nompi_a-adios_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadios_nompi_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_read_v1.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_timing.$(OBJEXT): core/$(am__dirstamp)
+core/libadios_nompi_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_nompi_a-adios_transport_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadios_nompi_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadios_nompi_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadios_nompi_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadios_nompi_a-read_bp_staged1.$(OBJEXT): read/$(am__dirstamp)
+write/libadios_nompi_a-adios_posix.$(OBJEXT): write/$(am__dirstamp)
+write/libadios_nompi_a-adios_flexpath.$(OBJEXT):  \
+	write/$(am__dirstamp)
+read/libadios_nompi_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+write/libadios_nompi_a-adios_icee.$(OBJEXT): write/$(am__dirstamp)
+read/libadios_nompi_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+core/libadios_nompi_a-mpidummy.$(OBJEXT): core/$(am__dirstamp)
+
+libadios_nompi.a: $(libadios_nompi_a_OBJECTS) $(libadios_nompi_a_DEPENDENCIES) $(EXTRA_libadios_nompi_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadios_nompi.a
+	$(AM_V_AR)$(libadios_nompi_a_AR) libadios_nompi.a $(libadios_nompi_a_OBJECTS) $(libadios_nompi_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadios_nompi.a
+core/libadiosf_a-adiosf.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-common_adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_internals.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_internals_mxml.$(OBJEXT): core/$(am__dirstamp)
+query/libadiosf_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-common_query_read.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-adios_query_hooks.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-query_fastbit.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-fastbit_adios.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_a-adiosf_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadiosf_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_infocache.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_timing.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_read_hooks.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_a-adios_transport_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosf_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_a-read_bp_staged1.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_a-adios_posix.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_flexpath.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_a-adios_icee.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_a-adios_mpi.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_mpi_lustre.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_mpi_amr.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_var_merge.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_mpi_bgq.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_dataspaces.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_a-read_dataspaces.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_a-adios_dimes.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_a-read_dimes.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_a-adios_phdf5.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_a-adios_nc4.$(OBJEXT): write/$(am__dirstamp)
+core/libadiosf_a-adiosf_read.$(OBJEXT): core/$(am__dirstamp)
+core/adiosf_defs_mod.$(OBJEXT): core/$(am__dirstamp)
+core/adiosf_write_mod.$(OBJEXT): core/$(am__dirstamp)
+core/adiosf_read_mod.$(OBJEXT): core/$(am__dirstamp)
+query/adios_query_mod.$(OBJEXT): query/$(am__dirstamp)
+
+libadiosf.a: $(libadiosf_a_OBJECTS) $(libadiosf_a_DEPENDENCIES) $(EXTRA_libadiosf_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosf.a
+	$(AM_V_AR)$(libadiosf_a_AR) libadiosf.a $(libadiosf_a_OBJECTS) $(libadiosf_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosf.a
+core/libadiosf_nompi_a-adiosf.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-common_adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_internals.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_internals_mxml.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosf_nompi_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_nompi_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_nompi_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_nompi_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_nompi_a-adiosf_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadiosf_nompi_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_infocache.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_timing.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_a-adios_transport_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosf_nompi_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_nompi_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_nompi_a-read_bp_staged1.$(OBJEXT):  \
+	read/$(am__dirstamp)
+write/libadiosf_nompi_a-adios_posix.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_nompi_a-adios_flexpath.$(OBJEXT):  \
+	write/$(am__dirstamp)
+read/libadiosf_nompi_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_nompi_a-adios_icee.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_nompi_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+core/libadiosf_nompi_a-mpidummy.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_a-adiosf_read.$(OBJEXT): core/$(am__dirstamp)
+
+libadiosf_nompi.a: $(libadiosf_nompi_a_OBJECTS) $(libadiosf_nompi_a_DEPENDENCIES) $(EXTRA_libadiosf_nompi_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosf_nompi.a
+	$(AM_V_AR)$(libadiosf_nompi_a_AR) libadiosf_nompi.a $(libadiosf_nompi_a_OBJECTS) $(libadiosf_nompi_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosf_nompi.a
+core/libadiosf_nompi_v1_a-adiosf.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-common_adios.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_internals.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_internals_mxml.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-common_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-query_utils.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-query_minmax.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-query_alac.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_nompi_v1_a-adiosf_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_infocache.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_read_ext.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_timing.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adios_transport_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosf_nompi_v1_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_nompi_v1_a-read_bp_staged.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosf_nompi_v1_a-read_bp_staged1.$(OBJEXT):  \
+	read/$(am__dirstamp)
+write/libadiosf_nompi_v1_a-adios_posix.$(OBJEXT):  \
+	write/$(am__dirstamp)
+write/libadiosf_nompi_v1_a-adios_flexpath.$(OBJEXT):  \
+	write/$(am__dirstamp)
+read/libadiosf_nompi_v1_a-read_flexpath.$(OBJEXT):  \
+	read/$(am__dirstamp)
+write/libadiosf_nompi_v1_a-adios_icee.$(OBJEXT):  \
+	write/$(am__dirstamp)
+read/libadiosf_nompi_v1_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-mpidummy.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_nompi_v1_a-adiosf_read_v1.$(OBJEXT):  \
+	core/$(am__dirstamp)
+
+libadiosf_nompi_v1.a: $(libadiosf_nompi_v1_a_OBJECTS) $(libadiosf_nompi_v1_a_DEPENDENCIES) $(EXTRA_libadiosf_nompi_v1_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosf_nompi_v1.a
+	$(AM_V_AR)$(libadiosf_nompi_v1_a_AR) libadiosf_nompi_v1.a $(libadiosf_nompi_v1_a_OBJECTS) $(libadiosf_nompi_v1_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosf_nompi_v1.a
+core/libadiosf_v1_a-adiosf.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-common_adios.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_internals.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_internals_mxml.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosf_v1_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_v1_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_v1_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosf_v1_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_v1_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_v1_a-query_fastbit.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_v1_a-fastbit_adios.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_v1_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosf_v1_a-adiosf_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadiosf_v1_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_infocache.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_timing.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_read_hooks.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosf_v1_a-adios_transport_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosf_v1_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosf_v1_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_v1_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosf_v1_a-read_bp_staged1.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_v1_a-adios_posix.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_flexpath.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_v1_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_v1_a-adios_icee.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_v1_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_v1_a-adios_mpi.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_mpi_lustre.$(OBJEXT):  \
+	write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_mpi_amr.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_var_merge.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_mpi_bgq.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_dataspaces.$(OBJEXT):  \
+	write/$(am__dirstamp)
+read/libadiosf_v1_a-read_dataspaces.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_v1_a-adios_dimes.$(OBJEXT): write/$(am__dirstamp)
+read/libadiosf_v1_a-read_dimes.$(OBJEXT): read/$(am__dirstamp)
+write/libadiosf_v1_a-adios_phdf5.$(OBJEXT): write/$(am__dirstamp)
+write/libadiosf_v1_a-adios_nc4.$(OBJEXT): write/$(am__dirstamp)
+core/libadiosf_v1_a-adiosf_read_v1.$(OBJEXT): core/$(am__dirstamp)
+
+libadiosf_v1.a: $(libadiosf_v1_a_OBJECTS) $(libadiosf_v1_a_DEPENDENCIES) $(EXTRA_libadiosf_v1_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosf_v1.a
+	$(AM_V_AR)$(libadiosf_v1_a_AR) libadiosf_v1.a $(libadiosf_v1_a_OBJECTS) $(libadiosf_v1_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosf_v1.a
+core/libadiosread_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_a-adios_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_a-adios_read_v1.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+query/libadiosread_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosread_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosread_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosread_a-query_fastbit.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosread_a-fastbit_adios.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosread_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosread_a-adios_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadiosread_a-adios_read_hooks.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosread_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_a-read_bp_staged1.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_a-read_dataspaces.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_a-read_dimes.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+
+libadiosread.a: $(libadiosread_a_OBJECTS) $(libadiosread_a_DEPENDENCIES) $(EXTRA_libadiosread_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosread.a
+	$(AM_V_AR)$(libadiosread_a_AR) libadiosread.a $(libadiosread_a_OBJECTS) $(libadiosread_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosread.a
+core/libadiosread_nompi_a-mpidummy.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_nompi_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_nompi_a-adios_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_nompi_a-adios_read_v1.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosread_nompi_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosread_nompi_a-adios_read_ext.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosread_nompi_a-common_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-query_utils.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-query_minmax.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-query_alac.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosread_nompi_a-adios_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+core/libadiosread_nompi_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosread_nompi_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosread_nompi_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosread_nompi_a-read_flexpath.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosread_nompi_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+
+libadiosread_nompi.a: $(libadiosread_nompi_a_OBJECTS) $(libadiosread_nompi_a_DEPENDENCIES) $(EXTRA_libadiosread_nompi_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosread_nompi.a
+	$(AM_V_AR)$(libadiosread_nompi_a_AR) libadiosread_nompi.a $(libadiosread_nompi_a_OBJECTS) $(libadiosread_nompi_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosread_nompi.a
+core/libadiosreadf_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_a-adios_read_ext.$(OBJEXT): core/$(am__dirstamp)
+query/libadiosreadf_a-common_query.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_a-query_minmax.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_a-query_fastbit.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_a-fastbit_adios.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_a-adiosf_query.$(OBJEXT): query/$(am__dirstamp)
+core/libadiosreadf_a-adios_read_hooks.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosreadf_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_a-read_bp_staged.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_a-read_bp_staged1.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_a-read_dataspaces.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_a-read_dimes.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+core/libadiosreadf_a-adiosf_read.$(OBJEXT): core/$(am__dirstamp)
+
+libadiosreadf.a: $(libadiosreadf_a_OBJECTS) $(libadiosreadf_a_DEPENDENCIES) $(EXTRA_libadiosreadf_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosreadf.a
+	$(AM_V_AR)$(libadiosreadf_a_AR) libadiosreadf.a $(libadiosreadf_a_OBJECTS) $(libadiosreadf_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosreadf.a
+core/libadiosreadf_nompi_a-mpidummy.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_nompi_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_nompi_a-common_read.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_nompi_a-adios_read_ext.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosreadf_nompi_a-common_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-query_utils.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-query_minmax.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-query_alac.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_a-adiosf_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+core/libadiosreadf_nompi_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_nompi_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosreadf_nompi_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_nompi_a-read_flexpath.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosreadf_nompi_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+core/libadiosreadf_nompi_a-adiosf_read.$(OBJEXT):  \
+	core/$(am__dirstamp)
+
+libadiosreadf_nompi.a: $(libadiosreadf_nompi_a_OBJECTS) $(libadiosreadf_nompi_a_DEPENDENCIES) $(EXTRA_libadiosreadf_nompi_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosreadf_nompi.a
+	$(AM_V_AR)$(libadiosreadf_nompi_a_AR) libadiosreadf_nompi.a $(libadiosreadf_nompi_a_OBJECTS) $(libadiosreadf_nompi_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosreadf_nompi.a
+core/libadiosreadf_nompi_v1_a-mpidummy.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_nompi_v1_a-bp_utils.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_nompi_v1_a-common_read.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_nompi_v1_a-adios_read_ext.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-common_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-query_utils.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-query_minmax.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-query_alac.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_nompi_v1_a-adiosf_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+core/libadiosreadf_nompi_v1_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_nompi_v1_a-util_mpi.$(OBJEXT):  \
+	core/$(am__dirstamp)
+read/libadiosreadf_nompi_v1_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_nompi_v1_a-read_flexpath.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosreadf_nompi_v1_a-read_icee.$(OBJEXT):  \
+	read/$(am__dirstamp)
+core/libadiosreadf_nompi_v1_a-adiosf_read_v1.$(OBJEXT):  \
+	core/$(am__dirstamp)
+
+libadiosreadf_nompi_v1.a: $(libadiosreadf_nompi_v1_a_OBJECTS) $(libadiosreadf_nompi_v1_a_DEPENDENCIES) $(EXTRA_libadiosreadf_nompi_v1_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosreadf_nompi_v1.a
+	$(AM_V_AR)$(libadiosreadf_nompi_v1_a_AR) libadiosreadf_nompi_v1.a $(libadiosreadf_nompi_v1_a_OBJECTS) $(libadiosreadf_nompi_v1_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosreadf_nompi_v1.a
+core/libadiosreadf_v1_a-bp_utils.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_v1_a-common_read.$(OBJEXT): core/$(am__dirstamp)
+core/libadiosreadf_v1_a-adios_read_ext.$(OBJEXT):  \
+	core/$(am__dirstamp)
+query/libadiosreadf_v1_a-common_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_v1_a-common_query_read.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_v1_a-adios_query_hooks.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_v1_a-query_utils.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_v1_a-query_minmax.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_v1_a-query_fastbit.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_v1_a-fastbit_adios.$(OBJEXT):  \
+	query/$(am__dirstamp)
+query/libadiosreadf_v1_a-query_alac.$(OBJEXT): query/$(am__dirstamp)
+query/libadiosreadf_v1_a-adiosf_query.$(OBJEXT):  \
+	query/$(am__dirstamp)
+core/libadiosreadf_v1_a-adios_read_hooks.$(OBJEXT):  \
+	core/$(am__dirstamp)
+core/libadiosreadf_v1_a-util_mpi.$(OBJEXT): core/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_bp.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_bp_staged.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_bp_staged1.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_dataspaces.$(OBJEXT):  \
+	read/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_dimes.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_flexpath.$(OBJEXT): read/$(am__dirstamp)
+read/libadiosreadf_v1_a-read_icee.$(OBJEXT): read/$(am__dirstamp)
+core/libadiosreadf_v1_a-adiosf_read_v1.$(OBJEXT):  \
+	core/$(am__dirstamp)
+
+libadiosreadf_v1.a: $(libadiosreadf_v1_a_OBJECTS) $(libadiosreadf_v1_a_DEPENDENCIES) $(EXTRA_libadiosreadf_v1_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libadiosreadf_v1.a
+	$(AM_V_AR)$(libadiosreadf_v1_a_AR) libadiosreadf_v1.a $(libadiosreadf_v1_a_OBJECTS) $(libadiosreadf_v1_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libadiosreadf_v1.a
+core/libcoreonce_a-a2sel.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_bp_v1.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_clock.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_endianness.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_error.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_infocache.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_logger.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_socket.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-buffer.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-futils.$(OBJEXT): core/$(am__dirstamp)
+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/transforms/$(am__dirstamp):
+	@$(MKDIR_P) core/transforms
+	@: > core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_common.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_hooks.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/libcoreonce_a-adios_copyspec.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_subvolume.$(OBJEXT): core/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_write.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_hooks_write.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_util.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_specparse.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+transforms/$(am__dirstamp):
+	@$(MKDIR_P) transforms
+	@: > transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_identity_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_zlib_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_bzip2_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_szip_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_isobar_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_aplod_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_alacrity_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):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_reqgroup.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_transforms_datablock.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/transforms/libcoreonce_a-adios_patchdata.$(OBJEXT):  \
+	core/transforms/$(am__dirstamp)
+core/libcoreonce_a-adios_selection_util.$(OBJEXT):  \
+	core/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_identity_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_zlib_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_bzip2_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_szip_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_isobar_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_aplod_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_alacrity_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
+
+libcoreonce.a: $(libcoreonce_a_OBJECTS) $(libcoreonce_a_DEPENDENCIES) $(EXTRA_libcoreonce_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libcoreonce.a
+	$(AM_V_AR)$(libcoreonce_a_AR) libcoreonce.a $(libcoreonce_a_OBJECTS) $(libcoreonce_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libcoreonce.a
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -2984,7 +2776,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -2997,4837 +2790,2443 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-nssi-coupling-server$(EXEEXT): $(nssi_coupling_server_OBJECTS) $(nssi_coupling_server_DEPENDENCIES) 
-	@rm -f nssi-coupling-server$(EXEEXT)
-	$(nssi_coupling_server_LINK) $(nssi_coupling_server_OBJECTS) $(nssi_coupling_server_LDADD) $(LIBS)
-nssi-staging-server$(EXEEXT): $(nssi_staging_server_OBJECTS) $(nssi_staging_server_DEPENDENCIES) 
-	@rm -f nssi-staging-server$(EXEEXT)
-	$(nssi_staging_server_LINK) $(nssi_staging_server_OBJECTS) $(nssi_staging_server_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f core/*.$(OBJEXT)
+	-rm -f core/transforms/*.$(OBJEXT)
+	-rm -f query/*.$(OBJEXT)
+	-rm -f read/*.$(OBJEXT)
+	-rm -f transforms/*.$(OBJEXT)
+	-rm -f write/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
-
-libadios_a-adios.o: core/adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios.o `test -f 'core/adios.c' || echo '$(srcdir)/'`core/adios.c
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
-libadios_a-adios.obj: core/adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios.obj `if test -f 'core/adios.c'; then $(CYGPATH_W) 'core/adios.c'; else $(CYGPATH_W) '$(srcdir)/core/adios.c'; fi`
+core/libadios_a-adios.o: core/adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios.o `test -f 'core/adios.c' || echo '$(srcdir)/'`core/adios.c
 
-libadios_a-common_adios.o: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
+core/libadios_a-adios.obj: core/adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios.obj `if test -f 'core/adios.c'; then $(CYGPATH_W) 'core/adios.c'; else $(CYGPATH_W) '$(srcdir)/core/adios.c'; fi`
 
-libadios_a-common_adios.obj: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
+core/libadios_a-common_adios.o: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
 
-libadios_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
+core/libadios_a-common_adios.obj: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
 
-libadios_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
+core/libadios_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadios_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
+core/libadios_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadios_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
+core/libadios_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadios_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
+core/libadios_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadios_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
+query/libadios_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadios_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
+query/libadios_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadios_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
+query/libadios_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadios_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
+query/libadios_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadios_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
+query/libadios_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadios_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
+query/libadios_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadios_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
+query/libadios_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadios_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
+query/libadios_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadios_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
+query/libadios_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadios_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
+query/libadios_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadios_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
+query/libadios_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadios_a-adios_read.o: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
+query/libadios_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadios_a-adios_read.obj: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
+query/libadios_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadios_a-adios_read_v1.o: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
+query/libadios_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadios_a-adios_read_v1.obj: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
+query/libadios_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadios_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
+query/libadios_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadios_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
+query/libadios_a-adios_query.o: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
 
-libadios_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
+query/libadios_a-adios_query.obj: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o query/libadios_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
 
-libadios_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
+core/libadios_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadios_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
+core/libadios_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadios_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
+core/libadios_a-adios_read.o: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
 
-libadios_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
+core/libadios_a-adios_read.obj: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
 
-libadios_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
+core/libadios_a-adios_read_v1.o: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
 
-libadios_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
+core/libadios_a-adios_read_v1.obj: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
 
-libadios_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
+core/libadios_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadios_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
+core/libadios_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadios_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
+core/libadios_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadios_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
+core/libadios_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadios_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
+core/libadios_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadios_a-adios_socket.o: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
+core/libadios_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadios_a-adios_socket.obj: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
+core/libadios_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadios_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
+core/libadios_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadios_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
+core/libadios_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadios_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
+core/libadios_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadios_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
+core/libadios_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadios_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
+core/libadios_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o core/libadios_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadios_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
+read/libadios_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadios_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
+read/libadios_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadios_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
+read/libadios_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadios_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
+read/libadios_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadios_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
+read/libadios_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadios_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
+read/libadios_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadios_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
+write/libadios_a-adios_posix.o: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
 
-libadios_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
+write/libadios_a-adios_posix.obj: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
 
-libadios_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
+write/libadios_a-adios_flexpath.o: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
 
-libadios_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
+write/libadios_a-adios_flexpath.obj: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
 
-libadios_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
+read/libadios_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadios_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
+read/libadios_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadios_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
+write/libadios_a-adios_icee.o: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
 
-libadios_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
+write/libadios_a-adios_icee.obj: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
 
-libadios_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
+read/libadios_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadios_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
+read/libadios_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadios_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
+write/libadios_a-adios_mpi.o: write/adios_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi.o `test -f 'write/adios_mpi.c' || echo '$(srcdir)/'`write/adios_mpi.c
 
-libadios_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
+write/libadios_a-adios_mpi.obj: write/adios_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi.obj `if test -f 'write/adios_mpi.c'; then $(CYGPATH_W) 'write/adios_mpi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi.c'; fi`
 
-libadios_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
+write/libadios_a-adios_mpi_lustre.o: write/adios_mpi_lustre.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi_lustre.o `test -f 'write/adios_mpi_lustre.c' || echo '$(srcdir)/'`write/adios_mpi_lustre.c
 
-libadios_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
+write/libadios_a-adios_mpi_lustre.obj: write/adios_mpi_lustre.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi_lustre.obj `if test -f 'write/adios_mpi_lustre.c'; then $(CYGPATH_W) 'write/adios_mpi_lustre.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_lustre.c'; fi`
 
-libadios_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
+write/libadios_a-adios_mpi_amr.o: write/adios_mpi_amr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi_amr.o `test -f 'write/adios_mpi_amr.c' || echo '$(srcdir)/'`write/adios_mpi_amr.c
 
-libadios_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
+write/libadios_a-adios_mpi_amr.obj: write/adios_mpi_amr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi_amr.obj `if test -f 'write/adios_mpi_amr.c'; then $(CYGPATH_W) 'write/adios_mpi_amr.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_amr.c'; fi`
 
-libadios_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
+write/libadios_a-adios_var_merge.o: write/adios_var_merge.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_var_merge.o `test -f 'write/adios_var_merge.c' || echo '$(srcdir)/'`write/adios_var_merge.c
 
-libadios_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
+write/libadios_a-adios_var_merge.obj: write/adios_var_merge.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_var_merge.obj `if test -f 'write/adios_var_merge.c'; then $(CYGPATH_W) 'write/adios_var_merge.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_var_merge.c'; fi`
 
-libadios_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
+write/libadios_a-adios_mpi_bgq.o: write/adios_mpi_bgq.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi_bgq.o `test -f 'write/adios_mpi_bgq.c' || echo '$(srcdir)/'`write/adios_mpi_bgq.c
 
-libadios_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
+write/libadios_a-adios_mpi_bgq.obj: write/adios_mpi_bgq.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_mpi_bgq.obj `if test -f 'write/adios_mpi_bgq.c'; then $(CYGPATH_W) 'write/adios_mpi_bgq.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_bgq.c'; fi`
 
-libadios_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
+write/libadios_a-adios_dataspaces.o: write/adios_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_dataspaces.o `test -f 'write/adios_dataspaces.c' || echo '$(srcdir)/'`write/adios_dataspaces.c
 
-libadios_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
+write/libadios_a-adios_dataspaces.obj: write/adios_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_dataspaces.obj `if test -f 'write/adios_dataspaces.c'; then $(CYGPATH_W) 'write/adios_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dataspaces.c'; fi`
 
-libadios_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
+read/libadios_a-read_dataspaces.o: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
 
-libadios_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
+read/libadios_a-read_dataspaces.obj: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
 
-libadios_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
+write/libadios_a-adios_dimes.o: write/adios_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_dimes.o `test -f 'write/adios_dimes.c' || echo '$(srcdir)/'`write/adios_dimes.c
 
-libadios_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
+write/libadios_a-adios_dimes.obj: write/adios_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_dimes.obj `if test -f 'write/adios_dimes.c'; then $(CYGPATH_W) 'write/adios_dimes.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dimes.c'; fi`
 
-libadios_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
+read/libadios_a-read_dimes.o: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
 
-libadios_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
+read/libadios_a-read_dimes.obj: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o read/libadios_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
 
-libadios_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_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`
+write/libadios_a-adios_phdf5.o: write/adios_phdf5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_phdf5.o `test -f 'write/adios_phdf5.c' || echo '$(srcdir)/'`write/adios_phdf5.c
 
-libadios_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
+write/libadios_a-adios_phdf5.obj: write/adios_phdf5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_phdf5.obj `if test -f 'write/adios_phdf5.c'; then $(CYGPATH_W) 'write/adios_phdf5.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_phdf5.c'; fi`
 
-libadios_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
+write/libadios_a-adios_nc4.o: write/adios_nc4.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_nc4.o `test -f 'write/adios_nc4.c' || echo '$(srcdir)/'`write/adios_nc4.c
 
-libadios_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
+write/libadios_a-adios_nc4.obj: write/adios_nc4.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o write/libadios_a-adios_nc4.obj `if test -f 'write/adios_nc4.c'; then $(CYGPATH_W) 'write/adios_nc4.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nc4.c'; fi`
 
-libadios_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
+core/libadios_internal_nompi_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadios_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
+core/libadios_internal_nompi_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadios_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
+core/libadios_internal_nompi_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadios_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
+core/libadios_internal_nompi_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadios_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
+core/libadios_internal_nompi_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadios_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
+core/libadios_internal_nompi_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadios_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
+core/libadios_internal_nompi_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadios_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
+core/libadios_internal_nompi_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadios_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
+query/libadios_internal_nompi_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadios_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
+query/libadios_internal_nompi_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadios_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
+query/libadios_internal_nompi_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadios_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
+query/libadios_internal_nompi_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadios_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
+query/libadios_internal_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadios_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
+query/libadios_internal_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadios_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
+query/libadios_internal_nompi_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadios_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
+query/libadios_internal_nompi_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadios_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
+query/libadios_internal_nompi_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadios_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
+query/libadios_internal_nompi_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadios_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_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`
+query/libadios_internal_nompi_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadios_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
+query/libadios_internal_nompi_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadios_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
+query/libadios_internal_nompi_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadios_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
+query/libadios_internal_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadios_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
+query/libadios_internal_nompi_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadios_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
+query/libadios_internal_nompi_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadios_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
+query/libadios_internal_nompi_a-adios_query.o: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
 
-libadios_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
+query/libadios_internal_nompi_a-adios_query.obj: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query/libadios_internal_nompi_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
 
-libadios_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
+core/libadios_internal_nompi_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadios_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
+core/libadios_internal_nompi_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadios_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
+core/libadios_internal_nompi_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadios_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
+core/libadios_internal_nompi_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadios_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
+core/libadios_internal_nompi_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadios_a-adios_query.o: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
+core/libadios_internal_nompi_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/libadios_internal_nompi_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadios_a-adios_query.obj: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
+core/libadios_nompi_a-adios.o: core/adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios.o `test -f 'core/adios.c' || echo '$(srcdir)/'`core/adios.c
 
-libadios_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
+core/libadios_nompi_a-adios.obj: core/adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios.obj `if test -f 'core/adios.c'; then $(CYGPATH_W) 'core/adios.c'; else $(CYGPATH_W) '$(srcdir)/core/adios.c'; fi`
 
-libadios_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
+core/libadios_nompi_a-common_adios.o: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
 
-libadios_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
+core/libadios_nompi_a-common_adios.obj: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
 
-libadios_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
+core/libadios_nompi_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadios_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
+core/libadios_nompi_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadios_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
+core/libadios_nompi_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadios_a-adios_mpi.o: write/adios_mpi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi.o `test -f 'write/adios_mpi.c' || echo '$(srcdir)/'`write/adios_mpi.c
+core/libadios_nompi_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadios_a-adios_mpi.obj: write/adios_mpi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi.obj `if test -f 'write/adios_mpi.c'; then $(CYGPATH_W) 'write/adios_mpi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi.c'; fi`
+query/libadios_nompi_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadios_a-adios_mpi_lustre.o: write/adios_mpi_lustre.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi_lustre.o `test -f 'write/adios_mpi_lustre.c' || echo '$(srcdir)/'`write/adios_mpi_lustre.c
+query/libadios_nompi_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadios_a-adios_mpi_lustre.obj: write/adios_mpi_lustre.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi_lustre.obj `if test -f 'write/adios_mpi_lustre.c'; then $(CYGPATH_W) 'write/adios_mpi_lustre.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_lustre.c'; fi`
+query/libadios_nompi_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadios_a-adios_mpi_amr.o: write/adios_mpi_amr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi_amr.o `test -f 'write/adios_mpi_amr.c' || echo '$(srcdir)/'`write/adios_mpi_amr.c
+query/libadios_nompi_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadios_a-adios_mpi_amr.obj: write/adios_mpi_amr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi_amr.obj `if test -f 'write/adios_mpi_amr.c'; then $(CYGPATH_W) 'write/adios_mpi_amr.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_amr.c'; fi`
+query/libadios_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadios_a-adios_posix.o: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
+query/libadios_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadios_a-adios_posix.obj: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
+query/libadios_nompi_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadios_a-adios_posix1.o: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_posix1.o `test -f 'write/adios_posix1.c' || echo '$(srcdir)/'`write/adios_posix1.c
+query/libadios_nompi_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadios_a-adios_posix1.obj: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_posix1.obj `if test -f 'write/adios_posix1.c'; then $(CYGPATH_W) 'write/adios_posix1.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix1.c'; fi`
+query/libadios_nompi_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadios_a-adios_var_merge.o: write/adios_var_merge.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_var_merge.o `test -f 'write/adios_var_merge.c' || echo '$(srcdir)/'`write/adios_var_merge.c
+query/libadios_nompi_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadios_a-adios_var_merge.obj: write/adios_var_merge.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_var_merge.obj `if test -f 'write/adios_var_merge.c'; then $(CYGPATH_W) 'write/adios_var_merge.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_var_merge.c'; fi`
+query/libadios_nompi_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadios_a-adios_mpi_bgq.o: write/adios_mpi_bgq.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi_bgq.o `test -f 'write/adios_mpi_bgq.c' || echo '$(srcdir)/'`write/adios_mpi_bgq.c
+query/libadios_nompi_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadios_a-adios_mpi_bgq.obj: write/adios_mpi_bgq.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_mpi_bgq.obj `if test -f 'write/adios_mpi_bgq.c'; then $(CYGPATH_W) 'write/adios_mpi_bgq.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_bgq.c'; fi`
+query/libadios_nompi_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadios_a-adios_dataspaces.o: write/adios_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_dataspaces.o `test -f 'write/adios_dataspaces.c' || echo '$(srcdir)/'`write/adios_dataspaces.c
+query/libadios_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadios_a-adios_dataspaces.obj: write/adios_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_dataspaces.obj `if test -f 'write/adios_dataspaces.c'; then $(CYGPATH_W) 'write/adios_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dataspaces.c'; fi`
+query/libadios_nompi_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadios_a-read_dataspaces.o: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
+query/libadios_nompi_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadios_a-read_dataspaces.obj: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
+query/libadios_nompi_a-adios_query.o: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
 
-libadios_a-adios_dimes.o: write/adios_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_dimes.o `test -f 'write/adios_dimes.c' || echo '$(srcdir)/'`write/adios_dimes.c
+query/libadios_nompi_a-adios_query.obj: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadios_nompi_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
 
-libadios_a-adios_dimes.obj: write/adios_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_dimes.obj `if test -f 'write/adios_dimes.c'; then $(CYGPATH_W) 'write/adios_dimes.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dimes.c'; fi`
+core/libadios_nompi_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadios_a-read_dimes.o: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
+core/libadios_nompi_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadios_a-read_dimes.obj: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
+core/libadios_nompi_a-adios_read.o: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
 
-libadios_a-adios_datatap.o: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_datatap.o `test -f 'write/adios_datatap.c' || echo '$(srcdir)/'`write/adios_datatap.c
+core/libadios_nompi_a-adios_read.obj: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
 
-libadios_a-adios_datatap.obj: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_datatap.obj `if test -f 'write/adios_datatap.c'; then $(CYGPATH_W) 'write/adios_datatap.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_datatap.c'; fi`
+core/libadios_nompi_a-adios_read_v1.o: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
 
-libadios_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
+core/libadios_nompi_a-adios_read_v1.obj: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
 
-libadios_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
+core/libadios_nompi_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadios_a-adios_phdf5.o: write/adios_phdf5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_phdf5.o `test -f 'write/adios_phdf5.c' || echo '$(srcdir)/'`write/adios_phdf5.c
+core/libadios_nompi_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadios_a-adios_phdf5.obj: write/adios_phdf5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_phdf5.obj `if test -f 'write/adios_phdf5.c'; then $(CYGPATH_W) 'write/adios_phdf5.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_phdf5.c'; fi`
+core/libadios_nompi_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadios_a-adios_nc4.o: write/adios_nc4.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nc4.o `test -f 'write/adios_nc4.c' || echo '$(srcdir)/'`write/adios_nc4.c
+core/libadios_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadios_a-adios_nc4.obj: write/adios_nc4.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nc4.obj `if test -f 'write/adios_nc4.c'; then $(CYGPATH_W) 'write/adios_nc4.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nc4.c'; fi`
+core/libadios_nompi_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadios_a-adios_flexpath.o: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
+core/libadios_nompi_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadios_a-adios_flexpath.obj: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
+core/libadios_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadios_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
+core/libadios_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadios_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
+core/libadios_nompi_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadios_a-adios_icee.o: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
+core/libadios_nompi_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadios_a-adios_icee.obj: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
+core/libadios_nompi_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadios_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
+core/libadios_nompi_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadios_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
+read/libadios_nompi_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadios_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
+read/libadios_nompi_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadios_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
+read/libadios_nompi_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadios_a-adios_nssi.o: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi.o `test -f 'write/adios_nssi.c' || echo '$(srcdir)/'`write/adios_nssi.c
+read/libadios_nompi_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadios_a-adios_nssi.obj: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi.obj `if test -f 'write/adios_nssi.c'; then $(CYGPATH_W) 'write/adios_nssi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nssi.c'; fi`
+read/libadios_nompi_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadios_a-adios_nssi_filter.o: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi_filter.o `test -f 'nssi/adios_nssi_filter.c' || echo '$(srcdir)/'`nssi/adios_nssi_filter.c
+read/libadios_nompi_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadios_a-adios_nssi_filter.obj: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi_filter.obj `if test -f 'nssi/adios_nssi_filter.c'; then $(CYGPATH_W) 'nssi/adios_nssi_filter.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_filter.c'; fi`
+write/libadios_nompi_a-adios_posix.o: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadios_nompi_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
 
-libadios_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
+write/libadios_nompi_a-adios_posix.obj: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadios_nompi_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
 
-libadios_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
+write/libadios_nompi_a-adios_flexpath.o: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadios_nompi_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
 
-libadios_a-adios_nssi_args.o: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi_args.o `test -f 'adios_nssi_args.c' || echo '$(srcdir)/'`adios_nssi_args.c
+write/libadios_nompi_a-adios_flexpath.obj: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadios_nompi_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
 
-libadios_a-adios_nssi_args.obj: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_a_CPPFLAGS) $(CPPFLAGS) $(libadios_a_CFLAGS) $(CFLAGS) -c -o libadios_a-adios_nssi_args.obj `if test -f 'adios_nssi_args.c'; then $(CYGPATH_W) 'adios_nssi_args.c'; else $(CYGPATH_W) '$(srcdir)/adios_nssi_args.c'; fi`
+read/libadios_nompi_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadios_internal_nompi_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
+read/libadios_nompi_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadios_internal_nompi_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
+write/libadios_nompi_a-adios_icee.o: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadios_nompi_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
 
-libadios_internal_nompi_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
+write/libadios_nompi_a-adios_icee.obj: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadios_nompi_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
 
-libadios_internal_nompi_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
+read/libadios_nompi_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadios_internal_nompi_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
+read/libadios_nompi_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadios_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadios_internal_nompi_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
+core/libadios_nompi_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadios_internal_nompi_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
+core/libadios_nompi_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadios_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadios_internal_nompi_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
+core/libadiosf_a-adiosf.o: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
 
-libadios_internal_nompi_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
+core/libadiosf_a-adiosf.obj: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
 
-libadios_internal_nompi_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
+core/libadiosf_a-common_adios.o: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
 
-libadios_internal_nompi_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
+core/libadiosf_a-common_adios.obj: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
 
-libadios_internal_nompi_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
+core/libadiosf_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadios_internal_nompi_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
+core/libadiosf_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadios_internal_nompi_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
+core/libadiosf_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadios_internal_nompi_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
+core/libadiosf_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadios_internal_nompi_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
+query/libadiosf_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadios_internal_nompi_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
+query/libadiosf_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadios_internal_nompi_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
+query/libadiosf_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadios_internal_nompi_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
+query/libadiosf_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadios_internal_nompi_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
+query/libadiosf_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadios_internal_nompi_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
+query/libadiosf_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadios_internal_nompi_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
+query/libadiosf_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadios_internal_nompi_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
+query/libadiosf_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadios_internal_nompi_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
+query/libadiosf_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadios_internal_nompi_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
+query/libadiosf_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadios_internal_nompi_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
+query/libadiosf_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadios_internal_nompi_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
+query/libadiosf_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
+query/libadiosf_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadios_internal_nompi_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
+query/libadiosf_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
+query/libadiosf_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadios_internal_nompi_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
+query/libadiosf_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
+query/libadiosf_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadios_internal_nompi_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
+query/libadiosf_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
+core/libadiosf_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadios_internal_nompi_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
+core/libadiosf_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
+core/libadiosf_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadios_internal_nompi_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
+core/libadiosf_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
+core/libadiosf_a-adios_infocache.o: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
 
-libadios_internal_nompi_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
+core/libadiosf_a-adios_infocache.obj: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
 
-libadios_internal_nompi_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_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`
+core/libadiosf_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadios_internal_nompi_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
+core/libadiosf_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadios_internal_nompi_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
+core/libadiosf_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadios_internal_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
+core/libadiosf_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadios_internal_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
+core/libadiosf_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadios_internal_nompi_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
+core/libadiosf_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadios_internal_nompi_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
+core/libadiosf_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadios_internal_nompi_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
+core/libadiosf_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadios_internal_nompi_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
+core/libadiosf_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadios_internal_nompi_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
+core/libadiosf_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadios_internal_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
+read/libadiosf_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadios_internal_nompi_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
+read/libadiosf_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadios_internal_nompi_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
+read/libadiosf_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadios_internal_nompi_a-adios_query.o: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
+read/libadiosf_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadios_internal_nompi_a-adios_query.obj: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
+read/libadiosf_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadios_internal_nompi_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
+read/libadiosf_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadios_internal_nompi_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
+write/libadiosf_a-adios_posix.o: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
 
-libadios_internal_nompi_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
+write/libadiosf_a-adios_posix.obj: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
 
-libadios_internal_nompi_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
+write/libadiosf_a-adios_flexpath.o: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
 
-libadios_internal_nompi_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
+write/libadiosf_a-adios_flexpath.obj: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
 
-libadios_internal_nompi_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
+read/libadiosf_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadios_internal_nompi_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
+read/libadiosf_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadios_internal_nompi_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
+write/libadiosf_a-adios_icee.o: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
 
-libadios_internal_nompi_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
+write/libadiosf_a-adios_icee.obj: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
 
-libadios_internal_nompi_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
+read/libadiosf_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadios_internal_nompi_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
+read/libadiosf_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadios_internal_nompi_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
+write/libadiosf_a-adios_mpi.o: write/adios_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi.o `test -f 'write/adios_mpi.c' || echo '$(srcdir)/'`write/adios_mpi.c
 
-libadios_internal_nompi_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
+write/libadiosf_a-adios_mpi.obj: write/adios_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi.obj `if test -f 'write/adios_mpi.c'; then $(CYGPATH_W) 'write/adios_mpi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi.c'; fi`
 
-libadios_internal_nompi_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
+write/libadiosf_a-adios_mpi_lustre.o: write/adios_mpi_lustre.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi_lustre.o `test -f 'write/adios_mpi_lustre.c' || echo '$(srcdir)/'`write/adios_mpi_lustre.c
 
-libadios_internal_nompi_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
+write/libadiosf_a-adios_mpi_lustre.obj: write/adios_mpi_lustre.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi_lustre.obj `if test -f 'write/adios_mpi_lustre.c'; then $(CYGPATH_W) 'write/adios_mpi_lustre.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_lustre.c'; fi`
 
-libadios_internal_nompi_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
+write/libadiosf_a-adios_mpi_amr.o: write/adios_mpi_amr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi_amr.o `test -f 'write/adios_mpi_amr.c' || echo '$(srcdir)/'`write/adios_mpi_amr.c
 
-libadios_internal_nompi_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
+write/libadiosf_a-adios_mpi_amr.obj: write/adios_mpi_amr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi_amr.obj `if test -f 'write/adios_mpi_amr.c'; then $(CYGPATH_W) 'write/adios_mpi_amr.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_amr.c'; fi`
 
-libadios_internal_nompi_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_internal_nompi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libadios_internal_nompi_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
+write/libadiosf_a-adios_var_merge.o: write/adios_var_merge.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_var_merge.o `test -f 'write/adios_var_merge.c' || echo '$(srcdir)/'`write/adios_var_merge.c
 
-libadios_nompi_a-adios.o: core/adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios.o `test -f 'core/adios.c' || echo '$(srcdir)/'`core/adios.c
+write/libadiosf_a-adios_var_merge.obj: write/adios_var_merge.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_var_merge.obj `if test -f 'write/adios_var_merge.c'; then $(CYGPATH_W) 'write/adios_var_merge.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_var_merge.c'; fi`
 
-libadios_nompi_a-adios.obj: core/adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios.obj `if test -f 'core/adios.c'; then $(CYGPATH_W) 'core/adios.c'; else $(CYGPATH_W) '$(srcdir)/core/adios.c'; fi`
+write/libadiosf_a-adios_mpi_bgq.o: write/adios_mpi_bgq.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi_bgq.o `test -f 'write/adios_mpi_bgq.c' || echo '$(srcdir)/'`write/adios_mpi_bgq.c
 
-libadios_nompi_a-common_adios.o: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
+write/libadiosf_a-adios_mpi_bgq.obj: write/adios_mpi_bgq.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_mpi_bgq.obj `if test -f 'write/adios_mpi_bgq.c'; then $(CYGPATH_W) 'write/adios_mpi_bgq.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_bgq.c'; fi`
 
-libadios_nompi_a-common_adios.obj: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
+write/libadiosf_a-adios_dataspaces.o: write/adios_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_dataspaces.o `test -f 'write/adios_dataspaces.c' || echo '$(srcdir)/'`write/adios_dataspaces.c
 
-libadios_nompi_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
+write/libadiosf_a-adios_dataspaces.obj: write/adios_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_dataspaces.obj `if test -f 'write/adios_dataspaces.c'; then $(CYGPATH_W) 'write/adios_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dataspaces.c'; fi`
 
-libadios_nompi_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
+read/libadiosf_a-read_dataspaces.o: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
 
-libadios_nompi_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
+read/libadiosf_a-read_dataspaces.obj: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
 
-libadios_nompi_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
+write/libadiosf_a-adios_dimes.o: write/adios_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_dimes.o `test -f 'write/adios_dimes.c' || echo '$(srcdir)/'`write/adios_dimes.c
 
-libadios_nompi_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
+write/libadiosf_a-adios_dimes.obj: write/adios_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_dimes.obj `if test -f 'write/adios_dimes.c'; then $(CYGPATH_W) 'write/adios_dimes.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dimes.c'; fi`
 
-libadios_nompi_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
+read/libadiosf_a-read_dimes.o: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
 
-libadios_nompi_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
+read/libadiosf_a-read_dimes.obj: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
 
-libadios_nompi_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
+write/libadiosf_a-adios_phdf5.o: write/adios_phdf5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_phdf5.o `test -f 'write/adios_phdf5.c' || echo '$(srcdir)/'`write/adios_phdf5.c
 
-libadios_nompi_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
+write/libadiosf_a-adios_phdf5.obj: write/adios_phdf5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_phdf5.obj `if test -f 'write/adios_phdf5.c'; then $(CYGPATH_W) 'write/adios_phdf5.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_phdf5.c'; fi`
 
-libadios_nompi_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
+write/libadiosf_a-adios_nc4.o: write/adios_nc4.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_nc4.o `test -f 'write/adios_nc4.c' || echo '$(srcdir)/'`write/adios_nc4.c
 
-libadios_nompi_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
+write/libadiosf_a-adios_nc4.obj: write/adios_nc4.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_a-adios_nc4.obj `if test -f 'write/adios_nc4.c'; then $(CYGPATH_W) 'write/adios_nc4.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nc4.c'; fi`
 
-libadios_nompi_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
+core/libadiosf_a-adiosf_read.o: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
 
-libadios_nompi_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
+core/libadiosf_a-adiosf_read.obj: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
 
-libadios_nompi_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
+core/libadiosf_nompi_a-adiosf.o: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
 
-libadios_nompi_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
+core/libadiosf_nompi_a-adiosf.obj: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
 
-libadios_nompi_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
+core/libadiosf_nompi_a-common_adios.o: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
 
-libadios_nompi_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
+core/libadiosf_nompi_a-common_adios.obj: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
 
-libadios_nompi_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
+core/libadiosf_nompi_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadios_nompi_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
+core/libadiosf_nompi_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadios_nompi_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
+core/libadiosf_nompi_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadios_nompi_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
+core/libadiosf_nompi_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadios_nompi_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
+query/libadiosf_nompi_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadios_nompi_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
+query/libadiosf_nompi_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadios_nompi_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
+query/libadiosf_nompi_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadios_nompi_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
+query/libadiosf_nompi_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadios_nompi_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
+query/libadiosf_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadios_nompi_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
+query/libadiosf_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadios_nompi_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
+query/libadiosf_nompi_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadios_nompi_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
+query/libadiosf_nompi_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadios_nompi_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
+query/libadiosf_nompi_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadios_nompi_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
+query/libadiosf_nompi_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadios_nompi_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
+query/libadiosf_nompi_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadios_nompi_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
+query/libadiosf_nompi_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadios_nompi_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
+query/libadiosf_nompi_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadios_nompi_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
+query/libadiosf_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadios_nompi_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
+query/libadiosf_nompi_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadios_nompi_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
+query/libadiosf_nompi_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadios_nompi_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_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`
+query/libadiosf_nompi_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadios_nompi_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
+query/libadiosf_nompi_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadios_nompi_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
+core/libadiosf_nompi_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadios_nompi_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
+core/libadiosf_nompi_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadios_nompi_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
+core/libadiosf_nompi_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadios_nompi_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
+core/libadiosf_nompi_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadios_nompi_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
+core/libadiosf_nompi_a-adios_infocache.o: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
 
-libadios_nompi_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
+core/libadiosf_nompi_a-adios_infocache.obj: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
 
-libadios_nompi_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
+core/libadiosf_nompi_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadios_nompi_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
+core/libadiosf_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadios_nompi_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
+core/libadiosf_nompi_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadios_nompi_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
+core/libadiosf_nompi_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadios_nompi_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
+core/libadiosf_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadios_nompi_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
+core/libadiosf_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadios_nompi_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
+core/libadiosf_nompi_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadios_nompi_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
+core/libadiosf_nompi_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadios_nompi_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
+core/libadiosf_nompi_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadios_nompi_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
+core/libadiosf_nompi_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadios_nompi_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
+read/libadiosf_nompi_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadios_nompi_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
+read/libadiosf_nompi_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadios_nompi_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
+read/libadiosf_nompi_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadios_nompi_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
+read/libadiosf_nompi_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadios_nompi_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_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`
+read/libadiosf_nompi_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadios_nompi_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
+read/libadiosf_nompi_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadios_nompi_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
+write/libadiosf_nompi_a-adios_posix.o: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
 
-libadios_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
+write/libadiosf_nompi_a-adios_posix.obj: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
 
-libadios_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
+write/libadiosf_nompi_a-adios_flexpath.o: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
 
-libadios_nompi_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
+write/libadiosf_nompi_a-adios_flexpath.obj: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
 
-libadios_nompi_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
+read/libadiosf_nompi_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadios_nompi_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
+read/libadiosf_nompi_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadios_nompi_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
+write/libadiosf_nompi_a-adios_icee.o: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
 
-libadios_nompi_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
+write/libadiosf_nompi_a-adios_icee.obj: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
 
-libadios_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
+read/libadiosf_nompi_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadios_nompi_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
+read/libadiosf_nompi_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadios_nompi_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
+core/libadiosf_nompi_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadios_nompi_a-adios_query.o: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
+core/libadiosf_nompi_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadios_nompi_a-adios_query.obj: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
+core/libadiosf_nompi_a-adiosf_read.o: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
 
-libadios_nompi_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
+core/libadiosf_nompi_a-adiosf_read.obj: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
 
-libadios_nompi_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
+core/libadiosf_nompi_v1_a-adiosf.o: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
 
-libadios_nompi_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
+core/libadiosf_nompi_v1_a-adiosf.obj: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
 
-libadios_nompi_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
+core/libadiosf_nompi_v1_a-common_adios.o: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
 
-libadios_nompi_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
+core/libadiosf_nompi_v1_a-common_adios.obj: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
 
-libadios_nompi_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
+core/libadiosf_nompi_v1_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadios_nompi_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
+core/libadiosf_nompi_v1_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadios_nompi_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
+core/libadiosf_nompi_v1_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadios_nompi_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
+core/libadiosf_nompi_v1_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadios_nompi_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
+query/libadiosf_nompi_v1_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadios_nompi_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
+query/libadiosf_nompi_v1_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadios_nompi_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
+query/libadiosf_nompi_v1_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadios_nompi_a-adios_read.o: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
+query/libadiosf_nompi_v1_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadios_nompi_a-adios_read.obj: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
+query/libadiosf_nompi_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadios_nompi_a-adios_read_v1.o: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
+query/libadiosf_nompi_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadios_nompi_a-adios_read_v1.obj: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
+query/libadiosf_nompi_v1_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadios_nompi_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
+query/libadiosf_nompi_v1_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadios_nompi_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
+query/libadiosf_nompi_v1_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadios_nompi_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
+query/libadiosf_nompi_v1_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadios_nompi_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
+query/libadiosf_nompi_v1_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadios_nompi_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
+query/libadiosf_nompi_v1_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadios_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
+query/libadiosf_nompi_v1_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadios_nompi_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
+query/libadiosf_nompi_v1_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadios_nompi_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
+query/libadiosf_nompi_v1_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadios_nompi_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
+query/libadiosf_nompi_v1_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadios_nompi_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
+query/libadiosf_nompi_v1_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadios_nompi_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
+query/libadiosf_nompi_v1_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_nompi_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadios_nompi_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
+core/libadiosf_nompi_v1_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadios_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
+core/libadiosf_nompi_v1_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadios_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
+core/libadiosf_nompi_v1_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadios_nompi_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
+core/libadiosf_nompi_v1_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadios_nompi_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
+core/libadiosf_nompi_v1_a-adios_infocache.o: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
 
-libadios_nompi_a-adios_socket.o: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
+core/libadiosf_nompi_v1_a-adios_infocache.obj: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
 
-libadios_nompi_a-adios_socket.obj: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
+core/libadiosf_nompi_v1_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadios_nompi_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
+core/libadiosf_nompi_v1_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadios_nompi_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
+core/libadiosf_nompi_v1_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadios_nompi_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
+core/libadiosf_nompi_v1_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadios_nompi_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
+core/libadiosf_nompi_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadios_nompi_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
+core/libadiosf_nompi_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadios_nompi_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
+core/libadiosf_nompi_v1_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadios_nompi_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
+core/libadiosf_nompi_v1_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadios_nompi_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
+core/libadiosf_nompi_v1_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadios_nompi_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
+core/libadiosf_nompi_v1_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadios_nompi_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
+read/libadiosf_nompi_v1_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadios_nompi_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
+read/libadiosf_nompi_v1_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadios_nompi_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
+read/libadiosf_nompi_v1_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadios_nompi_a-adios_posix.o: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
+read/libadiosf_nompi_v1_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadios_nompi_a-adios_posix.obj: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
+read/libadiosf_nompi_v1_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadios_nompi_a-adios_posix1.o: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_posix1.o `test -f 'write/adios_posix1.c' || echo '$(srcdir)/'`write/adios_posix1.c
+read/libadiosf_nompi_v1_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadios_nompi_a-adios_posix1.obj: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_posix1.obj `if test -f 'write/adios_posix1.c'; then $(CYGPATH_W) 'write/adios_posix1.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix1.c'; fi`
+write/libadiosf_nompi_v1_a-adios_posix.o: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_v1_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
 
-libadios_nompi_a-adios_datatap.o: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_datatap.o `test -f 'write/adios_datatap.c' || echo '$(srcdir)/'`write/adios_datatap.c
+write/libadiosf_nompi_v1_a-adios_posix.obj: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_v1_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
 
-libadios_nompi_a-adios_datatap.obj: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_datatap.obj `if test -f 'write/adios_datatap.c'; then $(CYGPATH_W) 'write/adios_datatap.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_datatap.c'; fi`
+write/libadiosf_nompi_v1_a-adios_flexpath.o: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_v1_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
 
-libadios_nompi_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
+write/libadiosf_nompi_v1_a-adios_flexpath.obj: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_v1_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
 
-libadios_nompi_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
+read/libadiosf_nompi_v1_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadios_nompi_a-adios_flexpath.o: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
+read/libadiosf_nompi_v1_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadios_nompi_a-adios_flexpath.obj: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
+write/libadiosf_nompi_v1_a-adios_icee.o: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_v1_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
 
-libadios_nompi_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
+write/libadiosf_nompi_v1_a-adios_icee.obj: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_nompi_v1_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
 
-libadios_nompi_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
+read/libadiosf_nompi_v1_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadios_nompi_a-adios_icee.o: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
+read/libadiosf_nompi_v1_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_nompi_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadios_nompi_a-adios_icee.obj: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
+core/libadiosf_nompi_v1_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadios_nompi_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
+core/libadiosf_nompi_v1_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadios_nompi_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadios_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadios_nompi_a_CFLAGS) $(CFLAGS) -c -o libadios_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
+core/libadiosf_nompi_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
 
-libadiosf_a-adiosf.o: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
+core/libadiosf_nompi_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_nompi_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
 
-libadiosf_a-adiosf.obj: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
+core/libadiosf_v1_a-adiosf.o: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
 
-libadiosf_a-common_adios.o: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
+core/libadiosf_v1_a-adiosf.obj: core/adiosf.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
 
-libadiosf_a-common_adios.obj: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
+core/libadiosf_v1_a-common_adios.o: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
 
-libadiosf_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
+core/libadiosf_v1_a-common_adios.obj: core/common_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
 
-libadiosf_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
+core/libadiosf_v1_a-adios_internals.o: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
 
-libadiosf_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
+core/libadiosf_v1_a-adios_internals.obj: core/adios_internals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
 
-libadiosf_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
+core/libadiosf_v1_a-adios_internals_mxml.o: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
 
-libadiosf_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
+core/libadiosf_v1_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
 
-libadiosf_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
+query/libadiosf_v1_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
+query/libadiosf_v1_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
+query/libadiosf_v1_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
+query/libadiosf_v1_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
+query/libadiosf_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
+query/libadiosf_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
+query/libadiosf_v1_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
+query/libadiosf_v1_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
+query/libadiosf_v1_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
+query/libadiosf_v1_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
+query/libadiosf_v1_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
+query/libadiosf_v1_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
+query/libadiosf_v1_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
+query/libadiosf_v1_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
+query/libadiosf_v1_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
+query/libadiosf_v1_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
+query/libadiosf_v1_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadiosf_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
+query/libadiosf_v1_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosf_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadiosf_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
+core/libadiosf_v1_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
+core/libadiosf_v1_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
+core/libadiosf_v1_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
+core/libadiosf_v1_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
+core/libadiosf_v1_a-adios_infocache.o: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
 
-libadiosf_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
+core/libadiosf_v1_a-adios_infocache.obj: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
 
-libadiosf_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
+core/libadiosf_v1_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
+core/libadiosf_v1_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
+core/libadiosf_v1_a-adios_timing.o: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
 
-libadiosf_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
+core/libadiosf_v1_a-adios_timing.obj: core/adios_timing.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
 
-libadiosf_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
+core/libadiosf_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
+core/libadiosf_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
+core/libadiosf_v1_a-adios_transport_hooks.o: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
 
-libadiosf_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
+core/libadiosf_v1_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
 
-libadiosf_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_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`
+core/libadiosf_v1_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
+core/libadiosf_v1_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
+read/libadiosf_v1_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
+read/libadiosf_v1_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
+read/libadiosf_v1_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadiosf_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
+read/libadiosf_v1_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadiosf_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
+read/libadiosf_v1_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadiosf_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
+read/libadiosf_v1_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadiosf_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
+write/libadiosf_v1_a-adios_posix.o: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
 
-libadiosf_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
+write/libadiosf_v1_a-adios_posix.obj: write/adios_posix.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
 
-libadiosf_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
+write/libadiosf_v1_a-adios_flexpath.o: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
 
-libadiosf_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
+write/libadiosf_v1_a-adios_flexpath.obj: write/adios_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
 
-libadiosf_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
+read/libadiosf_v1_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
+read/libadiosf_v1_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
+write/libadiosf_v1_a-adios_icee.o: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
 
-libadiosf_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
+write/libadiosf_v1_a-adios_icee.obj: write/adios_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
 
-libadiosf_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
+read/libadiosf_v1_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
+read/libadiosf_v1_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
+write/libadiosf_v1_a-adios_mpi.o: write/adios_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi.o `test -f 'write/adios_mpi.c' || echo '$(srcdir)/'`write/adios_mpi.c
 
-libadiosf_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
+write/libadiosf_v1_a-adios_mpi.obj: write/adios_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi.obj `if test -f 'write/adios_mpi.c'; then $(CYGPATH_W) 'write/adios_mpi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi.c'; fi`
 
-libadiosf_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
+write/libadiosf_v1_a-adios_mpi_lustre.o: write/adios_mpi_lustre.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi_lustre.o `test -f 'write/adios_mpi_lustre.c' || echo '$(srcdir)/'`write/adios_mpi_lustre.c
 
-libadiosf_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
+write/libadiosf_v1_a-adios_mpi_lustre.obj: write/adios_mpi_lustre.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi_lustre.obj `if test -f 'write/adios_mpi_lustre.c'; then $(CYGPATH_W) 'write/adios_mpi_lustre.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_lustre.c'; fi`
 
-libadiosf_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_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`
+write/libadiosf_v1_a-adios_mpi_amr.o: write/adios_mpi_amr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi_amr.o `test -f 'write/adios_mpi_amr.c' || echo '$(srcdir)/'`write/adios_mpi_amr.c
 
-libadiosf_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
+write/libadiosf_v1_a-adios_mpi_amr.obj: write/adios_mpi_amr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi_amr.obj `if test -f 'write/adios_mpi_amr.c'; then $(CYGPATH_W) 'write/adios_mpi_amr.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_amr.c'; fi`
 
-libadiosf_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
+write/libadiosf_v1_a-adios_var_merge.o: write/adios_var_merge.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_var_merge.o `test -f 'write/adios_var_merge.c' || echo '$(srcdir)/'`write/adios_var_merge.c
 
-libadiosf_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
+write/libadiosf_v1_a-adios_var_merge.obj: write/adios_var_merge.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_var_merge.obj `if test -f 'write/adios_var_merge.c'; then $(CYGPATH_W) 'write/adios_var_merge.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_var_merge.c'; fi`
 
-libadiosf_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
+write/libadiosf_v1_a-adios_mpi_bgq.o: write/adios_mpi_bgq.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi_bgq.o `test -f 'write/adios_mpi_bgq.c' || echo '$(srcdir)/'`write/adios_mpi_bgq.c
 
-libadiosf_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
+write/libadiosf_v1_a-adios_mpi_bgq.obj: write/adios_mpi_bgq.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_mpi_bgq.obj `if test -f 'write/adios_mpi_bgq.c'; then $(CYGPATH_W) 'write/adios_mpi_bgq.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_bgq.c'; fi`
 
-libadiosf_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
+write/libadiosf_v1_a-adios_dataspaces.o: write/adios_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_dataspaces.o `test -f 'write/adios_dataspaces.c' || echo '$(srcdir)/'`write/adios_dataspaces.c
 
-libadiosf_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
+write/libadiosf_v1_a-adios_dataspaces.obj: write/adios_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_dataspaces.obj `if test -f 'write/adios_dataspaces.c'; then $(CYGPATH_W) 'write/adios_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dataspaces.c'; fi`
 
-libadiosf_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
+read/libadiosf_v1_a-read_dataspaces.o: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
 
-libadiosf_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
+read/libadiosf_v1_a-read_dataspaces.obj: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
 
-libadiosf_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
+write/libadiosf_v1_a-adios_dimes.o: write/adios_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_dimes.o `test -f 'write/adios_dimes.c' || echo '$(srcdir)/'`write/adios_dimes.c
 
-libadiosf_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
+write/libadiosf_v1_a-adios_dimes.obj: write/adios_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_dimes.obj `if test -f 'write/adios_dimes.c'; then $(CYGPATH_W) 'write/adios_dimes.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dimes.c'; fi`
 
-libadiosf_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
+read/libadiosf_v1_a-read_dimes.o: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
 
-libadiosf_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
+read/libadiosf_v1_a-read_dimes.obj: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosf_v1_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
 
-libadiosf_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
+write/libadiosf_v1_a-adios_phdf5.o: write/adios_phdf5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_phdf5.o `test -f 'write/adios_phdf5.c' || echo '$(srcdir)/'`write/adios_phdf5.c
 
-libadiosf_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
+write/libadiosf_v1_a-adios_phdf5.obj: write/adios_phdf5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_phdf5.obj `if test -f 'write/adios_phdf5.c'; then $(CYGPATH_W) 'write/adios_phdf5.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_phdf5.c'; fi`
 
-libadiosf_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
+write/libadiosf_v1_a-adios_nc4.o: write/adios_nc4.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_nc4.o `test -f 'write/adios_nc4.c' || echo '$(srcdir)/'`write/adios_nc4.c
 
-libadiosf_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
+write/libadiosf_v1_a-adios_nc4.obj: write/adios_nc4.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o write/libadiosf_v1_a-adios_nc4.obj `if test -f 'write/adios_nc4.c'; then $(CYGPATH_W) 'write/adios_nc4.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nc4.c'; fi`
 
-libadiosf_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
+core/libadiosf_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
 
-libadiosf_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
+core/libadiosf_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosf_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
 
-libadiosf_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
+core/libadiosread_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
+core/libadiosread_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
+core/libadiosread_a-adios_read.o: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
 
-libadiosf_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
+core/libadiosread_a-adios_read.obj: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
 
-libadiosf_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
+core/libadiosread_a-adios_read_v1.o: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
 
-libadiosf_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
+core/libadiosread_a-adios_read_v1.obj: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
 
-libadiosf_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
+core/libadiosread_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
+core/libadiosread_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
+core/libadiosread_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
+core/libadiosread_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
+query/libadiosread_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
+query/libadiosread_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
+query/libadiosread_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
+query/libadiosread_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
+query/libadiosread_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
+query/libadiosread_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
+query/libadiosread_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
+query/libadiosread_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
+query/libadiosread_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
+query/libadiosread_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
+query/libadiosread_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_a-adios_socket.o: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
+query/libadiosread_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_a-adios_socket.obj: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
+query/libadiosread_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
+query/libadiosread_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
+query/libadiosread_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
+query/libadiosread_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
+query/libadiosread_a-adios_query.o: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
 
-libadiosf_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
+query/libadiosread_a-adios_query.obj: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
 
-libadiosf_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
+core/libadiosread_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
+core/libadiosread_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
+core/libadiosread_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
+core/libadiosread_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
+read/libadiosread_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
+read/libadiosread_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
+read/libadiosread_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadiosf_a-adios_posix.o: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
+read/libadiosread_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadiosf_a-adios_posix.obj: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
+read/libadiosread_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadiosf_a-adios_posix1.o: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_posix1.o `test -f 'write/adios_posix1.c' || echo '$(srcdir)/'`write/adios_posix1.c
+read/libadiosread_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadiosf_a-adios_posix1.obj: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_posix1.obj `if test -f 'write/adios_posix1.c'; then $(CYGPATH_W) 'write/adios_posix1.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix1.c'; fi`
+read/libadiosread_a-read_dataspaces.o: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
 
-libadiosf_a-adios_datatap.o: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_datatap.o `test -f 'write/adios_datatap.c' || echo '$(srcdir)/'`write/adios_datatap.c
+read/libadiosread_a-read_dataspaces.obj: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
 
-libadiosf_a-adios_datatap.obj: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_datatap.obj `if test -f 'write/adios_datatap.c'; then $(CYGPATH_W) 'write/adios_datatap.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_datatap.c'; fi`
+read/libadiosread_a-read_dimes.o: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
 
-libadiosf_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
+read/libadiosread_a-read_dimes.obj: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
 
-libadiosf_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
+read/libadiosread_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_a-adios_flexpath.o: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
+read/libadiosread_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_a-adios_flexpath.obj: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
+read/libadiosread_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
+read/libadiosread_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
+core/libadiosread_nompi_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadiosf_a-adios_icee.o: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
+core/libadiosread_nompi_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadiosf_a-adios_icee.obj: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
+core/libadiosread_nompi_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
+core/libadiosread_nompi_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
+core/libadiosread_nompi_a-adios_read.o: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
 
-libadiosf_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
+core/libadiosread_nompi_a-adios_read.obj: core/adios_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
 
-libadiosf_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
+core/libadiosread_nompi_a-adios_read_v1.o: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
 
-libadiosf_a-adios_nssi.o: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi.o `test -f 'write/adios_nssi.c' || echo '$(srcdir)/'`write/adios_nssi.c
+core/libadiosread_nompi_a-adios_read_v1.obj: core/adios_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
 
-libadiosf_a-adios_nssi.obj: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi.obj `if test -f 'write/adios_nssi.c'; then $(CYGPATH_W) 'write/adios_nssi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nssi.c'; fi`
+core/libadiosread_nompi_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_a-adios_nssi_filter.o: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi_filter.o `test -f 'nssi/adios_nssi_filter.c' || echo '$(srcdir)/'`nssi/adios_nssi_filter.c
+core/libadiosread_nompi_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_a-adios_nssi_filter.obj: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi_filter.obj `if test -f 'nssi/adios_nssi_filter.c'; then $(CYGPATH_W) 'nssi/adios_nssi_filter.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_filter.c'; fi`
+core/libadiosread_nompi_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
+core/libadiosread_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
+query/libadiosread_nompi_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_a-adios_mpi.o: write/adios_mpi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi.o `test -f 'write/adios_mpi.c' || echo '$(srcdir)/'`write/adios_mpi.c
+query/libadiosread_nompi_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_a-adios_mpi.obj: write/adios_mpi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi.obj `if test -f 'write/adios_mpi.c'; then $(CYGPATH_W) 'write/adios_mpi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi.c'; fi`
+query/libadiosread_nompi_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_a-adios_mpi_lustre.o: write/adios_mpi_lustre.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi_lustre.o `test -f 'write/adios_mpi_lustre.c' || echo '$(srcdir)/'`write/adios_mpi_lustre.c
+query/libadiosread_nompi_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_a-adios_mpi_lustre.obj: write/adios_mpi_lustre.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi_lustre.obj `if test -f 'write/adios_mpi_lustre.c'; then $(CYGPATH_W) 'write/adios_mpi_lustre.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_lustre.c'; fi`
+query/libadiosread_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_a-adios_mpi_amr.o: write/adios_mpi_amr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi_amr.o `test -f 'write/adios_mpi_amr.c' || echo '$(srcdir)/'`write/adios_mpi_amr.c
+query/libadiosread_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_a-adios_mpi_amr.obj: write/adios_mpi_amr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi_amr.obj `if test -f 'write/adios_mpi_amr.c'; then $(CYGPATH_W) 'write/adios_mpi_amr.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_amr.c'; fi`
+query/libadiosread_nompi_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_a-adios_var_merge.o: write/adios_var_merge.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_var_merge.o `test -f 'write/adios_var_merge.c' || echo '$(srcdir)/'`write/adios_var_merge.c
+query/libadiosread_nompi_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_a-adios_var_merge.obj: write/adios_var_merge.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_var_merge.obj `if test -f 'write/adios_var_merge.c'; then $(CYGPATH_W) 'write/adios_var_merge.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_var_merge.c'; fi`
+query/libadiosread_nompi_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_a-adios_mpi_bgq.o: write/adios_mpi_bgq.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi_bgq.o `test -f 'write/adios_mpi_bgq.c' || echo '$(srcdir)/'`write/adios_mpi_bgq.c
+query/libadiosread_nompi_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_a-adios_mpi_bgq.obj: write/adios_mpi_bgq.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_mpi_bgq.obj `if test -f 'write/adios_mpi_bgq.c'; then $(CYGPATH_W) 'write/adios_mpi_bgq.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_bgq.c'; fi`
+query/libadiosread_nompi_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_a-adios_dataspaces.o: write/adios_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_dataspaces.o `test -f 'write/adios_dataspaces.c' || echo '$(srcdir)/'`write/adios_dataspaces.c
+query/libadiosread_nompi_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_a-adios_dataspaces.obj: write/adios_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_dataspaces.obj `if test -f 'write/adios_dataspaces.c'; then $(CYGPATH_W) 'write/adios_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dataspaces.c'; fi`
+query/libadiosread_nompi_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_a-read_dataspaces.o: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
+query/libadiosread_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_a-read_dataspaces.obj: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
+query/libadiosread_nompi_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_a-adios_dimes.o: write/adios_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_dimes.o `test -f 'write/adios_dimes.c' || echo '$(srcdir)/'`write/adios_dimes.c
+query/libadiosread_nompi_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_a-adios_dimes.obj: write/adios_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_dimes.obj `if test -f 'write/adios_dimes.c'; then $(CYGPATH_W) 'write/adios_dimes.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dimes.c'; fi`
+query/libadiosread_nompi_a-adios_query.o: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
 
-libadiosf_a-read_dimes.o: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
+query/libadiosread_nompi_a-adios_query.obj: query/adios_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosread_nompi_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
 
-libadiosf_a-read_dimes.obj: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
+core/libadiosread_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_a-adios_phdf5.o: write/adios_phdf5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_phdf5.o `test -f 'write/adios_phdf5.c' || echo '$(srcdir)/'`write/adios_phdf5.c
+core/libadiosread_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_a-adios_phdf5.obj: write/adios_phdf5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_phdf5.obj `if test -f 'write/adios_phdf5.c'; then $(CYGPATH_W) 'write/adios_phdf5.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_phdf5.c'; fi`
+core/libadiosread_nompi_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_a-adios_nc4.o: write/adios_nc4.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nc4.o `test -f 'write/adios_nc4.c' || echo '$(srcdir)/'`write/adios_nc4.c
+core/libadiosread_nompi_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosread_nompi_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_a-adios_nc4.obj: write/adios_nc4.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nc4.obj `if test -f 'write/adios_nc4.c'; then $(CYGPATH_W) 'write/adios_nc4.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nc4.c'; fi`
+read/libadiosread_nompi_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_a-adiosf_read.o: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
+read/libadiosread_nompi_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_a-adiosf_read.obj: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
+read/libadiosread_nompi_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_a-adios_nssi_args.o: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi_args.o `test -f 'adios_nssi_args.c' || echo '$(srcdir)/'`adios_nssi_args.c
+read/libadiosread_nompi_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_a-adios_nssi_args.obj: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_a_CFLAGS) $(CFLAGS) -c -o libadiosf_a-adios_nssi_args.obj `if test -f 'adios_nssi_args.c'; then $(CYGPATH_W) 'adios_nssi_args.c'; else $(CYGPATH_W) '$(srcdir)/adios_nssi_args.c'; fi`
+read/libadiosread_nompi_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_nompi_a-adiosf.o: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
+read/libadiosread_nompi_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosread_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_nompi_a-adiosf.obj: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
+core/libadiosreadf_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_nompi_a-common_adios.o: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
+core/libadiosreadf_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_nompi_a-common_adios.obj: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
+core/libadiosreadf_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_nompi_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
+core/libadiosreadf_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_nompi_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
+core/libadiosreadf_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_nompi_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
+core/libadiosreadf_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_nompi_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
+query/libadiosreadf_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_nompi_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
+query/libadiosreadf_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
+query/libadiosreadf_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_nompi_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
+query/libadiosreadf_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
+query/libadiosreadf_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_nompi_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
+query/libadiosreadf_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_nompi_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
+query/libadiosreadf_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_nompi_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
+query/libadiosreadf_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_nompi_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
+query/libadiosreadf_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_nompi_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
+query/libadiosreadf_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
+query/libadiosreadf_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_nompi_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
+query/libadiosreadf_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
+query/libadiosreadf_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_nompi_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
+query/libadiosreadf_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
+query/libadiosreadf_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_nompi_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
+query/libadiosreadf_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
+query/libadiosreadf_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadiosf_nompi_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
+query/libadiosreadf_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadiosf_nompi_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
+core/libadiosreadf_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_nompi_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
+core/libadiosreadf_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_nompi_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
+core/libadiosreadf_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_nompi_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
+core/libadiosreadf_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_nompi_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
+read/libadiosreadf_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_nompi_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
+read/libadiosreadf_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_nompi_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
+read/libadiosreadf_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadiosf_nompi_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
+read/libadiosreadf_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadiosf_nompi_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
+read/libadiosreadf_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadiosf_nompi_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
+read/libadiosreadf_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadiosf_nompi_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
+read/libadiosreadf_a-read_dataspaces.o: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
 
-libadiosf_nompi_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
+read/libadiosreadf_a-read_dataspaces.obj: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
 
-libadiosf_nompi_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
+read/libadiosreadf_a-read_dimes.o: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
 
-libadiosf_nompi_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
+read/libadiosreadf_a-read_dimes.obj: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
 
-libadiosf_nompi_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
+read/libadiosreadf_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_nompi_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
+read/libadiosreadf_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_nompi_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_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`
+read/libadiosreadf_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_nompi_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
+read/libadiosreadf_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
+core/libadiosreadf_a-adiosf_read.o: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
 
-libadiosf_nompi_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
+core/libadiosreadf_a-adiosf_read.obj: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
+core/libadiosreadf_nompi_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadiosf_nompi_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
+core/libadiosreadf_nompi_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
+core/libadiosreadf_nompi_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_nompi_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
+core/libadiosreadf_nompi_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_nompi_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
+core/libadiosreadf_nompi_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_nompi_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
+core/libadiosreadf_nompi_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_nompi_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
+core/libadiosreadf_nompi_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_nompi_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
+core/libadiosreadf_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_nompi_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
+query/libadiosreadf_nompi_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_nompi_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
+query/libadiosreadf_nompi_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_nompi_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
+query/libadiosreadf_nompi_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_nompi_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
+query/libadiosreadf_nompi_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_nompi_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
+query/libadiosreadf_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_nompi_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
+query/libadiosreadf_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_nompi_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
+query/libadiosreadf_nompi_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_nompi_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
+query/libadiosreadf_nompi_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_nompi_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
+query/libadiosreadf_nompi_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_nompi_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
+query/libadiosreadf_nompi_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_nompi_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_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`
+query/libadiosreadf_nompi_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_nompi_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
+query/libadiosreadf_nompi_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_nompi_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
+query/libadiosreadf_nompi_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
+query/libadiosreadf_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
+query/libadiosreadf_nompi_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_nompi_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
+query/libadiosreadf_nompi_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_nompi_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
+query/libadiosreadf_nompi_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadiosf_nompi_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
+query/libadiosreadf_nompi_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadiosf_nompi_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
+core/libadiosreadf_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_nompi_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
+core/libadiosreadf_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
+core/libadiosreadf_nompi_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_nompi_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
+core/libadiosreadf_nompi_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_nompi_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
+read/libadiosreadf_nompi_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_nompi_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
+read/libadiosreadf_nompi_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_nompi_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
+read/libadiosreadf_nompi_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_nompi_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
+read/libadiosreadf_nompi_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_nompi_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
+read/libadiosreadf_nompi_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_nompi_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
+read/libadiosreadf_nompi_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_nompi_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
+core/libadiosreadf_nompi_a-adiosf_read.o: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
 
-libadiosf_nompi_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
+core/libadiosreadf_nompi_a-adiosf_read.obj: core/adiosf_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
 
-libadiosf_nompi_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
+core/libadiosreadf_nompi_v1_a-mpidummy.o: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
 
-libadiosf_nompi_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
+core/libadiosreadf_nompi_v1_a-mpidummy.obj: core/mpidummy.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
 
-libadiosf_nompi_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
+core/libadiosreadf_nompi_v1_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_nompi_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
+core/libadiosreadf_nompi_v1_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_nompi_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
+core/libadiosreadf_nompi_v1_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_nompi_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
+core/libadiosreadf_nompi_v1_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_nompi_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
+core/libadiosreadf_nompi_v1_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_nompi_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
+core/libadiosreadf_nompi_v1_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_nompi_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
+query/libadiosreadf_nompi_v1_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_nompi_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
+query/libadiosreadf_nompi_v1_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_nompi_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
+query/libadiosreadf_nompi_v1_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_nompi_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
+query/libadiosreadf_nompi_v1_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
+query/libadiosreadf_nompi_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_nompi_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
+query/libadiosreadf_nompi_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_nompi_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
+query/libadiosreadf_nompi_v1_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_nompi_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
+query/libadiosreadf_nompi_v1_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_nompi_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
+query/libadiosreadf_nompi_v1_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
+query/libadiosreadf_nompi_v1_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
+query/libadiosreadf_nompi_v1_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_nompi_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
+query/libadiosreadf_nompi_v1_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_nompi_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
+query/libadiosreadf_nompi_v1_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_nompi_a-adios_socket.o: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
+query/libadiosreadf_nompi_v1_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_nompi_a-adios_socket.obj: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
+query/libadiosreadf_nompi_v1_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_nompi_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
+query/libadiosreadf_nompi_v1_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_nompi_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
+query/libadiosreadf_nompi_v1_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadiosf_nompi_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
+query/libadiosreadf_nompi_v1_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_nompi_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadiosf_nompi_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
+core/libadiosreadf_nompi_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_nompi_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
+core/libadiosreadf_nompi_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_nompi_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
+core/libadiosreadf_nompi_v1_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_nompi_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
+core/libadiosreadf_nompi_v1_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_nompi_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
+read/libadiosreadf_nompi_v1_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_nompi_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
+read/libadiosreadf_nompi_v1_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_nompi_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
+read/libadiosreadf_nompi_v1_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_nompi_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
+read/libadiosreadf_nompi_v1_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_nompi_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
+read/libadiosreadf_nompi_v1_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_nompi_a-adios_posix.o: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
+read/libadiosreadf_nompi_v1_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_nompi_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_nompi_a-adios_posix.obj: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
+core/libadiosreadf_nompi_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
 
-libadiosf_nompi_a-adios_posix1.o: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_posix1.o `test -f 'write/adios_posix1.c' || echo '$(srcdir)/'`write/adios_posix1.c
+core/libadiosreadf_nompi_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_nompi_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
 
-libadiosf_nompi_a-adios_posix1.obj: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_posix1.obj `if test -f 'write/adios_posix1.c'; then $(CYGPATH_W) 'write/adios_posix1.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix1.c'; fi`
+core/libadiosreadf_v1_a-bp_utils.o: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
 
-libadiosf_nompi_a-adios_datatap.o: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_datatap.o `test -f 'write/adios_datatap.c' || echo '$(srcdir)/'`write/adios_datatap.c
+core/libadiosreadf_v1_a-bp_utils.obj: core/bp_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
 
-libadiosf_nompi_a-adios_datatap.obj: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_datatap.obj `if test -f 'write/adios_datatap.c'; then $(CYGPATH_W) 'write/adios_datatap.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_datatap.c'; fi`
+core/libadiosreadf_v1_a-common_read.o: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
 
-libadiosf_nompi_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
+core/libadiosreadf_v1_a-common_read.obj: core/common_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
 
-libadiosf_nompi_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
+core/libadiosreadf_v1_a-adios_read_ext.o: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
 
-libadiosf_nompi_a-adios_flexpath.o: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
+core/libadiosreadf_v1_a-adios_read_ext.obj: core/adios_read_ext.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
 
-libadiosf_nompi_a-adios_flexpath.obj: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
+query/libadiosreadf_v1_a-common_query.o: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
 
-libadiosf_nompi_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
+query/libadiosreadf_v1_a-common_query.obj: query/common_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
 
-libadiosf_nompi_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
+query/libadiosreadf_v1_a-common_query_read.o: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-common_query_read.o `test -f 'query/common_query_read.c' || echo '$(srcdir)/'`query/common_query_read.c
 
-libadiosf_nompi_a-adios_icee.o: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
+query/libadiosreadf_v1_a-common_query_read.obj: query/common_query_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-common_query_read.obj `if test -f 'query/common_query_read.c'; then $(CYGPATH_W) 'query/common_query_read.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query_read.c'; fi`
 
-libadiosf_nompi_a-adios_icee.obj: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
+query/libadiosreadf_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
 
-libadiosf_nompi_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
+query/libadiosreadf_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
 
-libadiosf_nompi_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
+query/libadiosreadf_v1_a-query_utils.o: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
 
-libadiosf_nompi_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
+query/libadiosreadf_v1_a-query_utils.obj: query/query_utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
 
-libadiosf_nompi_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
+query/libadiosreadf_v1_a-query_minmax.o: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_minmax.o `test -f 'query/query_minmax.c' || echo '$(srcdir)/'`query/query_minmax.c
 
-libadiosf_nompi_a-adios_nssi.o: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_nssi.o `test -f 'write/adios_nssi.c' || echo '$(srcdir)/'`write/adios_nssi.c
+query/libadiosreadf_v1_a-query_minmax.obj: query/query_minmax.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_minmax.obj `if test -f 'query/query_minmax.c'; then $(CYGPATH_W) 'query/query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query/query_minmax.c'; fi`
 
-libadiosf_nompi_a-adios_nssi.obj: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_nssi.obj `if test -f 'write/adios_nssi.c'; then $(CYGPATH_W) 'write/adios_nssi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nssi.c'; fi`
+query/libadiosreadf_v1_a-query_fastbit.o: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
 
-libadiosf_nompi_a-adios_nssi_filter.o: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_nssi_filter.o `test -f 'nssi/adios_nssi_filter.c' || echo '$(srcdir)/'`nssi/adios_nssi_filter.c
+query/libadiosreadf_v1_a-query_fastbit.obj: query/query_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
 
-libadiosf_nompi_a-adios_nssi_filter.obj: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adios_nssi_filter.obj `if test -f 'nssi/adios_nssi_filter.c'; then $(CYGPATH_W) 'nssi/adios_nssi_filter.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_filter.c'; fi`
+query/libadiosreadf_v1_a-fastbit_adios.o: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
 
-libadiosf_nompi_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
+query/libadiosreadf_v1_a-fastbit_adios.obj: query/fastbit_adios.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
 
-libadiosf_nompi_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
+query/libadiosreadf_v1_a-query_alac.o: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
 
-libadiosf_nompi_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
+query/libadiosreadf_v1_a-query_alac.obj: query/query_alac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
 
-libadiosf_nompi_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
+query/libadiosreadf_v1_a-adiosf_query.o: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
 
-libadiosf_nompi_a-adiosf_read.o: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
+query/libadiosreadf_v1_a-adiosf_query.obj: query/adiosf_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o query/libadiosreadf_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
 
-libadiosf_nompi_a-adiosf_read.obj: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
+core/libadiosreadf_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
 
-libadiosf_nompi_v1_a-adiosf.o: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
+core/libadiosreadf_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
 
-libadiosf_nompi_v1_a-adiosf.obj: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
+core/libadiosreadf_v1_a-util_mpi.o: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-util_mpi.o `test -f 'core/util_mpi.c' || echo '$(srcdir)/'`core/util_mpi.c
 
-libadiosf_nompi_v1_a-common_adios.o: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
+core/libadiosreadf_v1_a-util_mpi.obj: core/util_mpi.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-util_mpi.obj `if test -f 'core/util_mpi.c'; then $(CYGPATH_W) 'core/util_mpi.c'; else $(CYGPATH_W) '$(srcdir)/core/util_mpi.c'; fi`
 
-libadiosf_nompi_v1_a-common_adios.obj: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
+read/libadiosreadf_v1_a-read_bp.o: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
 
-libadiosf_nompi_v1_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
+read/libadiosreadf_v1_a-read_bp.obj: read/read_bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
 
-libadiosf_nompi_v1_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
+read/libadiosreadf_v1_a-read_bp_staged.o: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
 
-libadiosf_nompi_v1_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
+read/libadiosreadf_v1_a-read_bp_staged.obj: read/read_bp_staged.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
 
-libadiosf_nompi_v1_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
+read/libadiosreadf_v1_a-read_bp_staged1.o: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
 
-libadiosf_nompi_v1_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
+read/libadiosreadf_v1_a-read_bp_staged1.obj: read/read_bp_staged1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
+read/libadiosreadf_v1_a-read_dataspaces.o: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
 
-libadiosf_nompi_v1_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
+read/libadiosreadf_v1_a-read_dataspaces.obj: read/read_dataspaces.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
+read/libadiosreadf_v1_a-read_dimes.o: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
 
-libadiosf_nompi_v1_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
+read/libadiosreadf_v1_a-read_dimes.obj: read/read_dimes.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
 
-libadiosf_nompi_v1_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
+read/libadiosreadf_v1_a-read_flexpath.o: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
 
-libadiosf_nompi_v1_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
+read/libadiosreadf_v1_a-read_flexpath.obj: read/read_flexpath.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
 
-libadiosf_nompi_v1_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
+read/libadiosreadf_v1_a-read_icee.o: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
 
-libadiosf_nompi_v1_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
+read/libadiosreadf_v1_a-read_icee.obj: read/read_icee.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o read/libadiosreadf_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
+core/libadiosreadf_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
 
-libadiosf_nompi_v1_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
+core/libadiosreadf_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o core/libadiosreadf_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
+core/libcoreonce_a-a2sel.o: core/a2sel.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-a2sel.o `test -f 'core/a2sel.c' || echo '$(srcdir)/'`core/a2sel.c
 
-libadiosf_nompi_v1_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
+core/libcoreonce_a-a2sel.obj: core/a2sel.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-a2sel.obj `if test -f 'core/a2sel.c'; then $(CYGPATH_W) 'core/a2sel.c'; else $(CYGPATH_W) '$(srcdir)/core/a2sel.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
+core/libcoreonce_a-adios_bp_v1.o: core/adios_bp_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
 
-libadiosf_nompi_v1_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
+core/libcoreonce_a-adios_bp_v1.obj: core/adios_bp_v1.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
+core/libcoreonce_a-adios_clock.o: core/adios_clock.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_clock.o `test -f 'core/adios_clock.c' || echo '$(srcdir)/'`core/adios_clock.c
 
-libadiosf_nompi_v1_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
+core/libcoreonce_a-adios_clock.obj: core/adios_clock.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_clock.obj `if test -f 'core/adios_clock.c'; then $(CYGPATH_W) 'core/adios_clock.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_clock.c'; fi`
 
-libadiosf_nompi_v1_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
+core/libcoreonce_a-adios_endianness.o: core/adios_endianness.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
 
-libadiosf_nompi_v1_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
+core/libcoreonce_a-adios_endianness.obj: core/adios_endianness.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
 
-libadiosf_nompi_v1_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
+core/libcoreonce_a-adios_error.o: core/adios_error.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
 
-libadiosf_nompi_v1_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
+core/libcoreonce_a-adios_error.obj: core/adios_error.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
+core/libcoreonce_a-adios_infocache.o: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
 
-libadiosf_nompi_v1_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
+core/libcoreonce_a-adios_infocache.obj: core/adios_infocache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
+core/libcoreonce_a-adios_logger.o: core/adios_logger.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
 
-libadiosf_nompi_v1_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
+core/libcoreonce_a-adios_logger.obj: core/adios_logger.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
+core/libcoreonce_a-adios_socket.o: core/adios_socket.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
 
-libadiosf_nompi_v1_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
+core/libcoreonce_a-adios_socket.obj: core/adios_socket.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
+core/libcoreonce_a-buffer.o: core/buffer.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
 
-libadiosf_nompi_v1_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
+core/libcoreonce_a-buffer.obj: core/buffer.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
+core/libcoreonce_a-futils.o: core/futils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
 
-libadiosf_nompi_v1_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
+core/libcoreonce_a-futils.obj: core/futils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
+core/libcoreonce_a-globals.o: core/globals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
 
-libadiosf_nompi_v1_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
+core/libcoreonce_a-globals.obj: core/globals.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_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`
+core/libcoreonce_a-qhashtbl.o: core/qhashtbl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
 
-libadiosf_nompi_v1_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
+core/libcoreonce_a-qhashtbl.obj: core/qhashtbl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
+core/libcoreonce_a-strutil.o: core/strutil.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-strutil.o `test -f 'core/strutil.c' || echo '$(srcdir)/'`core/strutil.c
 
-libadiosf_nompi_v1_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
+core/libcoreonce_a-strutil.obj: core/strutil.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-strutil.obj `if test -f 'core/strutil.c'; then $(CYGPATH_W) 'core/strutil.c'; else $(CYGPATH_W) '$(srcdir)/core/strutil.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
+core/libcoreonce_a-util.o: 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.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
 
-libadiosf_nompi_v1_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_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`
 
-libadiosf_nompi_v1_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.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
 
-libadiosf_nompi_v1_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
+core/transforms/libcoreonce_a-adios_transforms_common.obj: 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.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.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_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
 
-libadiosf_nompi_v1_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
+core/transforms/libcoreonce_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.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_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
+core/libcoreonce_a-adios_copyspec.o: core/adios_copyspec.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
 
-libadiosf_nompi_v1_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
+core/libcoreonce_a-adios_copyspec.obj: core/adios_copyspec.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
+core/libcoreonce_a-adios_subvolume.o: core/adios_subvolume.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
 
-libadiosf_nompi_v1_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
+core/libcoreonce_a-adios_subvolume.obj: core/adios_subvolume.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_write.o: core/transforms/adios_transforms_write.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_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
 
-libadiosf_nompi_v1_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
+core/transforms/libcoreonce_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.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_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.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_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
 
-libadiosf_nompi_v1_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
+core/transforms/libcoreonce_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.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_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_util.o: core/transforms/adios_transforms_util.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_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
 
-libadiosf_nompi_v1_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
+core/transforms/libcoreonce_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.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_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.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_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
 
-libadiosf_nompi_v1_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
+core/transforms/libcoreonce_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.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_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
 
-libadiosf_nompi_v1_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_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_identity_write.o: transforms/adios_transform_identity_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_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
 
-libadiosf_nompi_v1_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
+transforms/libcoreonce_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_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_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
 
-libadiosf_nompi_v1_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
+transforms/libcoreonce_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_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_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
 
-libadiosf_nompi_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
+transforms/libcoreonce_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_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_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
 
-libadiosf_nompi_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
+transforms/libcoreonce_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_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_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
 
-libadiosf_nompi_v1_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
+transforms/libcoreonce_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_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_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
 
-libadiosf_nompi_v1_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
+transforms/libcoreonce_a-adios_transform_szip_write.o: transforms/adios_transform_szip_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_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
 
-libadiosf_nompi_v1_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
+transforms/libcoreonce_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_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_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
 
-libadiosf_nompi_v1_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
+transforms/libcoreonce_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_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_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
 
-libadiosf_nompi_v1_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
+transforms/libcoreonce_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_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_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
 
-libadiosf_nompi_v1_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
+transforms/libcoreonce_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_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_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
 
-libadiosf_nompi_v1_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
+transforms/libcoreonce_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_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_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
 
-libadiosf_nompi_v1_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
+transforms/libcoreonce_a-adios_transform_alacrity_write.o: 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.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
 
-libadiosf_nompi_v1_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
+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`
 
-libadiosf_nompi_v1_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.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
 
-libadiosf_nompi_v1_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
+core/transforms/libcoreonce_a-adios_transforms_read.obj: 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.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
 
-libadiosf_nompi_v1_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_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_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
 
-libadiosf_nompi_v1_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
+core/transforms/libcoreonce_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_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_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
 
-libadiosf_nompi_v1_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.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_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
 
-libadiosf_nompi_v1_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
+core/transforms/libcoreonce_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.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_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
 
-libadiosf_nompi_v1_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
+core/transforms/libcoreonce_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.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_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
 
-libadiosf_nompi_v1_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
+core/transforms/libcoreonce_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.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_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
 
-libadiosf_nompi_v1_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
+core/transforms/libcoreonce_a-adios_patchdata.o: core/transforms/adios_patchdata.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/transforms/libcoreonce_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
 
-libadiosf_nompi_v1_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
+core/transforms/libcoreonce_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/transforms/libcoreonce_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
 
-libadiosf_nompi_v1_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
+core/libcoreonce_a-adios_selection_util.o: core/adios_selection_util.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
 
-libadiosf_nompi_v1_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
+core/libcoreonce_a-adios_selection_util.obj: core/adios_selection_util.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
 
-libadiosf_nompi_v1_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
+transforms/libcoreonce_a-adios_transform_identity_read.o: transforms/adios_transform_identity_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_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
 
-libadiosf_nompi_v1_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
+transforms/libcoreonce_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_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_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
 
-libadiosf_nompi_v1_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
+transforms/libcoreonce_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_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_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
 
-libadiosf_nompi_v1_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
+transforms/libcoreonce_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_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_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
 
-libadiosf_nompi_v1_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
+transforms/libcoreonce_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_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_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
 
-libadiosf_nompi_v1_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
+transforms/libcoreonce_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_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_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
 
-libadiosf_nompi_v1_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
+transforms/libcoreonce_a-adios_transform_szip_read.o: transforms/adios_transform_szip_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_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
 
-libadiosf_nompi_v1_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
+transforms/libcoreonce_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_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_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
 
-libadiosf_nompi_v1_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
+transforms/libcoreonce_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_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_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
 
-libadiosf_nompi_v1_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
+transforms/libcoreonce_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_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_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
 
-libadiosf_nompi_v1_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
+transforms/libcoreonce_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_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_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
 
-libadiosf_nompi_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
+transforms/libcoreonce_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_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_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
 
-libadiosf_nompi_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
+transforms/libcoreonce_a-adios_transform_alacrity_read.o: 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.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
 
-libadiosf_nompi_v1_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
+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`
 
-libadiosf_nompi_v1_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
-
-libadiosf_nompi_v1_a-adios_socket.o: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
-
-libadiosf_nompi_v1_a-adios_socket.obj: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
-
-libadiosf_nompi_v1_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosf_nompi_v1_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosf_nompi_v1_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosf_nompi_v1_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosf_nompi_v1_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosf_nompi_v1_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosf_nompi_v1_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosf_nompi_v1_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosf_nompi_v1_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
+.f90.o:
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
 
-libadiosf_nompi_v1_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
+.f90.obj:
+	$(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-libadiosf_nompi_v1_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
+.f90.lo:
+	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $<
 
-libadiosf_nompi_v1_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
-
-libadiosf_nompi_v1_a-adios_posix.o: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
-
-libadiosf_nompi_v1_a-adios_posix.obj: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
-
-libadiosf_nompi_v1_a-adios_posix1.o: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_posix1.o `test -f 'write/adios_posix1.c' || echo '$(srcdir)/'`write/adios_posix1.c
-
-libadiosf_nompi_v1_a-adios_posix1.obj: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_posix1.obj `if test -f 'write/adios_posix1.c'; then $(CYGPATH_W) 'write/adios_posix1.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix1.c'; fi`
-
-libadiosf_nompi_v1_a-adios_datatap.o: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_datatap.o `test -f 'write/adios_datatap.c' || echo '$(srcdir)/'`write/adios_datatap.c
-
-libadiosf_nompi_v1_a-adios_datatap.obj: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_datatap.obj `if test -f 'write/adios_datatap.c'; then $(CYGPATH_W) 'write/adios_datatap.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_datatap.c'; fi`
-
-libadiosf_nompi_v1_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosf_nompi_v1_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosf_nompi_v1_a-adios_flexpath.o: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
-
-libadiosf_nompi_v1_a-adios_flexpath.obj: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
-
-libadiosf_nompi_v1_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosf_nompi_v1_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosf_nompi_v1_a-adios_icee.o: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
-
-libadiosf_nompi_v1_a-adios_icee.obj: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
-
-libadiosf_nompi_v1_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosf_nompi_v1_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosf_nompi_v1_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosf_nompi_v1_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosf_nompi_v1_a-adios_nssi.o: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_nssi.o `test -f 'write/adios_nssi.c' || echo '$(srcdir)/'`write/adios_nssi.c
-
-libadiosf_nompi_v1_a-adios_nssi.obj: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_nssi.obj `if test -f 'write/adios_nssi.c'; then $(CYGPATH_W) 'write/adios_nssi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nssi.c'; fi`
-
-libadiosf_nompi_v1_a-adios_nssi_filter.o: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_nssi_filter.o `test -f 'nssi/adios_nssi_filter.c' || echo '$(srcdir)/'`nssi/adios_nssi_filter.c
-
-libadiosf_nompi_v1_a-adios_nssi_filter.obj: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adios_nssi_filter.obj `if test -f 'nssi/adios_nssi_filter.c'; then $(CYGPATH_W) 'nssi/adios_nssi_filter.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_filter.c'; fi`
-
-libadiosf_nompi_v1_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosf_nompi_v1_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosf_nompi_v1_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
-
-libadiosf_nompi_v1_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
-
-libadiosf_nompi_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
-
-libadiosf_nompi_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_nompi_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
-
-libadiosf_v1_a-adiosf.o: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adiosf.o `test -f 'core/adiosf.c' || echo '$(srcdir)/'`core/adiosf.c
-
-libadiosf_v1_a-adiosf.obj: core/adiosf.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adiosf.obj `if test -f 'core/adiosf.c'; then $(CYGPATH_W) 'core/adiosf.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf.c'; fi`
-
-libadiosf_v1_a-common_adios.o: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-common_adios.o `test -f 'core/common_adios.c' || echo '$(srcdir)/'`core/common_adios.c
-
-libadiosf_v1_a-common_adios.obj: core/common_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-common_adios.obj `if test -f 'core/common_adios.c'; then $(CYGPATH_W) 'core/common_adios.c'; else $(CYGPATH_W) '$(srcdir)/core/common_adios.c'; fi`
-
-libadiosf_v1_a-adios_internals.o: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_internals.o `test -f 'core/adios_internals.c' || echo '$(srcdir)/'`core/adios_internals.c
-
-libadiosf_v1_a-adios_internals.obj: core/adios_internals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_internals.obj `if test -f 'core/adios_internals.c'; then $(CYGPATH_W) 'core/adios_internals.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals.c'; fi`
-
-libadiosf_v1_a-adios_internals_mxml.o: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_internals_mxml.o `test -f 'core/adios_internals_mxml.c' || echo '$(srcdir)/'`core/adios_internals_mxml.c
-
-libadiosf_v1_a-adios_internals_mxml.obj: core/adios_internals_mxml.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_internals_mxml.obj `if test -f 'core/adios_internals_mxml.c'; then $(CYGPATH_W) 'core/adios_internals_mxml.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_internals_mxml.c'; fi`
-
-libadiosf_v1_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosf_v1_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosf_v1_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosf_v1_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosf_v1_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosf_v1_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosf_v1_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosf_v1_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosf_v1_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosf_v1_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosf_v1_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosf_v1_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosf_v1_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosf_v1_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosf_v1_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosf_v1_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosf_v1_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosf_v1_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosf_v1_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosf_v1_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosf_v1_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosf_v1_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosf_v1_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosf_v1_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosf_v1_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosf_v1_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosf_v1_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosf_v1_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosf_v1_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosf_v1_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosf_v1_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosf_v1_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosf_v1_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosf_v1_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_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`
-
-libadiosf_v1_a-adios_transforms_write.o: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_write.o `test -f 'core/transforms/adios_transforms_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_write.c
-
-libadiosf_v1_a-adios_transforms_write.obj: core/transforms/adios_transforms_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_write.obj `if test -f 'core/transforms/adios_transforms_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_write.c'; fi`
-
-libadiosf_v1_a-adios_transforms_hooks_write.o: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_hooks_write.o `test -f 'core/transforms/adios_transforms_hooks_write.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_write.c
-
-libadiosf_v1_a-adios_transforms_hooks_write.obj: core/transforms/adios_transforms_hooks_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_hooks_write.obj `if test -f 'core/transforms/adios_transforms_hooks_write.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_write.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_write.c'; fi`
-
-libadiosf_v1_a-adios_transforms_util.o: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_util.o `test -f 'core/transforms/adios_transforms_util.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_util.c
-
-libadiosf_v1_a-adios_transforms_util.obj: core/transforms/adios_transforms_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_util.obj `if test -f 'core/transforms/adios_transforms_util.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_util.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_util.c'; fi`
-
-libadiosf_v1_a-adios_transforms_specparse.o: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_specparse.o `test -f 'core/transforms/adios_transforms_specparse.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_specparse.c
-
-libadiosf_v1_a-adios_transforms_specparse.obj: core/transforms/adios_transforms_specparse.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transforms_specparse.obj `if test -f 'core/transforms/adios_transforms_specparse.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_specparse.c'; fi`
-
-libadiosf_v1_a-adios_transform_identity_write.o: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_identity_write.o `test -f 'transforms/adios_transform_identity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_write.c
-
-libadiosf_v1_a-adios_transform_identity_write.obj: transforms/adios_transform_identity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_identity_write.obj `if test -f 'transforms/adios_transform_identity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_write.c'; fi`
-
-libadiosf_v1_a-adios_transform_zlib_write.o: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_zlib_write.o `test -f 'transforms/adios_transform_zlib_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_write.c
-
-libadiosf_v1_a-adios_transform_zlib_write.obj: transforms/adios_transform_zlib_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_zlib_write.obj `if test -f 'transforms/adios_transform_zlib_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_write.c'; fi`
-
-libadiosf_v1_a-adios_transform_bzip2_write.o: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_bzip2_write.o `test -f 'transforms/adios_transform_bzip2_write.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_write.c
-
-libadiosf_v1_a-adios_transform_bzip2_write.obj: transforms/adios_transform_bzip2_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_bzip2_write.obj `if test -f 'transforms/adios_transform_bzip2_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_write.c'; fi`
-
-libadiosf_v1_a-adios_transform_szip_write.o: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_szip_write.o `test -f 'transforms/adios_transform_szip_write.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_write.c
-
-libadiosf_v1_a-adios_transform_szip_write.obj: transforms/adios_transform_szip_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_szip_write.obj `if test -f 'transforms/adios_transform_szip_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_write.c'; fi`
-
-libadiosf_v1_a-adios_transform_isobar_write.o: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_isobar_write.o `test -f 'transforms/adios_transform_isobar_write.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_write.c
-
-libadiosf_v1_a-adios_transform_isobar_write.obj: transforms/adios_transform_isobar_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_isobar_write.obj `if test -f 'transforms/adios_transform_isobar_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_write.c'; fi`
-
-libadiosf_v1_a-adios_transform_aplod_write.o: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_aplod_write.o `test -f 'transforms/adios_transform_aplod_write.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_write.c
-
-libadiosf_v1_a-adios_transform_aplod_write.obj: transforms/adios_transform_aplod_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_aplod_write.obj `if test -f 'transforms/adios_transform_aplod_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_write.c'; fi`
-
-libadiosf_v1_a-adios_transform_alacrity_write.o: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transform_alacrity_write.o `test -f 'transforms/adios_transform_alacrity_write.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_write.c
-
-libadiosf_v1_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_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`
-
-libadiosf_v1_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosf_v1_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosf_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosf_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosf_v1_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosf_v1_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosf_v1_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosf_v1_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosf_v1_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosf_v1_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosf_v1_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosf_v1_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosf_v1_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
-
-libadiosf_v1_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
-
-libadiosf_v1_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
-
-libadiosf_v1_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
-
-libadiosf_v1_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosf_v1_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosf_v1_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosf_v1_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosf_v1_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosf_v1_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosf_v1_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosf_v1_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosf_v1_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosf_v1_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosf_v1_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosf_v1_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosf_v1_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosf_v1_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosf_v1_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosf_v1_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosf_v1_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosf_v1_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosf_v1_a-adios_timing.o: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_timing.o `test -f 'core/adios_timing.c' || echo '$(srcdir)/'`core/adios_timing.c
-
-libadiosf_v1_a-adios_timing.obj: core/adios_timing.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_timing.obj `if test -f 'core/adios_timing.c'; then $(CYGPATH_W) 'core/adios_timing.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_timing.c'; fi`
-
-libadiosf_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosf_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosf_v1_a-adios_transport_hooks.o: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transport_hooks.o `test -f 'core/adios_transport_hooks.c' || echo '$(srcdir)/'`core/adios_transport_hooks.c
-
-libadiosf_v1_a-adios_transport_hooks.obj: core/adios_transport_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_transport_hooks.obj `if test -f 'core/adios_transport_hooks.c'; then $(CYGPATH_W) 'core/adios_transport_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transport_hooks.c'; fi`
-
-libadiosf_v1_a-adios_socket.o: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_socket.o `test -f 'core/adios_socket.c' || echo '$(srcdir)/'`core/adios_socket.c
-
-libadiosf_v1_a-adios_socket.obj: core/adios_socket.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_socket.obj `if test -f 'core/adios_socket.c'; then $(CYGPATH_W) 'core/adios_socket.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_socket.c'; fi`
-
-libadiosf_v1_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosf_v1_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosf_v1_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosf_v1_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosf_v1_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosf_v1_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosf_v1_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosf_v1_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosf_v1_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
-
-libadiosf_v1_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
-
-libadiosf_v1_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
-
-libadiosf_v1_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
-
-libadiosf_v1_a-adios_posix.o: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_posix.o `test -f 'write/adios_posix.c' || echo '$(srcdir)/'`write/adios_posix.c
-
-libadiosf_v1_a-adios_posix.obj: write/adios_posix.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_posix.obj `if test -f 'write/adios_posix.c'; then $(CYGPATH_W) 'write/adios_posix.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix.c'; fi`
-
-libadiosf_v1_a-adios_posix1.o: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_posix1.o `test -f 'write/adios_posix1.c' || echo '$(srcdir)/'`write/adios_posix1.c
-
-libadiosf_v1_a-adios_posix1.obj: write/adios_posix1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_posix1.obj `if test -f 'write/adios_posix1.c'; then $(CYGPATH_W) 'write/adios_posix1.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_posix1.c'; fi`
-
-libadiosf_v1_a-adios_datatap.o: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_datatap.o `test -f 'write/adios_datatap.c' || echo '$(srcdir)/'`write/adios_datatap.c
-
-libadiosf_v1_a-adios_datatap.obj: write/adios_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_datatap.obj `if test -f 'write/adios_datatap.c'; then $(CYGPATH_W) 'write/adios_datatap.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_datatap.c'; fi`
-
-libadiosf_v1_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosf_v1_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosf_v1_a-adios_flexpath.o: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_flexpath.o `test -f 'write/adios_flexpath.c' || echo '$(srcdir)/'`write/adios_flexpath.c
-
-libadiosf_v1_a-adios_flexpath.obj: write/adios_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_flexpath.obj `if test -f 'write/adios_flexpath.c'; then $(CYGPATH_W) 'write/adios_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_flexpath.c'; fi`
-
-libadiosf_v1_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosf_v1_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosf_v1_a-adios_icee.o: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_icee.o `test -f 'write/adios_icee.c' || echo '$(srcdir)/'`write/adios_icee.c
-
-libadiosf_v1_a-adios_icee.obj: write/adios_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_icee.obj `if test -f 'write/adios_icee.c'; then $(CYGPATH_W) 'write/adios_icee.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_icee.c'; fi`
-
-libadiosf_v1_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosf_v1_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosf_v1_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosf_v1_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosf_v1_a-adios_nssi.o: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nssi.o `test -f 'write/adios_nssi.c' || echo '$(srcdir)/'`write/adios_nssi.c
-
-libadiosf_v1_a-adios_nssi.obj: write/adios_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nssi.obj `if test -f 'write/adios_nssi.c'; then $(CYGPATH_W) 'write/adios_nssi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nssi.c'; fi`
-
-libadiosf_v1_a-adios_nssi_filter.o: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nssi_filter.o `test -f 'nssi/adios_nssi_filter.c' || echo '$(srcdir)/'`nssi/adios_nssi_filter.c
-
-libadiosf_v1_a-adios_nssi_filter.obj: nssi/adios_nssi_filter.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nssi_filter.obj `if test -f 'nssi/adios_nssi_filter.c'; then $(CYGPATH_W) 'nssi/adios_nssi_filter.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_filter.c'; fi`
-
-libadiosf_v1_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosf_v1_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosf_v1_a-adios_mpi.o: write/adios_mpi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi.o `test -f 'write/adios_mpi.c' || echo '$(srcdir)/'`write/adios_mpi.c
-
-libadiosf_v1_a-adios_mpi.obj: write/adios_mpi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi.obj `if test -f 'write/adios_mpi.c'; then $(CYGPATH_W) 'write/adios_mpi.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi.c'; fi`
-
-libadiosf_v1_a-adios_mpi_lustre.o: write/adios_mpi_lustre.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi_lustre.o `test -f 'write/adios_mpi_lustre.c' || echo '$(srcdir)/'`write/adios_mpi_lustre.c
-
-libadiosf_v1_a-adios_mpi_lustre.obj: write/adios_mpi_lustre.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi_lustre.obj `if test -f 'write/adios_mpi_lustre.c'; then $(CYGPATH_W) 'write/adios_mpi_lustre.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_lustre.c'; fi`
-
-libadiosf_v1_a-adios_mpi_amr.o: write/adios_mpi_amr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi_amr.o `test -f 'write/adios_mpi_amr.c' || echo '$(srcdir)/'`write/adios_mpi_amr.c
-
-libadiosf_v1_a-adios_mpi_amr.obj: write/adios_mpi_amr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi_amr.obj `if test -f 'write/adios_mpi_amr.c'; then $(CYGPATH_W) 'write/adios_mpi_amr.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_amr.c'; fi`
-
-libadiosf_v1_a-adios_var_merge.o: write/adios_var_merge.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_var_merge.o `test -f 'write/adios_var_merge.c' || echo '$(srcdir)/'`write/adios_var_merge.c
-
-libadiosf_v1_a-adios_var_merge.obj: write/adios_var_merge.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_var_merge.obj `if test -f 'write/adios_var_merge.c'; then $(CYGPATH_W) 'write/adios_var_merge.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_var_merge.c'; fi`
-
-libadiosf_v1_a-adios_mpi_bgq.o: write/adios_mpi_bgq.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi_bgq.o `test -f 'write/adios_mpi_bgq.c' || echo '$(srcdir)/'`write/adios_mpi_bgq.c
-
-libadiosf_v1_a-adios_mpi_bgq.obj: write/adios_mpi_bgq.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_mpi_bgq.obj `if test -f 'write/adios_mpi_bgq.c'; then $(CYGPATH_W) 'write/adios_mpi_bgq.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_mpi_bgq.c'; fi`
-
-libadiosf_v1_a-adios_dataspaces.o: write/adios_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_dataspaces.o `test -f 'write/adios_dataspaces.c' || echo '$(srcdir)/'`write/adios_dataspaces.c
-
-libadiosf_v1_a-adios_dataspaces.obj: write/adios_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_dataspaces.obj `if test -f 'write/adios_dataspaces.c'; then $(CYGPATH_W) 'write/adios_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dataspaces.c'; fi`
-
-libadiosf_v1_a-read_dataspaces.o: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
-
-libadiosf_v1_a-read_dataspaces.obj: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
-
-libadiosf_v1_a-adios_dimes.o: write/adios_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_dimes.o `test -f 'write/adios_dimes.c' || echo '$(srcdir)/'`write/adios_dimes.c
-
-libadiosf_v1_a-adios_dimes.obj: write/adios_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_dimes.obj `if test -f 'write/adios_dimes.c'; then $(CYGPATH_W) 'write/adios_dimes.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_dimes.c'; fi`
-
-libadiosf_v1_a-read_dimes.o: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
-
-libadiosf_v1_a-read_dimes.obj: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
-
-libadiosf_v1_a-adios_phdf5.o: write/adios_phdf5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_phdf5.o `test -f 'write/adios_phdf5.c' || echo '$(srcdir)/'`write/adios_phdf5.c
-
-libadiosf_v1_a-adios_phdf5.obj: write/adios_phdf5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_phdf5.obj `if test -f 'write/adios_phdf5.c'; then $(CYGPATH_W) 'write/adios_phdf5.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_phdf5.c'; fi`
-
-libadiosf_v1_a-adios_nc4.o: write/adios_nc4.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nc4.o `test -f 'write/adios_nc4.c' || echo '$(srcdir)/'`write/adios_nc4.c
-
-libadiosf_v1_a-adios_nc4.obj: write/adios_nc4.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adios_nc4.obj `if test -f 'write/adios_nc4.c'; then $(CYGPATH_W) 'write/adios_nc4.c'; else $(CYGPATH_W) '$(srcdir)/write/adios_nc4.c'; fi`
-
-libadiosf_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
-
-libadiosf_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosf_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
-
-libadiosread_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosread_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosread_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosread_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosread_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosread_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosread_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosread_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosread_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosread_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosread_a-adios_read.o: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
-
-libadiosread_a-adios_read.obj: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
-
-libadiosread_a-adios_read_v1.o: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
-
-libadiosread_a-adios_read_v1.obj: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
-
-libadiosread_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosread_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosread_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosread_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosread_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosread_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosread_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosread_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosread_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosread_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosread_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosread_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosread_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosread_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosread_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosread_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosread_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosread_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosread_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosread_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosread_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosread_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosread_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosread_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosread_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosread_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosread_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosread_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosread_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosread_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosread_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosread_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosread_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosread_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosread_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosread_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosread_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosread_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosread_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosread_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_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`
-
-libadiosread_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosread_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosread_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosread_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosread_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosread_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosread_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosread_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosread_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosread_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosread_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosread_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosread_a-adios_query.o: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
-
-libadiosread_a-adios_query.obj: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
-
-libadiosread_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosread_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosread_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosread_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosread_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosread_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosread_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosread_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosread_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosread_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosread_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosread_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosread_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
-
-libadiosread_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
-
-libadiosread_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
-
-libadiosread_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
-
-libadiosread_a-read_dataspaces.o: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
-
-libadiosread_a-read_dataspaces.obj: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
-
-libadiosread_a-read_dimes.o: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
-
-libadiosread_a-read_dimes.obj: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
-
-libadiosread_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosread_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosread_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosread_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosread_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosread_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosread_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosread_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosread_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosread_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosread_a-adios_nssi_args.o: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_nssi_args.o `test -f 'adios_nssi_args.c' || echo '$(srcdir)/'`adios_nssi_args.c
-
-libadiosread_a-adios_nssi_args.obj: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_a_CFLAGS) $(CFLAGS) -c -o libadiosread_a-adios_nssi_args.obj `if test -f 'adios_nssi_args.c'; then $(CYGPATH_W) 'adios_nssi_args.c'; else $(CYGPATH_W) '$(srcdir)/adios_nssi_args.c'; fi`
-
-libadiosread_nompi_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
-
-libadiosread_nompi_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
-
-libadiosread_nompi_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosread_nompi_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosread_nompi_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosread_nompi_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosread_nompi_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosread_nompi_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosread_nompi_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosread_nompi_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosread_nompi_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosread_nompi_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosread_nompi_a-adios_read.o: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read.o `test -f 'core/adios_read.c' || echo '$(srcdir)/'`core/adios_read.c
-
-libadiosread_nompi_a-adios_read.obj: core/adios_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read.obj `if test -f 'core/adios_read.c'; then $(CYGPATH_W) 'core/adios_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read.c'; fi`
-
-libadiosread_nompi_a-adios_read_v1.o: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read_v1.o `test -f 'core/adios_read_v1.c' || echo '$(srcdir)/'`core/adios_read_v1.c
-
-libadiosread_nompi_a-adios_read_v1.obj: core/adios_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read_v1.obj `if test -f 'core/adios_read_v1.c'; then $(CYGPATH_W) 'core/adios_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_v1.c'; fi`
-
-libadiosread_nompi_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosread_nompi_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosread_nompi_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosread_nompi_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosread_nompi_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosread_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosread_nompi_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosread_nompi_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosread_nompi_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosread_nompi_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosread_nompi_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosread_nompi_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosread_nompi_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosread_nompi_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosread_nompi_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosread_nompi_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosread_nompi_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosread_nompi_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosread_nompi_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosread_nompi_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosread_nompi_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosread_nompi_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosread_nompi_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosread_nompi_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosread_nompi_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosread_nompi_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosread_nompi_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosread_nompi_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosread_nompi_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosread_nompi_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosread_nompi_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosread_nompi_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosread_nompi_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosread_nompi_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosread_nompi_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosread_nompi_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosread_nompi_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosread_nompi_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosread_nompi_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosread_nompi_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_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`
-
-libadiosread_nompi_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosread_nompi_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosread_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosread_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosread_nompi_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosread_nompi_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosread_nompi_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosread_nompi_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosread_nompi_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosread_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosread_nompi_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosread_nompi_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosread_nompi_a-adios_query.o: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_query.o `test -f 'query/adios_query.c' || echo '$(srcdir)/'`query/adios_query.c
-
-libadiosread_nompi_a-adios_query.obj: query/adios_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_query.obj `if test -f 'query/adios_query.c'; then $(CYGPATH_W) 'query/adios_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query.c'; fi`
-
-libadiosread_nompi_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosread_nompi_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosread_nompi_a-buffer.o: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-buffer.o `test -f 'core/buffer.c' || echo '$(srcdir)/'`core/buffer.c
-
-libadiosread_nompi_a-buffer.obj: core/buffer.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-buffer.obj `if test -f 'core/buffer.c'; then $(CYGPATH_W) 'core/buffer.c'; else $(CYGPATH_W) '$(srcdir)/core/buffer.c'; fi`
-
-libadiosread_nompi_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosread_nompi_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosread_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosread_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosread_nompi_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosread_nompi_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosread_nompi_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosread_nompi_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosread_nompi_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosread_nompi_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosread_nompi_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosread_nompi_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosread_nompi_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosread_nompi_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosread_nompi_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosread_nompi_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosread_nompi_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosread_nompi_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosread_nompi_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosread_nompi_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosread_nompi_a-adios_nssi_args.o: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_nssi_args.o `test -f 'adios_nssi_args.c' || echo '$(srcdir)/'`adios_nssi_args.c
-
-libadiosread_nompi_a-adios_nssi_args.obj: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosread_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosread_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosread_nompi_a-adios_nssi_args.obj `if test -f 'adios_nssi_args.c'; then $(CYGPATH_W) 'adios_nssi_args.c'; else $(CYGPATH_W) '$(srcdir)/adios_nssi_args.c'; fi`
-
-libadiosreadf_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosreadf_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosreadf_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosreadf_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosreadf_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosreadf_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosreadf_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosreadf_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosreadf_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosreadf_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosreadf_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosreadf_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosreadf_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosreadf_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosreadf_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosreadf_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosreadf_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosreadf_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosreadf_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosreadf_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosreadf_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosreadf_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosreadf_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosreadf_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosreadf_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosreadf_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosreadf_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosreadf_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosreadf_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosreadf_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosreadf_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosreadf_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosreadf_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosreadf_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosreadf_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosreadf_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosreadf_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosreadf_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosreadf_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosreadf_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosreadf_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosreadf_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosreadf_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosreadf_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosreadf_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosreadf_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosreadf_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosreadf_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosreadf_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosreadf_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_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`
-
-libadiosreadf_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosreadf_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosreadf_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosreadf_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosreadf_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosreadf_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosreadf_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosreadf_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosreadf_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosreadf_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosreadf_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosreadf_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosreadf_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
-
-libadiosreadf_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
-
-libadiosreadf_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosreadf_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosreadf_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosreadf_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosreadf_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosreadf_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosreadf_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosreadf_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosreadf_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosreadf_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosreadf_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosreadf_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosreadf_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
-
-libadiosreadf_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
-
-libadiosreadf_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
-
-libadiosreadf_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
-
-libadiosreadf_a-read_dataspaces.o: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
-
-libadiosreadf_a-read_dataspaces.obj: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
-
-libadiosreadf_a-read_dimes.o: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
-
-libadiosreadf_a-read_dimes.obj: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
-
-libadiosreadf_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosreadf_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosreadf_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosreadf_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosreadf_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosreadf_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosreadf_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosreadf_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosreadf_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosreadf_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosreadf_a-adiosf_read.o: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
-
-libadiosreadf_a-adiosf_read.obj: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
-
-libadiosreadf_a-adios_nssi_args.o: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_nssi_args.o `test -f 'adios_nssi_args.c' || echo '$(srcdir)/'`adios_nssi_args.c
-
-libadiosreadf_a-adios_nssi_args.obj: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_a-adios_nssi_args.obj `if test -f 'adios_nssi_args.c'; then $(CYGPATH_W) 'adios_nssi_args.c'; else $(CYGPATH_W) '$(srcdir)/adios_nssi_args.c'; fi`
-
-libadiosreadf_nompi_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
-
-libadiosreadf_nompi_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
-
-libadiosreadf_nompi_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosreadf_nompi_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosreadf_nompi_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosreadf_nompi_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosreadf_nompi_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosreadf_nompi_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosreadf_nompi_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosreadf_nompi_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosreadf_nompi_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosreadf_nompi_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosreadf_nompi_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosreadf_nompi_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosreadf_nompi_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosreadf_nompi_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosreadf_nompi_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosreadf_nompi_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosreadf_nompi_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosreadf_nompi_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosreadf_nompi_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosreadf_nompi_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosreadf_nompi_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosreadf_nompi_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosreadf_nompi_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosreadf_nompi_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosreadf_nompi_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosreadf_nompi_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosreadf_nompi_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosreadf_nompi_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosreadf_nompi_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosreadf_nompi_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosreadf_nompi_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosreadf_nompi_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosreadf_nompi_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosreadf_nompi_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosreadf_nompi_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosreadf_nompi_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosreadf_nompi_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosreadf_nompi_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosreadf_nompi_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosreadf_nompi_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosreadf_nompi_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosreadf_nompi_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_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`
-
-libadiosreadf_nompi_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosreadf_nompi_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosreadf_nompi_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosreadf_nompi_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosreadf_nompi_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosreadf_nompi_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosreadf_nompi_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosreadf_nompi_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosreadf_nompi_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosreadf_nompi_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosreadf_nompi_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosreadf_nompi_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosreadf_nompi_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
-
-libadiosreadf_nompi_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
-
-libadiosreadf_nompi_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosreadf_nompi_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosreadf_nompi_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosreadf_nompi_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosreadf_nompi_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosreadf_nompi_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosreadf_nompi_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosreadf_nompi_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosreadf_nompi_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosreadf_nompi_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosreadf_nompi_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosreadf_nompi_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosreadf_nompi_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosreadf_nompi_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosreadf_nompi_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosreadf_nompi_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosreadf_nompi_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosreadf_nompi_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosreadf_nompi_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosreadf_nompi_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosreadf_nompi_a-adiosf_read.o: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adiosf_read.o `test -f 'core/adiosf_read.c' || echo '$(srcdir)/'`core/adiosf_read.c
-
-libadiosreadf_nompi_a-adiosf_read.obj: core/adiosf_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adiosf_read.obj `if test -f 'core/adiosf_read.c'; then $(CYGPATH_W) 'core/adiosf_read.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read.c'; fi`
-
-libadiosreadf_nompi_a-adios_nssi_args.o: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_nssi_args.o `test -f 'adios_nssi_args.c' || echo '$(srcdir)/'`adios_nssi_args.c
-
-libadiosreadf_nompi_a-adios_nssi_args.obj: adios_nssi_args.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_a-adios_nssi_args.obj `if test -f 'adios_nssi_args.c'; then $(CYGPATH_W) 'adios_nssi_args.c'; else $(CYGPATH_W) '$(srcdir)/adios_nssi_args.c'; fi`
-
-libadiosreadf_nompi_v1_a-mpidummy.o: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-mpidummy.o `test -f 'core/mpidummy.c' || echo '$(srcdir)/'`core/mpidummy.c
-
-libadiosreadf_nompi_v1_a-mpidummy.obj: core/mpidummy.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-mpidummy.obj `if test -f 'core/mpidummy.c'; then $(CYGPATH_W) 'core/mpidummy.c'; else $(CYGPATH_W) '$(srcdir)/core/mpidummy.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosreadf_nompi_v1_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosreadf_nompi_v1_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosreadf_nompi_v1_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosreadf_nompi_v1_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosreadf_nompi_v1_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosreadf_nompi_v1_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosreadf_nompi_v1_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosreadf_nompi_v1_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosreadf_nompi_v1_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosreadf_nompi_v1_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosreadf_nompi_v1_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosreadf_nompi_v1_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosreadf_nompi_v1_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosreadf_nompi_v1_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosreadf_nompi_v1_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosreadf_nompi_v1_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosreadf_nompi_v1_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosreadf_nompi_v1_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosreadf_nompi_v1_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosreadf_nompi_v1_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosreadf_nompi_v1_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosreadf_nompi_v1_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosreadf_nompi_v1_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_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`
-
-libadiosreadf_nompi_v1_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosreadf_nompi_v1_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosreadf_nompi_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosreadf_nompi_v1_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosreadf_nompi_v1_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosreadf_nompi_v1_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosreadf_nompi_v1_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosreadf_nompi_v1_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosreadf_nompi_v1_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosreadf_nompi_v1_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosreadf_nompi_v1_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosreadf_nompi_v1_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
-
-libadiosreadf_nompi_v1_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
-
-libadiosreadf_nompi_v1_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosreadf_nompi_v1_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosreadf_nompi_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosreadf_nompi_v1_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosreadf_nompi_v1_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosreadf_nompi_v1_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosreadf_nompi_v1_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosreadf_nompi_v1_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosreadf_nompi_v1_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosreadf_nompi_v1_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosreadf_nompi_v1_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosreadf_nompi_v1_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosreadf_nompi_v1_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosreadf_nompi_v1_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosreadf_nompi_v1_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosreadf_nompi_v1_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosreadf_nompi_v1_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosreadf_nompi_v1_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosreadf_nompi_v1_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosreadf_nompi_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
-
-libadiosreadf_nompi_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_nompi_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_nompi_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_nompi_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
-
-libadiosreadf_v1_a-adios_bp_v1.o: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_bp_v1.o `test -f 'core/adios_bp_v1.c' || echo '$(srcdir)/'`core/adios_bp_v1.c
-
-libadiosreadf_v1_a-adios_bp_v1.obj: core/adios_bp_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_bp_v1.obj `if test -f 'core/adios_bp_v1.c'; then $(CYGPATH_W) 'core/adios_bp_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_bp_v1.c'; fi`
-
-libadiosreadf_v1_a-adios_endianness.o: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_endianness.o `test -f 'core/adios_endianness.c' || echo '$(srcdir)/'`core/adios_endianness.c
-
-libadiosreadf_v1_a-adios_endianness.obj: core/adios_endianness.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_endianness.obj `if test -f 'core/adios_endianness.c'; then $(CYGPATH_W) 'core/adios_endianness.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_endianness.c'; fi`
-
-libadiosreadf_v1_a-bp_utils.o: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-bp_utils.o `test -f 'core/bp_utils.c' || echo '$(srcdir)/'`core/bp_utils.c
-
-libadiosreadf_v1_a-bp_utils.obj: core/bp_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-bp_utils.obj `if test -f 'core/bp_utils.c'; then $(CYGPATH_W) 'core/bp_utils.c'; else $(CYGPATH_W) '$(srcdir)/core/bp_utils.c'; fi`
-
-libadiosreadf_v1_a-futils.o: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-futils.o `test -f 'core/futils.c' || echo '$(srcdir)/'`core/futils.c
-
-libadiosreadf_v1_a-futils.obj: core/futils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-futils.obj `if test -f 'core/futils.c'; then $(CYGPATH_W) 'core/futils.c'; else $(CYGPATH_W) '$(srcdir)/core/futils.c'; fi`
-
-libadiosreadf_v1_a-adios_error.o: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_error.o `test -f 'core/adios_error.c' || echo '$(srcdir)/'`core/adios_error.c
-
-libadiosreadf_v1_a-adios_error.obj: core/adios_error.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_error.obj `if test -f 'core/adios_error.c'; then $(CYGPATH_W) 'core/adios_error.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_error.c'; fi`
-
-libadiosreadf_v1_a-common_read.o: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-common_read.o `test -f 'core/common_read.c' || echo '$(srcdir)/'`core/common_read.c
-
-libadiosreadf_v1_a-common_read.obj: core/common_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-common_read.obj `if test -f 'core/common_read.c'; then $(CYGPATH_W) 'core/common_read.c'; else $(CYGPATH_W) '$(srcdir)/core/common_read.c'; fi`
-
-libadiosreadf_v1_a-adios_infocache.o: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_infocache.o `test -f 'core/adios_infocache.c' || echo '$(srcdir)/'`core/adios_infocache.c
-
-libadiosreadf_v1_a-adios_infocache.obj: core/adios_infocache.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_infocache.obj `if test -f 'core/adios_infocache.c'; then $(CYGPATH_W) 'core/adios_infocache.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_infocache.c'; fi`
-
-libadiosreadf_v1_a-adios_read_ext.o: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_read_ext.o `test -f 'core/adios_read_ext.c' || echo '$(srcdir)/'`core/adios_read_ext.c
-
-libadiosreadf_v1_a-adios_read_ext.obj: core/adios_read_ext.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_read_ext.obj `if test -f 'core/adios_read_ext.c'; then $(CYGPATH_W) 'core/adios_read_ext.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_ext.c'; fi`
-
-libadiosreadf_v1_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
-
-libadiosreadf_v1_a-adios_transforms_common.obj: core/transforms/adios_transforms_common.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_common.obj `if test -f 'core/transforms/adios_transforms_common.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_common.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_common.c'; fi`
-
-libadiosreadf_v1_a-adios_transforms_hooks.o: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_hooks.o `test -f 'core/transforms/adios_transforms_hooks.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks.c
-
-libadiosreadf_v1_a-adios_transforms_hooks.obj: core/transforms/adios_transforms_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_hooks.obj `if test -f 'core/transforms/adios_transforms_hooks.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks.c'; fi`
-
-libadiosreadf_v1_a-adios_copyspec.o: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_copyspec.o `test -f 'core/adios_copyspec.c' || echo '$(srcdir)/'`core/adios_copyspec.c
-
-libadiosreadf_v1_a-adios_copyspec.obj: core/adios_copyspec.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_copyspec.obj `if test -f 'core/adios_copyspec.c'; then $(CYGPATH_W) 'core/adios_copyspec.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_copyspec.c'; fi`
-
-libadiosreadf_v1_a-adios_subvolume.o: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_subvolume.o `test -f 'core/adios_subvolume.c' || echo '$(srcdir)/'`core/adios_subvolume.c
-
-libadiosreadf_v1_a-adios_subvolume.obj: core/adios_subvolume.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_subvolume.obj `if test -f 'core/adios_subvolume.c'; then $(CYGPATH_W) 'core/adios_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_subvolume.c'; fi`
-
-libadiosreadf_v1_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
-
-libadiosreadf_v1_a-adios_transforms_read.obj: core/transforms/adios_transforms_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_read.obj `if test -f 'core/transforms/adios_transforms_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transforms_hooks_read.o: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_hooks_read.o `test -f 'core/transforms/adios_transforms_hooks_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_hooks_read.c
-
-libadiosreadf_v1_a-adios_transforms_hooks_read.obj: core/transforms/adios_transforms_hooks_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_hooks_read.obj `if test -f 'core/transforms/adios_transforms_hooks_read.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_hooks_read.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_hooks_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transforms_reqgroup.o: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_reqgroup.o `test -f 'core/transforms/adios_transforms_reqgroup.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_reqgroup.c
-
-libadiosreadf_v1_a-adios_transforms_reqgroup.obj: core/transforms/adios_transforms_reqgroup.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_reqgroup.obj `if test -f 'core/transforms/adios_transforms_reqgroup.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_reqgroup.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_reqgroup.c'; fi`
-
-libadiosreadf_v1_a-adios_transforms_datablock.o: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_datablock.o `test -f 'core/transforms/adios_transforms_datablock.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_datablock.c
-
-libadiosreadf_v1_a-adios_transforms_datablock.obj: core/transforms/adios_transforms_datablock.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transforms_datablock.obj `if test -f 'core/transforms/adios_transforms_datablock.c'; then $(CYGPATH_W) 'core/transforms/adios_transforms_datablock.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_transforms_datablock.c'; fi`
-
-libadiosreadf_v1_a-adios_patchdata.o: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_patchdata.o `test -f 'core/transforms/adios_patchdata.c' || echo '$(srcdir)/'`core/transforms/adios_patchdata.c
-
-libadiosreadf_v1_a-adios_patchdata.obj: core/transforms/adios_patchdata.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_patchdata.obj `if test -f 'core/transforms/adios_patchdata.c'; then $(CYGPATH_W) 'core/transforms/adios_patchdata.c'; else $(CYGPATH_W) '$(srcdir)/core/transforms/adios_patchdata.c'; fi`
-
-libadiosreadf_v1_a-adios_selection_util.o: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_selection_util.o `test -f 'core/adios_selection_util.c' || echo '$(srcdir)/'`core/adios_selection_util.c
-
-libadiosreadf_v1_a-adios_selection_util.obj: core/adios_selection_util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_selection_util.obj `if test -f 'core/adios_selection_util.c'; then $(CYGPATH_W) 'core/adios_selection_util.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_selection_util.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_identity_read.o: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_identity_read.o `test -f 'transforms/adios_transform_identity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_identity_read.c
-
-libadiosreadf_v1_a-adios_transform_identity_read.obj: transforms/adios_transform_identity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_identity_read.obj `if test -f 'transforms/adios_transform_identity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_identity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_identity_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_zlib_read.o: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_zlib_read.o `test -f 'transforms/adios_transform_zlib_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zlib_read.c
-
-libadiosreadf_v1_a-adios_transform_zlib_read.obj: transforms/adios_transform_zlib_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_zlib_read.obj `if test -f 'transforms/adios_transform_zlib_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zlib_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zlib_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_bzip2_read.o: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_bzip2_read.o `test -f 'transforms/adios_transform_bzip2_read.c' || echo '$(srcdir)/'`transforms/adios_transform_bzip2_read.c
-
-libadiosreadf_v1_a-adios_transform_bzip2_read.obj: transforms/adios_transform_bzip2_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_bzip2_read.obj `if test -f 'transforms/adios_transform_bzip2_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_bzip2_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_bzip2_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_szip_read.o: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_szip_read.o `test -f 'transforms/adios_transform_szip_read.c' || echo '$(srcdir)/'`transforms/adios_transform_szip_read.c
-
-libadiosreadf_v1_a-adios_transform_szip_read.obj: transforms/adios_transform_szip_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_szip_read.obj `if test -f 'transforms/adios_transform_szip_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_szip_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_szip_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_isobar_read.o: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_isobar_read.o `test -f 'transforms/adios_transform_isobar_read.c' || echo '$(srcdir)/'`transforms/adios_transform_isobar_read.c
-
-libadiosreadf_v1_a-adios_transform_isobar_read.obj: transforms/adios_transform_isobar_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_isobar_read.obj `if test -f 'transforms/adios_transform_isobar_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_isobar_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_isobar_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_aplod_read.o: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_aplod_read.o `test -f 'transforms/adios_transform_aplod_read.c' || echo '$(srcdir)/'`transforms/adios_transform_aplod_read.c
-
-libadiosreadf_v1_a-adios_transform_aplod_read.obj: transforms/adios_transform_aplod_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_aplod_read.obj `if test -f 'transforms/adios_transform_aplod_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_aplod_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_aplod_read.c'; fi`
-
-libadiosreadf_v1_a-adios_transform_alacrity_read.o: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_transform_alacrity_read.o `test -f 'transforms/adios_transform_alacrity_read.c' || echo '$(srcdir)/'`transforms/adios_transform_alacrity_read.c
-
-libadiosreadf_v1_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_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`
-
-libadiosreadf_v1_a-common_query.o: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-common_query.o `test -f 'query/common_query.c' || echo '$(srcdir)/'`query/common_query.c
-
-libadiosreadf_v1_a-common_query.obj: query/common_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-common_query.obj `if test -f 'query/common_query.c'; then $(CYGPATH_W) 'query/common_query.c'; else $(CYGPATH_W) '$(srcdir)/query/common_query.c'; fi`
-
-libadiosreadf_v1_a-adios_query_hooks.o: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_query_hooks.o `test -f 'query/adios_query_hooks.c' || echo '$(srcdir)/'`query/adios_query_hooks.c
-
-libadiosreadf_v1_a-adios_query_hooks.obj: query/adios_query_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_query_hooks.obj `if test -f 'query/adios_query_hooks.c'; then $(CYGPATH_W) 'query/adios_query_hooks.c'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_hooks.c'; fi`
-
-libadiosreadf_v1_a-query_utils.o: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-query_utils.o `test -f 'query/query_utils.c' || echo '$(srcdir)/'`query/query_utils.c
-
-libadiosreadf_v1_a-query_utils.obj: query/query_utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-query_utils.obj `if test -f 'query/query_utils.c'; then $(CYGPATH_W) 'query/query_utils.c'; else $(CYGPATH_W) '$(srcdir)/query/query_utils.c'; fi`
-
-libadiosreadf_v1_a-query_fastbit.o: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-query_fastbit.o `test -f 'query/query_fastbit.c' || echo '$(srcdir)/'`query/query_fastbit.c
-
-libadiosreadf_v1_a-query_fastbit.obj: query/query_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-query_fastbit.obj `if test -f 'query/query_fastbit.c'; then $(CYGPATH_W) 'query/query_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/query/query_fastbit.c'; fi`
-
-libadiosreadf_v1_a-fastbit_adios.o: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-fastbit_adios.o `test -f 'query/fastbit_adios.c' || echo '$(srcdir)/'`query/fastbit_adios.c
-
-libadiosreadf_v1_a-fastbit_adios.obj: query/fastbit_adios.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-fastbit_adios.obj `if test -f 'query/fastbit_adios.c'; then $(CYGPATH_W) 'query/fastbit_adios.c'; else $(CYGPATH_W) '$(srcdir)/query/fastbit_adios.c'; fi`
-
-libadiosreadf_v1_a-query_alac.o: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-query_alac.o `test -f 'query/query_alac.c' || echo '$(srcdir)/'`query/query_alac.c
-
-libadiosreadf_v1_a-query_alac.obj: query/query_alac.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-query_alac.obj `if test -f 'query/query_alac.c'; then $(CYGPATH_W) 'query/query_alac.c'; else $(CYGPATH_W) '$(srcdir)/query/query_alac.c'; fi`
-
-libadiosreadf_v1_a-adiosf_query.o: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adiosf_query.o `test -f 'query/adiosf_query.c' || echo '$(srcdir)/'`query/adiosf_query.c
-
-libadiosreadf_v1_a-adiosf_query.obj: query/adiosf_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adiosf_query.obj `if test -f 'query/adiosf_query.c'; then $(CYGPATH_W) 'query/adiosf_query.c'; else $(CYGPATH_W) '$(srcdir)/query/adiosf_query.c'; fi`
-
-libadiosreadf_v1_a-globals.o: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-globals.o `test -f 'core/globals.c' || echo '$(srcdir)/'`core/globals.c
-
-libadiosreadf_v1_a-globals.obj: core/globals.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-globals.obj `if test -f 'core/globals.c'; then $(CYGPATH_W) 'core/globals.c'; else $(CYGPATH_W) '$(srcdir)/core/globals.c'; fi`
-
-libadiosreadf_v1_a-adios_read_hooks.o: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_read_hooks.o `test -f 'core/adios_read_hooks.c' || echo '$(srcdir)/'`core/adios_read_hooks.c
-
-libadiosreadf_v1_a-adios_read_hooks.obj: core/adios_read_hooks.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_read_hooks.obj `if test -f 'core/adios_read_hooks.c'; then $(CYGPATH_W) 'core/adios_read_hooks.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_read_hooks.c'; fi`
-
-libadiosreadf_v1_a-adios_logger.o: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_logger.o `test -f 'core/adios_logger.c' || echo '$(srcdir)/'`core/adios_logger.c
-
-libadiosreadf_v1_a-adios_logger.obj: core/adios_logger.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_logger.obj `if test -f 'core/adios_logger.c'; then $(CYGPATH_W) 'core/adios_logger.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_logger.c'; fi`
-
-libadiosreadf_v1_a-util.o: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-util.o `test -f 'core/util.c' || echo '$(srcdir)/'`core/util.c
-
-libadiosreadf_v1_a-util.obj: core/util.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
-
-libadiosreadf_v1_a-qhashtbl.o: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-qhashtbl.o `test -f 'core/qhashtbl.c' || echo '$(srcdir)/'`core/qhashtbl.c
-
-libadiosreadf_v1_a-qhashtbl.obj: core/qhashtbl.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-qhashtbl.obj `if test -f 'core/qhashtbl.c'; then $(CYGPATH_W) 'core/qhashtbl.c'; else $(CYGPATH_W) '$(srcdir)/core/qhashtbl.c'; fi`
-
-libadiosreadf_v1_a-read_bp.o: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_bp.o `test -f 'read/read_bp.c' || echo '$(srcdir)/'`read/read_bp.c
-
-libadiosreadf_v1_a-read_bp.obj: read/read_bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_bp.obj `if test -f 'read/read_bp.c'; then $(CYGPATH_W) 'read/read_bp.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp.c'; fi`
-
-libadiosreadf_v1_a-read_bp_staged.o: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_bp_staged.o `test -f 'read/read_bp_staged.c' || echo '$(srcdir)/'`read/read_bp_staged.c
-
-libadiosreadf_v1_a-read_bp_staged.obj: read/read_bp_staged.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_bp_staged.obj `if test -f 'read/read_bp_staged.c'; then $(CYGPATH_W) 'read/read_bp_staged.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged.c'; fi`
-
-libadiosreadf_v1_a-read_bp_staged1.o: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_bp_staged1.o `test -f 'read/read_bp_staged1.c' || echo '$(srcdir)/'`read/read_bp_staged1.c
-
-libadiosreadf_v1_a-read_bp_staged1.obj: read/read_bp_staged1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_bp_staged1.obj `if test -f 'read/read_bp_staged1.c'; then $(CYGPATH_W) 'read/read_bp_staged1.c'; else $(CYGPATH_W) '$(srcdir)/read/read_bp_staged1.c'; fi`
-
-libadiosreadf_v1_a-read_dataspaces.o: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_dataspaces.o `test -f 'read/read_dataspaces.c' || echo '$(srcdir)/'`read/read_dataspaces.c
-
-libadiosreadf_v1_a-read_dataspaces.obj: read/read_dataspaces.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_dataspaces.obj `if test -f 'read/read_dataspaces.c'; then $(CYGPATH_W) 'read/read_dataspaces.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dataspaces.c'; fi`
-
-libadiosreadf_v1_a-read_dimes.o: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_dimes.o `test -f 'read/read_dimes.c' || echo '$(srcdir)/'`read/read_dimes.c
-
-libadiosreadf_v1_a-read_dimes.obj: read/read_dimes.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_dimes.obj `if test -f 'read/read_dimes.c'; then $(CYGPATH_W) 'read/read_dimes.c'; else $(CYGPATH_W) '$(srcdir)/read/read_dimes.c'; fi`
-
-libadiosreadf_v1_a-read_datatap.o: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_datatap.o `test -f 'read/read_datatap.c' || echo '$(srcdir)/'`read/read_datatap.c
-
-libadiosreadf_v1_a-read_datatap.obj: read/read_datatap.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_datatap.obj `if test -f 'read/read_datatap.c'; then $(CYGPATH_W) 'read/read_datatap.c'; else $(CYGPATH_W) '$(srcdir)/read/read_datatap.c'; fi`
-
-libadiosreadf_v1_a-read_flexpath.o: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_flexpath.o `test -f 'read/read_flexpath.c' || echo '$(srcdir)/'`read/read_flexpath.c
-
-libadiosreadf_v1_a-read_flexpath.obj: read/read_flexpath.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_flexpath.obj `if test -f 'read/read_flexpath.c'; then $(CYGPATH_W) 'read/read_flexpath.c'; else $(CYGPATH_W) '$(srcdir)/read/read_flexpath.c'; fi`
-
-libadiosreadf_v1_a-read_icee.o: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_icee.o `test -f 'read/read_icee.c' || echo '$(srcdir)/'`read/read_icee.c
-
-libadiosreadf_v1_a-read_icee.obj: read/read_icee.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_icee.obj `if test -f 'read/read_icee.c'; then $(CYGPATH_W) 'read/read_icee.c'; else $(CYGPATH_W) '$(srcdir)/read/read_icee.c'; fi`
-
-libadiosreadf_v1_a-adios_nssi_config.o: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_nssi_config.o `test -f 'nssi/adios_nssi_config.c' || echo '$(srcdir)/'`nssi/adios_nssi_config.c
-
-libadiosreadf_v1_a-adios_nssi_config.obj: nssi/adios_nssi_config.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adios_nssi_config.obj `if test -f 'nssi/adios_nssi_config.c'; then $(CYGPATH_W) 'nssi/adios_nssi_config.c'; else $(CYGPATH_W) '$(srcdir)/nssi/adios_nssi_config.c'; fi`
-
-libadiosreadf_v1_a-read_nssi.o: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_nssi.o `test -f 'read/read_nssi.c' || echo '$(srcdir)/'`read/read_nssi.c
-
-libadiosreadf_v1_a-read_nssi.obj: read/read_nssi.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-read_nssi.obj `if test -f 'read/read_nssi.c'; then $(CYGPATH_W) 'read/read_nssi.c'; else $(CYGPATH_W) '$(srcdir)/read/read_nssi.c'; fi`
-
-libadiosreadf_v1_a-adiosf_read_v1.o: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adiosf_read_v1.o `test -f 'core/adiosf_read_v1.c' || echo '$(srcdir)/'`core/adiosf_read_v1.c
-
-libadiosreadf_v1_a-adiosf_read_v1.obj: core/adiosf_read_v1.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libadiosreadf_v1_a_CPPFLAGS) $(CPPFLAGS) $(libadiosreadf_v1_a_CFLAGS) $(CFLAGS) -c -o libadiosreadf_v1_a-adiosf_read_v1.obj `if test -f 'core/adiosf_read_v1.c'; then $(CYGPATH_W) 'core/adiosf_read_v1.c'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_v1.c'; fi`
-
-.cpp.o:
-	$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
-	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
-	$(LTCXXCOMPILE) -c -o $@ $<
-
-nssi_coupling_server-nssi_coupling_server.o: nssi/nssi_coupling_server.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nssi_coupling_server_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o nssi_coupling_server-nssi_coupling_server.o `test -f 'nssi/nssi_coupling_server.cpp' || echo '$(srcdir)/'`nssi/nssi_coupling_server.cpp
-
-nssi_coupling_server-nssi_coupling_server.obj: nssi/nssi_coupling_server.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nssi_coupling_server_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o nssi_coupling_server-nssi_coupling_server.obj `if test -f 'nssi/nssi_coupling_server.cpp'; then $(CYGPATH_W) 'nssi/nssi_coupling_server.cpp'; else $(CYGPATH_W) '$(srcdir)/nssi/nssi_coupling_server.cpp'; fi`
-
-nssi_staging_server-nssi_staging_server.o: nssi/nssi_staging_server.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nssi_staging_server_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o nssi_staging_server-nssi_staging_server.o `test -f 'nssi/nssi_staging_server.cpp' || echo '$(srcdir)/'`nssi/nssi_staging_server.cpp
-
-nssi_staging_server-nssi_staging_server.obj: nssi/nssi_staging_server.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nssi_staging_server_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o nssi_staging_server-nssi_staging_server.obj `if test -f 'nssi/nssi_staging_server.cpp'; then $(CYGPATH_W) 'nssi/nssi_staging_server.cpp'; else $(CYGPATH_W) '$(srcdir)/nssi/nssi_staging_server.cpp'; fi`
-
-nssi_staging_server-aggregation.o: nssi/aggregation.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nssi_staging_server_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o nssi_staging_server-aggregation.o `test -f 'nssi/aggregation.cpp' || echo '$(srcdir)/'`nssi/aggregation.cpp
-
-nssi_staging_server-aggregation.obj: nssi/aggregation.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nssi_staging_server_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o nssi_staging_server-aggregation.obj `if test -f 'nssi/aggregation.cpp'; then $(CYGPATH_W) 'nssi/aggregation.cpp'; else $(CYGPATH_W) '$(srcdir)/nssi/aggregation.cpp'; fi`
-
-.f90.o:
-	$(FCCOMPILE) -c -o $@ $<
-
-.f90.obj:
-	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.f90.lo:
-	$(LTFCCOMPILE) -c -o $@ $<
-
-adiosf_defs_mod.o: core/adiosf_defs_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adiosf_defs_mod.o `test -f 'core/adiosf_defs_mod.f90' || echo '$(srcdir)/'`core/adiosf_defs_mod.f90
-
-adiosf_defs_mod.obj: core/adiosf_defs_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adiosf_defs_mod.obj `if test -f 'core/adiosf_defs_mod.f90'; then $(CYGPATH_W) 'core/adiosf_defs_mod.f90'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_defs_mod.f90'; fi`
-
-adiosf_write_mod.o: core/adiosf_write_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adiosf_write_mod.o `test -f 'core/adiosf_write_mod.f90' || echo '$(srcdir)/'`core/adiosf_write_mod.f90
-
-adiosf_write_mod.obj: core/adiosf_write_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adiosf_write_mod.obj `if test -f 'core/adiosf_write_mod.f90'; then $(CYGPATH_W) 'core/adiosf_write_mod.f90'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_write_mod.f90'; fi`
-
-adiosf_read_mod.o: core/adiosf_read_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adiosf_read_mod.o `test -f 'core/adiosf_read_mod.f90' || echo '$(srcdir)/'`core/adiosf_read_mod.f90
-
-adiosf_read_mod.obj: core/adiosf_read_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adiosf_read_mod.obj `if test -f 'core/adiosf_read_mod.f90'; then $(CYGPATH_W) 'core/adiosf_read_mod.f90'; else $(CYGPATH_W) '$(srcdir)/core/adiosf_read_mod.f90'; fi`
-
-adios_query_mod.o: query/adios_query_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adios_query_mod.o `test -f 'query/adios_query_mod.f90' || echo '$(srcdir)/'`query/adios_query_mod.f90
-
-adios_query_mod.obj: query/adios_query_mod.f90
-	$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c -o adios_query_mod.obj `if test -f 'query/adios_query_mod.f90'; then $(CYGPATH_W) 'query/adios_query_mod.f90'; else $(CYGPATH_W) '$(srcdir)/query/adios_query_mod.f90'; fi`
-
-mostlyclean-libtool:
-	-rm -f *.lo
+mostlyclean-libtool:
+	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -7841,13 +5240,14 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 install-nodist_includeHEADERS: $(nodist_include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -7861,30 +5261,64 @@ uninstall-nodist_includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -7896,15 +5330,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -7913,6 +5343,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -7947,27 +5392,58 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
 check-am: all-am
-check: check-am
+check: check-recursive
 all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
-installdirs:
+installdirs: installdirs-recursive
+installdirs-am:
 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
 
 install-am: all-am
 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-installcheck: installcheck-am
+installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -7976,85 +5452,92 @@ 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 core/$(am__dirstamp)
+	-rm -f core/transforms/$(am__dirstamp)
+	-rm -f query/$(am__dirstamp)
+	-rm -f read/$(am__dirstamp)
+	-rm -f transforms/$(am__dirstamp)
+	-rm -f write/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
+clean: clean-recursive
 
 clean-am: clean-binPROGRAMS clean-generic clean-libLIBRARIES \
 	clean-libtool clean-noinstLIBRARIES mostlyclean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
 
-dvi: dvi-am
+dvi: dvi-recursive
 
 dvi-am:
 
-html: html-am
+html: html-recursive
 
 html-am:
 
-info: info-am
+info: info-recursive
 
 info-am:
 
 install-data-am: install-includeHEADERS install-nodist_includeHEADERS
 
-install-dvi: install-dvi-am
+install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
 install-exec-am: install-binPROGRAMS install-libLIBRARIES
 
-install-html: install-html-am
+install-html: install-html-recursive
 
 install-html-am:
 
-install-info: install-info-am
+install-info: install-info-recursive
 
 install-info-am:
 
 install-man:
 
-install-pdf: install-pdf-am
+install-pdf: install-pdf-recursive
 
 install-pdf-am:
 
-install-ps: install-ps-am
+install-ps: install-ps-recursive
 
 install-ps-am:
 
 installcheck-am:
 
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
 mostlyclean-am: mostlyclean-compile mostlyclean-generic \
 	mostlyclean-libtool
 
-pdf: pdf-am
+pdf: pdf-recursive
 
 pdf-am:
 
-ps: ps-am
+ps: ps-recursive
 
 ps-am:
 
 uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
 	uninstall-libLIBRARIES uninstall-nodist_includeHEADERS
 
-.MAKE: install-am install-strip
+.MAKE: $(am__recursive_targets) install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libLIBRARIES clean-libtool \
-	clean-noinstLIBRARIES ctags distclean distclean-compile \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-binPROGRAMS clean-generic \
+	clean-libLIBRARIES clean-libtool clean-noinstLIBRARIES \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
 	distclean-generic distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
@@ -8063,44 +5546,29 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
 	install-info-am install-libLIBRARIES install-man \
 	install-nodist_includeHEADERS install-pdf install-pdf-am \
 	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	installcheck-am installdirs installdirs-am maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-binPROGRAMS \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
 	uninstall-includeHEADERS uninstall-libLIBRARIES \
 	uninstall-nodist_includeHEADERS
 
 
-# The next line forces automake to build adios_nssi_args.[ch] before compiling adios_nssi_config.c
-# Note, the order of dist_*SOURCES and nodist_*SOURCES above should but does not solve this alone.
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at adios_nssi_config.c: adios_nssi_args.c
-
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at adios_nssi_args.h:  $(srcdir)/nssi/adios_nssi_args.x Makefile.am
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	rm -f $@
-#	@echo "#include <lwfs/lwfs_config.h>" >> $@
-#	@echo "#ifndef LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
-#	@echo "#define LWFS_HAVE_STRUCT_SOCKADDR_IN" >> $@
-#	@echo "struct sockaddr_in { " >> $@
-#	@echo '  int a;' >> $@
-#	@echo '};' >> $@
-#	@echo '#endif' >> $@;
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	rpcgen -h $(srcdir)/nssi/adios_nssi_args.x >> $@
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at core/adiosf_write_mod.$(OBJEXT): core/adiosf_defs_mod.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at adios_write_mod.mod: core/adiosf_write_mod.$(OBJEXT)
 
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE at adios_nssi_args.c: adios_nssi_args.h 
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	rm -f adios_nssi_args.c
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@	rpcgen -c $(srcdir)/nssi/adios_nssi_args.x \
- at BUILD_WRITE_TRUE@@HAVE_NSSI_TRUE@		| grep -v "include \"\.\." > adios_nssi_args.c
+ at BUILD_FORTRAN_TRUE@core/adiosf_read_mod.$(OBJEXT): core/adiosf_defs_mod.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@adios_read_mod.mod: core/adiosf_read_mod.$(OBJEXT)
 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at adiosf_write_mod.$(OBJEXT): adiosf_defs_mod.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at adios_write_mod.mod: adiosf_write_mod.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@query/adios_query_mod.$(OBJEXT): core/adiosf_read_mod.$(OBJEXT) adios_read_mod.mod
+ at BUILD_FORTRAN_TRUE@adios_query_mod.mod: query/adios_query_mod.$(OBJEXT)
 
- at BUILD_FORTRAN_TRUE@adiosf_read_mod.$(OBJEXT): adiosf_defs_mod.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@adios_read_mod.mod: adiosf_read_mod.$(OBJEXT)
-
- at BUILD_FORTRAN_TRUE@adios_query_mod.$(OBJEXT): adiosf_read_mod.$(OBJEXT)
- at BUILD_FORTRAN_TRUE@adios_query_mod.mod: adios_query_mod.$(OBJEXT)
+ at BUILD_FORTRAN_TRUE@adios_defs_mod.mod: core/adiosf_defs_mod.$(OBJEXT)
+#Note: $(MACRODEFFLAG)NOMPI chokes IBM's bgxlf compiler but it can pass $(MACRODEFFLAG)_NOMPI. 
 
- at BUILD_FORTRAN_TRUE@adios_defs_mod.mod: adiosf_defs_mod.$(OBJEXT)
+ at HAVE_MPI_TRUE@override CC=$(MPICC)
+ at HAVE_MPI_TRUE@override CXX=$(MPICXX)
+#             nssi/adios_nssi_config.h nssi/aggregation.h nssi/io_timer.h 
 
 # 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/src/core/a2sel.c b/src/core/a2sel.c
new file mode 100644
index 0000000..3ce40d1
--- /dev/null
+++ b/src/core/a2sel.c
@@ -0,0 +1,262 @@
+/*
+ * a2sel.c
+ *
+ */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <inttypes.h>
+#include <assert.h>
+
+#include "public/adios_error.h"
+#include "core/a2sel.h"
+
+extern int adios_errno;
+
+ADIOS_SELECTION * a2sel_boundingbox (int ndim, const uint64_t *start, const uint64_t *count)
+{
+    adios_errno = err_no_error;
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
+    if (sel) {
+        sel->type = ADIOS_SELECTION_BOUNDINGBOX;
+        sel->u.bb.ndim = ndim;
+        sel->u.bb.start = (uint64_t *) malloc (ndim * sizeof(uint64_t));
+        sel->u.bb.count = (uint64_t *) malloc (ndim * sizeof(uint64_t));
+        memcpy (sel->u.bb.start, start, ndim * sizeof(uint64_t));
+        memcpy (sel->u.bb.count, count, ndim * sizeof(uint64_t));
+    } else {
+        adios_error(err_no_memory, "Cannot allocate memory for bounding box selection\n");
+    }
+    return sel;
+}
+
+ADIOS_SELECTION * a2sel_points (int ndim, uint64_t npoints, const uint64_t *points,
+                                ADIOS_SELECTION * container, int free_points_on_delete)
+{
+    adios_errno = err_no_error;
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
+    if (sel) {
+        sel->type = ADIOS_SELECTION_POINTS;
+        sel->u.points.ndim = ndim;
+        sel->u.points.npoints = npoints;
+        sel->u.points.points = (uint64_t *) points;
+        sel->u.points.container_selection = container;
+        sel->u.points._free_points_on_delete = free_points_on_delete;
+    } else {
+        adios_error(err_no_memory, "Cannot allocate memory for points selection\n");
+    }
+    return sel;
+}
+
+ADIOS_SELECTION * a2sel_writeblock (int index)
+{
+    adios_errno = err_no_error;
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
+    if (sel) {
+        sel->type = ADIOS_SELECTION_WRITEBLOCK;
+        sel->u.block.index = index;
+        // NCSU ALACRITY-ADIOS: Set the writeblock selection to be a full-PG selection by default
+        sel->u.block.is_absolute_index = 0;
+        sel->u.block.is_sub_pg_selection = 0;
+        sel->u.block.element_offset = 0;
+        sel->u.block.nelements = 0;
+    } else {
+        adios_error(err_no_memory, "Cannot allocate memory for writeblock selection\n");
+    }
+    return sel;
+}
+
+ADIOS_SELECTION * a2sel_auto (char *hints)
+{
+    adios_errno = err_no_error;
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
+    if (sel) {
+        sel->type = ADIOS_SELECTION_AUTO;
+        sel->u.autosel.hints = hints;
+    } else {
+        adios_error(err_no_memory, "Cannot allocate memory for auto selection\n");
+    }
+    return sel;
+}
+
+void a2sel_free (ADIOS_SELECTION *sel)
+{
+    if (!sel)
+        return;
+    if (sel->type == ADIOS_SELECTION_POINTS)
+    {
+        if (sel->u.points.container_selection != NULL)
+        {
+            a2sel_free (sel->u.points.container_selection);
+            sel->u.points.container_selection = NULL;
+        }
+        if (sel->u.points._free_points_on_delete)
+        {
+            free (sel->u.points.points);
+        }
+    }
+    else if (sel->type == ADIOS_SELECTION_BOUNDINGBOX)
+    {
+        if (sel->u.bb.start) {
+            free (sel->u.bb.start);
+            sel->u.bb.start = NULL;
+        }
+        if (sel->u.bb.count) {
+            free (sel->u.bb.count);
+            sel->u.bb.count = NULL;
+        }
+    }
+    free(sel);
+}
+
+ADIOS_SELECTION * a2sel_copy (const ADIOS_SELECTION * sel)
+{
+    ADIOS_SELECTION * nsel;
+
+    nsel = (ADIOS_SELECTION *) malloc (sizeof (ADIOS_SELECTION));
+    assert (nsel);
+
+    nsel->type = sel->type;
+
+    if (sel->type == ADIOS_SELECTION_BOUNDINGBOX)
+    {
+        nsel->u.bb.ndim = sel->u.bb.ndim;
+        nsel->u.bb.start = (uint64_t *) malloc (sel->u.bb.ndim * 8);
+        nsel->u.bb.count = (uint64_t *) malloc (sel->u.bb.ndim * 8);
+        assert (nsel->u.bb.start && nsel->u.bb.count);
+
+        memcpy (nsel->u.bb.start, sel->u.bb.start, sel->u.bb.ndim * 8);
+        memcpy (nsel->u.bb.count, sel->u.bb.count, sel->u.bb.ndim * 8);
+    }
+    else if (sel->type == ADIOS_SELECTION_POINTS)
+    {
+        nsel->u.points.ndim = sel->u.points.ndim;
+        nsel->u.points.npoints = sel->u.points.npoints;
+        if (sel->u.points.container_selection) {
+            nsel->u.points.container_selection = a2sel_copy (sel->u.points.container_selection);
+        } else {
+            nsel->u.points.container_selection = NULL;
+        }
+        nsel->u.points.points = (uint64_t *) malloc (nsel->u.points.npoints * nsel->u.points.ndim * 8);
+	nsel->u.points._free_points_on_delete = 1; // junmin
+        assert (nsel->u.points.points);
+
+        memcpy (nsel->u.points.points, sel->u.points.points, sel->u.points.npoints * sel->u.points.ndim * 8);
+    }
+    else if (sel->type == ADIOS_SELECTION_WRITEBLOCK)
+    {
+        nsel->u.block.index = sel->u.block.index;
+        // NCSU ALACRITY-ADIOS: Copy the new fields
+        nsel->u.block.is_absolute_index = sel->u.block.is_absolute_index;
+        nsel->u.block.is_sub_pg_selection = sel->u.block.is_sub_pg_selection;
+        nsel->u.block.element_offset = sel->u.block.element_offset;
+        nsel->u.block.nelements = sel->u.block.nelements;
+    }
+    else if (sel->type == ADIOS_SELECTION_AUTO)
+    {
+        //TODO
+    }
+    else
+    {
+        //adios_error (err_invalid_argument, "Wrong ADIOS selection type.\n");
+    }
+
+    return nsel;
+}
+
+
+void a2sel_points_1DtoND_box (uint64_t npoints, uint64_t *pts1d,
+                                             int ndim, uint64_t *start, uint64_t *count, int global,
+                                             uint64_t *ptsNd)
+{
+    int n, d;
+    assert (ndim > 0);
+
+    uint64_t product[ndim];
+    product[ndim-1] = count[ndim-1];
+    for (d = ndim-2; d >= 0; d--) {
+        product[d] = product[d+1] * count[d];
+    }
+    // Note, product[0] is never used
+
+    // if global conversion, add start[] to each coordinate
+    uint64_t extraoffs[ndim];
+    for (d = 0; d < ndim; d++)
+    {
+        extraoffs[d] = (global ? start[d] : 0);
+    }
+
+    uint64_t *pN = ptsNd;
+    uint64_t *p1 = pts1d;
+    uint64_t rem;
+    for (n = 0; n < npoints; n++)
+    {
+        rem = *p1;
+        for (d = 0; d < ndim-1; d++)
+        {
+            *pN = rem / product[d+1] + extraoffs[d];
+            rem = rem % product[d+1];
+            pN++;
+        }
+        *pN = rem + extraoffs[ndim-1]; // last dimension is just the remainder
+        pN++;
+        p1++;
+    }
+ }
+
+ADIOS_SELECTION * a2sel_points_1DtoND (ADIOS_SELECTION * pointsinbox1D, int global)
+{
+    if (!pointsinbox1D)
+    {
+        adios_error (err_invalid_selection, "in adios_selection_points_1DtoND(): NULL selection provided\n");
+        return NULL;
+    }
+
+    if (pointsinbox1D->type != ADIOS_SELECTION_POINTS ||
+        !pointsinbox1D->u.points.container_selection)
+    {
+        adios_error (err_invalid_selection, "in adios_selection_points_1DtoND(): "
+                "Only point selections with a container selection can be converted\n");
+        return NULL;
+    }
+
+    if (pointsinbox1D->u.points.container_selection->type != ADIOS_SELECTION_BOUNDINGBOX)
+    {
+        adios_error (err_invalid_selection, "in adios_selection_points_1DtoND(): "
+                "Point selection's container can only be a bounding box\n");
+                return NULL;
+    }
+
+    if (pointsinbox1D->u.points.ndim != 1)
+    {
+        adios_error (err_invalid_selection, "in adios_selection_points_1DtoND(): "
+                "Only 1D points can be converted\n");
+                return NULL;
+    }
+
+    uint64_t *ptsNd = (uint64_t *) malloc (pointsinbox1D->u.points.container_selection->u.bb.ndim * pointsinbox1D->u.points.npoints * sizeof(uint64_t));
+    if (!ptsNd)
+    {
+        adios_error (err_no_memory, "in adios_selection_points_1DtoND(): "
+                "Not enough memory to allocate %d-dimensional point selection for %" PRIu64 "points\n",
+                pointsinbox1D->u.points.container_selection->u.bb.ndim, pointsinbox1D->u.points.npoints);
+                return NULL;
+    }
+
+    ADIOS_SELECTION * container = a2sel_copy (pointsinbox1D->u.points.container_selection);
+
+    a2sel_points_1DtoND_box (pointsinbox1D->u.points.npoints, pointsinbox1D->u.points.points,
+                                            container->u.bb.ndim, container->u.bb.start, container->u.bb.count, global,
+                                            ptsNd);
+    int ndim = container->u.bb.ndim;
+    if (global)
+    {
+        a2sel_free(container);
+        container = NULL;
+    }
+    ADIOS_SELECTION * result = a2sel_points(ndim, pointsinbox1D->u.points.npoints, ptsNd,
+                                            container, 1);
+    return result;
+}
diff --git a/src/core/a2sel.h b/src/core/a2sel.h
new file mode 100644
index 0000000..dfdadde
--- /dev/null
+++ b/src/core/a2sel.h
@@ -0,0 +1,33 @@
+/*
+ * a2sel.h  ADIOS_SELECTION functions
+ *
+ */
+
+#ifndef A2SEL_H_
+#define A2SEL_H_
+
+#include <public/adios_selection.h>
+
+ADIOS_SELECTION * a2sel_boundingbox (int ndim, const uint64_t *start, const uint64_t *count);
+ADIOS_SELECTION * a2sel_points (int ndim, uint64_t npoints, const uint64_t *points,
+                                ADIOS_SELECTION * container, int free_points_on_delete);
+ADIOS_SELECTION * a2sel_writeblock (int index);
+ADIOS_SELECTION * a2sel_auto (char *hints);
+void a2sel_free (ADIOS_SELECTION *sel);
+
+ADIOS_SELECTION * a2sel_copy (const ADIOS_SELECTION * sel);
+
+/** Create a list of N-dimensional global points from a list of 1D offsets in a bounding box defined by 'start' and 'count'.
+ *  Box must be ndim dimensional
+ *  pts1d is an array of npoints elements
+ *  ptsNd is an array of ndim * npoints elements, pre-allocated by caller
+ *  If global is 0 the result points are local in the bounding box,
+ *  otherwise they are global (i.e. the 'start' is added to all coordinates.
+ */
+void a2sel_points_1DtoND_box (uint64_t npoints, uint64_t *pts1d,
+                                             int ndim, uint64_t *start, uint64_t *count, int global,
+                                             uint64_t *ptsNd);
+
+ADIOS_SELECTION * a2sel_points_1DtoND (ADIOS_SELECTION * pointsinbox1D, int global);
+
+#endif /* A2SEL_H_ */
diff --git a/src/core/adios.c b/src/core/adios.c
index bef175f..0a14555 100644
--- a/src/core/adios.c
+++ b/src/core/adios.c
@@ -18,6 +18,7 @@
 #include "public/adios.h"
 #include "public/adios_error.h"
 #include "core/globals.h"
+#include "core/buffer.h"
 #include "core/common_adios.h"
 #include "core/adios_bp_v1.h"
 #include "core/adios_internals.h"
@@ -45,6 +46,10 @@ int adios_init (const char * config, MPI_Comm comm)
     return common_adios_init (config, comm);
 }
 
+int adios_is_initialized(void)
+{
+    return (adios_transports != NULL);
+}
 
 ///////////////////////////////////////////////////////////////////////////////
 // all XML file pieces will be provided by another series of calls
@@ -67,6 +72,13 @@ int adios_allocate_buffer (enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_alloc_when
 }
 
 ///////////////////////////////////////////////////////////////////////////////
+void adios_set_max_buffer_size (uint64_t max_buffer_size_MB)
+{
+    if (max_buffer_size_MB > 0)
+        adios_databuffer_set_max_size (max_buffer_size_MB * 1024L * 1024L);
+}
+
+///////////////////////////////////////////////////////////////////////////////
 int adios_open (int64_t * fd, const char * group_name, const char * name
                ,const char * mode, MPI_Comm comm
                )
@@ -125,95 +137,6 @@ int adios_write (int64_t fd_p, const char * name, const void * var)
     }
 
     retval = common_adios_write_byid (fd, v, var);
-#if 0
-    if (fd->mode == adios_mode_read)
-    {
-        if (   strcasecmp (name, fd->group->group_comm)
-            && v->is_dim != adios_flag_yes
-           )
-        {
-            adios_error (err_invalid_file_mode, "write attempted on %s in %s.  This was opened for read\n" ,name , fd->name);
-            return 1;
-        }
-    }
-
-    if (!var)
-    {
-        adios_error (err_invalid_data, "Invalid data (NULL pointer) passed to write for variable %s\n", name);
-
-        return 1;
-    }
-
-    if (v->data)
-    {
-        free (v->data);
-        v->data = 0;
-    }
-
-    if (v->dimensions)
-    {
-        v->data = var;
-    }
-    else
-    {
-        uint64_t element_size = adios_get_type_size (v->type, var);
-
-        switch (v->type)
-        {
-            case adios_byte:
-            case adios_short:
-            case adios_integer:
-            case adios_long:
-            case adios_unsigned_byte:
-            case adios_unsigned_short:
-            case adios_unsigned_integer:
-            case adios_unsigned_long:
-            case adios_real:
-            case adios_double:
-            case adios_long_double:
-            case adios_complex:
-            case adios_double_complex:
-                v->data = malloc (element_size);
-                if (!v->data)
-                {
-                    adios_error (err_no_memory, 
-                                 "In adios_write, cannot allocate %lld bytes to copy scalar %s\n",
-                                 element_size, v->name);
-
-                    return 0;
-                }
-
-                memcpy ((char *) v->data, var, element_size);
-                break;
-
-            case adios_string:
-                v->data = malloc (element_size + 1);
-                if (!v->data)
-                {
-                    adios_error (err_no_memory, 
-                                 "In adios_write, cannot allocate %lld bytes to copy string %s\n",
-                                 element_size, v->name);
-
-                    return 0;
-                }
-                ((char *) v->data) [element_size] = 0;
-                memcpy ((char *) v->data, var, element_size);
-                break;
-
-            default:
-                v->data = 0;
-                break;
-        }
-    }
-
-    common_adios_write (fd, v, var);
-    // v->data is set to NULL in the above call
-
-    if (fd->mode == adios_mode_write || fd->mode == adios_mode_append) 
-    {
-        adios_copy_var_written (fd->group, v);
-    }
-#endif
     return retval;
 }
 
@@ -400,6 +323,51 @@ int adios_delete_vardefs (int64_t id)
     return adios_errno;
 }
 
+// Return the expected size (in bytes) of a defined variable
+// It is simply the product of local dimensions and byte-size of type
+uint64_t adios_expected_var_size (int64_t var_id)
+{
+    adios_errno = err_no_error;
+    uint64_t size = 0;
+    if (var_id != 0) {
+        struct adios_var_struct * var = (struct adios_var_struct *) var_id;
+        if (var->transform_type != adios_transform_none) {
+            size = adios_transform_get_pre_transform_var_size (var);
+        } else {
+            size = adios_get_var_size (var, var->data);
+        }
+        if (size == 0 || adios_errno != err_no_error) {
+            if (adios_errno == err_invalid_var_as_dimension)
+            {
+                log_error ("%s: An array size depends on the actual value of the dimension variable. "
+                         "This will be known after adios_write() of that dimension variable.\n",
+                         __func__);
+            }
+        }
+        /*
+            enum ADIOS_DATATYPES original_var_type = adios_transform_get_var_original_type_var (var);
+            size = adios_get_type_size(original_var_type, NULL);
+            struct adios_dimension_struct * d = var->dimensions;
+            int i=1;
+            while (d)
+            {
+                size *= adios_get_dim_value (&d->dimension);
+                if (size == 0 || adios_errno != err_no_error) {
+                    adios_error (err_dimension_required, "%s: the %d. dimension of variable %s is not yet known. "
+                                 "The dimension will be known after adios_write() of that dimension variable\n",
+                                 __func__, i, var->name);
+                }
+                d = d->next;
+                i++;
+            }
+         */
+    } else {
+        adios_error (err_invalid_varid, "%s called with invalid variable ID\n", __func__);
+    }
+
+    return size;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 // adios_common_set_transform is in adios_internals.c
 // set the transform method for the selected variable (default is "none")
@@ -440,7 +408,7 @@ int adios_delete_attrdefs (int64_t id)
 
 int adios_define_attribute_byvalue (int64_t group, 
                             const char * name, const char * path, 
-                            enum ADIOS_DATATYPES type, int  nelems, void * values
+                            enum ADIOS_DATATYPES type, int  nelems, const void * values
                            )
 {
     adios_errno = err_no_error;
diff --git a/src/core/adios_bp_v1.c b/src/core/adios_bp_v1.c
index 8d6dc97..1a1c57b 100644
--- a/src/core/adios_bp_v1.c
+++ b/src/core/adios_bp_v1.c
@@ -23,7 +23,7 @@
 #include "public/adios_error.h"
 #include "transforms/adios_transforms_write.h"
 
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__CYGWIN__)
 #    define O_LARGEFILE 0
 #endif
 
@@ -38,7 +38,7 @@ static void alloc_aligned (struct adios_bp_buffer_struct_v1 * b, uint64_t size)
     b->allocated_buff_ptr = malloc (size + BYTE_ALIGN - 1);
     if (!b->allocated_buff_ptr)
     {
-        adios_error(err_no_memory, "BP_V1: Cannot allocate %llu\n",
+        adios_error(err_no_memory, "BP_V1: Cannot allocate %" PRIu64 "\n",
                 size);
         b->buff = 0;
         b->length = 0;
@@ -59,7 +59,7 @@ static void realloc_aligned (struct adios_bp_buffer_struct_v1 * b
                                     );
     if (!b->allocated_buff_ptr)
     {
-        adios_error(err_no_memory, "BP_V1: Cannot allocate %llu\n",
+        adios_error(err_no_memory, "BP_V1: Cannot allocate %" PRIu64 "\n",
                 size);
         b->buff = 0;
         b->length = 0;
@@ -120,7 +120,7 @@ int adios_parse_version (struct adios_bp_buffer_struct_v1 * b,
     {
         adios_error(err_invalid_buffer_version, "adios_parse_version requires"
                 "a buffer of at least "
-                "4 bytes.  Only %llu were provided\n", b->length);
+                "4 bytes.  Only %" PRIu64 " were provided\n", b->length);
         return 1;
     }
 
@@ -149,7 +149,7 @@ int adios_parse_index_offsets_v1 (struct adios_bp_buffer_struct_v1 * b)
     {
         adios_error(err_invalid_buffer_index, "adios_parse_index_offsets_v1"
                 "requires a buffer of at least 24 bytes."
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
         return 1;
     }
 
@@ -194,7 +194,7 @@ int adios_parse_process_group_index_v1 (struct adios_bp_buffer_struct_v1 * b,
     {
         adios_error(err_invalid_buffer_group, "adios_parse_process_group_index_v1"
                 "requires a buffer of at least 16 bytes."
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
         return 1;
     }
 
@@ -302,7 +302,7 @@ int adios_parse_vars_index_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_vars, "adios_parse_vars_index_v1"
                 "requires a buffer of at least 10 bytes."
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
         return 1;
     }
 
@@ -796,7 +796,7 @@ int adios_parse_attributes_index_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_attrs, "adios_parse_attributes_index_v1 "
                 "requires a buffer of at least 10 bytes."
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
 
         return 1;
     }
@@ -1181,7 +1181,7 @@ int adios_parse_process_group_header_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_group, "adios_parse_process_group_header_v1"
                 "requires a buffer of at least 24 bytes. "
-                "Only %llu were provided\n",b->length - b->offset);
+                "Only %" PRId64 " were provided\n",b->length - b->offset);
         return 1;
     }
 
@@ -1284,7 +1284,7 @@ int adios_parse_vars_header_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_vars, "adios_parse_vars_header_v1"
                 "requires a buffer of at least 12 bytes. "
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
 
         vars_header->count = 0;
         vars_header->length = 0;
@@ -1314,7 +1314,7 @@ int adios_parse_var_data_header_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_vars, "adios_parse_var_data_header_v1"
                 "requires a buffer of at least 23 bytes."
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
 
         return 1;
     }
@@ -1881,7 +1881,7 @@ int adios_parse_var_data_payload_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_vars, "adios_parse_var_data_payload_v1"
                 " for name %s path %s requires a buffer of at least "
-                "%llu bytes. Only %llu were provided\n", var_header->name, 
+                "%" PRIu64 " bytes. Only %" PRIu64 " were provided\n", var_header->name,
                 var_header->path, var_header->payload_size, 
                 b->length - b->offset);
 
@@ -1894,8 +1894,8 @@ int adios_parse_var_data_payload_v1 (struct adios_bp_buffer_struct_v1 * b
        )
     {
         adios_error(err_invalid_buffer_vars, "reading var name %s path %s"
-                "requires a buffer of at least %llu bytes.  "
-                "Only %llu were provided\n" , var_header->name, 
+                "requires a buffer of at least %" PRIu64 " bytes.  "
+                "Only %" PRIu64 " were provided\n" , var_header->name,
                 var_header->path, var_header->payload_size, 
                 payload_buffer_size);
 
@@ -1940,7 +1940,7 @@ int adios_parse_attributes_header_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_attrs, "adios_parse_attributes_header_v1"
                 "requires a buffer of at least 10 bytes.  "
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
 
         attrs_header->count = 0;
         attrs_header->length = 0;
@@ -1974,7 +1974,7 @@ int adios_parse_attribute_v1 (struct adios_bp_buffer_struct_v1 * b
     {
         adios_error(err_invalid_buffer_attrs, "adios_parse_attribute_data_payload_v1"
                 "requires a buffer of at least 15 bytes.  "
-                "Only %llu were provided\n", b->length - b->offset);
+                "Only %" PRId64 " were provided\n", b->length - b->offset);
 
         return 1;
     }
@@ -2130,7 +2130,7 @@ int adios_clear_attribute_v1 (struct adios_attribute_struct_v1 * attribute)
     if (attribute->value)
     {
         if (attribute->type == adios_string_array)
-            free_string_array (attribute->value, attribute->nelems);
+            a2s_free_string_array (attribute->value, attribute->nelems);
         else
             free (attribute->value);
         attribute->value = 0;
@@ -2216,7 +2216,7 @@ void adios_posix_read_version (struct adios_bp_buffer_struct_v1 * b)
 
     r = read (b->f, b->buff, 28);
     if (r != 28)
-        log_warn("could not read 28 bytes. read only: %llu\n", r);
+        log_warn("could not read 28 bytes. read only: %" PRIu64 "\n", r);
 }
 
 void adios_init_buffer_read_index_offsets (struct adios_bp_buffer_struct_v1 * b)
@@ -2261,7 +2261,7 @@ void adios_posix_read_vars_index (struct adios_bp_buffer_struct_v1 * b)
     r = read (b->f, b->buff, b->vars_size);
 
     if (r != b->vars_size)
-        log_warn("reading vars_index: wanted %llu, read: %llu\n"
+        log_warn("reading vars_index: wanted %" PRIu64 ", read: %" PRIu64 "\n"
                 ,b->vars_size, r
                 );
 }
@@ -2283,7 +2283,7 @@ void adios_posix_read_attributes_index (struct adios_bp_buffer_struct_v1 * b)
     r = read (b->f, b->buff, b->attrs_size);
 
     if (r != b->attrs_size)
-        log_warn("reading attributess_index: wanted %llu, read: %llu\n",
+        log_warn("reading attributess_index: wanted %" PRIu64 ", read: %" PRIu64 "\n",
                 b->attrs_size, r);
 }
 
@@ -2308,8 +2308,8 @@ uint64_t adios_posix_read_process_group (struct adios_bp_buffer_struct_v1 * b)
     if (pg_size != b->read_pg_size)
     {
         log_warn("adios_read_process_group: "
-                "Tried to read: %llu, but only got: "
-                "%llu error: %s\n", b->read_pg_size, 
+                "Tried to read: %" PRIu64 ", but only got: "
+                "%" PRIu64 " error: %s\n", b->read_pg_size,
                 pg_size, strerror(errno));
 
         pg_size = 0;
diff --git a/src/core/adios_clock.c b/src/core/adios_clock.c
new file mode 100644
index 0000000..482c74b
--- /dev/null
+++ b/src/core/adios_clock.c
@@ -0,0 +1,87 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+#include <assert.h>
+#include <ctype.h>
+#include <math.h>
+
+
+#include "config.h"
+#include "adios_clock.h"
+
+void adios_nanosleep (int sec, int nanosec)
+{
+#if HAVE_NANOSLEEP
+    struct timespec treq = {.tv_sec=sec, .tv_nsec=nanosec};
+    struct timespec trem;
+    int r;
+    r = nanosleep(&treq, &trem);
+    //log_debug("adios_nanosleep: Nanoslept for %d.%9.9d sec, r=%d, errno=%d\n",
+    //          treq.tv_sec, treq.tv_nsec, r, errno);
+    while (r == -1 && errno == EINTR) {
+        treq.tv_sec = trem.tv_sec;
+        treq.tv_nsec = trem.tv_nsec;
+        r = nanosleep (&treq, &trem);
+    }
+#else
+    if (sec>0) {
+        //log_debug("adios_nanosleep: Slept for %d seconds\n");
+        sleep(sec);
+    } else {
+        //log_debug("adios_nanosleep: Slept for 1 second\n");
+        sleep(1);
+    }
+
+#endif
+}   
+
+
+#include <sys/time.h>
+static struct timeval adios_timer_tp;
+double adios_gettime_double()
+{
+    gettimeofday(&adios_timer_tp, NULL);
+    return  ((double)adios_timer_tp.tv_sec + ((double)adios_timer_tp.tv_usec)/1000000.0);
+}
+
+unsigned long adios_gettime_ms()
+{
+    gettimeofday(&adios_timer_tp, NULL);
+    unsigned long ms = lround(adios_timer_tp.tv_usec/1000) + adios_timer_tp.tv_sec*1000;
+    return ms;
+}
+
+#if HAVE_CLOCK_GETTIME
+    int adios_clock_gettime(clockid_t clk_id, struct timespec *ts)
+    {
+        return clock_gettime(clk_id, ts);
+    }
+#else
+#   if HAVE_CLOCK_GET_TIME
+#       ifdef __MACH__
+#          include <mach/clock.h>
+#          include <mach/mach.h>
+#       else
+#           error "Don't know how to compile adios_clock_gettime if this is not OSX and clock_gettime() is not present"
+#       endif
+        int adios_clock_gettime(clockid_t clk_id, struct timespec *ts)
+        {
+            // OS X does not have clock_gettime, use clock_get_time
+            clock_serv_t cclock;
+            mach_timespec_t mts;
+            host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
+            clock_get_time(cclock, &mts);
+            mach_port_deallocate(mach_task_self(), cclock);
+            ts->tv_sec = mts.tv_sec;
+            ts->tv_nsec = mts.tv_nsec;
+            return 0;
+        }
+#   else
+#       error "Don't know how to compile adios_clock_gettime if neither clock_gettime() nor clock_get_time() is available"
+#   endif
+#endif
+
+
+
diff --git a/src/core/adios_clock.h b/src/core/adios_clock.h
new file mode 100644
index 0000000..10882b7
--- /dev/null
+++ b/src/core/adios_clock.h
@@ -0,0 +1,28 @@
+#ifndef ADIOS_CLOCK_H_
+#define ADIOS_CLOCK_H_
+
+#include <time.h>
+
+/* sleep for a bit */
+void adios_nanosleep (int sec, int nanosec);
+
+/* get current time as double (in seconds) */
+double adios_gettime_double();
+
+/* get current time in milliseconds as unsigned long */
+unsigned long adios_gettime_ms();
+
+#ifndef clockid_t
+    typedef int clockid_t;
+#endif
+#ifndef CLOCK_REALTIME
+#   define CLOCK_REALTIME 0
+#endif
+#ifndef CLOCK_MONOTONIC
+#   define CLOCK_MONOTONIC 1
+#endif
+
+/* create a timespec variable and pass the pointer here */
+int adios_clock_gettime(clockid_t clk_id, struct timespec *ts);
+
+#endif /* ADIOS_CLOCK_H */
diff --git a/src/core/adios_copyspec.c b/src/core/adios_copyspec.c
index 9e0482d..fd3c30d 100644
--- a/src/core/adios_copyspec.c
+++ b/src/core/adios_copyspec.c
@@ -214,14 +214,14 @@ int adios_copyspec_is_noop(const adios_subvolume_copy_spec *copy_spec) {
 
 // Extracts a selection corresponding to the subvolume within the source buffer
 ADIOS_SELECTION * adios_copyspec_to_src_selection(adios_subvolume_copy_spec *copy_spec) {
-    return common_read_selection_boundingbox(copy_spec->ndim,
+    return a2sel_boundingbox(copy_spec->ndim,
                                              bufdup(copy_spec->src_subv_offsets, sizeof(uint64_t), copy_spec->ndim),
                                              bufdup(copy_spec->subv_dims, sizeof(uint64_t), copy_spec->ndim));
 }
 
 // Extracts a selection corresponding to the subvolume within the destination buffer
 ADIOS_SELECTION * adios_copyspec_to_dst_selection(adios_subvolume_copy_spec *copy_spec) {
-    return common_read_selection_boundingbox(copy_spec->ndim,
+    return a2sel_boundingbox(copy_spec->ndim,
                                              bufdup(copy_spec->dst_subv_offsets, sizeof(uint64_t), copy_spec->ndim),
                                              bufdup(copy_spec->subv_dims, sizeof(uint64_t), copy_spec->ndim));
 }
diff --git a/src/core/adios_infocache.c b/src/core/adios_infocache.c
index 6d458d0..b0a06bc 100644
--- a/src/core/adios_infocache.c
+++ b/src/core/adios_infocache.c
@@ -11,7 +11,7 @@
 #include "core/adios_infocache.h"
 
 // Utilities
-static inline int min(int a, int b) { return a < b ? a : b; }
+//static inline int min(int a, int b) { return a < b ? a : b; }
 static inline int max(int a, int b) { return a > b ? a : b; }
 #define MALLOC_ARRAY(arr,type,len) { (arr) = (type *)malloc((len) * sizeof(type)); }
 #define CALLOC_ARRAY(arr,type,len) { (arr) = (type *)calloc((len), sizeof(type)); }
diff --git a/src/core/adios_internals.c b/src/core/adios_internals.c
index 6e897c1..ea033f7 100644
--- a/src/core/adios_internals.c
+++ b/src/core/adios_internals.c
@@ -24,6 +24,7 @@
 #include "core/adios_bp_v1.h"
 #include "core/qhashtbl.h"
 #include "core/adios_logger.h"
+#include "core/util.h"
 
 #ifdef DMALLOC
 #include "dmalloc.h"
@@ -39,6 +40,30 @@
 struct adios_method_list_struct * adios_methods = 0;
 struct adios_group_list_struct * adios_groups = 0;
 
+void adios_file_struct_init (struct adios_file_struct * fd)
+{
+    fd->name = NULL;
+    fd->subfile_index = -1; // subfile index is by default -1
+    fd->group = NULL;
+    fd->mode = adios_mode_write;
+    fd->pgs_written = NULL;
+    fd->current_pg = NULL;
+    fd->allocated_bufptr = NULL;
+    fd->buffer = NULL;
+    fd->shared_buffer = adios_flag_no;
+    fd->bufstrat = no_buffering;
+    fd->bufstate = buffering_stopped;
+    fd->offset = 0;
+    fd->bytes_written = 0;
+    fd->buffer_size = 0;
+    fd->pg_start = 0;
+    fd->vars_start = 0;
+    fd->nvars_written = 0;
+    fd->attrs_start = 0;
+    fd->nattrs_written = 0;
+    fd->comm = MPI_COMM_NULL;
+}
+
 int adios_int_is_var (const char * temp) // 1 == yes, 0 == no
 {
     if (!temp)
@@ -1008,7 +1033,7 @@ int adios_common_define_attribute_byvalue (int64_t group, const char * name
         ,const char * path
         ,enum ADIOS_DATATYPES type
         ,int nelems
-        ,void * values
+        ,const void * values
         )
 {
     struct adios_group_struct * g = (struct adios_group_struct *) group;
@@ -1035,7 +1060,7 @@ int adios_common_define_attribute_byvalue (int64_t group, const char * name
             if (type == adios_string_array) {
                 // need to copy strings from a char** array
                 int total_length;
-                attr->value = dup_string_array ((char**)values, nelems, &total_length);
+                attr->value = a2s_dup_string_array ((const char**)values, nelems, &total_length);
                 if (!attr->value) {
                     adios_error (err_no_memory, 
                             "Not enough memory to copy string array attribute %s/%s\n", 
@@ -1045,6 +1070,17 @@ int adios_common_define_attribute_byvalue (int64_t group, const char * name
                 }
                 attr->data_size = total_length;
 
+            } else if (type == adios_string) {
+                if (nelems > 1) {
+                    adios_error (err_no_memory, 
+                            "Defining a string attribute (%s/%s) with multiple elements is not supported.\n"
+                            "Define a 'string array' type attribute.\n",
+                            path, name);
+                }
+                attr->value = calloc (size+1,1);
+                memcpy (attr->value, values, size);
+                attr->data_size = size;
+
             } else {
                 attr->value = malloc (nelems*size);
                 memcpy (attr->value, values, nelems*size);
@@ -1322,8 +1358,6 @@ int adios_common_declare_group (int64_t * id, const char * name
     g->vars = NULL;
     g->vars_tail = NULL;
     g->hashtbl_vars = qhashtbl(500);
-    g->vars_written = NULL;
-    g->vars_written_tail = NULL;
     g->attributes = NULL;
     g->group_by = (coordination_var ? strdup (coordination_var) : 0L);
     g->group_comm = (coordination_comm ? strdup (coordination_comm) : 0L);
@@ -1335,10 +1369,12 @@ int adios_common_declare_group (int64_t * id, const char * name
     // ADIOS Schema
     g->meshs = NULL;
     g->mesh_count = 0;
+    g->last_buffer_size = 0;
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
     g->timing_obj = 0;
     g->prev_timing_obj = 0;
+    g->tv_size = 0;
 #endif
 
     *id = (int64_t) g;
@@ -1348,6 +1384,108 @@ int adios_common_declare_group (int64_t * id, const char * name
     return 1;
 }
 
+struct adios_pg_struct * add_new_pg_written (struct adios_file_struct * fd)
+{
+    struct adios_pg_struct * pg = (struct adios_pg_struct *) 
+        malloc (sizeof(struct adios_pg_struct));
+    if (pg) 
+    {
+        pg->pg_start_in_file = 0L;
+        pg->vars_written = NULL;
+        pg->vars_written_tail = NULL;
+        pg->next = NULL;
+        if (!fd->pgs_written) 
+        {
+            fd->pgs_written = pg;
+            fd->current_pg = pg;
+        }
+        else
+        {
+            // add to end of list pointed by current_pg
+            assert (fd->current_pg);
+            fd->current_pg->next = pg;
+            fd->current_pg = pg;
+        }
+    }
+    return pg;
+}
+
+void adios_free_pglist (struct adios_file_struct *fd)
+{
+    struct adios_pg_struct * pg = fd->pgs_written;
+    struct adios_pg_struct * pnext;
+    while (pg)
+    {
+        /* clean up copied variables */
+        struct adios_var_struct * vars_written = pg->vars_written;
+        while (vars_written)
+        {
+            if (vars_written->name)
+                free (vars_written->name);
+            if (vars_written->path)
+                free (vars_written->path);
+
+            while (vars_written->dimensions)
+            {
+                struct adios_dimension_struct * dimensions
+                    = vars_written->dimensions->next;
+
+                free (vars_written->dimensions);
+                vars_written->dimensions = dimensions;
+            }
+
+            // NCSU - Clear stat
+            if (vars_written->stats)
+            {
+                uint8_t j = 0, idx = 0;
+                uint8_t c = 0, count = adios_get_stat_set_count(vars_written->type);
+
+                for (c = 0; c < count; c ++)
+                {
+                    while (vars_written->bitmap >> j)
+                    {
+                        if ((vars_written->bitmap >> j) & 1)
+                        {
+                            if (j == adios_statistic_hist)
+                            {
+                                struct adios_hist_struct * hist = (struct adios_hist_struct *) (vars_written->stats[c][idx].data);
+                                free (hist->breaks);
+                                free (hist->frequencies);
+                                free (hist);
+                            }
+                            else
+                                free (vars_written->stats[c][idx].data);
+
+                            idx ++;
+                        }
+                        j ++;
+                    }
+                    free (vars_written->stats[c]);
+                }
+                free (vars_written->stats);
+            }
+
+            // NCSU ALACRITY-ADIOS - Clear transform metadata
+            adios_transform_clear_transform_var(vars_written);
+
+            if (vars_written->adata) {
+                free (vars_written->adata);
+                vars_written->data = vars_written->adata = 0;
+            }
+
+            struct adios_var_struct * v = vars_written->next;
+            free (vars_written);
+            vars_written = v;
+        }
+
+        pnext = pg->next;
+        free (pg);
+        pg = pnext;
+    }
+    fd->pgs_written = NULL;
+    fd->current_pg = NULL;
+}
+
 // Delete all attribute (definitions) from a group
 int adios_common_delete_attrdefs (struct adios_group_struct * g)
 {
@@ -1356,7 +1494,7 @@ int adios_common_delete_attrdefs (struct adios_group_struct * g)
         struct adios_attribute_struct * attr = g->attributes;
         g->attributes = g->attributes->next;
         if (attr->type == adios_string_array)
-            free_string_array (attr->value, attr->nelems);
+            a2s_free_string_array (attr->value, attr->nelems);
         else
             free (attr->value);
         free (attr->name);
@@ -1435,6 +1573,30 @@ int adios_common_delete_vardefs (struct adios_group_struct * g)
     return 0;
 }
 
+void adios_common_free_groupstruct (struct adios_group_struct * g)
+{
+
+    if (g->name)             free (g->name);
+    if (g->group_by)         free (g->group_by);
+    if (g->group_comm)       free (g->group_comm);
+    if (g->time_index_name)  free (g->time_index_name);
+    while (g->methods)
+    {
+        struct adios_method_list_struct * m = g->methods->next;
+        free (g->methods);
+        g->methods = m;
+    }
+
+    adios_common_delete_vardefs (g);
+    adios_common_delete_attrdefs (g);
+    g->hashtbl_vars->free(g->hashtbl_vars);
+#if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
+    adios_timing_destroy(g->timing_obj);
+    adios_timing_destroy(g->prev_timing_obj);
+#endif
+    free (g);
+}
+
 int adios_common_free_group (int64_t id)
 {
     struct adios_group_list_struct * root = adios_groups;
@@ -1469,92 +1631,13 @@ int adios_common_free_group (int64_t id)
         old_root->next = root->next;
     }
 
-    if (g->name)             free (g->name);
-    if (g->group_by)         free (g->group_by);
-    if (g->group_comm)       free (g->group_comm);
-    if (g->time_index_name)  free (g->time_index_name);
-
-    adios_common_delete_vardefs (g);
-    adios_common_delete_attrdefs (g);
-    g->hashtbl_vars->free(g->hashtbl_vars);
+    adios_common_free_groupstruct(g);
 
     free (root);
-    free (g);
 
     return 0;
 }
 
-void trim_spaces (char * str)
-{
-    char * t = str, * p = NULL;
-    while (*t != '\0')
-    {
-        if (*t == ' ')
-        {
-            p = t + 1;
-            strcpy (t, p);
-        }
-        else
-            t++;
-    }
-
-}
-
-static void tokenize_dimensions (const char * str, char *** tokens, int * count)
-{
-    if (!str)
-    {
-        *tokens = 0;
-        *count = 0;
-
-        return;
-    }
-
-    char * save_str = strdup (str);
-    char * t = save_str;
-    int i;
-
-    trim_spaces (save_str);
-
-    if (strlen (save_str) > 0)
-        *count = 1;
-    else
-    {
-        *tokens = 0;
-        *count = 0;
-        free (save_str);
-
-        return;
-    }
-
-    while (*t)
-    {
-        if (*t == ',')
-            (*count)++;
-        t++;
-    }
-
-    *tokens = (char **) malloc (sizeof (char **) * *count);
-    (*tokens) [0] = strdup (strtok (save_str, ","));
-    for (i = 1; i < *count; i++)
-    {
-        (*tokens) [i] = strdup (strtok (NULL, ","));
-    }
-
-    free (save_str);
-}
-
-static void cleanup_dimensions (char *** tokens, int * count)
-{
-    int i;
-    for (i = 0; i < *count; i++)
-    {
-        free ((*tokens) [i]);
-    }
-    free (*tokens);
-    *tokens = 0;
-    *count = 0;
-}
 
 int adios_common_define_var_characteristics (struct adios_group_struct * g
         , const char * var_name
@@ -1598,7 +1681,7 @@ int adios_common_define_var_characteristics (struct adios_group_struct * g
             int count;
             char ** bin_tokens = 0;
 
-            tokenize_dimensions (bin_intervals, &bin_tokens, &count);
+            a2s_tokenize_dimensions (bin_intervals, &bin_tokens, &count);
 
             if (!count)
             {
@@ -1638,6 +1721,7 @@ int adios_common_define_var_characteristics (struct adios_group_struct * g
                 hist->max = hist->min;
 
             var->bitmap = var->bitmap | (1 << adios_statistic_hist);
+            a2s_cleanup_dimensions (bin_tokens, count);
         }
         else
         {
@@ -1805,9 +1889,9 @@ int64_t adios_common_define_var (int64_t group_id, const char * name
 
         int i = 0;
 
-        tokenize_dimensions (dim_temp, &dim_tokens, &dim_count);
-        tokenize_dimensions (g_dim_temp, &g_dim_tokens, &g_dim_count);
-        tokenize_dimensions (lo_dim_temp, &lo_dim_tokens, &lo_dim_count);
+        a2s_tokenize_dimensions (dim_temp, &dim_tokens, &dim_count);
+        a2s_tokenize_dimensions (g_dim_temp, &g_dim_tokens, &g_dim_count);
+        a2s_tokenize_dimensions (lo_dim_temp, &lo_dim_tokens, &lo_dim_count);
 
         while (i < dim_count)
         {
@@ -1842,9 +1926,9 @@ int64_t adios_common_define_var (int64_t group_id, const char * name
                 free (v->name);
                 free (v->path);
                 free (v);
-                cleanup_dimensions (&dim_tokens, &dim_count);
-                cleanup_dimensions (&g_dim_tokens, &g_dim_count);
-                cleanup_dimensions (&lo_dim_tokens, &lo_dim_count);
+                a2s_cleanup_dimensions (dim_tokens, dim_count);
+                a2s_cleanup_dimensions (g_dim_tokens, g_dim_count);
+                a2s_cleanup_dimensions (lo_dim_tokens, lo_dim_count);
 
                 return 0;
             }
@@ -1853,9 +1937,9 @@ int64_t adios_common_define_var (int64_t group_id, const char * name
 
             i++;
         }
-        cleanup_dimensions (&dim_tokens, &dim_count);
-        cleanup_dimensions (&g_dim_tokens, &g_dim_count);
-        cleanup_dimensions (&lo_dim_tokens, &lo_dim_count);
+        a2s_cleanup_dimensions (dim_tokens, dim_count);
+        a2s_cleanup_dimensions (g_dim_tokens, g_dim_count);
+        a2s_cleanup_dimensions (lo_dim_tokens, lo_dim_count);
     }
 
     if (dim_temp)
@@ -1933,7 +2017,7 @@ static void buffer_write (char ** buffer, uint64_t * buffer_size
         else
         {
             adios_error (err_no_memory, "Cannot allocate memory in buffer_write.  "
-                    "Requested: %llu\n", *buffer_offset + size + 1000000);
+                    "Requested: %" PRIu64 "\n", *buffer_offset + size + 1000000);
             return;
         }
     }
@@ -2116,6 +2200,18 @@ uint32_t adios_calc_attribute_overhead_v1 (struct adios_attribute_struct * a)
     return overhead;
 }
 
+uint32_t adios_calc_attrs_overhead_v1 (struct adios_file_struct * fd)
+{
+    uint32_t overhead = 0;
+    struct adios_attribute_struct * a = fd->group->attributes;
+    while (a)
+    {
+        overhead += adios_calc_attribute_overhead_v1 (a);
+        a = a->next;
+    }
+    return overhead;
+}
+  
 uint64_t adios_calc_overhead_v1 (struct adios_file_struct * fd)
 {
     uint64_t overhead = 0;
@@ -2169,9 +2265,7 @@ uint64_t adios_calc_overhead_v1 (struct adios_file_struct * fd)
     return overhead;
 }
 
-int adios_write_process_group_header_v1 (struct adios_file_struct * fd
-        ,uint64_t total_size
-        )
+int adios_write_open_process_group_header_v1 (struct adios_file_struct * fd)
 {
     struct adios_group_struct * g = fd->group;
 
@@ -2179,6 +2273,9 @@ int adios_write_process_group_header_v1 (struct adios_file_struct * fd
     struct adios_var_struct * var;
     uint16_t len;
 
+    uint64_t total_size = 0L;
+    // actual total size is written when closing the group header
+    fd->pg_start = fd->offset;
     buffer_write (&fd->buffer, &fd->buffer_size, &fd->offset, &total_size, 8);
 
     flag = (g->adios_host_language_fortran == adios_flag_yes ? 'y' : 'n');
@@ -2253,12 +2350,38 @@ int adios_write_process_group_header_v1 (struct adios_file_struct * fd
     return 0;
 }
 
+int adios_write_close_process_group_header_v1 (struct adios_file_struct * fd)
+{
+    // close the PG area: write the total size to the beginning of the buffer
+    uint64_t size = fd->offset - fd->pg_start;
+    uint64_t offset = fd->pg_start;
+    buffer_write (&fd->buffer, &fd->buffer_size, &offset, &size, 8);
+    return 0;
+}
+
+/*static void print_pglist (struct adios_index_process_group_struct_v1 *pg_root, const char * print_header)
+{
+    printf ("%s: ", print_header);
+    while (pg_root) {
+        printf ("(id %d T %d)->",pg_root->process_id, pg_root->time_index);
+        pg_root = pg_root->next;
+    }
+    printf ("nil\n");
+}*/
+
 void index_append_process_group_v1 (
         struct adios_index_struct_v1 * index,
         struct adios_index_process_group_struct_v1 * item
         )
 {
+    //printf ("--- Append process group ----\n");
+    //print_pglist (index->pg_root, "Current");
+    //print_pglist (item,           "Item(s)");
     /* PG's are not merged, simply add to the end of the list */
+    /* This is actually not correct. PG's should be ordered by time, not by process ID,
+       but it is irrelevant because this information is never used anywhere. Right?
+       See bpdump output PG list is ordered by time for a single process output. 
+    */
     if (index->pg_root) {
         index->pg_tail->next = item;
     } else {
@@ -2270,7 +2393,13 @@ void index_append_process_group_v1 (
        (e.g. during global index aggregation in MPI_AGGREGATE)
        So don't do this: 
           item->next = 0; 
+          Instead, go down to last element to set as tail 
     */
+    while (item->next) {
+        item = item->next;
+        index->pg_tail = item;
+    }
+    //print_pglist (index->pg_root, "Result");
 }
 
 void index_append_var_v1 (
@@ -2348,10 +2477,10 @@ void index_append_var_v1 (
             uint64_t k1 = 0;
             uint64_t k2 = 0;
             struct adios_index_characteristic_struct_v1 * cend = c;
-            log_debug ("  old count=%llu item count=%llu\n", olditem->characteristics_count, item->characteristics_count);
+            log_debug ("  old count=%" PRIu64 " item count=%" PRIu64 "\n", olditem->characteristics_count, item->characteristics_count);
             while (k1 < olditem->characteristics_count || k2 < item->characteristics_count)
             {
-                log_debug ("  k1=%llu k2=%llu", k1, k2);
+                log_debug ("  k1=%" PRIu64 " k2=%" PRIu64 "", k1, k2);
                 /*
                 if (k2 >= item->characteristics_count || c1->time_index <= c2->time_index) {
                     memcpy (cend, c1, sizeof(struct adios_index_characteristic_struct_v1)); 
@@ -2998,8 +3127,10 @@ uint64_t adios_get_dim_value (struct adios_dimension_item_struct * dimension)
     return dim;
 }
 
-void adios_copy_var_written (struct adios_group_struct * g, struct adios_var_struct * var)
+void adios_copy_var_written (struct adios_file_struct * fd, struct adios_var_struct * var)
 {
+    assert(fd);
+    struct adios_group_struct * g = fd->group;
     assert(g);
     struct adios_var_struct * var_new;
 
@@ -3163,23 +3294,25 @@ void adios_copy_var_written (struct adios_group_struct * g, struct adios_var_str
 
     /* Insert new variable into the copy list */
 
+    struct adios_pg_struct * pg = fd->current_pg;
+    assert(pg);
     /* Note: many routines parse the list of variables through the ->next pointer with
      * "while (v) { ...; v=v->next }
      * So we don't make a double linked circular list, just a simple list, with
      * having an extra pointer to the tail
      */
-    if (!g->vars_written) {
-        // first variable: g->vars_written     : V => (null)
-        //                 g->vars_written_tail: V => (null)
+    if (!pg->vars_written) {
+        // first variable: pg->vars_written     : V => (null)
+        //                 pg->vars_written_tail: V => (null)
         var_new->next = NULL;
-        g->vars_written = var_new;      // V => (null)
-        g->vars_written_tail = var_new; // V => (null)
+        pg->vars_written = var_new;      // V => (null)
+        pg->vars_written_tail = var_new; // V => (null)
     } else {
        var_new->next = NULL;
        // append var to tail
-       g->vars_written_tail->next = var_new;  // g->vars => ... => tail => V => (null)
+       pg->vars_written_tail->next = var_new;  // pg->vars_written => ... => tail => V => (null)
        // new tail is var
-       g->vars_written_tail = var_new;
+       pg->vars_written_tail = var_new;
     }
 
 }
@@ -3352,213 +3485,233 @@ void adios_copy_var_written (struct adios_var_struct ** root
 }
 #endif
 
+
+/* Build the index from the variables written in all PGs during open()...close().
+
+   The method needs to supply the target file offsets for each PG in fd->pgs_written.
+
+   Since the removal of group_size(), the starting offset of a PG is not always known (so is always set to 0).
+   adios_write_var_header_v1() registers written variables with offsets relative to 0 not the
+   actual beginning of the PG.
+*/
 void adios_build_index_v1 (struct adios_file_struct * fd,
                            struct adios_index_struct_v1 * index)
 {
     struct adios_group_struct * g = fd->group;
-    struct adios_var_struct * v = g->vars_written;
-    struct adios_attribute_struct * a = g->attributes;
-    struct adios_index_process_group_struct_v1 * g_item;
-
-    g_item = (struct adios_index_process_group_struct_v1 *)
-        malloc (sizeof (struct adios_index_process_group_struct_v1));
-    g_item->group_name = (g->name ? strdup (g->name) : 0L);
-    g_item->adios_host_language_fortran = g->adios_host_language_fortran;
-    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->offset_in_file = fd->pg_start_in_file;
-    g_item->next = 0;
-
-    // build the groups and vars index
-    index_append_process_group_v1 (index, g_item);
-
-    while (v)
-    {
-        // only add items that were written to the index
-        if (v->write_offset != 0)
+    struct adios_pg_struct * pg = fd->pgs_written;
+    int pgid = 0;
+
+    while (pg)
+    {
+        /* Create a PG entry in index */
+        struct adios_index_process_group_struct_v1 * g_item;
+        g_item = (struct adios_index_process_group_struct_v1 *)
+            malloc (sizeof (struct adios_index_process_group_struct_v1));
+        g_item->group_name = (g->name ? strdup (g->name) : 0L);
+        g_item->adios_host_language_fortran = g->adios_host_language_fortran;
+        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->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);
+
+        /* For each written variable, create a variable entry in the index */
+        struct adios_var_struct * v = pg->vars_written;
+        while (v)
         {
-            struct adios_index_var_struct_v1 * v_index;
-            v_index = malloc (sizeof (struct adios_index_var_struct_v1));
-            v_index->characteristics = malloc (
-                    sizeof (struct adios_index_characteristic_struct_v1)
-                    );
-
-            v_index->id = v->id;
-            v_index->group_name = (g->name ? strdup (g->name) : 0L);
-            v_index->var_name = (v->name ? strdup (v->name) : 0L);
-            v_index->var_path = (v->path ? strdup (v->path) : 0L);
-            v_index->type = v->type;
-            v_index->characteristics_count = 1;
-            v_index->characteristics_allocated = 1;
-            v_index->characteristics [0].offset = v->write_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
-            // only numerical values
-            struct adios_var_struct * old_var = v->parent_var;
-            v_index->characteristics [0].payload_offset = v->write_offset
-                + adios_calc_var_overhead_v1 (old_var)
-                - strlen (old_var->path)  // take out the length of path defined in XML
-                + strlen (v->path); // add length of the actual, current path of this var
-            v_index->characteristics [0].file_index = fd->subfile_index;
-            v_index->characteristics [0].time_index = g_item->time_index;
-
-            v_index->characteristics [0].value = 0;
-            v_index->characteristics [0].dims.count = 0;
-
-            // NCSU - Initializing stat related info in index
-            v_index->characteristics [0].bitmap = 0;
-            v_index->characteristics [0].stats = 0;
-            // NCSU ALACRITY-ADIOS - Initialize the transform metadata
-            adios_transform_init_transform_characteristic(&v_index->characteristics[0].transform);
-            //v_index->characteristics [0].transform_type = adios_transform_none;
-
-            uint64_t size = adios_get_type_size (v->type, v->data);
-            switch (v->type)
+            // 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)
             {
-                case adios_byte:
-                case adios_unsigned_byte:
-                case adios_short:
-                case adios_unsigned_short:
-                case adios_integer:
-                case adios_unsigned_integer:
-                case adios_long:
-                case adios_unsigned_long:
-                case adios_real:
-                case adios_double:
-                case adios_long_double:
-                case adios_complex:
-                case adios_double_complex:
-                    if (v->dimensions)
-                    {
-                        uint8_t c;
-                        uint8_t j;
-                        struct adios_dimension_struct * d = v->dimensions;
+                struct adios_index_var_struct_v1 * v_index;
+                v_index = malloc (sizeof (struct adios_index_var_struct_v1));
+                v_index->characteristics = malloc (
+                        sizeof (struct adios_index_characteristic_struct_v1)
+                        );
 
-                        // NCSU - Copy statistics from var struct to index
-                        enum ADIOS_DATATYPES original_var_type = adios_transform_get_var_original_type_var (v);
+                v_index->id = v->id;
+                v_index->group_name = (g->name ? strdup (g->name) : 0L);
+                v_index->var_name = (v->name ? strdup (v->name) : 0L);
+                v_index->var_path = (v->path ? strdup (v->path) : 0L);
+                v_index->type = v->type;
+                v_index->characteristics_count = 1;
+                v_index->characteristics_allocated = 1;
+                v_index->characteristics [0].offset = v->write_offset + pg->pg_start_in_file;
+                // 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
+                // only numerical values
+                struct adios_var_struct * old_var = v->parent_var;
+                v_index->characteristics [0].payload_offset = v_index->characteristics [0].offset
+                    + adios_calc_var_overhead_v1 (old_var)
+                    - strlen (old_var->path)  // take out the length of path defined in XML
+                    + strlen (v->path); // add length of the actual, current path of this var
+                v_index->characteristics [0].file_index = fd->subfile_index;
+                v_index->characteristics [0].time_index = g_item->time_index;
+
+                v_index->characteristics [0].value = 0;
+                v_index->characteristics [0].dims.count = 0;
+
+                // NCSU - Initializing stat related info in index
+                v_index->characteristics [0].bitmap = 0;
+                v_index->characteristics [0].stats = 0;
+                // NCSU ALACRITY-ADIOS - Initialize the transform metadata
+                adios_transform_init_transform_characteristic(&v_index->characteristics[0].transform);
+                //v_index->characteristics [0].transform_type = adios_transform_none;
+
+                uint64_t size = adios_get_type_size (v->type, v->data);
+                switch (v->type)
+                {
+                    case adios_byte:
+                    case adios_unsigned_byte:
+                    case adios_short:
+                    case adios_unsigned_short:
+                    case adios_integer:
+                    case adios_unsigned_integer:
+                    case adios_long:
+                    case adios_unsigned_long:
+                    case adios_real:
+                    case adios_double:
+                    case adios_long_double:
+                    case adios_complex:
+                    case adios_double_complex:
+                        if (v->dimensions)
+                        {
+                            uint8_t c;
+                            uint8_t j;
+                            struct adios_dimension_struct * d = v->dimensions;
 
-                        uint8_t count = adios_get_stat_set_count(original_var_type);
-                        uint8_t idx = 0;
-                        uint64_t characteristic_size;
+                            // NCSU - Copy statistics from var struct to index
+                            enum ADIOS_DATATYPES original_var_type = adios_transform_get_var_original_type_var (v);
 
-                        v_index->characteristics [0].bitmap = v->bitmap;
-                        v_index->characteristics [0].stats = malloc (count * sizeof(struct adios_index_characteristics_stat_struct *));
+                            uint8_t count = adios_get_stat_set_count(original_var_type);
+                            uint8_t idx = 0;
+                            uint64_t characteristic_size;
 
-                        // Set of characteristics will be repeated thrice for complex numbers
-                        for (c = 0; c < count; c ++)
-                        {
-                            v_index->characteristics [0].stats[c] = calloc(ADIOS_STAT_LENGTH, sizeof (struct adios_index_characteristics_stat_struct));
+                            v_index->characteristics [0].bitmap = v->bitmap;
+                            v_index->characteristics [0].stats = malloc (count * sizeof(struct adios_index_characteristics_stat_struct *));
 
-                            j = idx = 0;
-                            while (v_index->characteristics [0].bitmap >> j)
+                            // Set of characteristics will be repeated thrice for complex numbers
+                            for (c = 0; c < count; c ++)
                             {
-                                if ((v_index->characteristics [0].bitmap >> j) & 1)
+                                v_index->characteristics [0].stats[c] = calloc(ADIOS_STAT_LENGTH, sizeof (struct adios_index_characteristics_stat_struct));
+
+                                j = idx = 0;
+                                while (v_index->characteristics [0].bitmap >> j)
                                 {
-                                    if (v->stats[c][idx].data != NULL)
+                                    if ((v_index->characteristics [0].bitmap >> j) & 1)
                                     {
-                                        if (j == adios_statistic_hist)
+                                        if (v->stats[c][idx].data != NULL)
                                         {
-                                            v_index->characteristics [0].stats[c][idx].data = (struct adios_index_characteristics_hist_struct *) malloc (sizeof(struct adios_index_characteristics_hist_struct));
-
-                                            struct adios_hist_struct * v_hist = v->stats[c][idx].data;
-                                            struct adios_hist_struct * v_index_hist = v_index->characteristics [0].stats[c][idx].data;
-
-                                            v_index_hist->min = v_hist->min;
-                                            v_index_hist->max = v_hist->max;
-                                            v_index_hist->num_breaks = v_hist->num_breaks;
-
-                                            v_index_hist->frequencies = malloc ((v_hist->num_breaks + 1) * adios_get_type_size(adios_unsigned_integer, ""));
-                                            memcpy (v_index_hist->frequencies, v_hist->frequencies, (v_hist->num_breaks + 1) * adios_get_type_size(adios_unsigned_integer, ""));
-                                            v_index_hist->breaks = malloc ((v_hist->num_breaks) * adios_get_type_size(adios_double, ""));
-                                            memcpy (v_index_hist->breaks, v_hist->breaks, (v_hist->num_breaks) * adios_get_type_size(adios_double, ""));
+                                            if (j == adios_statistic_hist)
+                                            {
+                                                v_index->characteristics [0].stats[c][idx].data = (struct adios_index_characteristics_hist_struct *) malloc (sizeof(struct adios_index_characteristics_hist_struct));
+
+                                                struct adios_hist_struct * v_hist = v->stats[c][idx].data;
+                                                struct adios_hist_struct * v_index_hist = v_index->characteristics [0].stats[c][idx].data;
+
+                                                v_index_hist->min = v_hist->min;
+                                                v_index_hist->max = v_hist->max;
+                                                v_index_hist->num_breaks = v_hist->num_breaks;
+
+                                                v_index_hist->frequencies = malloc ((v_hist->num_breaks + 1) * adios_get_type_size(adios_unsigned_integer, ""));
+                                                memcpy (v_index_hist->frequencies, v_hist->frequencies, (v_hist->num_breaks + 1) * adios_get_type_size(adios_unsigned_integer, ""));
+                                                v_index_hist->breaks = malloc ((v_hist->num_breaks) * adios_get_type_size(adios_double, ""));
+                                                memcpy (v_index_hist->breaks, v_hist->breaks, (v_hist->num_breaks) * adios_get_type_size(adios_double, ""));
+                                            }
+                                            else
+                                            {
+                                                characteristic_size = adios_get_stat_size(v->stats[c][idx].data, original_var_type, j);
+                                                v_index->characteristics [0].stats[c][idx].data = malloc (characteristic_size);
+                                                memcpy (v_index->characteristics [0].stats[c][idx].data, v->stats[c][idx].data, characteristic_size);
+                                            }
+
+                                            idx ++;
                                         }
-                                        else
-                                        {
-                                            characteristic_size = adios_get_stat_size(v->stats[c][idx].data, original_var_type, j);
-                                            v_index->characteristics [0].stats[c][idx].data = malloc (characteristic_size);
-                                            memcpy (v_index->characteristics [0].stats[c][idx].data, v->stats[c][idx].data, characteristic_size);
-                                        }
-
-                                        idx ++;
                                     }
+                                    j ++;
                                 }
-                                j ++;
                             }
-                        }
-                        // NCSU - End of copy, for statistics
+                            // NCSU - End of copy, for statistics
 
-                        // NCSU ALACRITY-ADIOS - copy transform type field
-                        adios_transform_copy_transform_characteristic(&v_index->characteristics[0].transform, v);
+                            // NCSU ALACRITY-ADIOS - copy transform type field
+                            adios_transform_copy_transform_characteristic(&v_index->characteristics[0].transform, v);
 
-                        c = count_dimensions (v->dimensions);
-                        v_index->characteristics [0].dims.count = c;
-                        // (local, global, local offset)
-                        v_index->characteristics [0].dims.dims = malloc
-                            (3 * 8 * v_index->characteristics [0].dims.count);
-                        for (j = 0; j < c; j++)
-                        {
-                            v_index->characteristics [0].dims.dims [j * 3 + 0] =
-                                adios_get_dim_value (&d->dimension);
-                            v_index->characteristics [0].dims.dims [j * 3 + 1] =
-                                adios_get_dim_value (&d->global_dimension);
-                            v_index->characteristics [0].dims.dims [j * 3 + 2] =
-                                adios_get_dim_value (&d->local_offset);
+                            c = count_dimensions (v->dimensions);
+                            v_index->characteristics [0].dims.count = c;
+                            // (local, global, local offset)
+                            v_index->characteristics [0].dims.dims = malloc
+                                (3 * 8 * v_index->characteristics [0].dims.count);
+                            for (j = 0; j < c; j++)
+                            {
+                                v_index->characteristics [0].dims.dims [j * 3 + 0] =
+                                    adios_get_dim_value (&d->dimension);
+                                v_index->characteristics [0].dims.dims [j * 3 + 1] =
+                                    adios_get_dim_value (&d->global_dimension);
+                                v_index->characteristics [0].dims.dims [j * 3 + 2] =
+                                    adios_get_dim_value (&d->local_offset);
+
+                                d = d->next;
+                            }
+                            v_index->characteristics [0].value = 0;
+                        }
 
-                            d = d->next;
+                        if (v->data)
+                        {
+                            // NCSU - Copy statistics from var struct to index
+                            v_index->characteristics [0].bitmap = 0;
+                            v_index->characteristics [0].stats = 0;
+                            // NCSU ALACRITY-ADIOS - Clear the transform metadata
+                            // This is probably redundant with above code, but do it anyway to be safe
+                            adios_transform_clear_transform_characteristic(&v_index->characteristics[0].transform);
+
+                            v_index->characteristics [0].value = malloc (size);
+                            memcpy (v_index->characteristics [0].value, v->data
+                                    ,size
+                                   );
+                            v_index->characteristics [0].dims.count = 0;
+                            v_index->characteristics [0].dims.dims = 0;
                         }
-                        v_index->characteristics [0].value = 0;
-                    }
 
-                    if (v->data)
-                    {
-                        // NCSU - Copy statistics from var struct to index
-                        v_index->characteristics [0].bitmap = 0;
-                        v_index->characteristics [0].stats = 0;
-                        // NCSU ALACRITY-ADIOS - Clear the transform metadata
-                        // This is probably redundant with above code, but do it anyway to be safe
-                        adios_transform_clear_transform_characteristic(&v_index->characteristics[0].transform);
-
-                        v_index->characteristics [0].value = malloc (size);
-                        memcpy (v_index->characteristics [0].value, v->data
-                                ,size
-                               );
-                        v_index->characteristics [0].dims.count = 0;
-                        v_index->characteristics [0].dims.dims = 0;
-                    }
+                        break;
 
-                    break;
+                    case adios_string:
+                        {
+                            v_index->characteristics [0].value = malloc (size + 1);
+                            memcpy (v_index->characteristics [0].value, v->data, size);
+                            ((char *) (v_index->characteristics [0].value)) [size] = 0;
 
-                case adios_string:
-                    {
-                        v_index->characteristics [0].value = malloc (size + 1);
-                        memcpy (v_index->characteristics [0].value, v->data, size);
-                        ((char *) (v_index->characteristics [0].value)) [size] = 0;
+                            break;
+                        }
+                    case adios_string_array:
+                        {
+                            adios_error (err_unspecified, "String arrays are not supported for variables %s:%s:%d\n",
+                                    __FILE__,__func__, __LINE__);
+                        }
+                    default:
+                        {
+                            adios_error (err_unspecified, "Reached unexpected branch in %s:%s:%d\n",
+                                    __FILE__,__func__, __LINE__);
+                        }
+                }
+                v_index->next = 0;
 
-                        break;
-                    }
-                case adios_string_array:
-                    {
-                        adios_error (err_unspecified, "String arrays are not supported for variables %s:%s:%d\n",
-                                __FILE__,__func__, __LINE__);
-                    }
-                default:
-                    {
-                        adios_error (err_unspecified, "Reached unexpected branch in %s:%s:%d\n",
-                                __FILE__,__func__, __LINE__);
-                    }
+                // this fn will either take ownership for free
+                log_debug ("build index var %s/%s\n", v_index->var_path, v_index->var_name);
+                index_append_var_v1 (index, v_index, 0);
             }
-            v_index->next = 0;
 
-            // this fn will either take ownership for free
-            log_debug ("build index var %s/%s\n", v_index->var_path, v_index->var_name);
-            index_append_var_v1 (index, v_index, 0);
+            v = v->next;
         }
 
-        v = v->next;
+        pg = pg->next;
+        pgid++;
     }
 
+    struct adios_attribute_struct * a = g->attributes;
     while (a)
     {
         // only add items that were written to the index
@@ -3578,13 +3731,15 @@ 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);
 
-            a_index->characteristics [0].offset = a->write_offset;
+            // pg_file_offsets [pgid] is now the last PG's start offset, which is the base
+            // offset for attributes
+            a_index->characteristics [0].offset = a->write_offset + fd->current_pg->pg_start_in_file;
             /*FIXME: this below cannot be correct, calc includes the data size 
                      itself and the payload offset should point to the beginning 
                      of the actual data. ADIOS never accesses this data though */
-            a_index->characteristics [0].payload_offset = a->write_offset + adios_calc_attribute_overhead_v1 (a);
+            a_index->characteristics [0].payload_offset = a_index->characteristics [0].offset  + adios_calc_attribute_overhead_v1 (a);
             a_index->characteristics [0].file_index = fd->subfile_index;
             a_index->characteristics [0].time_index = 0;
 
@@ -4197,7 +4352,7 @@ int adios_write_index_v1 (char ** buffer
 
         for (i = 0; i < attrs_root->characteristics_count; i++)
         {
-            uint64_t size;
+            uint64_t size = 0;
             uint8_t characteristic_set_count = 0;
             uint32_t characteristic_set_length = 0;
 
@@ -4902,7 +5057,7 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
     int32_t map[32];
     memset (map, -1, sizeof(map));
 
-#if 1
+
 #define HIST(a) \
     { \
         int low, high, mid; \
@@ -4929,10 +5084,13 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
             hist->frequencies[low + 1] += 1; \
         } \
     }
-#endif
 
-#if 1
-#define ADIOS_STATISTICS(a,b) \
+
+
+# define CHECK_FLOAT() (isnan (data [size]) || !isfinite (data [size]))
+# define CHECK_INT() (0)
+
+#define ADIOS_STATISTICS(a,b,NON_FINITE_CHECK) \
 {\
     a * data = (a *) var->data; \
     int i, j; \
@@ -4963,15 +5121,15 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
             hist = (struct adios_hist_struct *) stats[map[adios_statistic_hist]].data; \
             hist->frequencies = calloc ((hist->num_breaks + 1), adios_get_type_size(adios_unsigned_integer, "")); \
         } \
-        int finite = 0; \
+        int have_finite_value = 0; \
         size = 0; \
         while ((size * b) < total_size) \
         { \
-            if (isnan (data [size]) || !isfinite (data [size])) {\
+            if (NON_FINITE_CHECK()) {\
                 size ++; \
                 continue; \
             }\
-            if (!finite) { \
+            if (!have_finite_value) { \
                 *min = data [size]; \
                 *max = data [size]; \
                 *sum = data [size]; \
@@ -4979,7 +5137,7 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
                 *cnt = *cnt + 1; \
                 if (map[adios_statistic_hist] != -1) \
                 HIST(data [size]); \
-                finite = 1; \
+                have_finite_value = 1; \
                 size ++; \
                 continue; \
             } \
@@ -4995,10 +5153,10 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
             size++; \
         } \
         if (map[adios_statistic_finite] != -1) \
-        * ((uint8_t * ) stats[map[adios_statistic_finite]].data) = finite; \
+        * ((uint8_t * ) stats[map[adios_statistic_finite]].data) = have_finite_value; \
         return 0; \
     }
-#else
+
 #define MIN_MAX(a,b)\
     {\
         a * data = (a *) var->data; \
@@ -5010,42 +5168,42 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
         *max = data [0]; \
         return 0; \
     }
-#endif
+
 
     switch (original_var_type)
     {
         case adios_byte:
-            ADIOS_STATISTICS(int8_t,1)
+            ADIOS_STATISTICS(int8_t,1,CHECK_INT)
 
         case adios_unsigned_byte:
-                ADIOS_STATISTICS(uint8_t,1)
+            ADIOS_STATISTICS(uint8_t,1,CHECK_INT)
 
         case adios_short:
-                    ADIOS_STATISTICS(int16_t,2)
+            ADIOS_STATISTICS(int16_t,2,CHECK_INT)
 
         case adios_unsigned_short:
-                        ADIOS_STATISTICS(uint16_t,2)
+            ADIOS_STATISTICS(uint16_t,2,CHECK_INT)
 
         case adios_integer:
-                            ADIOS_STATISTICS(int32_t,4)
+            ADIOS_STATISTICS(int32_t,4,CHECK_INT)
 
         case adios_unsigned_integer:
-                                ADIOS_STATISTICS(uint32_t,4)
+            ADIOS_STATISTICS(uint32_t,4,CHECK_INT)
 
         case adios_long:
-                                    ADIOS_STATISTICS(int64_t,8)
+            ADIOS_STATISTICS(int64_t,8,CHECK_INT)
 
         case adios_unsigned_long:
-                                        ADIOS_STATISTICS(uint64_t,8)
+            ADIOS_STATISTICS(uint64_t,8,CHECK_INT)
 
         case adios_real:
-                                            ADIOS_STATISTICS(float,4)
+            ADIOS_STATISTICS(float,4,CHECK_FLOAT)
 
         case adios_double:
-                                                ADIOS_STATISTICS(double,8)
+            ADIOS_STATISTICS(double,8,CHECK_FLOAT)
 
         case adios_long_double:
-                                                    ADIOS_STATISTICS(long double,16)
+            ADIOS_STATISTICS(long double,16,CHECK_FLOAT)
 
         case adios_complex:
         {
@@ -5332,7 +5490,8 @@ uint64_t adios_write_var_header_v1 (struct adios_file_struct * fd
     uint16_t len;
 
     uint64_t start = fd->offset;  // save to write the size
-    v->write_offset = fd->offset + fd->base_offset; // save offset in file
+    v->write_offset = fd->offset; // save offset relative to beginning of buffer
+                                  // PG start offset in file will be added later in adios_build_index_v1()
     fd->offset += 8;              // save space for the size
     total_size += 8;              // makes final parsing easier
 
@@ -5371,7 +5530,7 @@ uint64_t adios_write_var_header_v1 (struct adios_file_struct * fd
 
     buffer_write (&fd->buffer, &fd->buffer_size, &start, &total_size, 8);
 
-    fd->vars_written++;
+    fd->nvars_written++;
 
     if (fd->bytes_written < fd->offset)
         fd->bytes_written = fd->offset;
@@ -5406,7 +5565,8 @@ int adios_write_attribute_v1 (struct adios_file_struct * fd
 
     // save space for attr length
     start = fd->offset;
-    a->write_offset = fd->offset + fd->base_offset; // save offset in file
+    a->write_offset = fd->offset; // save offset relative to beginning of buffer
+                                  // PG start offset in file will be added later in adios_build_index_v1()
     fd->offset += 4;
 
     buffer_write (&fd->buffer, &fd->buffer_size, &fd->offset, &a->id, 4);
@@ -5447,7 +5607,7 @@ int adios_write_attribute_v1 (struct adios_file_struct * fd
         {
             buffer_write (&fd->buffer, &fd->buffer_size, &fd->offset, &a->nelems, 4);
             size += 4;
-            uint32_t t = a->data_size + 5*a->nelems;
+            //uint32_t t = a->data_size + 5*a->nelems;
             /* t = for all strings, sum of 
                    length of string + terminating 0 + 16bit length info */
             char ** v = (char**) a->value;
@@ -5478,7 +5638,7 @@ int adios_write_attribute_v1 (struct adios_file_struct * fd
     // put in the size we have put in for this attribute
     buffer_write (&fd->buffer, &fd->buffer_size, &start, &size, 4);
 
-    fd->vars_written++;
+    fd->nattrs_written++;
 
     if (fd->bytes_written < fd->offset)
         fd->bytes_written = fd->offset;
@@ -5488,7 +5648,7 @@ int adios_write_attribute_v1 (struct adios_file_struct * fd
 
 int adios_write_open_vars_v1 (struct adios_file_struct * fd)
 {
-    fd->vars_written = 0;
+    fd->nvars_written = 0;
 
     // it is now setup to write the vars and then the attrs on close
     fd->vars_start = fd->offset;
@@ -5505,18 +5665,19 @@ int adios_write_close_vars_v1 (struct adios_file_struct * fd)
 {
     // close the var area (count and total size) and write the attributes
     uint64_t size = fd->offset - fd->vars_start;
-    buffer_write (&fd->buffer, &fd->buffer_size, &fd->vars_start, &fd->vars_written, 4);
+    uint64_t offset = fd->vars_start;
+    buffer_write (&fd->buffer, &fd->buffer_size, &offset, &fd->nvars_written, 4);
 
-    buffer_write (&fd->buffer, &fd->buffer_size, &fd->vars_start, &size, 8);
+    buffer_write (&fd->buffer, &fd->buffer_size, &offset, &size, 8);
 
     return 0;
 }
 
 int adios_write_open_attributes_v1 (struct adios_file_struct * fd)
 {
-    fd->vars_start = fd->offset;   // save the start of attr area for size
+    fd->attrs_start = fd->offset;   // save the start of attr area for size
     fd->offset += (4 + 8);         // space to write the count and size
-    fd->vars_written = 0;
+    fd->nattrs_written = 0;
 
     if (fd->bytes_written < fd->offset)
         fd->bytes_written = fd->offset;
@@ -5527,10 +5688,11 @@ int adios_write_open_attributes_v1 (struct adios_file_struct * fd)
 int adios_write_close_attributes_v1 (struct adios_file_struct * fd)
 {
     // write attribute count and total size
-    uint64_t size = fd->offset - fd->vars_start;
-    buffer_write (&fd->buffer, &fd->buffer_size, &fd->vars_start, &fd->vars_written, 4);
+    uint64_t size = fd->offset - fd->attrs_start;
+    uint64_t offset = fd->attrs_start;
+    buffer_write (&fd->buffer, &fd->buffer_size, &offset, &fd->nattrs_written, 4);
 
-    buffer_write (&fd->buffer, &fd->buffer_size, &fd->vars_start, &size, 8);
+    buffer_write (&fd->buffer, &fd->buffer_size, &offset, &size, 8);
 
     return 0;
 }
@@ -5578,7 +5740,7 @@ int adios_multiply_dimensions (uint64_t * size
             return 1;
 
         default:
-            adios_error (err_invalid_var_as_dimension,
+            adios_error (err_invalid_type_as_dimension,
                     "Invalid datatype for array dimension on var %s: %s\n",
                     var->name,
                     adios_type_to_string_int (type));
@@ -5915,7 +6077,8 @@ int adios_common_define_mesh_timeSeriesFormat (const char * timeseries,
     char * ptr_end;
     d1 = strdup (timeseries);
 
-    double tmp_d = strtod (d1, &ptr_end);
+    /*double tmp_d = */
+    strtod (d1, &ptr_end);
     if (!(ptr_end && ptr_end[0]==0))
     {
         adios_conca_mesh_att_nam(&format_att_nam, name, "time-series-format");
@@ -5969,13 +6132,13 @@ int adios_common_define_mesh_timeScale (const char * timescale,
     d1 = strdup (timescale);
     char * ptr_end;
     c = strtok (d1, ",");
+    double tmp_d2;
 
     while (c)
     {
         struct adios_var_struct * var = 0;
         //if (adios_int_is_num (c))
-        double tmp_d1;
-        tmp_d1 = strtod (c,&ptr_end);
+        tmp_d2 = strtod (c,&ptr_end);
         if (!(ptr_end && ptr_end[0]==0))
         {
             var = adios_find_var_by_name (new_group, c);
@@ -6021,7 +6184,6 @@ int adios_common_define_mesh_timeScale (const char * timescale,
         c = strtok (NULL, ",");
     }
     if (counter == 3){
-        double tmp_d2;
         time_start_att_val = strdup(gettscalefrom0);
         adios_conca_mesh_att_nam(&time_start_att_nam, name, "time-scale-start");
         // if this is string
@@ -6030,7 +6192,7 @@ int adios_common_define_mesh_timeScale (const char * timescale,
 //        if (!strtod (time_start_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_start_att_nam,"/",adios_string,time_start_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_start_att_nam,"/",adios_double,time_start_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_start_att_nam,"/",adios_double,1,&tmp_d2);
         time_stride_att_val = strdup(gettscalefrom1);
         adios_conca_mesh_att_nam(&time_stride_att_nam, name, "time-scale-stride");
         // if this is string
@@ -6039,7 +6201,7 @@ int adios_common_define_mesh_timeScale (const char * timescale,
         if (!(ptr_end && ptr_end[0]==0))
             adios_common_define_attribute (p_new_group,time_stride_att_nam,"/",adios_string,time_stride_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_stride_att_nam,"/",adios_double,time_stride_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_stride_att_nam,"/",adios_double,1,&tmp_d2);
         time_count_att_val = strdup(gettscalefrom2);
         adios_conca_mesh_att_nam(&time_count_att_nam, name, "time-scale-count");
         // if this is string
@@ -6048,7 +6210,7 @@ int adios_common_define_mesh_timeScale (const char * timescale,
         if (!(ptr_end && ptr_end[0]==0))
             adios_common_define_attribute (p_new_group,time_count_att_nam,"/",adios_string,time_count_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_count_att_nam,"/",adios_double,time_count_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_count_att_nam,"/",adios_double,1,&tmp_d2);
         free(time_start_att_val);
         free(time_stride_att_val);
         free(time_count_att_val);
@@ -6056,7 +6218,6 @@ int adios_common_define_mesh_timeScale (const char * timescale,
         free(gettscalefrom1);
         free(gettscalefrom0);
     }else if (counter == 2) {
-        double tmp_d2;
         adios_conca_mesh_att_nam(&time_min_att_nam, name, "time-scale-min");
         // if this is string
         tmp_d2 = strtod (time_min_att_nam, &ptr_end);
@@ -6064,7 +6225,7 @@ int adios_common_define_mesh_timeScale (const char * timescale,
 //        if (!strtod (time_min_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_min_att_nam,"/",adios_string,time_min_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_min_att_nam,"/",adios_double,time_min_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_min_att_nam,"/",adios_double,1,&tmp_d2);
         time_max_att_val = strdup(gettscalefrom1);
         adios_conca_mesh_att_nam(&time_max_att_nam, name, "time-scale-max");
         // if this is string
@@ -6073,13 +6234,12 @@ int adios_common_define_mesh_timeScale (const char * timescale,
 //        if (!strtod (time_max_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_max_att_nam,"/",adios_string,time_max_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_max_att_nam,"/",adios_double,time_max_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_max_att_nam,"/",adios_double,1,&tmp_d2);
         free(time_min_att_val);
         free(time_max_att_val);
         free(gettscalefrom1);
         free(gettscalefrom0);
     } else if (counter == 1){
-        double tmp_d2;
         time_var_att_val = strdup(gettscalefrom0);
         tmp_d2 = strtod (time_var_att_val, &ptr_end);
         if (!(ptr_end && ptr_end[0]==0))
@@ -6089,7 +6249,7 @@ int adios_common_define_mesh_timeScale (const char * timescale,
             adios_common_define_attribute (p_new_group,time_var_att_nam,"/",adios_string,time_var_att_val,"");
         }else{
             adios_conca_mesh_att_nam(&time_var_att_nam, name, "time-scale-count");
-            adios_common_define_attribute (p_new_group,time_var_att_nam,"/",adios_double,time_var_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_var_att_nam,"/",adios_double,1,&tmp_d2);
         }
         free(gettscalefrom0);
         free(time_var_att_val);
@@ -6803,9 +6963,7 @@ int adios_common_define_var_timeseriesformat (const char * timeseries,
 
     char * ptr_end;
     d1 = strdup (timeseries);
-    double tmp_d2;
-    tmp_d2 = strtod (d1, &ptr_end);
-//    if (strtod(d1, &ptr_end))
+    strtod (d1, &ptr_end);
     if ( !(ptr_end && ptr_end[0]==0))
     {
         adios_conca_mesh_att_nam(&format_att_nam, name, "time-series-format");
@@ -6861,13 +7019,13 @@ int adios_common_define_var_timescale (const char * timescale,
 
     char * ptr_end;
     c = strtok (d1, ",");
+    double tmp_d2;
 
     while (c)
     {
         struct adios_var_struct * var = 0;
         //if (adios_int_is_num (c))
-        double tmp_d1;
-        tmp_d1 = strtod (c,&ptr_end);
+        tmp_d2 = strtod (c,&ptr_end);
         if (!(ptr_end && ptr_end[0]==0))
         {
             var = adios_find_var_by_name (new_group, c);
@@ -6914,7 +7072,6 @@ int adios_common_define_var_timescale (const char * timescale,
     }
 
     if (counter == 3){
-        double tmp_d2;
         time_start_att_val = strdup(gettscalefrom0);
         conca_var_att_nam(&time_start_att_nam, name, "time-scale-start");
         tmp_d2 = strtod (time_start_att_val, &ptr_end);
@@ -6923,7 +7080,7 @@ int adios_common_define_var_timescale (const char * timescale,
 //        if (!strtod (time_start_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_start_att_nam,path,adios_string,time_start_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_start_att_nam,path,adios_double,time_start_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_start_att_nam,path,adios_double,1,&tmp_d2);
         time_stride_att_val = strdup(gettscalefrom1);
         conca_var_att_nam(&time_stride_att_nam, name, "time-scale-stride");
         // if this is string
@@ -6932,7 +7089,7 @@ int adios_common_define_var_timescale (const char * timescale,
 //        if (!strtod (time_stride_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_stride_att_nam,path,adios_string,time_stride_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_stride_att_nam,path,adios_double,time_stride_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_stride_att_nam,path,adios_double,1,&tmp_d2);
         time_count_att_val = strdup(gettscalefrom2);
         conca_var_att_nam(&time_count_att_nam, name, "time-scale-count");
         // if this is string
@@ -6941,7 +7098,7 @@ int adios_common_define_var_timescale (const char * timescale,
 //        if (!strtod (time_count_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_count_att_nam,path,adios_string,time_count_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_count_att_nam,path,adios_double,time_count_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_count_att_nam,path,adios_double,1,&tmp_d2);
         free(time_start_att_val);
         free(time_stride_att_val);
         free(time_count_att_val);
@@ -6949,7 +7106,6 @@ int adios_common_define_var_timescale (const char * timescale,
         free(gettscalefrom1);
         free(gettscalefrom0);
     }else if (counter == 2) {
-        double tmp_d2;
         time_min_att_val = strdup(gettscalefrom0);
         conca_var_att_nam(&time_min_att_nam, name, "time-scale-min");
         // if this is string
@@ -6958,7 +7114,7 @@ int adios_common_define_var_timescale (const char * timescale,
 //        if (!strtod (time_min_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_min_att_nam,path,adios_string,time_min_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_min_att_nam,path,adios_double,time_min_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_min_att_nam,path,adios_double,1,&tmp_d2);
         time_max_att_val = strdup(gettscalefrom1);
         conca_var_att_nam(&time_max_att_nam, name, "time-scale-max");
         // if this is string
@@ -6967,13 +7123,12 @@ int adios_common_define_var_timescale (const char * timescale,
 //        if (!strtod (time_max_att_val, &ptr_end))
             adios_common_define_attribute (p_new_group,time_max_att_nam,path,adios_string,time_max_att_val,"");
         else
-            adios_common_define_attribute (p_new_group,time_max_att_nam,path,adios_double,time_max_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_max_att_nam,path,adios_double,1,&tmp_d2);
         free(time_min_att_val);
         free(time_max_att_val);
         free(gettscalefrom1);
         free(gettscalefrom0);
     } else if (counter == 1){
-        double tmp_d2;
         time_var_att_val = strdup(gettscalefrom0);
         tmp_d2 = strtod (time_var_att_val, &ptr_end);
         if ( !(ptr_end && ptr_end[0]==0))
@@ -6983,7 +7138,7 @@ int adios_common_define_var_timescale (const char * timescale,
             adios_common_define_attribute (p_new_group,time_var_att_nam,path,adios_string,time_var_att_val,"");
         }else{
             conca_var_att_nam(&time_var_att_nam, name, "time-scale-count");
-            adios_common_define_attribute (p_new_group,time_var_att_nam,path,adios_double,time_var_att_val,"");
+            adios_common_define_attribute_byvalue(p_new_group,time_var_att_nam,path,adios_double,1,&tmp_d2);
         }
         free(gettscalefrom0);
         free(time_var_att_val);
diff --git a/src/core/adios_internals.h b/src/core/adios_internals.h
index e38faad..a2f51c0 100644
--- a/src/core/adios_internals.h
+++ b/src/core/adios_internals.h
@@ -9,6 +9,7 @@
 #define ADIOS_INTERNALS_H
 
 #include <stdint.h>
+#include <inttypes.h>
 #include <stdlib.h>
 
 // need the enum for the transports
@@ -16,6 +17,8 @@
 #include "core/adios_transport_hooks.h"
 #include "core/adios_bp_v1.h"
 #include "core/qhashtbl.h"
+#include "core/types.h"
+#include "core/strutil.h" /* PairStruct* */
 #include "public/adios_schema.h"
 
 // NCSU ALACRITY-ADIOS: Include needed for the transform spec struct
@@ -144,8 +147,6 @@ struct adios_group_struct
     struct adios_var_struct * vars;
     struct adios_var_struct * vars_tail;  // last variable in the list 'vars'
     qhashtbl_t *hashtbl_vars;
-    struct adios_var_struct * vars_written;
-    struct adios_var_struct * vars_written_tail; // last variable in 'vars_written'
     struct adios_attribute_struct * attributes;
     char * group_comm;
     char * group_by;
@@ -161,12 +162,14 @@ struct adios_group_struct
     enum ADIOS_FLAG all_unique_mesh_names;
 
     int attrid_update_epoch; // ID of special attribute "/__adios__/update_time_epoch" to find it fast
+    uint64_t last_buffer_size; // remember how much buffer we used in previous output steps
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
     // Using a "double buffering" approach. Current write cycle stored in timing_obj, while timing info from
     // previous cycle is kept in prev_timing_obj, and is written before close
     struct adios_timing_struct * timing_obj;
     struct adios_timing_struct * prev_timing_obj;
+    uint64_t tv_size; // the additional data size used by timing variables
 #endif
 };
 
@@ -177,31 +180,47 @@ struct adios_group_list_struct
     struct adios_group_list_struct * next;
 };
 
+/* List of PGs in a file struct to store variables related to each PG written
+   in one open()...close() cycle. If there is no buffer overflow, there will
+   be a single PG written 
+*/
+struct adios_pg_struct
+{
+    uint64_t pg_start_in_file; //  where this pg start in file, handled by methods!
+    struct adios_var_struct * vars_written;
+    struct adios_var_struct * vars_written_tail; // last variable in 'vars_written'
+    struct adios_pg_struct  * next;
+};
+
 struct adios_file_struct
 {
     char * name;
     int32_t subfile_index; // needs to be set in ADIOS method if generates subfiles
     struct adios_group_struct * group;
     enum ADIOS_METHOD_MODE mode;
-    uint64_t data_size;
-    uint64_t write_size_bytes;
 
-    enum ADIOS_FLAG shared_buffer;
+    enum ADIOS_FLAG shared_buffer; // yes: common layer does the buffering (in BP format)
+    enum BUFFERING_STRATEGY bufstrat; // how to do buffering (no_buffering <-> shared_buffer==adios_flag_no)
+    enum BUFFERING_STATE bufstate; // is buffering still going on (depends on overflow strategy)
 
-    uint64_t pg_start_in_file; //  where this pg started in the file
+    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
 
-    uint64_t base_offset;   // where writing last ocurred
-
-    char * buffer;          // buffer we use for building the output
+    char * allocated_bufptr;  // actual allocated buffer before alignment
+    char * buffer;          // buffer we use for building the output (aligned, made from allocated_bufptr)
     uint64_t offset;        // current offset to write at
-    uint64_t bytes_written; // largest offset into buffer written to
+    uint64_t bytes_written; // largest offset into buffer written to, = offset after calling _v1() functions
     uint64_t buffer_size;   // how big the buffer is currently
 
-    uint64_t vars_start;    // offset for where to put the var/attr count
-    uint32_t vars_written;  // count of vars/attrs to write
+    uint64_t pg_start;      // offset in buffer where to put PG size (it should be 0 to point to buffer[0])
+    uint64_t vars_start;    // offset for where to put the vars count
+    uint32_t nvars_written;  // count of vars to write
+    uint64_t attrs_start;    // offset for where to put the attr count
+    uint32_t nattrs_written;  // count of attrs to write
 
     MPI_Comm comm;          // duplicate of comm received in adios_open()
 };
+void adios_file_struct_init (struct adios_file_struct * fd);
 
 struct adios_dimension_item_struct
 {
@@ -321,7 +340,7 @@ typedef void (* ADIOS_INIT_FN) (const PairStruct * parameters
 typedef int (* ADIOS_OPEN_FN) (struct adios_file_struct * fd
                               ,struct adios_method_struct * method, MPI_Comm comm
                               );
-typedef enum ADIOS_FLAG (* ADIOS_SHOULD_BUFFER_FN)
+typedef enum BUFFERING_STRATEGY (* ADIOS_SHOULD_BUFFER_FN)
                                        (struct adios_file_struct * fd
                                        ,struct adios_method_struct * method
                                        );
@@ -342,6 +361,9 @@ typedef void (* ADIOS_READ_FN) (struct adios_file_struct * fd
                                ,uint64_t buffer_size
                                ,struct adios_method_struct * method
                                );
+typedef void (* ADIOS_BUFFER_OVERFLOW_FN) (struct adios_file_struct * fd 
+                                          ,struct adios_method_struct * method 
+                                          ); 
 typedef void (* ADIOS_CLOSE_FN) (struct adios_file_struct * fd
                                 ,struct adios_method_struct * method
                                 );
@@ -363,6 +385,7 @@ struct adios_transport_struct
     ADIOS_WRITE_FN adios_write_fn;
     ADIOS_GET_WRITE_BUFFER_FN adios_get_write_buffer_fn;
     ADIOS_READ_FN adios_read_fn;
+    ADIOS_BUFFER_OVERFLOW_FN adios_buffer_overflow_fn;
     ADIOS_CLOSE_FN adios_close_fn;
     ADIOS_FINALIZE_FN adios_finalize_fn;
     ADIOS_END_ITERATION_FN adios_end_iteration_fn;
@@ -440,7 +463,7 @@ int adios_common_define_attribute_byvalue (int64_t group, const char * name
                                   ,const char * path
                                   ,enum ADIOS_DATATYPES type
                                   ,int nelems
-                                  ,void * values
+                                  ,const void * values
                                   );
 
 void adios_append_method (struct adios_method_struct * method);
@@ -451,6 +474,9 @@ void adios_add_method_to_group (struct adios_method_list_struct ** root
 
 void adios_append_group (struct adios_group_struct * group);
 
+struct adios_pg_struct * add_new_pg_written (struct adios_file_struct * fd);
+void adios_free_pglist (struct adios_file_struct * fd);
+
 //void adios_append_var (struct adios_group_struct * g, struct adios_var_struct * var);
 
 void adios_append_dimension (struct adios_dimension_struct ** root
@@ -489,7 +515,9 @@ int adios_common_define_var_characteristics  (struct adios_group_struct * g
                                              );
 
 void adios_common_get_group (int64_t * group_id, 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);
 int adios_common_free_group (int64_t id);
 
 // ADIOS file format functions
@@ -497,6 +525,7 @@ int adios_common_free_group (int64_t id);
 uint16_t adios_calc_var_characteristics_dims_overhead(struct adios_dimension_struct * d);
 uint16_t adios_calc_var_overhead_v1 (struct adios_var_struct * v);
 uint32_t adios_calc_attribute_overhead_v1 (struct adios_attribute_struct * a);
+uint32_t adios_calc_attrs_overhead_v1 (struct adios_file_struct * fd);
 uint64_t adios_calc_overhead_v1 (struct adios_file_struct * fd);
 
 int adios_write_version_v1 (char ** buffer
@@ -508,11 +537,10 @@ int adios_write_version_flag_v1 (char ** buffer
                            ,uint64_t * buffer_offset
                            ,uint32_t flag
                            );
-int adios_write_process_group_header_v1 (struct adios_file_struct * fd
-                                        ,uint64_t total_size
-                                        );
+int adios_write_open_process_group_header_v1 (struct adios_file_struct * fd);
+int adios_write_close_process_group_header_v1 (struct adios_file_struct * fd);
 
-void adios_copy_var_written (struct adios_group_struct * g,
+void adios_copy_var_written (struct adios_file_struct * fd,
                              struct adios_var_struct * var);
 
 // data is only there for sizing
@@ -588,7 +616,10 @@ uint64_t adios_get_type_size (enum ADIOS_DATATYPES type, const void * var);
 // NCSU ALACRITY-ADIOS - added this for use in the transform layer
 uint64_t adios_get_dimension_space_size (struct adios_var_struct * var
                                         ,struct adios_dimension_struct * d);
+// get the size of variable data for output (i.e. possibly after transformation)
 uint64_t adios_get_var_size (struct adios_var_struct * var, const void * data);
+// get the size of original variable data if variable is transformed (call only if it's transformed)
+uint64_t adios_transform_get_pre_transform_var_size(struct adios_var_struct *var);
 uint64_t adios_get_dim_value (struct adios_dimension_item_struct * dimension);
 uint64_t adios_get_stat_size (void * data, enum ADIOS_DATATYPES type, enum ADIOS_STAT stat_id);
 uint8_t adios_get_stat_set_count (enum ADIOS_DATATYPES type);
@@ -608,6 +639,7 @@ int adios_int_is_var (const char * temp); // 1 == yes, 0 == no
 int adios_int_is_num (char * temp); // 1 == yes, 0 == no
 void adios_conca_mesh_numb_att_nam (char ** returnstr, const char * meshname, char * att_nam, char counterstr[5]);
 void adios_conca_mesh_att_nam (char ** returnstr, const char * meshname, char * att_nam);
+void adios_conca_link_att_nam(char ** returnstr, const char * name, char * att_nam, char counterstr[5]);
 
 // No-XML API
 int adios_common_define_schema_version (struct adios_group_struct * new_group, char * schema_version);
diff --git a/src/core/adios_internals_mxml.c b/src/core/adios_internals_mxml.c
index 19da816..62e04fc 100644
--- a/src/core/adios_internals_mxml.c
+++ b/src/core/adios_internals_mxml.c
@@ -1179,8 +1179,6 @@ static int parseGroup (mxml_node_t * node, char * schema_version)
             const char * read_flag = 0;
             const char * transform_type = 0; // NCSU ALACRITY-ADIOS
             enum ADIOS_DATATYPES t1;
-            char  * mpath1 = 0;
-            char  * mpath2 = 0;
 
             for (i = 0; i < n->value.element.num_attrs; i++)
             {
@@ -1372,10 +1370,9 @@ static int parseGroup (mxml_node_t * node, char * schema_version)
                         const char * gwrite = 0;
                         const char * gread = 0;
                         const char * read_flag = 0;
-                    const char * transform_type = 0; // NCSU ALACRITY-ADIOS
+                        const char * transform_type = 0; // NCSU ALACRITY-ADIOS
                         enum ADIOS_DATATYPES t1;
-                        char * mpath1 = 0;
-                        char * mpath2 = 0;
+
 
                         for (i = 0; i < n1->value.element.num_attrs; i++)
                         {
@@ -1909,7 +1906,7 @@ static int parseMethod (mxml_node_t * node)
     const char * base_path = 0;
     const char * method = 0;
     const char * group = 0;
-    const char * parameters = 0;
+    char * parameters = 0;
     int p1;
     int i1;
     int i;
@@ -1931,14 +1928,24 @@ static int parseMethod (mxml_node_t * node)
     }
 
     // Check for parameters, if they exist
+    parameters = NULL;
+    size_t len_parameters = 0;
     n = mxmlWalkNext (node, node, MXML_DESCEND);
-    if (n != NULL)
-    {
-        parameters = n->value.text.string;
-    }
-    else
+    while (n && n->type == MXML_TEXT)
     {
-        parameters = NULL;
+        size_t len = strlen(n->value.text.string);
+        if (len)
+        {
+            char *p = realloc (parameters, len_parameters + len + 1);
+            if (p)
+            {
+                parameters = p;
+                memcpy (parameters+len_parameters, n->value.text.string, len+1);
+                len_parameters += len;
+            }
+        }
+        n = mxmlWalkNext (n, node, MXML_DESCEND);
+        //printf ("Parameters content: [%s]\n", parameters);
     }
 
     if (!priority)
@@ -1949,8 +1956,10 @@ static int parseMethod (mxml_node_t * node)
         i1 = 1;
     else
         i1 = atoi (iterations);
-    if (!parameters)
+    if (!parameters) {
         parameters = "";
+        len_parameters = 0; // to indicate that we don't need to free it at the end of this function
+    }
     if (!base_path)
         base_path = "";
     else
@@ -1971,47 +1980,34 @@ static int parseMethod (mxml_node_t * node)
     if (!method)
         method = "";
 
-    if (!adios_common_select_method (p1, method, parameters, group
-                ,base_path, i1
-                )
-       )
-    {
-        return 0;
-    }
-
-    return 1;
+    int ret = adios_common_select_method (p1, method, parameters, group, base_path, i1);
+    if (len_parameters)
+        free (parameters);
+    return ret;
 }
 
+
 static int parseBuffer (mxml_node_t * node)
 {
     const char * size_MB = 0;
-    const char * free_memory_percentage = 0;
-    const char * allocate_time = 0;
+    const char * max_size_MB = 0;
 
     int i;
 
-    int size = -1;
 
     for (i = 0; i < node->value.element.num_attrs; i++)
     {
         mxml_attr_t * attr = &node->value.element.attrs [i];
-
         GET_ATTR("size-MB",attr,size_MB,"method")
-            GET_ATTR("free-memory-percentage",attr,free_memory_percentage,"method")
-            GET_ATTR("allocate-time",attr,allocate_time,"method")
-            log_warn ("config.xml: unknown attribute '%s' on %s "
-                    "(ignored)\n"
-                    ,attr->name
-                    ,"buffer"
-                    );
+        GET_ATTR("max-size-MB",attr,max_size_MB,"method")
+        log_warn ("config.xml: unknown attribute '%s' on %s (ignored)\n", attr->name, "buffer");
     }
 
 
-
-    if ((!size_MB && !free_memory_percentage) || !allocate_time)
+    if (!size_MB && !max_size_MB)
     {
-        adios_error (err_invalid_buffer_size, "config.xml: must define allocate-time and either "
-                "size-MB or free-memory-percentage for "
+        adios_error (err_invalid_buffer_size, "config.xml: must define either "
+                "size-MB or max-size-MB "
                 "buffer element\n"
                 );
 
@@ -2019,73 +2015,31 @@ static int parseBuffer (mxml_node_t * node)
     }
     else
     {
-        if (!strcasecmp (allocate_time, "now"))
+        if (size_MB && max_size_MB)
         {
-            adios_buffer_alloc_when_set (ADIOS_BUFFER_ALLOC_NOW);
-        }
-        else
-        {
-            if (!strcasecmp (allocate_time, "oncall"))
-            {
-                adios_buffer_alloc_when_set (ADIOS_BUFFER_ALLOC_LATER);
-            }
-            else
-            {
-                adios_error (err_invalid_buffer_size, "config.xml: buffer allocate-time %s "
-                        "invalid. ('now' or 'oncall')\n"
-                        ,allocate_time
-                        );
-
-                return 0;
-            }
+            log_warn ("config.xml: both size-MB and max-size-MB are present in buffer element. "
+                    "Both mean the same thing, so max-size-MB will be used.\n");
         }
 
-        if (size_MB)
-        {
-            adios_buffer_alloc_percentage_set (0);
-            size = atoi (size_MB);
-            if (size_MB == 0)
-            {
-                adios_error (err_invalid_buffer_size, "config.xml: buffer size-MB is either 0 or "
-                        "cannot be parsed: %s"
-                        ,size_MB
-                        );
-
-                return 0;
-            }
-
-            if (size < 1)
-                size = 1; // we need a minimum 1 MB buffer
+        const char * sizestr;
+        char * end;
+        long int size = -1;
 
-            adios_buffer_size_requested_set ((uint64_t) size * 1024 * 1024);
-        }
+        if (max_size_MB)
+            sizestr = max_size_MB;        
         else
-        {
-            adios_buffer_alloc_percentage_set (1);
-            size = atoi (free_memory_percentage);
-            if (size > 0 && size <= 100)
-            {
-                adios_buffer_size_requested_set ((uint64_t) size);
-            }
-            else
-            {
-                adios_error (err_invalid_buffer_size, "config.xml: buffer free-memory-percentage %s "
-                        "is not an integer between 1 and 100\n"
-                        ,free_memory_percentage
-                        );
+            sizestr = size_MB;
 
-                return 0;
-            }
+        size = atoi (sizestr);
+        errno = 0;
+        size = strtol(sizestr, &end, 10);
+        if (errno || (end != 0 && *end != '\0')) {
+            adios_error (err_invalid_buffer_size, "config.xml: buffer size cannot be parsed: %s\n", sizestr);
+            return 0;
         }
 
-        if (adios_buffer_alloc_when_get() == ADIOS_BUFFER_ALLOC_NOW)
-        {
-
-            // Do not attempt to allocate the buffer when this is being called from adios_lint
-#ifndef _INTERNAL
-            return adios_set_buffer_size ();
-#endif
-
+        if (size > 0) {
+            adios_databuffer_set_max_size ((uint64_t) size * 1024L * 1024L);
         }
     }
 
@@ -2093,6 +2047,7 @@ static int parseBuffer (mxml_node_t * node)
 }
 
 
+
 void PRINT_MXML_NODE (mxml_node_t *root)
 {
     if (!root)
@@ -2124,7 +2079,6 @@ int adios_parse_config (const char * config, MPI_Comm comm)
     mxml_node_t * root = NULL;
     int saw_datagroup = 0;
     int saw_method = 0;
-    int saw_buffer = 0;
     char * schema_version = 0;
 
     if (!adios_transports_initialized)
@@ -2310,7 +2264,6 @@ int adios_parse_config (const char * config, MPI_Comm comm)
                 {
                     if (!parseBuffer (node))
                         break;
-                    saw_buffer = 1;
                 }
                 else
                 {
@@ -2357,14 +2310,6 @@ int adios_parse_config (const char * config, MPI_Comm comm)
 
         return 0;
     }
-    if (!saw_buffer)
-    {
-        adios_error (err_no_buffer_defined, "config.xml: must define the buffer element in "
-                "config.xml\n"
-                );
-
-        return 0;
-    }
 
     return 1;
 }
@@ -2389,7 +2334,7 @@ static PairStruct * get_and_preprocess_params (const char * parameters)
     int verbose_level, removeit, save;
     char *end;
 
-    params = text_to_name_value_pairs (parameters);
+    params = a2s_text_to_name_value_pairs (parameters);
 
     /*
        p = params;
@@ -2446,14 +2391,14 @@ static PairStruct * get_and_preprocess_params (const char * parameters)
                 //fprintf(stderr, "  Remove HEAD  p = %x p->next = %x\n", p, p->next);
                 p = p->next;
                 params->next = NULL;
-                free_name_value_pairs (params);
+                a2s_free_name_value_pairs (params);
                 params = p;
             } else {
                 // remove from middle of the list
                 //fprintf(stderr, "  Remove MIDDLE prev = %x p = %x p->next = %x\n", prev_p, p, p->next);
                 prev_p->next = p->next;
                 p->next = NULL;
-                free_name_value_pairs (p);
+                a2s_free_name_value_pairs (p);
                 p = prev_p->next;
             }
         } else {
@@ -2501,7 +2446,7 @@ int adios_common_select_method (int priority, const char * method
             adios_transports [new_method->m].adios_init_fn
                 (params, new_method);
 
-            free_name_value_pairs (params);
+            a2s_free_name_value_pairs (params);
         }
     }
     else
@@ -2576,7 +2521,7 @@ int adios_common_select_method_by_group_id (int priority, const char * method
             adios_transports [new_method->m].adios_init_fn
                 (params, new_method);
 
-            free_name_value_pairs (params);
+            a2s_free_name_value_pairs (params);
         }
     }
     else
@@ -2659,7 +2604,9 @@ void adios_cleanup ()
     while (adios_groups)
     {
         struct adios_group_list_struct * groups = adios_groups->next;
+        adios_common_free_groupstruct (adios_groups->group);
 
+#if 0
         if (adios_groups->group->name)
             free (adios_groups->group->name);
 
@@ -2870,7 +2817,8 @@ void adios_cleanup ()
     adios_groups->group->meshs = meshs;
     }*/
 
-    free (adios_groups->group);
+    //free (adios_groups->group);
+#endif
     free (adios_groups);
     adios_groups = groups;
     }
diff --git a/src/core/adios_internals_mxml.h b/src/core/adios_internals_mxml.h
index 30f99ff..7fecfe1 100644
--- a/src/core/adios_internals_mxml.h
+++ b/src/core/adios_internals_mxml.h
@@ -31,9 +31,4 @@ struct adios_mesh_struct * adios_common_define_mesh (
 
 void adios_cleanup ();
 
-int adios_set_buffer_size (void);
-
-uint64_t adios_method_buffer_alloc (uint64_t size);
-int adios_method_buffer_free (uint64_t size);
-
 #endif
diff --git a/src/core/adios_read.c b/src/core/adios_read.c
index ac91f18..3805e53 100644
--- a/src/core/adios_read.c
+++ b/src/core/adios_read.c
@@ -11,6 +11,8 @@
 #include "public/adios_error.h"
 #include "core/adios_logger.h"
 #include "core/common_read.h"
+#include "core/a2sel.h"
+#include "core/adios_selection_util.h"
 #define BYTE_ALIGN 8
 
 
@@ -213,27 +215,31 @@ void adios_print_fileinfo (ADIOS_FILE *fp)
 
 ADIOS_SELECTION * adios_selection_boundingbox (int ndim, const uint64_t *start, const uint64_t *count)
 {
-    return common_read_selection_boundingbox (ndim, start, count);
+    return a2sel_boundingbox (ndim, start, count);
 }
 
 ADIOS_SELECTION * adios_selection_points (int ndim, uint64_t npoints, const uint64_t *points)
 {
-    return common_read_selection_points (ndim, npoints, points);
+    return a2sel_points (ndim, npoints, points, NULL, 0);
 }
 
 ADIOS_SELECTION * adios_selection_writeblock (int index)
 {
-    return common_read_selection_writeblock (index);
+    return a2sel_writeblock (index);
 }
 
 ADIOS_SELECTION * adios_selection_auto (char *hints)
 {
-    return common_read_selection_auto (hints);
+    return a2sel_auto (hints);
 }
 
 void adios_selection_delete (ADIOS_SELECTION *sel)
 {
-    common_read_selection_delete (sel);
+    a2sel_free (sel);
 }
 
+ADIOS_SELECTION * adios_selection_points_1DtoND (ADIOS_SELECTION * pointsinbox1D, int global)
+{
+    return a2sel_points_1DtoND (pointsinbox1D, global);
+}
 
diff --git a/src/core/adios_read_ext.c b/src/core/adios_read_ext.c
index f8525ff..95738c5 100644
--- a/src/core/adios_read_ext.c
+++ b/src/core/adios_read_ext.c
@@ -10,6 +10,7 @@
 #include <assert.h>
 
 #include "public/adios_read_ext.h"
+#include "core/a2sel.h"
 #include "core/common_read.h"
 #include "core/transforms/adios_transforms_common.h"
 #include "core/transforms/adios_transforms_transinfo.h"
@@ -82,8 +83,8 @@ void adios_free_pg_intersections(ADIOS_PG_INTERSECTIONS **intersections){
 	int i = 0;
 	for(i=0; i < intsec->npg; i++){
 		ADIOS_PG_INTERSECTION inter = intsec->intersections[i];
-		common_read_selection_delete(inter.pg_bounds_sel);
-		common_read_selection_delete(inter.intersection_sel);
+		a2sel_free(inter.pg_bounds_sel);
+		a2sel_free(inter.intersection_sel);
 	}
 	intsec->npg = 0;
 	intsec->intersections = NULL;
@@ -100,7 +101,7 @@ adios_transform_type_t adios_get_transform_type_by_uid(const char *transform_uid
 // within a variable. An element is a single value of whatever the varaible's datatype is (i.e.,
 // 1 element = 1 double if the variable type is double, 1 byte if the variable type is byte, etc.)
 ADIOS_SELECTION * adios_selection_writeblock_bounded(int index, uint64_t start_elem, uint64_t num_elems, int is_timestep_relative) {
-	ADIOS_SELECTION *sel = common_read_selection_writeblock(index);
+	ADIOS_SELECTION *sel = a2sel_writeblock(index);
 	sel->u.block.is_absolute_index = !is_timestep_relative;
 	sel->u.block.is_sub_pg_selection = 1;
 	sel->u.block.element_offset = start_elem;
@@ -132,7 +133,7 @@ static void compute_blockidx_range(const ADIOS_VARINFO *raw_varinfo, int from_st
 }
 
 inline static ADIOS_SELECTION * create_pg_bounds(int ndim, ADIOS_VARBLOCK *orig_vb) {
-    return common_read_selection_boundingbox(ndim, orig_vb->start, orig_vb->count);
+    return a2sel_boundingbox(ndim, orig_vb->start, orig_vb->count);
 }
 
 int adios_get_absolute_writeblock_index(const ADIOS_VARINFO *varinfo, int timestep_relative_idx, int timestep) {
@@ -163,13 +164,11 @@ int adios_get_absolute_writeblock_index(const ADIOS_VARINFO *varinfo, int timest
 #define INITIAL_INTERSECTION_CAPACITY 16;
 ADIOS_PG_INTERSECTIONS * adios_find_intersecting_pgs(const ADIOS_FILE *fp, int varid, const ADIOS_SELECTION *sel, const int from_step, const int nsteps) {
     // Declares
-    adios_transform_read_request *new_reqgroup;
     int blockidx, timestep, timestep_blockidx;
-    int curblocks, start_blockidx, end_blockidx;
-    int intersects;
-    ADIOS_VARBLOCK *raw_vb, *vb;
+    int start_blockidx, end_blockidx;
+    ADIOS_VARBLOCK *vb;
 
-    enum ADIOS_FLAG swap_endianness = (fp->endianness == get_system_endianness()) ? adios_flag_no : adios_flag_yes;
+    //enum ADIOS_FLAG swap_endianness = (fp->endianness == get_system_endianness()) ? adios_flag_no : adios_flag_yes;
     int to_steps = from_step + nsteps;
 
     // As long as we don't free/destroy it, using the infocache from the file will have no effect on future
@@ -240,7 +239,7 @@ ADIOS_PG_INTERSECTIONS * adios_find_intersecting_pgs(const ADIOS_FILE *fp, int v
         	resulting_intersections->npg++;
         } else {
             // Cleanup
-            common_read_selection_delete(pg_bounds_sel); // OK to delete, because this function only frees the outer struct, not the arrays within
+            a2sel_free(pg_bounds_sel); // OK to delete, because this function only frees the outer struct, not the arrays within
         }
 
         // Increment block indexes
diff --git a/src/core/adios_read_hooks.h b/src/core/adios_read_hooks.h
index 14a2900..5741814 100644
--- a/src/core/adios_read_hooks.h
+++ b/src/core/adios_read_hooks.h
@@ -13,7 +13,7 @@
 #include <string.h>
 #include "public/adios_read_v2.h"
 #include "core/transforms/adios_transforms_transinfo.h" // NCSU ALACRITY-ADIOS
-#include "core/util.h" // PairStruct*
+#include "core/strutil.h" // PairStruct*
 
 #define FORWARD_DECLARE(a) \
 int adios_read_##a##_init_method (MPI_Comm comm, PairStruct *params); \
diff --git a/src/core/adios_read_v1.c b/src/core/adios_read_v1.c
index d814f5c..f96c72b 100644
--- a/src/core/adios_read_v1.c
+++ b/src/core/adios_read_v1.c
@@ -509,13 +509,11 @@ double adios_stat_cor_v1 (ADIOS_VARINFO_V1 * vix, ADIOS_VARINFO_V1 * viy, char *
         time_end = min;
     }
     // Check the bounds of time
-    if (    (time_start >= 0) && (time_start <= min)
-            &&      (time_end >= 0)   && (time_end <= min)
-            &&  (time_start <= time_end))
+    if (time_start <= min && time_end <= min && time_start <= time_end)
     {
         if(viy == NULL) //user must want to run covariance against itself
         {
-            if(! (time_end+lag) > min)
+            if(! (time_end+lag > min))
             {                                                                        
                 adios_error(err_invalid_timestep, "Must leave enough timesteps for lag\n");
                 return 0;
@@ -716,13 +714,11 @@ double adios_stat_cov_v1 (ADIOS_VARINFO_V1 * vix, ADIOS_VARINFO_V1 * viy, char *
         time_end = min;
     }
     // Check the bounds of time
-    if (    (time_start >= 0) && (time_start <= min)
-            &&      (time_end >= 0)   && (time_end <= min)
-            &&  (time_start <= time_end))
+    if (time_start <= min && time_end <= min && time_start <= time_end)
     {
         if(viy == NULL) //user must want to run covariance against itself
         {
-            if(! (time_end+lag) > min)
+            if(! (time_end+lag > min))
             {                                                                        
                 adios_error(err_invalid_timestep, "Must leave enough timesteps for lag\n");
                 return 0;
diff --git a/src/core/adios_selection_util.c b/src/core/adios_selection_util.c
index a551e09..cb35752 100644
--- a/src/core/adios_selection_util.c
+++ b/src/core/adios_selection_util.c
@@ -15,6 +15,7 @@
 #include "adios_subvolume.h"
 #include "adios_selection_util.h"
 #include "common_read.h"
+#include "util.h"
 
 //
 // NOTE: Intersection type guarantees:
@@ -38,13 +39,15 @@ ADIOS_SELECTION * adios_selection_intersect_bb_bb(const ADIOS_SELECTION_BOUNDING
         return NULL;
     }
 
+    ADIOS_SELECTION * bb;
     if (intersect_bb(bb1, bb2, new_start, NULL, NULL, new_count)) {
-        return common_read_selection_boundingbox(ndim, new_start, new_count);
+        bb = a2sel_boundingbox(ndim, new_start, new_count);
     } else {
-        free(new_start);
-        free(new_count);
-        return NULL;
+        bb = NULL;
     }
+    free(new_start);
+    free(new_count);
+    return bb;
 }
 
 ADIOS_SELECTION * adios_selection_intersect_bb_pts(const ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb1,
@@ -90,7 +93,10 @@ ADIOS_SELECTION * adios_selection_intersect_bb_pts(const ADIOS_SELECTION_BOUNDIN
         return NULL;
     } else {
         new_pts = (uint64_t*)realloc(new_pts, new_npts * ndim * sizeof(uint64_t));
-        return common_read_selection_points(ndim, new_npts, new_pts);
+        ADIOS_SELECTION *bb = a2sel_boundingbox(ndim, bb1->start, bb1->count);
+        ADIOS_SELECTION *pts = a2sel_points(ndim, new_npts, new_pts, NULL, 0);
+        pts->u.points.container_selection = bb;
+        return pts;
     }
 }
 
@@ -139,7 +145,7 @@ ADIOS_SELECTION * adios_selection_intersect_pts_pts(const ADIOS_SELECTION_POINTS
         return NULL;
     } else {
         new_pts = (uint64_t*)realloc(new_pts, new_npts * sizeof(uint64_t));
-        return common_read_selection_points(ndim, new_npts, new_pts);
+        return a2sel_points(ndim, new_npts, new_pts, NULL, 0);
     }
 }
 
@@ -251,7 +257,7 @@ ADIOS_SELECTION * adios_selection_intersect_wb_wb(const ADIOS_SELECTION_WRITEBLO
 
 	if (!wb1->is_sub_pg_selection && !wb2->is_sub_pg_selection) {
 		// If neither selection is a sub-PG selection, the result is easy, and we can return immediately
-		ADIOS_SELECTION *inter_sel = common_read_selection_writeblock(wbindex);
+		ADIOS_SELECTION *inter_sel = a2sel_writeblock(wbindex);
 		inter_sel->u.block.is_absolute_index = is_abs_idx;
 		return inter_sel;
 	} else if (wb1->is_sub_pg_selection && wb2->is_sub_pg_selection) {
@@ -265,7 +271,7 @@ ADIOS_SELECTION * adios_selection_intersect_wb_wb(const ADIOS_SELECTION_WRITEBLO
 		);
 
 		if (intersects) {
-			ADIOS_SELECTION *inter_sel = common_read_selection_writeblock(wbindex);
+			ADIOS_SELECTION *inter_sel = a2sel_writeblock(wbindex);
 			inter_sel->u.block.is_absolute_index = is_abs_idx;
 			inter_sel->u.block.is_sub_pg_selection = 1;
 			inter_sel->u.block.element_offset = inter_elem_offset;
@@ -276,12 +282,12 @@ ADIOS_SELECTION * adios_selection_intersect_wb_wb(const ADIOS_SELECTION_WRITEBLO
 		}
 	} else if (wb1->is_sub_pg_selection) {
 		// Else, if only the first selection is sub-PG, so just use its range
-		ADIOS_SELECTION *newwb = common_read_selection_writeblock(wb1->index);
+		ADIOS_SELECTION *newwb = a2sel_writeblock(wb1->index);
 		newwb->u.block = *wb1;
 		return newwb;
 	} else if (wb2->is_sub_pg_selection) {
 		// Else, only the second selection is sub-PG, so just use its range
-		ADIOS_SELECTION *newwb = common_read_selection_writeblock(wb2->index);
+		ADIOS_SELECTION *newwb = a2sel_writeblock(wb2->index);
 		newwb->u.block = *wb2;
 		return newwb;
 	} else {
@@ -338,3 +344,5 @@ ADIOS_SELECTION * adios_selection_intersect_local(const ADIOS_SELECTION *s1, con
         return NULL;
     }
 }
+
+
diff --git a/src/core/adios_selection_util.h b/src/core/adios_selection_util.h
index c8a2b69..c95203d 100644
--- a/src/core/adios_selection_util.h
+++ b/src/core/adios_selection_util.h
@@ -38,6 +38,7 @@ ADIOS_SELECTION * adios_selection_intersect_wb_wb(const ADIOS_SELECTION_WRITEBLO
                                                   int timestep,
                                                   const ADIOS_VARINFO *raw_varinfo, const ADIOS_TRANSINFO *transinfo);
 
-ADIOS_SELECTION * adios_selection_intersect_local(const ADIOS_SELECTION *s1, const ADIOS_SELECTION *s2, int timestep, const ADIOS_VARINFO *raw_varinfo, const ADIOS_TRANSINFO *transinfo);
+ADIOS_SELECTION * adios_selection_intersect_local(const ADIOS_SELECTION *s1, const ADIOS_SELECTION *s2, int timestep,
+                                                  const ADIOS_VARINFO *raw_varinfo, const ADIOS_TRANSINFO *transinfo);
 
 #endif /* ADIOS_SELECTION_UTIL_H_ */
diff --git a/src/core/adios_subvolume.c b/src/core/adios_subvolume.c
index 1e13193..c2340f0 100644
--- a/src/core/adios_subvolume.c
+++ b/src/core/adios_subvolume.c
@@ -461,7 +461,7 @@ ADIOS_SELECTION * new_derelativized_selection(const ADIOS_SELECTION *sel, const
         // Add the global offset to the bounding box start
         vector_add(ndim, new_start, sel->u.bb.start, sel_global_offset);
 
-        new_sel = common_read_selection_boundingbox(ndim, new_start, new_count);
+        new_sel = a2sel_boundingbox(ndim, new_start, new_count);
         break;
     }
     case ADIOS_SELECTION_POINTS:
@@ -481,7 +481,7 @@ ADIOS_SELECTION * new_derelativized_selection(const ADIOS_SELECTION *sel, const
             cur_dst_point += ndim;
         }
 
-        new_sel = common_read_selection_points(ndim, npoints, new_points);
+        new_sel = a2sel_points(ndim, npoints, new_points, NULL, 0);
         break;
     }
     case ADIOS_SELECTION_WRITEBLOCK:
@@ -497,7 +497,7 @@ ADIOS_SELECTION * new_derelativized_selection(const ADIOS_SELECTION *sel, const
 }
 
 ADIOS_SELECTION * varblock_to_bb(int ndim, const ADIOS_VARBLOCK *vb) {
-    return common_read_selection_boundingbox(ndim,
+    return a2sel_boundingbox(ndim,
                                              bufdup(vb->start, sizeof(uint64_t), ndim),
                                              bufdup(vb->count, sizeof(uint64_t), ndim));
 }
diff --git a/src/core/adios_timing.c b/src/core/adios_timing.c
index a55d004..ae58c92 100644
--- a/src/core/adios_timing.c
+++ b/src/core/adios_timing.c
@@ -9,6 +9,7 @@
 #include "public/adios.h"
 #include "public/adios_error.h"
 #include "core/adios_internals.h"
+#include "core/common_adios.h"
 #include "core/adios_timing.h"
 #include "core/adios_logger.h"
 #include <string.h>
@@ -123,6 +124,7 @@ void adios_timing_write_xml_common (int64_t fd_p, const char* filename)
         fd->comm // comm
     );
 
+    /* FIXME: fd->bytes_written is 64bit data, but this code plays with ints */
     // Gather the write sizes
     int *write_sizes = NULL;
     if (rank == 0)
@@ -131,7 +133,7 @@ void adios_timing_write_xml_common (int64_t fd_p, const char* filename)
     }
 
     MPI_Gather (
-        &fd->write_size_bytes, //sendbuf
+        &fd->bytes_written, //sendbuf
         1, //sendcount
         MPI_INT, //sendtype
         write_sizes, //recvbuf
@@ -195,6 +197,11 @@ void adios_timing_write_xml_common (int64_t fd_p, const char* filename)
 
 void adios_write_timing_variables (struct adios_file_struct * fd)
 {
+#ifdef _INTERNAL
+    /* the internal library does not need this and would result in link errors 
+       since common_adios_write_byid() is not included in that library */
+    return;
+#else
     if (!fd)
     {
         adios_error (err_invalid_file_pointer,
@@ -244,7 +251,7 @@ void adios_write_timing_variables (struct adios_file_struct * fd)
 	    }
 
             char * labels = (char*)
-                              malloc ( (max_label_len+1) * timer_count * sizeof (char) );
+                              calloc ( (max_label_len+1) * timer_count, sizeof (char) );
 
 	    for (i = 0; i < g->prev_timing_obj->user_count; i++)
 	    {
@@ -293,11 +300,11 @@ void adios_write_timing_variables (struct adios_file_struct * fd)
 
     free (timers);
 
+#endif /* _INTERNAL */
 }
 
 int adios_add_timing_variables (struct adios_file_struct * fd)
 {
-
     if (!fd)
     {
         adios_error (err_invalid_file_pointer,
@@ -305,9 +312,17 @@ int adios_add_timing_variables (struct adios_file_struct * fd)
         return 1;
     }
 
-    if (!fd->group || !fd->group->prev_timing_obj)
+    if (!fd->group)
+    {
+        adios_error (err_invalid_group_struct,
+                     "Invalid group of the file struct passed to adios_add_timing_variables\n");
+        return 1;
+    }
+
+    if (!fd->group->prev_timing_obj)
     {
         // No timing info, don't write anything.
+        fd->group->tv_size = 0;
         return 0;
     }
 
@@ -391,6 +406,7 @@ int adios_add_timing_variables (struct adios_file_struct * fd)
                       "");                          // const char * local_offsets 
     }
 
+    g->tv_size = tv_size;
     return tv_size;
 
 }
@@ -534,6 +550,18 @@ void adios_timing_destroy (struct adios_timing_struct * timing_obj)
         {
             free (timing_obj->times);
         }
+        if (timing_obj->names)
+        {
+            int i;
+            for (i = 0; i < timing_obj->internal_count; i++)
+            {
+                if (timing_obj->names[ADIOS_TIMING_MAX_USER_TIMERS + i])
+                {
+                    free(timing_obj->names[ADIOS_TIMING_MAX_USER_TIMERS + i]);
+                }
+            }
+            free (timing_obj->names);
+        }
         free (timing_obj);
     }
 }
diff --git a/src/core/adios_timing.h b/src/core/adios_timing.h
index 836c164..728ba0e 100644
--- a/src/core/adios_timing.h
+++ b/src/core/adios_timing.h
@@ -48,12 +48,14 @@ struct adios_timing_struct *  adios_timing_create (int timer_count, char** timer
 void adios_clear_timers (struct adios_timing_struct * ts);
 void adios_timing_destroy (struct adios_timing_struct * timing_obj);
 
+int adios_add_timing_variables (struct adios_file_struct * fd);
+
 void adios_timing_go (struct adios_timing_struct * ts, int64_t index);
 void adios_timing_stop (struct adios_timing_struct * ts, int64_t index);
 
-
 void adios_timing_declare_user_timers (int64_t fd_p, int user_timer_count, char** user_timer_names);
 
+void adios_write_timing_variables (struct adios_file_struct * fd);
 
 /* Print out all gathered info */
 void adios_timing_write_xml_common (int64_t fd_p, const char* filename);
diff --git a/src/core/adios_transport_hooks.c b/src/core/adios_transport_hooks.c
index efca3d7..fb7f5aa 100644
--- a/src/core/adios_transport_hooks.c
+++ b/src/core/adios_transport_hooks.c
@@ -32,6 +32,7 @@ if (!strcasecmp (buf,b)) \
 (*t) [b].adios_write_fn = adios_##a##_write; \
 (*t) [b].adios_get_write_buffer_fn = adios_##a##_get_write_buffer; \
 (*t) [b].adios_read_fn = adios_##a##_read; \
+(*t) [b].adios_buffer_overflow_fn = adios_##a##_buffer_overflow; \
 (*t) [b].adios_close_fn = adios_##a##_close; \
 (*t) [b].adios_finalize_fn = adios_##a##_finalize; \
 (*t) [b].adios_end_iteration_fn = adios_##a##_end_iteration; \
@@ -113,7 +114,8 @@ void adios_init_transports (struct adios_transport_struct ** t)
 # endif
 
     ASSIGN_FNS(posix,ADIOS_METHOD_POSIX,"POSIX")
-    ASSIGN_FNS(posix1,ADIOS_METHOD_POSIX1,"POSIX1")
+    // POSIX1 removed, POSIX with MPI_COMM_NULL does the same
+    //ASSIGN_FNS(posix1,ADIOS_METHOD_POSIX1,"POSIX1") 
 
 #  ifndef NO_RESEARCH_TRANSPORTS
     //ASSIGN_FNS(provenance,ADIOS_METHOD_PROVENANCE)
@@ -155,7 +157,8 @@ int adios_parse_method (const char * buf, enum ADIOS_IO_METHOD * method
 #endif
 
     MATCH_STRING_TO_METHOD("POSIX",ADIOS_METHOD_POSIX,0)
-    MATCH_STRING_TO_METHOD("POSIX1",ADIOS_METHOD_POSIX1,0)
+    // POSIX1 removed, POSIX with MPI_COMM_NULL does the same
+    MATCH_STRING_TO_METHOD("POSIX1",ADIOS_METHOD_POSIX,0)
     MATCH_STRING_TO_METHOD("FB",ADIOS_METHOD_POSIX,0)
 
 #if HAVE_DATASPACES
diff --git a/src/core/adios_transport_hooks.h b/src/core/adios_transport_hooks.h
index 929c8b5..f7dbdb9 100644
--- a/src/core/adios_transport_hooks.h
+++ b/src/core/adios_transport_hooks.h
@@ -11,8 +11,9 @@
 #include "config.h"
 #include <stdint.h>
 #include <string.h>
-#include "core/util.h" /* PairStruct* */
+#include "core/strutil.h" /* PairStruct* */
 #include "public/adios_mpi.h"
+#include "core/types.h" /* enum BUFFERING_OVERFLOW_STRATEGY */
 
 #define FORWARD_DECLARE_EMPTY(a) \
 void adios_##a##_init (const PairStruct * parameters \
@@ -21,9 +22,9 @@ void adios_##a##_init (const PairStruct * parameters \
 int adios_##a##_open (struct adios_file_struct * fd \
                      ,struct adios_method_struct * method, MPI_Comm comm \
                      ) {return 0;} \
-enum ADIOS_FLAG adios_##a##_should_buffer (struct adios_file_struct * fd \
-                                          ,struct adios_method_struct * method \
-                                          ) {return 0;} \
+enum BUFFERING_STRATEGY adios_##a##_should_buffer (struct adios_file_struct * fd \
+                                                  ,struct adios_method_struct * method \
+                                                  ) {return no_buffering;} \
 void adios_##a##_write (struct adios_file_struct * fd \
                        ,struct adios_var_struct * v \
                        ,const void * data \
@@ -41,6 +42,9 @@ void adios_##a##_read (struct adios_file_struct * fd \
                       ,uint64_t buffer_size \
                       ,struct adios_method_struct * method \
                       ) {} \
+void adios_##a##_buffer_overflow (struct adios_file_struct * fd \
+                                 ,struct adios_method_struct * method \
+                                 ) {} \
 void adios_##a##_close (struct adios_file_struct * fd \
                        ,struct adios_method_struct * method \
                        ) {} \
@@ -56,9 +60,9 @@ void adios_##a##_init (const PairStruct * parameters \
 int adios_##a##_open (struct adios_file_struct * fd \
                      ,struct adios_method_struct * method, MPI_Comm comm \
                      ); \
-enum ADIOS_FLAG adios_##a##_should_buffer (struct adios_file_struct * fd \
-                                          ,struct adios_method_struct * method \
-                                          ); \
+enum BUFFERING_STRATEGY adios_##a##_should_buffer (struct adios_file_struct * fd \
+                                                  ,struct adios_method_struct * method \
+                                                  ); \
 void adios_##a##_write (struct adios_file_struct * fd \
                        ,struct adios_var_struct * v \
                        ,const void * data \
@@ -76,6 +80,9 @@ void adios_##a##_read (struct adios_file_struct * fd \
                       ,uint64_t buffer_size \
                       ,struct adios_method_struct * method \
                       ); \
+void adios_##a##_buffer_overflow (struct adios_file_struct * fd \
+                                 ,struct adios_method_struct * method \
+                                 ); \
 void adios_##a##_close (struct adios_file_struct * fd \
                        ,struct adios_method_struct * method \
                        ); \
@@ -103,23 +110,23 @@ struct adios_var_struct;
 enum ADIOS_IO_METHOD {ADIOS_METHOD_UNKNOWN     = -2
               ,ADIOS_METHOD_NULL        = -1
               ,ADIOS_METHOD_MPI         = 0
-              ,ADIOS_METHOD_DATATAP     = 1
+              ,ADIOS_METHOD_DATATAP     = 1     //OBSOLETE
               ,ADIOS_METHOD_POSIX       = 2
               ,ADIOS_METHOD_DATASPACES  = 3
-              ,ADIOS_METHOD_VTK         = 4
-              ,ADIOS_METHOD_POSIX_ASCII = 5
-              ,ADIOS_METHOD_MPI_CIO     = 6
+              ,ADIOS_METHOD_VTK         = 4     //non-existent
+              ,ADIOS_METHOD_POSIX_ASCII = 5     //non-existent
+              ,ADIOS_METHOD_MPI_CIO     = 6     //OBSOLETE
               ,ADIOS_METHOD_PHDF5       = 7
-              ,ADIOS_METHOD_PROVENANCE  = 8
-              ,ADIOS_METHOD_MPI_STRIPE  = 9
+              ,ADIOS_METHOD_PROVENANCE  = 8     //OBSOLETE
+              ,ADIOS_METHOD_MPI_STRIPE  = 9     //OBSOLETE
               ,ADIOS_METHOD_MPI_LUSTRE  = 10
-              ,ADIOS_METHOD_MPI_STAGGER = 11
-              ,ADIOS_METHOD_MPI_AGG     = 12
-              ,ADIOS_METHOD_ADAPTIVE    = 13
-              ,ADIOS_METHOD_POSIX1      = 14
+              ,ADIOS_METHOD_MPI_STAGGER = 11    //OBSOLETE
+              ,ADIOS_METHOD_MPI_AGG     = 12    //OBSOLETE
+              ,ADIOS_METHOD_ADAPTIVE    = 13    //OBSOLETE
+              ,ADIOS_METHOD_POSIX1      = 14    //OBSOLETE
               ,ADIOS_METHOD_NC4         = 15
               ,ADIOS_METHOD_MPI_AMR     = 16
-              ,ADIOS_METHOD_MPI_AMR1    = 17
+              ,ADIOS_METHOD_MPI_AMR1    = 17    //OBSOLETE
               ,ADIOS_METHOD_FLEXPATH    = 18
               ,ADIOS_METHOD_NSSI_STAGING = 19
               ,ADIOS_METHOD_NSSI_FILTER  = 20
diff --git a/src/core/adiosf.c b/src/core/adiosf.c
index d062186..4cdf778 100644
--- a/src/core/adiosf.c
+++ b/src/core/adiosf.c
@@ -16,6 +16,7 @@
 #include "core/adios_transport_hooks.h"
 #include "core/futils.h"
 #include "core/globals.h"
+#include "core/buffer.h"
 #include "public/adios_error.h"
 #include "core/adios_logger.h"
 #include "core/adios_timing.h"
@@ -30,6 +31,7 @@ extern "C"  /* prevent C++ name mangling */
 #endif
 
 extern int adios_errno;
+extern struct adios_transport_struct * adios_transports;
 
 ///////////////////////////////////////////////////////////////////////////////
 void FC_FUNC_(adios_set_application_id, ADIOS_SET_APPLICATION_ID) (int *id, int * err)
@@ -53,6 +55,11 @@ void FC_FUNC_(adios_init, ADIOS_INIT) (const char * config, MPI_Fint * comm, int
     }
 }
 
+int FC_FUNC_(adios_is_initialized, ADIOS_IS_INITIALIZED) ()
+{
+    return (adios_transports != NULL);
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 void FC_FUNC_(adios_init_noxml, ADIOS_INIT_LOCAL) (MPI_Fint * comm, int * err)
 {
@@ -74,6 +81,14 @@ void FC_FUNC_(adios_allocate_buffer, ADIOS_ALLOCATE_BUFFER) (int *sizeMB, int *
 }
 
 ///////////////////////////////////////////////////////////////////////////////
+void FC_FUNC_(adios_set_max_buffer_size, ADIOS_SET_MAX_BUFFER_SIZE) (int *max_buffer_size_MB)
+{
+    if (*max_buffer_size_MB > 0)
+        adios_databuffer_set_max_size ((uint64_t)*max_buffer_size_MB * 1024L * 1024L);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
 void FC_FUNC_(adios_open, ADIOS_OPEN) 
     (int64_t * fd, const char * group_name, const char * name
     ,const char * mode, MPI_Fint *comm, int * err
@@ -340,9 +355,9 @@ void FC_FUNC_(adios_write, ADIOS_WRITE)
     }
 
     *err = common_adios_write (fd, v, var);
-    if (fd->mode != adios_mode_read)
+    if (!adios_errno && fd->mode != adios_mode_read)
     {
-        adios_copy_var_written (fd->group, v);
+        adios_copy_var_written (fd, v);
     }
 
     free (buf1);
@@ -618,7 +633,7 @@ void FC_FUNC_(adios_define_attribute, ADIOS_DEFINE_ATTRIBUTE)
 
 void FC_FUNC_(adios_define_attribute_byvalue, ADIOS_DEFINE_ATTRIBUTE_BYVALUE) 
     (int64_t * group, const char * name, const char * path, int * type, int * nelems, 
-     void * values, int * err, int name_size, int path_size)
+     const void * values, int * err, int name_size, int path_size)
 {
     char * buf1 = 0;
     char * buf2 = 0;
diff --git a/src/core/adiosf_defs_mod.f90 b/src/core/adiosf_defs_mod.f90
index 39d8461..2f6d826 100644
--- a/src/core/adiosf_defs_mod.f90
+++ b/src/core/adiosf_defs_mod.f90
@@ -54,6 +54,14 @@ module adios_defs_mod
     integer, parameter :: ADIOS_LOCKMODE_CURRENT = 0
     integer, parameter :: ADIOS_LOCKMODE_ALL     = 0
 
+    
+    !
+    ! Selection types
+    !
+    integer, parameter :: ADIOS_SELECTION_TYPE_BOUNDINGBOX  = 0
+    integer, parameter :: ADIOS_SELECTION_TYPE_POINTS       = 1
+    integer, parameter :: ADIOS_SELECTION_TYPE_WRITEBLOCK   = 2
+    integer, parameter :: ADIOS_SELECTION_TYPE_AUTO         = 3
 
     !
     ! ADIOS error codes
diff --git a/src/core/adiosf_read.c b/src/core/adiosf_read.c
index 0251b0c..d531eb9 100644
--- a/src/core/adiosf_read.c
+++ b/src/core/adiosf_read.c
@@ -528,39 +528,131 @@ void FC_FUNC_(adios_inq_attr, ADIOS_INQ_ATTR)
 void FC_FUNC_(adios_selection_boundingbox, ADIOS_SELECTION_BOUNDINGBOX) 
            (int64_t * fsel, int *ndim, uint64_t *start, uint64_t *count)
 {   
-    ADIOS_SELECTION * sel = common_read_selection_boundingbox (*ndim, start, count);
+    ADIOS_SELECTION * sel = a2sel_boundingbox (*ndim, start, count);
     *fsel = (int64_t) sel;
 }
 
 void FC_FUNC_(adios_selection_points, ADIOS_SELECTION_POINTS) 
             (int64_t *fsel, int *ndim, uint64_t *npoints, uint64_t *points)
 {
-    ADIOS_SELECTION * sel = common_read_selection_points (*ndim, *npoints, points);
+    ADIOS_SELECTION * sel = a2sel_points (*ndim, *npoints, points, NULL, 0);
     *fsel = (int64_t) sel;
 }
 
 void FC_FUNC_(adios_selection_writeblock, ADIOS_SELECTION_WRITEBLOCK) (int64_t *fsel, int *index)
 {
-    ADIOS_SELECTION * sel = common_read_selection_writeblock (*index);
+    ADIOS_SELECTION * sel = a2sel_writeblock (*index);
     *fsel = (int64_t) sel;
 }
 
 void FC_FUNC_(adios_selection_auto, ADIOS_SELECTION_AUTO) (int64_t *fsel, char *hints, int hints_len)
 {
     char *hintstr = futils_fstr_to_cstr(hints, hints_len);
-    ADIOS_SELECTION * sel = common_read_selection_auto (hintstr);
+    ADIOS_SELECTION * sel = a2sel_auto (hintstr);
     *fsel = (int64_t) sel;
-    free (hintstr);
+    /* Cannot free hintstr here because the selection simply uses the pointer without copy */
 }
 
 void FC_FUNC_(adios_selection_delete, ADIOS_SELECTION_AUTO) (int64_t *fsel)
 {
     ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
-    common_read_selection_delete (sel);
+    if (sel->type == ADIOS_SELECTION_AUTO) {
+        /* free here the autoselection hints string */
+        free (sel->u.autosel.hints);
+    }
+    a2sel_free (sel);
     *fsel = 0;
 }
 
+void FC_FUNC_(adios_selection_get_type, ADIOS_SELECTION_GET_TYPE) (int64_t * fsel, int *seltype)
+{   
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    *seltype = (int) sel->type;
+}
+
+void FC_FUNC_(adios_selection_get_ndim, ADIOS_SELECTION_GET_NDIM) (int64_t * fsel, int *ndim)
+{   
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    switch (sel->type) {
+        case ADIOS_SELECTION_BOUNDINGBOX:
+            *ndim = (int) sel->u.bb.ndim;
+            break;
+        case ADIOS_SELECTION_POINTS:
+            *ndim = (int) sel->u.points.ndim;
+            break;
+        default:
+            *ndim = 1;
+            break;
+    }
+}
+
+void FC_FUNC_(adios_selection_get_boundingbox, ADIOS_SELECTION_GET_BOUNDINGBOX) (int64_t * fsel, uint64_t *start, uint64_t *count)
+{   
+    int i;
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    switch (sel->type) {
+        case ADIOS_SELECTION_BOUNDINGBOX:
+            for (i=0; i < sel->u.bb.ndim; i++) {
+                start[i] = sel->u.bb.start[i];
+                count[i] = sel->u.bb.count[i];
+            }
+            break;
+        default:
+            break;
+    }
+}
 
+void FC_FUNC_(adios_selection_get_npoints, ADIOS_SELECTION_GET_NPOINTS) (int64_t * fsel, uint64_t *npoints)
+{   
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    switch (sel->type) {
+        case ADIOS_SELECTION_POINTS:
+            *npoints = sel->u.points.npoints;
+            break;
+        default:
+            *npoints = 0;
+            break;
+    }
+}
+
+void FC_FUNC_(adios_selection_get_points, ADIOS_SELECTION_GET_POINTS) (int64_t * fsel, uint64_t *points, uint64_t *from_index, uint64_t *npoints)
+{   
+    uint64_t *src;
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    switch (sel->type) {
+        case ADIOS_SELECTION_POINTS:
+            src = sel->u.points.points + *from_index;
+            memcpy (points, src, *npoints * sel->u.points.ndim * sizeof(uint64_t));
+            break;
+        default:
+            break;
+    }
+}
+
+void FC_FUNC_(adios_selection_get_index, ADIOS_SELECTION_GET_INDEX) (int64_t * fsel, int *index)
+{   
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    switch (sel->type) {
+        case ADIOS_SELECTION_WRITEBLOCK:
+            *index = sel->u.block.index;
+            break;
+        default:
+            *index = 0;
+            break;
+    }
+}
+
+void FC_FUNC_(adios_selection_get_hints, ADIOS_SELECTION_GET_HINTS) (int64_t * fsel, char *hints, int hints_len)
+{   
+    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) *fsel;
+    switch (sel->type) {
+        case ADIOS_SELECTION_AUTO:
+            futils_cstr_to_fstr( sel->u.autosel.hints, (char *)hints, hints_len);
+            break;
+        default:
+            break;
+    }
+}
 /**************************************************************************/
 /*                  Specific function for each data type                  */
 /**************************************************************************/
diff --git a/src/core/adiosf_read_mod.f90 b/src/core/adiosf_read_mod.f90
index 563671b..4405d44 100644
--- a/src/core/adiosf_read_mod.f90
+++ b/src/core/adiosf_read_mod.f90
@@ -187,6 +187,63 @@ module adios_read_mod
             integer*8,      intent(in)           :: sel
         end subroutine
 
+        subroutine adios_selection_get_type (sel, seltype)
+            implicit none
+            integer*8,      intent(in)           :: sel
+            integer,        intent(out)          :: seltype
+            ! see adios_defs_mod module for ADIOS_SELECTION_TYPE_* types
+        end subroutine
+
+        subroutine adios_selection_get_ndim (sel, ndim)
+            implicit none
+            integer*8,      intent(in)           :: sel
+            integer,        intent(out)          :: ndim
+            ! ndim for Bounding Box and Points selections, =1 on Writeblock and Auto
+        end subroutine
+
+        subroutine adios_selection_get_boundingbox (sel, start, count)
+            implicit none
+            integer*8,      intent(in)              :: sel
+            integer*8, dimension(*), intent(out)  :: start
+            integer*8, dimension(*), intent(out)  :: count
+            ! undefined behavior for non-bounding box selections
+            ! allocated array should be provided by caller
+        end subroutine
+
+        subroutine adios_selection_get_npoints (sel, npoints)
+            implicit none
+            integer*8,      intent(in)           :: sel
+            integer*8,      intent(out)          :: npoints
+            ! # of points in a Points selections, =0 for all others
+        end subroutine
+
+        subroutine adios_selection_get_points (sel, points, from_index, npoints)
+            implicit none
+            integer*8,      intent(in)              :: sel
+            integer*8, dimension(*), intent(inout)  :: points
+            integer*8,      intent(in)              :: from_index
+            integer*8,      intent(in)              :: npoints
+            ! array of n-dimensional points in a Points selections, 
+            ! npoints number of points returned from index 'from_index'
+            ! from_index starts from 0
+            ! allocated array should be provided by caller
+            ! undefined behavior for non-point selections
+        end subroutine
+
+        subroutine adios_selection_get_index (sel, index)
+            implicit none
+            integer*8,      intent(in)           :: sel
+            integer,        intent(out)          :: index
+            ! index in Writeblock selections, =0 for all others
+        end subroutine
+
+        subroutine adios_selection_get_hints (sel, hints)
+            implicit none
+            integer*8,      intent(in)       :: sel
+            character(*),   intent(inout)    :: hints
+            ! allocated character array should be provided by caller
+            ! necessary length is unknown
+        end subroutine
     end interface
 
     !
diff --git a/src/core/adiosf_read_v1.c b/src/core/adiosf_read_v1.c
index 06187ef..c3b7864 100644
--- a/src/core/adiosf_read_v1.c
+++ b/src/core/adiosf_read_v1.c
@@ -343,7 +343,7 @@ void FC_FUNC_(adios_read_var, ADIOS_READ_VAR)
             nsteps    = (int) count[vi->ndim];
         }
 
-        ADIOS_SELECTION * sel = common_read_selection_boundingbox (vi->ndim, start, count);
+        ADIOS_SELECTION * sel = a2sel_boundingbox (vi->ndim, start, count);
 
         common_read_schedule_read (afp, sel, varstr, from_step, nsteps, NULL /* NCSU ALACRITY-ADIOS */, data);
         int ret = common_read_perform_reads (afp, 1);
@@ -358,7 +358,7 @@ void FC_FUNC_(adios_read_var, ADIOS_READ_VAR)
         }
 
         common_read_free_varinfo(vi);
-        common_read_selection_delete(sel);
+        a2sel_free(sel);
         free(varstr);
     } else {
         *read_bytes = adios_errno;
@@ -432,7 +432,7 @@ void FC_FUNC_(adios_read_local_var, ADIOS_READ_LOCAL_VAR)
             }
         }
 
-        ADIOS_SELECTION * sel = common_read_selection_writeblock (idx_in_step);
+        ADIOS_SELECTION * sel = a2sel_writeblock (idx_in_step);
 
         common_read_schedule_read_byid (afp, sel, vi->varid, step, 1, NULL /* NCSU ALACRITY-ADIOS */, data);
         int ret = common_read_perform_reads (afp, 1);
@@ -446,7 +446,7 @@ void FC_FUNC_(adios_read_local_var, ADIOS_READ_LOCAL_VAR)
         }
 
         common_read_free_varinfo(vi);
-        common_read_selection_delete(sel);
+        a2sel_free(sel);
         free(varstr);
 
     } else {
diff --git a/src/core/adiosf_write_mod.f90 b/src/core/adiosf_write_mod.f90
index ec979ef..231b29f 100644
--- a/src/core/adiosf_write_mod.f90
+++ b/src/core/adiosf_write_mod.f90
@@ -25,6 +25,9 @@ module adios_write_mod
             integer,        intent(out) :: err
         end subroutine
 
+        logical function adios_is_initialized ()
+        end function
+
         subroutine adios_init_noxml (comm, err)
             implicit none
             integer,        intent(in)  :: comm
@@ -161,11 +164,9 @@ module adios_write_mod
             integer,        intent(out) :: err
         end subroutine
 
-
-        subroutine adios_allocate_buffer (sizeMB, err)
+        subroutine adios_set_max_buffer_size (sizeMB)
             implicit none
             integer,        intent(in)  :: sizeMB
-            integer,        intent(out) :: err
         end subroutine
 
         subroutine adios_define_schema_version (group_id, schema_version)
@@ -299,6 +300,13 @@ module adios_write_mod
             character(*),   intent(in)  :: name
         end subroutine
 
+        !! This function is deprecated
+        subroutine adios_allocate_buffer (sizeMB, err)
+            implicit none
+            integer,        intent(in)  :: sizeMB
+            integer,        intent(out) :: err
+        end subroutine
+
     end interface
 
     !
diff --git a/src/core/bp_utils.c b/src/core/bp_utils.c
index 6aaa173..524423c 100644
--- a/src/core/bp_utils.c
+++ b/src/core/bp_utils.c
@@ -15,6 +15,7 @@
 #include "public/adios.h"
 #include "public/adios_read.h"
 #include "public/adios_error.h"
+#include "public/adios_version.h"
 #include "core/bp_utils.h"
 #include "core/adios_internals.h"
 #include "core/adios_bp_v1.h"
@@ -70,7 +71,7 @@ void bp_alloc_aligned (struct adios_bp_buffer_struct_v1 * b, uint64_t size)
     b->allocated_buff_ptr =  malloc (size + BYTE_ALIGN - 1);
     if (!b->allocated_buff_ptr)
     {
-        adios_error ( err_no_memory, "Cannot allocate %llu bytes\n", size);
+        adios_error ( err_no_memory, "Cannot allocate %" PRIu64 " bytes\n", size);
 
         b->buff = NULL;
         b->length = 0;
@@ -91,7 +92,7 @@ void bp_realloc_aligned (struct adios_bp_buffer_struct_v1 * b
                                     );
     if (!b->allocated_buff_ptr)
     {
-        adios_error ( err_no_memory, "Cannot allocate %llu bytes\n", size);
+        adios_error ( err_no_memory, "Cannot allocate %" PRIu64 " bytes\n", size);
 
         b->buff = NULL;
         b->length = 0;
@@ -159,10 +160,9 @@ int get_time (struct adios_index_var_struct_v1 * v, int step)
  * say, the 1th dump, 3rd dump, 5th dump. The corresponding step
  * should be 0, 1, 2 for it.
  */
-int _adios_step_to_time (const ADIOS_FILE * fp, struct adios_index_var_struct_v1 * v, int from_steps)
+int adios_step_to_time_v1 (const ADIOS_FILE * fp, struct adios_index_var_struct_v1 * v, int from_steps)
 {
     BP_PROC * p = GET_BP_PROC (fp);
-    BP_FILE * fh = GET_BP_FILE (fp);
     int t, time;
 
     t = fp->current_step + from_steps;
@@ -194,7 +194,7 @@ int adios_step_to_time (const ADIOS_FILE * fp, int varid, int from_steps)
     mapped_varid = p->varid_mapping[varid];
     v = bp_find_var_byid (fh, mapped_varid);
 
-    return _adios_step_to_time (fp, v, from_steps);
+    return adios_step_to_time_v1 (fp, v, from_steps);
 }
 
 int bp_read_open (const char * filename,
@@ -296,7 +296,7 @@ ADIOS_VARINFO * bp_inq_var_byid (const ADIOS_FILE * fp, int varid)
 
     v = bp_find_var_byid (fh, varid);
 
-    varinfo = (ADIOS_VARINFO *) malloc (sizeof (ADIOS_VARINFO));
+    varinfo = (ADIOS_VARINFO *) calloc (1, sizeof (ADIOS_VARINFO));
     assert (varinfo);
 
     /* Note: set varid as the real varid.
@@ -413,7 +413,6 @@ BP_FILE * BP_FILE_alloc (const char * fname, MPI_Comm comm)
     fh->vars_table = 0;
     fh->b = malloc (sizeof (struct adios_bp_buffer_struct_v1));
     assert (fh->b);
-    BP_file_handle_list *lst = &fh->subfile_handles; //just for simplifying typing
     fh->subfile_handles.n_handles = 0;
     fh->subfile_handles.warning_printed = 0;
     fh->subfile_handles.head = NULL;
@@ -513,6 +512,7 @@ int bp_close (BP_FILE * fh)
 
     /* Free variable structures */
     /* alloc in bp_utils.c: bp_parse_vars() */
+    /* FIXME: this while loop is identical to adios_internals.c:adios_clear_vars_index_v1() */
     while (vars_root) {
         vr = vars_root;
         vars_root = vars_root->next;
@@ -554,6 +554,9 @@ int bp_close (BP_FILE * fh)
 
                 free (vr->characteristics[j].stats);
                 vr->characteristics[j].stats = 0;
+
+                // NCSU ALACRITY-ADIOS - Clear the transform metadata
+                adios_transform_clear_transform_characteristic(&vr->characteristics[j].transform);
             }
         }
         if (vr->characteristics)
@@ -581,8 +584,17 @@ int bp_close (BP_FILE * fh)
         ar = attrs_root;
         attrs_root = attrs_root->next;
         for (j = 0; j < ar->characteristics_count; j++) {
-            if (ar->characteristics[j].value)
-                free (ar->characteristics[j].value);
+            if (ar->characteristics[j].value) {
+                if (ar->type == adios_string_array)
+                    a2s_free_string_array (ar->characteristics [j].value, ar->nelems);
+                else
+                    free (ar->characteristics[j].value);
+                ar->characteristics[j].value = NULL;
+            }
+            if (ar->characteristics[j].dims.dims) {
+                free (ar->characteristics[j].dims.dims);
+                ar->characteristics[j].dims.dims = NULL;
+            }
         }
         if (ar->characteristics)
             free (ar->characteristics);
@@ -733,9 +745,9 @@ int bp_read_minifooter (BP_FILE * bp_struct)
     BUFREAD64(b, b->pg_index_offset)
     mh->pgs_index_offset = b->pg_index_offset;
     // validity check  
-    if (b->pg_index_offset > b->file_size) {
+    if (b->pg_index_offset+MINIFOOTER_SIZE >= b->file_size) {
         adios_error (err_file_open_error,
-                "Invalid BP file detected. PG index offset (%lld) > file size (%lld)\n",
+                "Invalid BP file detected. PG index offset (%" PRIu64 ") is too big. File size is (%" PRIu64 ")\n",
                 b->pg_index_offset, b->file_size);
         return 1;
     }
@@ -743,15 +755,15 @@ int bp_read_minifooter (BP_FILE * bp_struct)
     BUFREAD64(b, b->vars_index_offset)
     mh->vars_index_offset = b->vars_index_offset;
     // validity check  
-    if (b->vars_index_offset > b->file_size) {
+    if (b->vars_index_offset+MINIFOOTER_SIZE >= b->file_size) {
         adios_error (err_file_open_error,
-                "Invalid BP file detected. Variable index offset (%lld) > file size (%lld)\n",
+                "Invalid BP file detected. Variable index offset (%" PRIu64 ") is too big. File size is (%" PRIu64 ")\n",
                 b->vars_index_offset, b->file_size);
         return 1;
     }
-    if (b->vars_index_offset < b->pg_index_offset) {
+    if (b->vars_index_offset <= b->pg_index_offset) {
         adios_error (err_file_open_error,
-                "Invalid BP file detected. Variable index offset (%lld) < PG index offset (%lld)\n",
+                "Invalid BP file detected. Variable index offset (%" PRIu64 ") <= PG index offset (%" PRIu64 ")\n",
                 b->vars_index_offset, b->pg_index_offset);
         return 1;
     }
@@ -760,15 +772,15 @@ int bp_read_minifooter (BP_FILE * bp_struct)
     BUFREAD64(b, b->attrs_index_offset)
     mh->attrs_index_offset = b->attrs_index_offset;
     // validity check  
-    if (b->attrs_index_offset > b->file_size) {
+    if (b->attrs_index_offset+MINIFOOTER_SIZE >= b->file_size) {
         adios_error (err_file_open_error,
-                "Invalid BP file detected. Attribute index offset (%lld) > file size (%lld)\n",
+                "Invalid BP file detected. Attribute index offset (%" PRIu64 ") is too big. File size is (%" PRIu64 ")\n",
                 b->attrs_index_offset, b->file_size);
         return 1;
     }
-    if (b->attrs_index_offset < b->vars_index_offset) {
+    if (b->attrs_index_offset <= b->vars_index_offset) {
         adios_error (err_file_open_error,
-                "Invalid BP file detected. Attribute index offset (%lld) < Variable index offset (%lld)\n",
+                "Invalid BP file detected. Attribute index offset (%" PRIu64 ") <= Variable index offset (%" PRIu64 ")\n",
                 b->attrs_index_offset, b->vars_index_offset);
         return 1;
     }
@@ -1053,7 +1065,7 @@ int bp_parse_attrs (BP_FILE * fh)
     if (b->length - b->offset < VARS_MINIHEADER_SIZE) {
         adios_error (err_invalid_buffer,
                      "adios_parse_attrs_index_v1 requires a buffer "
-                     "of at least %d bytes.  Only %llu were provided\n",
+                     "of at least %d bytes.  Only %" PRId64 " were provided\n",
                      VARS_MINIHEADER_SIZE,
                      b->length - b->offset);
 
@@ -1314,7 +1326,7 @@ int bp_parse_vars (BP_FILE * fh)
     if (b->length - b->offset < VARS_MINIHEADER_SIZE) {
         adios_error (err_invalid_buffer,
                      "bp_parse_vars requires a buffer "
-                     "of at least %d bytes.  Only %llu were provided\n",
+                     "of at least %d bytes.  Only %" PRId64 " were provided\n",
                      VARS_MINIHEADER_SIZE,
                      b->length - b->offset);
 
@@ -2159,7 +2171,7 @@ int bp_get_dimension_characteristics(struct adios_index_characteristic_struct_v1
    ldims/gdims/offsets with 'time' extracted. */
 int bp_get_dimension_generic_notime (const struct adios_index_characteristic_dims_struct_v1 *dims,
         uint64_t *ldims, uint64_t *gdims, uint64_t *offsets,
-        int file_is_fortran)
+        int file_is_fortran, int * has_oldschool_time_index)
 {
     int is_global = 0, dummy = 0, has_time = 0;
     int k;
@@ -2228,7 +2240,7 @@ int bp_get_dimension_generic_notime (const struct adios_index_characteristic_dim
                             "in the first dimension. l:g:o = (");
                     for (k = 0; k < ndim; k++)
                     {
-                        log_error_cont ("%llu:%llu:%llu%s",
+                        log_error_cont ("%" PRIu64 ":%" PRIu64 ":%" PRIu64 "%s",
                                 ldims[k], gdims[k], offsets[k],
                                 (k<ndim-1 ? ", " : "") );
                     }
@@ -2252,7 +2264,7 @@ int bp_get_dimension_generic_notime (const struct adios_index_characteristic_dim
                             "dimension in the last dimension. l:g:o = (");
                     for (k = 0; k < ndim; k++)
                     {
-                        log_error_cont ("%llu:%llu:%llu%s",
+                        log_error_cont ("%" PRIu64 ":%" PRIu64 ":%" PRIu64 "%s",
                                 ldims[k], gdims[k], offsets[k],
                                 (k<ndim-1 ? ", " : "") );
                     }
@@ -2277,7 +2289,7 @@ int bp_get_dimension_generic_notime (const struct adios_index_characteristic_dim
             }
         }
     }
-
+    *has_oldschool_time_index = has_time;
     return is_global;
 }
 
@@ -2291,8 +2303,8 @@ int bp_get_dimension_characteristics_notime (struct adios_index_characteristic_s
     //int is_transformed = (ch->transform.transform_type != adios_transform_none);
     //const struct adios_index_characteristic_dims_struct_v1 *dims =
     //    is_transformed ? &ch->transform.pre_transform_dimensions : &ch->dims;
-
-    return bp_get_dimension_generic_notime(&ch->dims, ldims, gdims, offsets, file_is_fortran); // dims
+    int has_time;
+    return bp_get_dimension_generic_notime(&ch->dims, ldims, gdims, offsets, file_is_fortran, &has_time); // dims
 }
 
 
@@ -2334,16 +2346,11 @@ void bp_get_dimensions_generic (const ADIOS_FILE * fp, struct adios_index_var_st
             i++;
         }
 
-        if (i < var_root->characteristics_count)
-        {
-            var_dims = use_pretransform_dimensions ?
+        assert(i < var_root->characteristics_count);
+        var_dims = use_pretransform_dimensions ?
                        &var_root->characteristics[i].transform.pre_transform_dimensions
                      : &var_root->characteristics[i].dims;
-        }
-        else
-        {
-            // shouldn't be here
-        }
+
     }
 
     has_time_index_characteristic = fh->mfooter.version & ADIOS_VERSION_HAVE_TIME_INDEX_CHARACTERISTIC;
@@ -2371,7 +2378,8 @@ void bp_get_dimensions_generic (const ADIOS_FILE * fp, struct adios_index_var_st
     {
         j = 0;
         /* local array */
-        for (i = 0; i < * ndim; i++)
+        int n = *ndim;
+        for (i = 0; i < n; i++)
         {
             /* size of time dimension is always registered as 1 for an array */
             if (ldims[i] == 1 && var_root->characteristics_count > 1)
@@ -2410,7 +2418,7 @@ void bp_get_dimensions_generic (const ADIOS_FILE * fp, struct adios_index_var_st
                                "in the first dimension. l:g:o = (");
                     for (i = 0; i < * ndim; i++)
                     {
-                        log_error_cont ("%llu:%llu:%llu%s",
+                        log_error_cont ("%" PRIu64 ":%" PRIu64 ":%" PRIu64 "%s",
                                         ldims[i], gdims[i], offsets[i],
                                         (i<*ndim-1 ? ", " : "") );
                     }
@@ -2428,7 +2436,7 @@ void bp_get_dimensions_generic (const ADIOS_FILE * fp, struct adios_index_var_st
                                "dimension in the last dimension. l:g:o = (");
                     for (i = 0; i < * ndim; i++)
                     {
-                        log_error_cont ("%llu:%llu:%llu%s",
+                        log_error_cont ("%" PRIu64 ":%" PRIu64 ":%" PRIu64 "%s",
                                         ldims[i], gdims[i], offsets[i],
                                         (i<*ndim-1 ? ", " : "") );
                     }
@@ -2735,7 +2743,7 @@ int bp_read_pgs (BP_FILE * bp_struct)
         MPI_Get_count (&status, MPI_BYTE, &r);
     }
     if (r != b->pg_size)
-        log_error("could not read %llu bytes. read only: %llu\n",
+        log_error("could not read %" PRIu64 " bytes. read only: %" PRIu64 "\n",
                 b->pg_size, r);
 
     return 0;
@@ -2771,7 +2779,7 @@ int bp_read_vars (BP_FILE * bp_struct)
         MPI_Get_count (&status, MPI_BYTE, &r);
     }
     if (r != b->vars_size)
-        log_error ("could not read %llu bytes. read only: %llu\n",
+        log_error ("could not read %" PRIu64 " bytes. read only: %" PRIu64 "\n",
                 b->vars_size, r);
 
     return 0;
@@ -2841,10 +2849,10 @@ void print_vars_index_top (struct adios_index_var_struct_v1 * vars_root)
                 if (j>0)
                     printf (", ");
                 if (pdims->dims [j*3 + 1] != 0) {
-                    printf ("%llu", pdims->dims [j*3 + 1]);
+                    printf ("%" PRIu64 "", pdims->dims [j*3 + 1]);
                 }
                 else {
-                    printf ("%llu", pdims->dims [j*3 + 0]);
+                    printf ("%" PRIu64 "", pdims->dims [j*3 + 0]);
                 }
             }
             printf (")");
@@ -2867,12 +2875,12 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                    ,vars_root->var_name, vars_root->group_name, vars_root->id
                    );
         }
-        printf ("\tVars Characteristics: %llu\n"
+        printf ("\tVars Characteristics: %" PRIu64 "\n"
                ,vars_root->characteristics_count
                );
         uint64_t i;
         for (i = 0; i < vars_root->characteristics_count; i++) {
-            printf ("\t\tOffset(%llu)", vars_root->characteristics [i].offset);
+            printf ("\t\tOffset(%" PRIu64 ")", vars_root->characteristics [i].offset);
             if (vars_root->characteristics [i].min)
             {
                 printf ("\t\tMin(%s)", value_to_string (vars_root->type
@@ -2906,7 +2914,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64 ""
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 1]
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -2914,7 +2922,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64 ""
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                                );
                     }
@@ -3012,11 +3020,11 @@ const char * bp_value_to_string (enum ADIOS_DATATYPES type, void * data)
             break;
 
         case adios_long:
-            sprintf (s, "%lld", *(((int64_t *) data)));
+            sprintf (s, "%" PRId64 "", *(((int64_t *) data)));
             break;
 
         case adios_unsigned_long:
-            sprintf (s, "%llu", *(((uint64_t *) data)));
+            sprintf (s, "%" PRIu64 "", *(((uint64_t *) data)));
             break;
 
         case adios_real:
diff --git a/src/core/bp_utils.h b/src/core/bp_utils.h
index 8df8ba2..f5fa920 100644
--- a/src/core/bp_utils.h
+++ b/src/core/bp_utils.h
@@ -9,6 +9,7 @@
 #define __BP_UTILS_H__
 
 #include <stdio.h>
+#include <inttypes.h>
 #include <sys/types.h>
 #include "public/adios_read.h" // ADIOS_FILE*
 #include "core/bp_types.h"
@@ -20,6 +21,8 @@ BP_FILE * GET_BP_FILE (const ADIOS_FILE * fp);
 void bp_alloc_aligned (struct adios_bp_buffer_struct_v1 * b, uint64_t size);
 void bp_realloc_aligned (struct adios_bp_buffer_struct_v1 * b, uint64_t size);
 int bp_get_endianness( uint32_t change_endianness );
+int adios_step_to_time (const ADIOS_FILE * fp, int varid, int from_steps);
+int adios_step_to_time_v1 (const ADIOS_FILE * fp, struct adios_index_var_struct_v1 * v, int from_steps);
 int bp_parse_characteristics (struct adios_bp_buffer_struct_v1 * b,
                     struct adios_index_var_struct_v1 ** root,
                 uint64_t j);
@@ -56,7 +59,7 @@ int bp_get_dimension_characteristics(struct adios_index_characteristic_struct_v1
                                     uint64_t *ldims, uint64_t *gdims, uint64_t *offsets);
 int bp_get_dimension_generic_notime (const struct adios_index_characteristic_dims_struct_v1 *dims,
                                      uint64_t *ldims, uint64_t *gdims, uint64_t *offsets,
-                                     int file_is_fortran);
+                                     int file_is_fortran, int *has_oldschool_time_index);
 int bp_get_dimension_characteristics_notime (struct adios_index_characteristic_struct_v1 *ch,
                                             uint64_t *ldims, uint64_t *gdims, uint64_t *offsets,
                                             int file_is_fortran);
diff --git a/src/core/buffer.c b/src/core/buffer.c
index cb7487c..e6f0435 100644
--- a/src/core/buffer.c
+++ b/src/core/buffer.c
@@ -8,7 +8,10 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <inttypes.h>
 #include <unistd.h>   /* _SC_PAGE_SIZE, _SC_AVPHYS_PAGES */
+#include <limits.h>   /* ULLONG_MAX */
+#include <assert.h>
 
 #if defined(__APPLE__)
 #    include <mach/mach.h>
@@ -18,23 +21,115 @@
 #include "core/adios_logger.h"
 #include "public/adios_error.h"
 
+#define BYTE_ALIGN 8
+
+/* Data buffer in adios_open() will be allocated with this default size
+   if no better size information is available */
+#define DATABUFFER_DEFAULT_SIZE 16777216L
+
+// max buffer size per file opened
+static uint64_t max_size = 
+#ifdef UULONG_MAX
+    UULONG_MAX;
+#else
+    18446744073709551615ULL; 
+#endif
+
+void adios_databuffer_set_max_size (uint64_t v)  { max_size = v; }
+
+uint64_t adios_databuffer_get_extension_size (struct adios_file_struct *fd)
+{
+    uint64_t size = DATABUFFER_DEFAULT_SIZE;
+    if (size > max_size - fd->buffer_size)
+    {
+        if (fd->buffer_size <= max_size)
+        {
+            size = max_size - fd->buffer_size;
+        }
+        else 
+        {
+            /* Something is terribly wrong, this should not happen */
+            size = 0;
+        }
+    }
+    return size;
+}
+
+int adios_databuffer_resize (struct adios_file_struct *fd, uint64_t size)
+{
+    /* This function works as malloc if fd->allocated_bufptr is NULL, so
+       there is no need for a separate first-allocation function */
+    int retval = 0;
+
+    if (size <= max_size) 
+    {
+        // try to alloc/realloc a buffer to requested size
+        // align usable buffer to BYTE_ALIGN bytes
+        void * b = realloc (fd->allocated_bufptr, 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 = size;
+
+        }
+        else
+        {
+            retval = 1;
+            log_warn ("Cannot allocate %" PRIu64 " bytes for buffered output of group %s. "
+                      "Continue buffering with buffer size %" PRIu64 " MB\n",
+                      size, fd->group->name, fd->buffer_size/1048576);
+        }
+    }
+    else
+    {
+        retval = 1;
+        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",
+                size, fd->group->name, max_size, fd->buffer_size/1048576);
+    }
+
+    return retval;
+}
+
+void adios_databuffer_free (struct adios_file_struct *fd)
+{
+    if (fd->allocated_bufptr)
+        free (fd->allocated_bufptr);
+    fd->allocated_bufptr = 0;
+    fd->buffer = 0;
+    fd->buffer_size = 0;
+    fd->offset = 0;
+    fd->bytes_written = 0;
+}
+
+
+/* OBSOLETE BELOW
+
+   However, write methods still use them in get_write_buffer() functions that don't work anymore
+   and in adios_write() functions to "free" requested amount in get_write_buffer().
+ 
+ */
+
+
 // buffer sizing may be problematic.  To get a more accurate picture, check:
 // http://chandrashekar.info/vault/linux-system-programs.html
 static uint64_t adios_buffer_size_requested = 0;
-static uint64_t adios_buffer_size_max = 0;
 static uint64_t adios_buffer_size_remaining = 0;
 static int adios_buffer_alloc_percentage = 0;  // 1 = yes, 0 = no
 static enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_alloc_when = ADIOS_BUFFER_ALLOC_UNKNOWN;
 
 void      adios_buffer_size_requested_set (uint64_t v)  { adios_buffer_size_requested = v; }
 uint64_t  adios_buffer_size_requested_get (void)        { return adios_buffer_size_requested; }
-void      adios_buffer_size_max_set (uint64_t v)        { adios_buffer_size_max = v; }
 void      adios_buffer_size_remaining_set (uint64_t v)  { adios_buffer_size_remaining = v; }
 void      adios_buffer_alloc_percentage_set (int v)     { adios_buffer_alloc_percentage = v; }
 void      adios_buffer_alloc_when_set (enum ADIOS_BUFFER_ALLOC_WHEN v)   { adios_buffer_alloc_when = v; }
 enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_alloc_when_get (void)   { return adios_buffer_alloc_when; }
 
-#if defined (__APPLE__)
+#if defined (__APPLE__) 
 // See e.g. http://www.opensource.apple.com/source/system_cmds/system_cmds-496/vm_stat.tproj/vm_stat.c
 // for the code for the vm_stat command.
 // http://www.opensource.apple.com/source/xnu/xnu-792.6.61/osfmk/man/host_statistics.html?txt
@@ -53,9 +148,9 @@ static inline size_t adios_get_avphys_pages ()
     // See mach/host_info.h
     host_info_outCnt = HOST_VM_INFO_COUNT;
     if (host_statistics(mach_host_self(),
-                        HOST_VM_INFO,
-                        (host_info_t)&host_info,
-                        &host_info_outCnt) != KERN_SUCCESS ) {
+                HOST_VM_INFO,
+                (host_info_t)&host_info,
+                &host_info_outCnt) != KERN_SUCCESS ) {
         log_error("adios_get_avphys_pages (): host_statistics failed.\n");
         return 0;   // Best we can do
     }
@@ -78,40 +173,40 @@ static inline size_t adios_get_avphys_pages ()
 
 int adios_set_buffer_size ()
 {
-    //if (!adios_buffer_size_max) // not called before
-    if (adios_buffer_size_max < adios_buffer_size_requested) // not called before
+    //if (!max_size) // not called before
+    if (max_size < adios_buffer_size_requested) // not called before
     {
         long pagesize;
         long pages;
 
         pagesize = sysconf (_SC_PAGE_SIZE);
         pages =  adios_get_avphys_pages ();
-    
+
         if (adios_buffer_alloc_percentage)
         {
-            adios_buffer_size_max =   (pages * pagesize / 100.0)
-                                    * adios_buffer_size_requested;
+            max_size =   (pages * pagesize / 100.0)
+                * adios_buffer_size_requested;
         }
         else
         {
             if (pagesize * pages >= adios_buffer_size_requested)
             {
                 // sufficient memory, do nothing
-                adios_buffer_size_max = adios_buffer_size_requested;
+                max_size = adios_buffer_size_requested;
             }
             else
             {
                 adios_error (err_no_memory,
-                             "adios_allocate_buffer (): insufficient memory: "
-                             "%llu requested, %llu available.  Using "
-                             "available.\n",
-                             adios_buffer_size_requested,
-                             (uint64_t)(((uint64_t) pagesize) * pages));
-                adios_buffer_size_max = (uint64_t)((uint64_t) pagesize) * pages;
-           }
+                        "adios_allocate_buffer (): insufficient memory: "
+                        "%" PRIu64 " requested, %" PRIu64 " available.  Using "
+                        "available.\n",
+                        adios_buffer_size_requested,
+                        (uint64_t)(((uint64_t) pagesize) * pages));
+                max_size = (uint64_t)((uint64_t) pagesize) * pages;
+            }
         }
 
-        adios_buffer_size_remaining = adios_buffer_size_max;
+        adios_buffer_size_remaining = max_size;
 
         return 1;
     }
@@ -142,13 +237,13 @@ uint64_t adios_method_buffer_alloc (uint64_t size)
 
 int adios_method_buffer_free (uint64_t size)
 {
-    if (size + adios_buffer_size_remaining > adios_buffer_size_max)
+    if (size + adios_buffer_size_remaining > max_size)
     {
         adios_error (err_invalid_buffer, 
-                     "ERROR: attempt to return more bytes to buffer "
-                     "pool than were originally available\n");
+                "ERROR: attempt to return more bytes to buffer "
+                "pool than were originally available\n");
 
-        adios_buffer_size_remaining = adios_buffer_size_max;
+        adios_buffer_size_remaining = max_size;
 
         return 0;
     }
diff --git a/src/core/buffer.h b/src/core/buffer.h
index b2b1ee4..0167f85 100644
--- a/src/core/buffer.h
+++ b/src/core/buffer.h
@@ -9,10 +9,32 @@
 #define ADIOS_BUFFER_H
 
 #include "public/adios_types.h"
+#include "core/adios_internals.h"
 
+/* Set the maximum buffer size usable by one adios_open()...adios_close() operation */
+void  adios_databuffer_set_max_size (uint64_t v);
+
+/* Return a size with which the buffer can be extended up to the maximum.
+   It returns a default size unless the existing buffer size plus the default size is
+   greater than the max size. In that case it returns max size - current size.
+   It does not mean that realloc will succeed.
+   It does not return current size + something, just the something.
+*/
+uint64_t adios_databuffer_get_extension_size (struct adios_file_struct *fd);
+
+/* Resize (or create) the buffer to 'size' if size is less than maximum. 
+   It does NOT resize the buffer up to the maximum if size is greater than the maximum
+*/
+int adios_databuffer_resize (struct adios_file_struct *fd, uint64_t size);
+void adios_databuffer_free (struct adios_file_struct *fd);
+
+
+
+/*
+   OBSOLETE functions, cannot remove until disfunctional method functions are revised 
+*/
 void      adios_buffer_size_requested_set (uint64_t v);
 uint64_t  adios_buffer_size_requested_get (void);
-void      adios_buffer_size_max_set (uint64_t v);
 void      adios_buffer_size_remaining_set (uint64_t v);
 void      adios_buffer_alloc_percentage_set (int v);
 void      adios_buffer_alloc_when_set (enum ADIOS_BUFFER_ALLOC_WHEN v);
diff --git a/src/core/common_adios.c b/src/core/common_adios.c
index 0f11d4f..4357621 100644
--- a/src/core/common_adios.c
+++ b/src/core/common_adios.c
@@ -18,6 +18,7 @@
 // xml parser
 #include <mxml.h>
 
+#include "core/types.h"
 #include "core/adios_internals.h"
 #include "core/adios_internals_mxml.h"
 #include "core/common_adios.h"
@@ -49,6 +50,8 @@ extern int adios_errno;
 int common_adios_init (const char * config, MPI_Comm comm)
 {
     // parse the config file
+    if (comm == MPI_COMM_NULL)
+        comm = MPI_COMM_SELF;
     adios_errno = err_no_error;
     adios_parse_config (config, comm);
     return adios_errno;
@@ -58,6 +61,8 @@ int common_adios_init (const char * config, MPI_Comm comm)
 // all XML file pieces will be provided by another series of calls
 int common_adios_init_noxml (MPI_Comm comm)
 {
+    if (comm == MPI_COMM_NULL)
+        comm = MPI_COMM_SELF;
     adios_errno = err_no_error;
     adios_local_config (comm);
     return adios_errno;
@@ -94,21 +99,26 @@ int common_adios_allocate_buffer (enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_allo
                                  ,uint64_t buffer_size)
 {
     adios_errno = err_no_error;
-    adios_buffer_size_requested_set (buffer_size * 1024 * 1024);
-    adios_buffer_alloc_when_set (adios_buffer_alloc_when);
-    adios_set_buffer_size ();
+    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");
+    //adios_buffer_size_requested_set (buffer_size * 1024 * 1024);
+    //adios_buffer_alloc_when_set (adios_buffer_alloc_when);
+    //adios_set_buffer_size ();
     return adios_errno;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 // Drew: used for experiments
-uint32_t pinned_timestep = 0;
+static uint32_t pinned_timestep = 0;
 void adios_pin_timestep(uint32_t ts) {
   pinned_timestep = ts;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
-int common_adios_open (int64_t * fd, const char * group_name
+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
                )
 {
@@ -118,23 +128,23 @@ int common_adios_open (int64_t * fd, const char * group_name
 #endif
 
     int64_t group_id = 0;
-    struct adios_file_struct * fd_p = (struct adios_file_struct *)
+    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;
     enum ADIOS_METHOD_MODE mode;
 
     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;
     if (!g) {
         adios_error(err_invalid_group, 
                 "adios_open: try to open file %s with undefined group: %s\n", 
                 name, group_name);
-        *fd = 0;
+        *fd_p = 0;
         return adios_errno;
     }
-    methods = g->methods;
 
     if (!strcasecmp (file_mode, "r"))
         mode = adios_mode_read;
@@ -153,29 +163,21 @@ int common_adios_open (int64_t * fd, const char * group_name
                         "adios_open: unknown file mode: %s, supported r,w,a,u\n",
                         file_mode);
 
-                    *fd = 0;
+                    *fd_p = 0;
 
                     return adios_errno;
                 }
 
-    fd_p->name = strdup (name);
-    fd_p->subfile_index = -1; // subfile index is by default -1
-    fd_p->group = g;
-    fd_p->mode = mode;
-    fd_p->data_size = 0;
-    fd_p->buffer = 0;
-    fd_p->offset = 0;
-    fd_p->bytes_written = 0;
-    fd_p->buffer_size = 0;
-    fd_p->vars_start = 0;
-    fd_p->vars_written = 0;
-    fd_p->write_size_bytes = 0;
-    fd_p->base_offset = 0;
-    fd_p->pg_start_in_file = 0;
-    if (comm != MPI_COMM_NULL)
-        MPI_Comm_dup(comm, &fd_p->comm);
+    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
-        fd_p->comm = MPI_COMM_NULL;
+        MPI_Comm_dup(comm, &fd->comm);
 
 
 #if 1
@@ -217,6 +219,7 @@ int common_adios_open (int64_t * fd, const char * group_name
     if (pinned_timestep > 0)
         g->time_index = pinned_timestep;
 
+    methods = g->methods;
     while (methods)
     {
         if (   methods->method->m != ADIOS_METHOD_UNKNOWN
@@ -225,13 +228,143 @@ int common_adios_open (int64_t * fd, const char * group_name
            )
         {
             adios_transports [methods->method->m].adios_open_fn
-                                                 (fd_p, methods->method, fd_p->comm);
+                                                 (fd, methods->method, fd->comm);
         }
 
         methods = methods->next;
     }
 
-    *fd = (int64_t) fd_p;
+    if (!adios_errno) 
+    {
+        *fd_p = (int64_t) fd;
+    } else 
+    {
+        free (fd_p);
+        fd_p = 0L;
+    }
+
+    if ( !adios_errno && fd->mode != adios_mode_read )
+    {
+        /* Add ADIOS internal attributes now */
+        if ( (fd->group->process_id == 0 || fd->subfile_index != -1) )
+        {
+            struct timeval tp;
+            char epoch[16];
+            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;
+
+            if (def_adios_init_attrs) {
+                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_common_define_attribute ((int64_t)fd->group, "create_time_epoch", ADIOS_ATTR_PATH,
+                        adios_integer, epoch, NULL);
+                adios_common_define_attribute ((int64_t)fd->group, "update_time_epoch", ADIOS_ATTR_PATH,
+                        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);
+                if (attr) {
+                    log_debug ("Update ADIOS extra attribute name=%s, "
+                            "time = %d, rank = %d, epoch = %s, subfile=%d\n",
+                            attr->name, fd->group->time_index, fd->group->process_id,
+                            epoch, fd->subfile_index);
+
+                    free(attr->value);
+                    adios_parse_scalar_string (adios_integer, (void *) epoch, &attr->value);
+                }
+            }
+        }
+
+        /* Add first PG to the group */
+        assert (!fd->pgs_written);
+        assert (!fd->current_pg);
+        add_new_pg_written (fd);
+
+
+#ifdef ADIOS_TIMERS
+        /* Add timer variable definitions to this output */
+        adios_add_timing_variables (fd);
+#endif
+
+        /* Now ask the methods if anyone wants common-layer BP formatted buffering */
+        methods = g->methods;
+        while (methods)
+        {
+            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
+                 */
+            }
+
+            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;
+
+                // write the process group header
+                adios_write_open_process_group_header_v1 (fd);
+
+                // setup for writing vars
+                adios_write_open_vars_v1 (fd);
+            }
+            else
+            {
+                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 defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_stop ("adios_open");
@@ -240,16 +373,14 @@ int common_adios_open (int64_t * fd, const char * group_name
 }
 
 ///////////////////////////////////////////////////////////////////////////////
-static const char ADIOS_ATTR_PATH[] = "/__adios__";
 
-int common_adios_group_size (int64_t fd_p
-                     ,uint64_t data_size
-                     ,uint64_t * total_size
-                     )
+int common_adios_group_size (int64_t fd_p, uint64_t data_size, uint64_t * total_size)
 {
+
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_start ("adios_group_size");
 #endif
+
     adios_errno = err_no_error;
     struct adios_file_struct * fd = (struct adios_file_struct *) fd_p;
     if (!fd)
@@ -257,13 +388,10 @@ int common_adios_group_size (int64_t fd_p
         adios_error (err_invalid_file_pointer, "Invalid handle passed to adios_group_size\n");
         return adios_errno;
     }
+
     struct adios_method_list_struct * m = fd->group->methods;
     if (m && m->next == NULL && m->method->m == ADIOS_METHOD_NULL)
     {
-        // nothing to do so just return
-        fd->shared_buffer = adios_flag_no;
-        fd->write_size_bytes = 0;
-        fd->buffer = 0;
         *total_size = 0;
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_stop ("adios_group_size");
@@ -271,76 +399,19 @@ int common_adios_group_size (int64_t fd_p
         return err_no_error;
     }
 
-    /* Add ADIOS internal attributes now (should be before calculating the overhead) */
-    if (fd->mode != adios_mode_read &&
-         (fd->group->process_id == 0 || fd->subfile_index != -1)
-       )
-    {
-        struct timeval tp;
-        char epoch[16];
-        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;
-
-        if (def_adios_init_attrs) {
-            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_common_define_attribute ((int64_t)fd->group, "create_time_epoch", ADIOS_ATTR_PATH,
-                    adios_integer, epoch, NULL);
-            adios_common_define_attribute ((int64_t)fd->group, "update_time_epoch", ADIOS_ATTR_PATH,
-                    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);
-            if (attr) {
-                log_debug ("Update ADIOS extra attribute name=%s, "
-                           "time = %d, rank = %d, epoch = %s, subfile=%d\n",
-                           attr->name, fd->group->time_index, fd->group->process_id,
-                           epoch, fd->subfile_index);
-
-                free(attr->value);
-                adios_parse_scalar_string (adios_integer, (void *) epoch, &attr->value);
-            }
-        }
+    if (fd->buffer_size == 0) {
+        *total_size = 0; 
+        return err_no_error;
     }
 
+
 #ifdef ADIOS_TIMERS
-    int tv_size = adios_add_timing_variables (fd);
-    data_size += tv_size;
+    data_size += fd->group->tv_size;
 #endif
 
-    fd->write_size_bytes = data_size;
-
     uint64_t overhead = adios_calc_overhead_v1 (fd);
-
     *total_size = data_size + overhead;
 
-    // try to reserve a buffer using the adios_method_buffer_alloc
-    // if it does not give the correct amount, overflow.  Make sure
-    // the amount given is big enough for the first part of the file.
-
-    fd->write_size_bytes += overhead;
-
     // NCSU ALACRITY-ADIOS - Current solution to group_size problem: find
     // the most "expansive" transform method used in the file, and assume
     // all of the data uses that method, for a very rough but safe upper bound.
@@ -348,92 +419,25 @@ int common_adios_group_size (int64_t fd_p
     // (see the comment in the top of adios_transforms.c, under section
     // 'The "group size" problem,' for more details)
     uint64_t wc_transformed_size = adios_transform_worst_case_transformed_group_size(data_size, fd);
-    if (wc_transformed_size > data_size) {
-        log_debug("Computed worst-case bound on transformed data for a group size of %llu is %llu; increasing group size to match.\n",
+    if (wc_transformed_size > data_size)
+    {
+        log_debug("Computed worst-case bound on transformed data for a group size of %" PRIu64 " is %" PRIu64 "; increasing group size to match.\n",
                   data_size, wc_transformed_size);
 
-        fd->write_size_bytes += (wc_transformed_size - data_size);
         *total_size += (wc_transformed_size - data_size);
     }
 
-    uint64_t allocated = adios_method_buffer_alloc (fd->write_size_bytes);
-    if (allocated != fd->write_size_bytes)
-    {
-        fd->shared_buffer = adios_flag_no;
-
-        log_warn ("adios_group_size (%s): Not buffering. "
-                  "needs: %llu available: %llu.\n",
-                  fd->group->name, fd->write_size_bytes, allocated);
-    }
-    else
-    {
-        fd->shared_buffer = adios_flag_yes;
-    }
-
-    // Drew: for experiments
-    if (pinned_timestep != 0)
-        fd->group->time_index = pinned_timestep;
-
-    // call each transport method to coordinate the write and handle
-    // if an overflow is detected.
-    // now tell each transport attached that it is being written
-    while (m)
+    if (*total_size > fd->buffer_size && fd->bufstate == buffering_ongoing) 
     {
-        enum ADIOS_FLAG should_buffer = adios_flag_yes;
-        if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_should_buffer_fn
-           )
+        if (adios_databuffer_resize (fd, *total_size))
         {
-            should_buffer = adios_transports [m->method->m].
-                                            adios_should_buffer_fn (fd
-                                                                   ,m->method
-                                                                   );
+            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);
         }
-
-        if (should_buffer == adios_flag_no)     // can't write directly since
-            fd->shared_buffer = adios_flag_no;  // some might want to share
-
-        m = m->next;
     }
 
-    // Drew: for experiments
-    if (pinned_timestep != 0)
-        fd->group->time_index = pinned_timestep;
-
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        adios_method_buffer_free (allocated);
-        fd->buffer = 0;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-    }
-    else
-    {
-        fd->buffer = malloc (fd->write_size_bytes);
-        fd->buffer_size = fd->write_size_bytes;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        if (!fd->buffer)
-        {
-            adios_error (err_no_memory, "Cannot allocate %llu bytes for buffered output.\n",
-                    fd->write_size_bytes);
-
-            return adios_errno;
-        }
-        else
-        {
-            // write the process group header
-            adios_write_process_group_header_v1 (fd, *total_size);
-
-            // setup for writing vars
-            adios_write_open_vars_v1 (fd);
-        }
-    }
-
-#ifdef ADIOS_TIMERS
-    adios_write_timing_variables (fd);
-#endif
 
 
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
@@ -445,12 +449,21 @@ int common_adios_group_size (int64_t fd_p
     return adios_errno;
 }
 
+
 static int common_adios_write_transform_helper(struct adios_file_struct * fd, struct adios_var_struct * v) {
-    int use_shared_buffer = (fd->shared_buffer == adios_flag_yes);
+    int use_shared_buffer = (fd->bufstrat != no_buffering);
     int wrote_to_shared_buffer = 0;
 
-    // If we are using the shared buffer, transform the data directly into it
-    if (use_shared_buffer) {
+    if (fd->bufstrat == no_buffering)
+    {
+        int ret = adios_transform_variable_data(fd, v, use_shared_buffer, &wrote_to_shared_buffer);
+        assert(!wrote_to_shared_buffer);
+        assert(v->data);
+        return ret;
+    } 
+    else if (fd->bufstate == buffering_ongoing) 
+    {
+        // If we are using the shared buffer, transform the data directly into it
         uint16_t header_size = adios_calc_var_overhead_v1(v);
         uint64_t header_offset;
         uint64_t payload_offset;
@@ -499,6 +512,11 @@ static int common_adios_write_transform_helper(struct adios_file_struct * fd, st
             // Update the buffer back to the end of the header+payload
             fd->offset = end_offset;
         } else {
+            /* FIXME: This branch should not happen for memory reasons. 
+               The buffer either had enough space to store the transformation 
+               in place, or buffering has stopped.
+               However, identity transform does no buffering, so we do it here.
+             */
             // either no transformation happened (original data is in v->data), or
             // data was transformed into v->adata
             if (v->adata) {
@@ -512,14 +530,9 @@ static int common_adios_write_transform_helper(struct adios_file_struct * fd, st
 
         // Success!
         return 1;
-    } else {
-        int ret = adios_transform_variable_data(fd, v, use_shared_buffer, &wrote_to_shared_buffer);
-
-        assert(!wrote_to_shared_buffer);
-        assert(v->data);
-
-        return ret;
     }
+    /* else: shared buffer but buffering has stopped, nothing needs to be done */
+    return 1;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -535,28 +548,105 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
     adios_errno = err_no_error;
     struct adios_method_list_struct * m = fd->group->methods;
 
-    // NCSU ALACRITY-ADIOS - Do some processing here depending on the transform
-    //   type specified (if any)
-
-    // First, before doing any transform (or none), compute variable statistics,
+    // First, before doing any transformation, compute variable statistics,
     // 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)
+    {
+        // Second, estimate the size needed for buffering and extend buffer when needed
+        // and handle the error if buffer cannot be extended
+        vsize = adios_transform_worst_case_transformed_var_size(v);
+
+        if (fd->buffer_size < fd->offset + vsize)
+        {
+            /* 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);
+            if (extrasize < vsize)
+                extrasize = vsize;
+            if (adios_databuffer_resize (fd, fd->buffer_size + extrasize))
+            {
+                /* Second, let the method deal with it */
+                log_debug ("adios_write(): buffer needs to be dumped before buffering variable %s/%s\n", v->path, v->name);
+                // these calls don't extend the buffer but we will get a completed PG here
+                adios_write_close_vars_v1 (fd);
+                adios_write_close_process_group_header_v1 (fd);
+
+                /* Ask the method to do something with the current buffer then we either
+                   1. continue buffering from start with a new PG or
+                   2. skip buffering variables from now on, then method gets the same buffer again in close()
+                 */
+
+                m = fd->group->methods;
+                while (m)
+                {
+                    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);
+                    }
+                    m = m->next;
+                }
+
+                if (fd->bufstrat == continue_with_new_pg) 
+                {
+                    // special case: fd->buffer_size is smaller than this single variable, and the extension failed:
+                    // try to extend it to contain this single variable (plus headers) in the next PG
+                    if (fd->buffer_size < vsize + 1024)
+                    {
+                        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);
+                            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? */
+                        }
+                    }
+                    /* Start buffering from scratch (a new PG) */
+                    fd->offset = 0;
+                    adios_write_open_process_group_header_v1 (fd);
+                    adios_write_open_vars_v1 (fd);
+                    add_new_pg_written (fd);
+                } 
+                else if (fd->bufstrat == stop_on_overflow)
+                {
+                    fd->bufstate = buffering_stopped;
+                    if (!adios_errno)
+                    {
+                        // method is expected to throw an error in this case but we can ensure it here
+                        // to signal error upward to not count this var in index
+                        adios_errno = err_buffer_overflow; 
+                    }
+                }
+            }
+        }
+    }
+
     // If no transform is specified, do the normal thing (write to shared
     // buffer immediately, if one exists)
     if (v->transform_type == adios_transform_none)
     {
-        if (fd->shared_buffer == adios_flag_yes)
+        if (fd->bufstate == buffering_ongoing)
         {
-            // var payload sent for sizing information
-            adios_write_var_header_v1 (fd, v);
+            /* Now buffer only if we have the buffer for it */
+            if (fd->buffer_size > fd->offset + vsize)
+            {
+                // var payload sent for sizing information
+                adios_write_var_header_v1 (fd, v);
 
-            // write payload
-            adios_write_var_payload_v1 (fd, v);
+                // write payload
+                adios_write_var_payload_v1 (fd, v);
+            }
         }
     }
-    // Else, do a transform
-    else
+    else // Else, do a transform
     {
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_start ("adios_transform");
@@ -574,24 +664,32 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
 #endif
     }
 
-    // now tell each transport attached that it is being written
-    while (m)
+    // now tell each transport attached that it is being written unless buffering is stopped
+    if (fd->bufstate == buffering_ongoing || fd->bufstrat == no_buffering)
     {
-        if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_write_fn
-           )
+        m = fd->group->methods;
+        while (m)
         {
-            adios_transports [m->method->m].adios_write_fn
-                                   (fd, v, var, m->method);
-        }
+            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);
+            }
 
-        m = m->next;
+            m = m->next;
+        }
+    }
+    else
+    {
+        adios_errno = err_buffer_overflow; // signal error but don't print anything anymore
     }
 
-    // NCSU ALACRITY-ADIOS - Free transform-method-allocated data buffers
     if (v->dimensions)
     {
+        // NCSU ALACRITY-ADIOS - Free transform-method-allocated data buffers
         // TODO: Is this correct? Normally v->data is a user buffer, so we
         //   can't free it. However, after a transform, we probably do need
         //   to free it. We mark this by setting the free_data flag. However,
@@ -599,11 +697,16 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
         //   using the flag correctly or not. Need verification with
         //   Gary/Norbert/someone knowledgable about ADIOS internals.
         if (v->transform_type != adios_transform_none && v->free_data == adios_flag_yes && v->adata)
+        {
             free(v->adata);
-        v->data = v->adata = 0;
+        }
+        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
     }
 
-    v->write_count++;
+    if (!adios_errno) {
+        v->write_count++;
+    }
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_stop ("adios_write");
 #endif
@@ -625,6 +728,7 @@ int common_adios_write_byid (struct adios_file_struct * fd, struct adios_var_str
 
     if (v->adata)
     {
+        assert (v->dimensions==NULL); // this must happen only for scalars where we copied the value
         free (v->adata);
         v->adata = 0;
     }
@@ -690,11 +794,9 @@ int common_adios_write_byid (struct adios_file_struct * fd, struct adios_var_str
     // but it's pointing to v->adata, which is allocated in ADIOS, for scalars
     // to remember their value if used as dimension in forthcoming writes of arrays.
 
-    if (!adios_errno) {
-        if (fd->mode != adios_mode_read)
-        {
-            adios_copy_var_written (fd->group, v);
-        }
+    if (!adios_errno && fd->mode != adios_mode_read)
+    {
+        adios_copy_var_written (fd, v);
     }
 
     return adios_errno;
@@ -1002,6 +1104,7 @@ int common_adios_close (int64_t fd_p)
 
         return adios_errno;
     }
+
     struct adios_method_list_struct * m = fd->group->methods;
     if (m && m->next == NULL && m->method->m == ADIOS_METHOD_NULL)
     {
@@ -1013,31 +1116,65 @@ int common_adios_close (int64_t fd_p)
         return 0;
     }
 
+#ifdef ADIOS_TIMERS
+    if (fd->mode != adios_mode_read) {
+        adios_write_timing_variables (fd);
+    }
+#endif
+
+
     struct adios_attribute_struct * a = fd->group->attributes;
     struct adios_var_struct * v = fd->group->vars;
 
-    if (fd->shared_buffer == adios_flag_yes)
+    if (fd->mode != adios_mode_read )
     {
-        adios_write_close_vars_v1 (fd);
-
-        /* FIXME: this strategy writes all attributes defined in time step 0
-           and thus duplicates them in the PGs and in the attribute index.
-           For write mode, where files are new, this is good.
-           For append/update it is unnecessary and replicates the attributes
-           in the index.
-           One should write the newly created attributes only in append mode.
-        */
-        adios_write_open_attributes_v1 (fd);
+        if (fd->bufstate == buffering_ongoing)
+        {
+            adios_write_close_vars_v1 (fd);
+        }
 
-        if (!fd->group->process_id || fd->subfile_index != -1) {
-            // from ADIOS 1.4, only rank 0 writes attributes (or to subfiles)
-            while (a) {
-                adios_write_attribute_v1 (fd, a);
-                a = a->next;
+        /* Even if buffering has stopped on overflow, let's try to squeeze in the attributes 
+           to the end of the buffer */
+        if (fd->bufstrat != no_buffering)
+        {
+            /* FIXME: this strategy writes all attributes defined in time step 0
+               and thus duplicates them in the PGs and in the attribute index.
+               For write mode, where files are new, this is good.
+               For append/update it is unnecessary and replicates the attributes
+               in the index.
+               One should write the newly created attributes only in append mode.
+             */
+            uint64_t asize = 12; // 12 bytes to store empty attribute list in a PG (the opening bytes)
+            if (!fd->group->process_id || fd->subfile_index != -1) {
+                // from ADIOS 1.4, only rank 0 writes attributes (or each process to its subfile)
+                asize = adios_calc_attrs_overhead_v1(fd); // size of full attribute list
+            }
+            if (fd->buffer_size < fd->offset + asize) 
+            {
+                /* 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))
+                {
+                    /* FIXME:  Well, drop them in this case */
+                    log_error ("adios_close(): There is not enough buffer to write the attributes. "
+                            "They will be missing from the output\n");
+                }
+            }
+
+            if (fd->buffer_size >= fd->offset + asize) 
+            {
+                adios_write_open_attributes_v1 (fd); // this writes 12 bytes into the buffer
+                if (!fd->group->process_id || fd->subfile_index != -1) {
+                    while (a) {
+                        adios_write_attribute_v1 (fd, a);
+                        a = a->next;
+                    }
+                }
+                adios_write_close_attributes_v1 (fd);
             }
-        }
 
-        adios_write_close_attributes_v1 (fd);
+            adios_write_close_process_group_header_v1 (fd);
+        }
     }
 
     // in order to get the index assembled, we need to do it in the
@@ -1056,15 +1193,6 @@ int common_adios_close (int64_t fd_p)
         }
     }
 
-    if (fd->shared_buffer == adios_flag_yes)
-    {
-        adios_method_buffer_free (fd->write_size_bytes);
-        free (fd->buffer);
-        fd->buffer_size = 0;
-        fd->buffer = 0;
-        fd->offset = 0;
-    }
-
     while (v)
     {
         v->write_offset = 0;
@@ -1077,68 +1205,21 @@ int common_adios_close (int64_t fd_p)
         v = v->next;
     }
 
-    while (fd->group->vars_written)
-    {
-        if (fd->group->vars_written->name)
-            free (fd->group->vars_written->name);
-        if (fd->group->vars_written->path)
-            free (fd->group->vars_written->path);
-
-        while (fd->group->vars_written->dimensions)
-        {
-            struct adios_dimension_struct * dimensions
-                            = fd->group->vars_written->dimensions->next;
-
-            free (fd->group->vars_written->dimensions);
-            fd->group->vars_written->dimensions = dimensions;
-        }
-
-        // NCSU - Clear stat
-        if (fd->group->vars_written->stats)
-        {
-            uint8_t j = 0, idx = 0;
-            uint8_t c = 0, count = adios_get_stat_set_count(fd->group->vars_written->type);
+    /* clean-up all copied variables with statistics and data in all PGs attached to this file */
+    adios_free_pglist (fd);
 
-            for (c = 0; c < count; c ++)
-            {
-                while (fd->group->vars_written->bitmap >> j)
-                {
-                    if ((fd->group->vars_written->bitmap >> j) & 1)
-                    {
-                        if (j == adios_statistic_hist)
-                        {
-                            struct adios_hist_struct * hist = (struct adios_hist_struct *) (fd->group->vars_written->stats[c][idx].data);
-                            free (hist->breaks);
-                            free (hist->frequencies);
-                            free (hist);
-                        }
-                        else
-                            free (fd->group->vars_written->stats[c][idx].data);
-
-                        idx ++;
-                    }
-                    j ++;
-                }
-                free (fd->group->vars_written->stats[c]);
-            }
-            free (fd->group->vars_written->stats);
-        }
-
-        // NCSU ALACRITY-ADIOS - Clear transform metadata
-        adios_transform_clear_transform_var(fd->group->vars_written);
-
-        if (fd->group->vars_written->adata) {
-            free (fd->group->vars_written->adata);
-            fd->group->vars_written->data = fd->group->vars_written->adata = 0;
-        }
-
-        v = fd->group->vars_written->next;
-        free (fd->group->vars_written);
-        fd->group->vars_written = v;
+    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);
+    }
 
 #ifdef ADIOS_TIMER_EVENTS
+    /* This has to come here before freeing the buffer that zeros out fd->bytes_written */
     char* extension = ".perf";
     int name_len = strlen (fd->name);
     int fn_len = name_len + strlen (extension) + 1;
@@ -1150,17 +1231,17 @@ int common_adios_close (int64_t fd_p)
 #endif
 
 
-    if (fd->name)
+    if (fd->bufstrat != no_buffering)
     {
-        free (fd->name);
-        fd->name = 0;
+        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;
+        }
+        adios_databuffer_free (fd);
     }
 
-    if (fd->comm != MPI_COMM_NULL) {
-        MPI_Comm_free (&fd->comm);
-    }
+    free (fd);
 
-    free ((void *) fd_p);
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_stop ("adios_close");
     timer_stop ("adios_open_to_close");
@@ -1186,7 +1267,6 @@ int common_adios_close (int64_t fd_p)
     //timer_reset_timers ();
 #endif
 
-
     return adios_errno;
 }
 
diff --git a/src/core/common_adios.h b/src/core/common_adios.h
index 0cb7f78..b36276f 100644
--- a/src/core/common_adios.h
+++ b/src/core/common_adios.h
@@ -32,7 +32,7 @@ int common_adios_allocate_buffer (enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_allo
 
 // end user calls for each I/O operation
 // modes = "r" = "read", "w" = "write", "a" = "append", "u" = "update"
-int common_adios_open (int64_t * fd, const char * group_name, const char * name
+int common_adios_open (int64_t * fd_p, const char * group_name, const char * name
                ,const char * mode, MPI_Comm comm
                );
 
diff --git a/src/core/common_read.c b/src/core/common_read.c
index c064321..e7b44f1 100644
--- a/src/core/common_read.c
+++ b/src/core/common_read.c
@@ -102,7 +102,7 @@ int common_read_init_method (enum ADIOS_READ_METHOD method,
     }
 
     // process common parameters here
-    params = text_to_name_value_pairs (parameters);
+    params = a2s_text_to_name_value_pairs (parameters);
     p = params;
     prev_p = NULL;
     while (p) {
@@ -148,13 +148,13 @@ int common_read_init_method (enum ADIOS_READ_METHOD method,
                 // remove head
                 p = p->next;
                 params->next = NULL;
-                free_name_value_pairs (params);
+                a2s_free_name_value_pairs (params);
                 params = p;
             } else {
                 // remove from middle of the list
                 prev_p->next = p->next;
                 p->next = NULL;
-                free_name_value_pairs (p);
+                a2s_free_name_value_pairs (p);
                 p = prev_p->next;
             }
         } else {
@@ -165,7 +165,7 @@ int common_read_init_method (enum ADIOS_READ_METHOD method,
 
     // call method specific init 
     retval = adios_read_hooks[method].adios_read_init_method_fn (comm, params);
-    free_name_value_pairs (params);
+    a2s_free_name_value_pairs (params);
 
     // init the query API; may call it multiple times here in multiple read methods' init;
     common_query_init(); 
@@ -261,6 +261,12 @@ static ADIOS_FILE * common_read_link (ADIOS_FILE * fp)
     return fp;
 }
 
+int common_read_get_attr_mesh (const ADIOS_FILE * fp,
+                            const char * attrname,
+                            enum ADIOS_DATATYPES * type,
+                            int * size,
+                            void ** data);
+
 static ADIOS_FILE * common_read_mesh (ADIOS_FILE * fp)
 {
     int i;
@@ -288,12 +294,14 @@ static ADIOS_FILE * common_read_mesh (ADIOS_FILE * fp)
                     if (fp->nmeshes > 0)
                     {
                         char * meshname = NULL;
+                        meshname = (char *) malloc (sizeof(char*) * (size_t)(p-s)+1);
                         memcpy ( meshname, s, (size_t)(p-s) );
                         for (imesh=0; imesh<fp->nmeshes; imesh++)
                         {
                             if (!strcmp (meshname, tmp[imesh]))
                                 samemesh = 1;
                         }
+                        free (meshname);
                     }
                     if (!fp->nmeshes || !samemesh)
                     {
@@ -310,17 +318,18 @@ static ADIOS_FILE * common_read_mesh (ADIOS_FILE * fp)
             {
                 enum ADIOS_DATATYPES attr_type;
                 int attr_size;
-                char * meshname = NULL;
+                void * attrdata = NULL;
                 int  read_fail = 0;
                 //check if this name refers to an external mesh
-                common_read_get_attr_mesh (fp, fp->attr_namelist[i], &attr_type, &attr_size, &meshname);
+                common_read_get_attr_mesh (fp, fp->attr_namelist[i], &attr_type, &attr_size, &attrdata);
+                char *meshname = (char*) attrdata;
                 if (attr_type == adios_string)
                 {
                     char * meshfile = malloc ( strlen("/adios_schema/")+strlen(meshname)+strlen("/mesh-file")+1 );
                     strcpy (meshfile, "/adios_schema/");
                     strcat (meshfile, meshname);
                     strcat (meshfile, "/mesh-file");
-                    char * data = NULL;
+                    void * data = NULL;
                     read_fail = common_read_get_attr_mesh (fp, meshfile, &attr_type, &attr_size, &data);
                     if (!read_fail)
                     {
@@ -540,7 +549,7 @@ int common_read_close (ADIOS_FILE *fp)
         }
                 
         retval = internals->read_hooks[internals->method].adios_read_close_fn (fp);
-        free_namelist (internals->group_namelist, internals->ngroups);
+        a2s_free_namelist (internals->group_namelist, internals->ngroups);
         free (internals->nvars_per_group);
         free (internals->nattrs_per_group);
 
@@ -619,35 +628,42 @@ int common_read_advance_step (ADIOS_FILE *fp, int last, float timeout_sec)
     
     adios_errno = err_no_error;
     if (fp) {
-        internals = (struct common_read_internals_struct *) fp->internal_data;
-        retval = internals->read_hooks[internals->method].adios_advance_step_fn (fp, last, timeout_sec);
-        if (!retval) {
-            // Re-create hashtable from the variable names as key and their index as value
-            if (internals->hashtbl_vars)
-                internals->hashtbl_vars->free (internals->hashtbl_vars);
-            hashsize = calc_hash_size(fp->nvars);
-            internals->hashtbl_vars = qhashtbl(hashsize);
-            for (i=0; i<fp->nvars; i++) {
-                internals->hashtbl_vars->put (internals->hashtbl_vars, fp->var_namelist[i], 
-                        (void *)(i+1)); // avoid 0 for error checking later
-            }
+        if (fp->is_streaming)
+        {
+            internals = (struct common_read_internals_struct *) fp->internal_data;
+            retval = internals->read_hooks[internals->method].adios_advance_step_fn (fp, last, timeout_sec);
+            if (!retval) {
+                // Re-create hashtable from the variable names as key and their index as value
+                if (internals->hashtbl_vars)
+                    internals->hashtbl_vars->free (internals->hashtbl_vars);
+                hashsize = calc_hash_size(fp->nvars);
+                internals->hashtbl_vars = qhashtbl(hashsize);
+                for (i=0; i<fp->nvars; i++) {
+                    internals->hashtbl_vars->put (internals->hashtbl_vars, fp->var_namelist[i],
+                            (void *)(i+1)); // avoid 0 for error checking later
+                }
 
-            // Invalidate infocache, since all varinfos may have changed now
-            adios_infocache_invalidate(internals->infocache);
-
-            /* Update group information too */
-            free_namelist (internals->group_namelist, internals->ngroups);
-            free (internals->nvars_per_group);
-            free (internals->nattrs_per_group);
-            adios_read_hooks[internals->method].adios_get_groupinfo_fn (fp, &internals->ngroups, 
-                    &internals->group_namelist, &internals->nvars_per_group, &internals->nattrs_per_group);
-            if (internals->group_in_view > -1) {
-                /* if we have a group view, we need to update the presented list again */
-                /* advance_step updated fp->nvars, nattrs, var_namelist, attr_namelist */
-                int groupid = internals->group_in_view;
-                internals->group_in_view = -1; // we have the full view at this moment
-                common_read_group_view (fp, groupid);
+                // Invalidate infocache, since all varinfos may have changed now
+                adios_infocache_invalidate(internals->infocache);
+
+                /* Update group information too */
+                a2s_free_namelist (internals->group_namelist, internals->ngroups);
+                free (internals->nvars_per_group);
+                free (internals->nattrs_per_group);
+                adios_read_hooks[internals->method].adios_get_groupinfo_fn (fp, &internals->ngroups,
+                        &internals->group_namelist, &internals->nvars_per_group, &internals->nattrs_per_group);
+                if (internals->group_in_view > -1) {
+                    /* if we have a group view, we need to update the presented list again */
+                    /* advance_step updated fp->nvars, nattrs, var_namelist, attr_namelist */
+                    int groupid = internals->group_in_view;
+                    internals->group_in_view = -1; // we have the full view at this moment
+                    common_read_group_view (fp, groupid);
+                }
             }
+        } else {
+            adios_error (err_end_of_stream, "Cannot advance %s opened as file for read since all timesteps are available at once.\n",
+                    fp->path);
+            retval = err_end_of_stream;
         }
     } else {
         adios_error ( err_invalid_file_pointer, "Invalid file pointer at adios_advance_step()\n");
@@ -705,6 +721,7 @@ static int common_read_find_var (const ADIOS_FILE *fp, const char *name, int qui
             adios_error (err_invalid_varname, "Variable '%s' is not found!\n", name);
         else
             adios_errno = err_invalid_varname;
+        return -1;
     }
 
     // map the global varid back to the current group view's varid
@@ -822,6 +839,48 @@ ADIOS_VARINFO * common_read_inq_var_byid (const ADIOS_FILE *fp, int varid)
     return vi;
 }
 
+/* Make a list of attributes (ids) of a specific variable
+ * where the attribute name = full path of variable / name
+ */
+void common_read_get_attrs_for_variable (const ADIOS_FILE *fp, ADIOS_VARINFO *vi)
+{
+    char * varpath;
+    int i; 
+    assert (vi != NULL);
+    assert (fp != NULL);
+    vi->nattrs = 0;
+    vi->attr_ids = (int *) malloc (fp->nattrs * sizeof(int));
+    assert (vi->attr_ids != NULL);
+    varpath = fp->var_namelist [vi->varid];
+    log_debug ("Look for attributes of variable %s...\n", varpath);
+    int varlen = strlen (varpath);
+    for (i=0; i<fp->nattrs; i++)
+    {
+        // attr must be <varpath> + / + something without /
+        const char * attr = fp->attr_namelist[i];
+        int attlen = strlen (attr);
+        if (attlen > varlen + 1)
+        {
+            if (!strncmp(varpath, attr, varlen))
+            {
+                if (attr[varlen] == '/' &&
+                    !strchr (attr+varlen+1, '/'))
+                {
+                    log_debug ("    Found attr %s\n", attr);
+                    vi->attr_ids [vi->nattrs] = i;
+                    vi->nattrs++;
+                }
+            }
+        }
+    }
+    if (vi->nattrs) {
+        vi->attr_ids = (int *) realloc (vi->attr_ids, vi->nattrs * sizeof(int));
+    } else {
+        free(vi->attr_ids);
+        vi->attr_ids = NULL;
+    }
+}
+
 // NCSU ALACRITY-ADIOS - Renaming of common_read_inq_var_byid, named 'raw'
 //   because it is oblivious to the original metadata as stored in TRANSINFO
 ADIOS_VARINFO * common_read_inq_var_raw_byid (const ADIOS_FILE *fp, int varid)
@@ -840,6 +899,10 @@ ADIOS_VARINFO * common_read_inq_var_raw_byid (const ADIOS_FILE *fp, int varid)
                 /* Translate real varid to the group varid presented to the user */
                 retval->varid = varid;
                 retval->meshinfo = NULL; // initialize here because it's a common layer addition
+                /* Get attributes related to the variable */
+                retval->nattrs = 0;
+                retval->attr_ids = NULL;
+                common_read_get_attrs_for_variable (fp, retval);
             }
         } else {
             adios_error (err_invalid_varid,
@@ -907,25 +970,25 @@ int common_read_inq_trans_blockinfo(const ADIOS_FILE *fp, const ADIOS_VARINFO *v
 int common_read_inq_var_stat (const ADIOS_FILE *fp, ADIOS_VARINFO * varinfo,
                              int per_step_stat, int per_block_stat)
 {
-    struct common_read_internals_struct * internals;
-    int retval;
-    int group_varid;
-
-    adios_errno = err_no_error;
-    if (fp) {
-        internals = (struct common_read_internals_struct *) fp->internal_data;
-        if (varinfo) {
-            /* Translate group varid presented to the user to the real varid */
-            group_varid = varinfo->varid;
-            varinfo->varid = varinfo->varid + internals->group_varid_offset;
-        }
-        retval = internals->read_hooks[internals->method].adios_inq_var_stat_fn (fp, varinfo, per_step_stat, per_block_stat);
-        /* Translate back real varid to the group varid presented to the user */
-        varinfo->varid = group_varid;
-    } else {
+    if (!fp) {
         adios_error (err_invalid_file_pointer, "Null pointer passed as file to adios_inq_var_stat()\n");
-        retval = err_invalid_file_pointer;
+        return adios_errno;
+    }
+    if (!varinfo) {
+        adios_error (err_invalid_argument, "Null pointer passed as varinfo to adios_inq_var_stat()\n");
+        return adios_errno;
     }
+
+    adios_errno = err_no_error;
+    struct common_read_internals_struct * internals =
+            (struct common_read_internals_struct *) fp->internal_data;
+
+    /* Translate group varid presented to the user to the real varid */
+    int group_varid = varinfo->varid;
+    varinfo->varid = varinfo->varid + internals->group_varid_offset;
+    int retval = internals->read_hooks[internals->method].adios_inq_var_stat_fn (fp, varinfo, per_step_stat, per_block_stat);
+    /* Translate back real varid to the group varid presented to the user */
+    varinfo->varid = group_varid;
     return retval;
 }
 
@@ -933,15 +996,32 @@ int common_read_inq_var_stat (const ADIOS_FILE *fp, ADIOS_VARINFO * varinfo,
 //   patch the original metadata in from the transform info
 int common_read_inq_var_blockinfo (const ADIOS_FILE *fp, ADIOS_VARINFO * varinfo)
 {
-    int retval;
-	struct common_read_internals_struct *internals;
-    ADIOS_TRANSINFO *ti;
+    if (!fp) {
+        adios_error (err_invalid_file_pointer, "Null pointer passed as file to adios_inq_var_blockinfo()\n");
+        return adios_errno;
+    }
+    if (!varinfo) {
+        adios_error (err_invalid_argument, "Null pointer passed as varinfo to adios_inq_var_blockinfo()\n");
+        return adios_errno;
+    }
 
-    internals = (struct common_read_internals_struct *)fp->internal_data;
+    adios_errno = err_no_error;
+    struct common_read_internals_struct * internals =
+            (struct common_read_internals_struct *) fp->internal_data;
+    ADIOS_TRANSINFO *ti;
 
-    // If the blockinfo is already loaded, don't load it again
-    if (varinfo->blockinfo)
-    	return err_no_error;
+    int retval = err_no_error;
+    // If the blockinfo has already been created
+    if (varinfo->blockinfo) {
+        if (fp->is_streaming) {
+            // free it and start again - because it may change in streaming
+            common_read_free_blockinfo (&varinfo->blockinfo, varinfo->sum_nblocks);
+            varinfo->blockinfo = NULL;
+        } else {
+            // return without modification
+            return retval;
+        }
+    }
 
     // NCSU ALACRITY-ADIOS - translate between original and transformed metadata if necessary
     // If we're in logical view mode, and if this variable is transformed, use the transformed blockinfo
@@ -962,36 +1042,36 @@ int common_read_inq_var_blockinfo (const ADIOS_FILE *fp, ADIOS_VARINFO * varinfo
     // blockinfo
     if (!varinfo->blockinfo) {
         retval = common_read_inq_var_blockinfo_raw(fp, varinfo);
-        if (retval != err_no_error)
-            return retval;
-   }
+    }
 
-    return err_no_error;
+    return retval;
 }
 
 // NCSU ALACRITY-ADIOS - Renaming of common_read_inq_var_blockinfo, named 'raw'
 //   because it is oblivious to the original metadata as stored in TRANSINFO
 int common_read_inq_var_blockinfo_raw (const ADIOS_FILE *fp, ADIOS_VARINFO * varinfo)
 {
-    struct common_read_internals_struct * internals;
-    int retval;
-    int group_varid;
+    if (!fp) {
+        adios_error (err_invalid_file_pointer, "Null pointer passed as file to adios_inq_var_blockinfo_raw()\n");
+        return adios_errno;
+    }
+    if (!varinfo) {
+        adios_error (err_invalid_argument, "Null pointer passed as varinfo to adios_inq_var_blockinfo_raw()\n");
+        return adios_errno;
+    }
 
     adios_errno = err_no_error;
-    if (fp) {
-        internals = (struct common_read_internals_struct *) fp->internal_data;
-        if (varinfo) {
-            /* Translate group varid presented to the user to the real varid */
-            group_varid = varinfo->varid;
-            varinfo->varid = varinfo->varid + internals->group_varid_offset;
-        }
-        retval = internals->read_hooks[internals->method].adios_inq_var_blockinfo_fn (fp, varinfo);
-        /* Translate back real varid to the group varid presented to the user */
-        varinfo->varid = group_varid;
-    } else {
-        adios_error (err_invalid_file_pointer, "Null pointer passed as file to adios_inq_var_blockinfo()\n");
-        retval = err_invalid_file_pointer;
-    }
+    struct common_read_internals_struct * internals =
+            (struct common_read_internals_struct *) fp->internal_data;
+
+    /* Translate group varid presented to the user to the real varid */
+    int group_varid = varinfo->varid;
+    varinfo->varid = varinfo->varid + internals->group_varid_offset;
+
+    int retval = internals->read_hooks[internals->method].adios_inq_var_blockinfo_fn (fp, varinfo);
+    /* Translate back real varid to the group varid presented to the user */
+    varinfo->varid = group_varid;
+
     return retval;
 }
 
@@ -1078,6 +1158,7 @@ void common_read_free_varinfo (ADIOS_VARINFO *vp)
         if (vp->value)   MYFREE(vp->value);
         if (vp->nblocks) MYFREE(vp->nblocks);
         if (vp->meshinfo) MYFREE(vp->meshinfo);
+        if (vp->attr_ids) MYFREE(vp->attr_ids);
         free(vp);
     }
 }
@@ -1269,7 +1350,7 @@ int common_read_inq_var_meshinfo (const ADIOS_FILE *fp, ADIOS_VARINFO * varinfo)
 
 static double common_check_var_type_to_double (enum ADIOS_DATATYPES * type, void * value)
 {
-    double data;
+    double data = 0.0;
 
     if (*type == adios_real)
         data = *(float *)value;
@@ -1291,7 +1372,7 @@ static double common_check_var_type_to_double (enum ADIOS_DATATYPES * type, void
         data = *(signed long long *)value;
     else if (*type == adios_unsigned_long)
         data = *(unsigned long long *)value;
-    else if (*type == adios_unknown)
+    else //if (*type == adios_unknown)
     {
         adios_error (err_mesh_unifrom_invalid_var_type,
                      "Provided var type is not supported. "
@@ -1303,7 +1384,7 @@ static double common_check_var_type_to_double (enum ADIOS_DATATYPES * type, void
 
 static uint64_t common_check_var_type_to_uint64 (enum ADIOS_DATATYPES * type, void * value)
 {
-    uint64_t data;
+    uint64_t data = 0;
 
     if (*type == adios_real)
         data = *(float *)value;
@@ -1325,7 +1406,7 @@ static uint64_t common_check_var_type_to_uint64 (enum ADIOS_DATATYPES * type, vo
         data = *(signed long long *)value;
     else if (*type == adios_unsigned_long)
         data = *(unsigned long long *)value;
-    else if (*type == adios_unknown)
+    else //if (*type == adios_unknown)
     {
         adios_error (err_mesh_unifrom_invalid_var_type,
                      "Provided var type is not supported. "
@@ -1337,7 +1418,7 @@ static uint64_t common_check_var_type_to_uint64 (enum ADIOS_DATATYPES * type, vo
 
 static int common_check_var_type_to_int (enum ADIOS_DATATYPES * type, void * value)
 {
-    int data;
+    int data = 0;
 
     if (*type == adios_real)
         data = *(float *)value;
@@ -1359,7 +1440,7 @@ static int common_check_var_type_to_int (enum ADIOS_DATATYPES * type, void * val
         data = *(signed long long *)value;
     else if (*type == adios_unsigned_long)
         data = *(unsigned long long *)value;
-    else if (*type == adios_unknown)
+    else //if (*type == adios_unknown)
     {
         adios_error (err_mesh_unifrom_invalid_var_type,
                      "Provided var type is not supported. "
@@ -3469,7 +3550,7 @@ int common_read_schedule_read (const ADIOS_FILE      * fp,
                                void                  * data)
 
 {
-    int retval;
+    int retval = 0;
 
     adios_errno = err_no_error;
     if (fp) {
@@ -3498,7 +3579,7 @@ int common_read_schedule_read_byid (const ADIOS_FILE      * fp,
 
 {
     struct common_read_internals_struct * internals = (struct common_read_internals_struct *) fp->internal_data;
-    int retval;
+    int retval = 0; 
 
     internals = (struct common_read_internals_struct *) fp->internal_data;
 
@@ -3532,14 +3613,14 @@ int common_read_schedule_read_byid (const ADIOS_FILE      * fp,
             		// Proceed to register the read request and schedule all of its grandchild raw
             		// read requests ONLY IF a non-NULL reqgroup was returned (i.e., the user's
             		// selection intersected at least one PG).
+            		retval = 0;
             		if (new_reqgroup) {
             			adios_transform_read_request_append(&internals->transform_reqgroups, new_reqgroup);
 
             			// Now schedule all of the new subrequests
-            			retval = 0;
-            			for (pg_reqgroup = new_reqgroup->pg_reqgroups; pg_reqgroup; pg_reqgroup = pg_reqgroup->next) {
-            				for (subreq = pg_reqgroup->subreqs; subreq; subreq = subreq->next) {
-            					retval |= internals->read_hooks[internals->method].adios_schedule_read_byid_fn(
+            			for (pg_reqgroup = new_reqgroup->pg_reqgroups; retval==0 && pg_reqgroup; pg_reqgroup = pg_reqgroup->next) {
+            				for (subreq = pg_reqgroup->subreqs; retval==0 && subreq; subreq = subreq->next) {
+            					retval = internals->read_hooks[internals->method].adios_schedule_read_byid_fn(
             							fp, subreq->raw_sel, varid+internals->group_varid_offset, pg_reqgroup->timestep, 1, subreq->data);
             				}
             			}
@@ -3644,8 +3725,7 @@ void common_read_free_chunk (ADIOS_VARCHUNK *chunk)
      */
      if (chunk) {
         if (chunk->sel) {
-            free_selection(chunk->sel);
-            //free(chunk->sel);
+            a2sel_free(chunk->sel);
             chunk->sel = NULL;
         }
         free(chunk);
@@ -3886,68 +3966,5 @@ void common_read_print_fileinfo (const ADIOS_FILE *fp)
 }
 
 
-/**    SELECTIONS   **/
-ADIOS_SELECTION * common_read_selection_boundingbox (int ndim, const uint64_t *start, const uint64_t *count)
-{
-    adios_errno = err_no_error;
-    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
-    if (sel) {
-        sel->type = ADIOS_SELECTION_BOUNDINGBOX;
-        sel->u.bb.ndim = ndim;
-        sel->u.bb.start = (uint64_t *)start;
-        sel->u.bb.count = (uint64_t *)count;
-    } else {
-        adios_error(err_no_memory, "Cannot allocate memory for bounding box selection\n");
-    }
-    return sel;
-}
 
 
-ADIOS_SELECTION * common_read_selection_points (int ndim, uint64_t npoints, const uint64_t *points)
-{
-    adios_errno = err_no_error;
-    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
-    if (sel) {
-        sel->type = ADIOS_SELECTION_POINTS;
-        sel->u.points.ndim = ndim;
-        sel->u.points.npoints = npoints;
-        sel->u.points.points = (uint64_t *) points;
-    } else {
-        adios_error(err_no_memory, "Cannot allocate memory for points selection\n");
-    }
-    return sel;
-}
-
-ADIOS_SELECTION * common_read_selection_writeblock (int index)
-{
-    adios_errno = err_no_error;
-    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
-    if (sel) {
-        sel->type = ADIOS_SELECTION_WRITEBLOCK;
-        sel->u.block.index = index;
-        // NCSU ALACRITY-ADIOS: Set the writeblock selection to be a full-PG selection by default
-        sel->u.block.is_absolute_index = 0;
-        sel->u.block.is_sub_pg_selection = 0;
-    } else {
-        adios_error(err_no_memory, "Cannot allocate memory for writeblock selection\n");
-    }
-    return sel;
-}
-
-ADIOS_SELECTION * common_read_selection_auto (char *hints)
-{
-    adios_errno = err_no_error;
-    ADIOS_SELECTION * sel = (ADIOS_SELECTION *) malloc (sizeof(ADIOS_SELECTION));
-    if (sel) {
-        sel->type = ADIOS_SELECTION_AUTO;
-        sel->u.autosel.hints = hints;
-    } else {
-        adios_error(err_no_memory, "Cannot allocate memory for auto selection\n");
-    }
-    return sel;
-}
-
-void common_read_selection_delete (ADIOS_SELECTION *sel)
-{
-    free(sel);
-}
diff --git a/src/core/common_read.h b/src/core/common_read.h
index 7a0b59d..233a369 100644
--- a/src/core/common_read.h
+++ b/src/core/common_read.h
@@ -117,13 +117,5 @@ int common_read_get_dimension_order (ADIOS_FILE * fp);
 void common_read_reset_dimension_order (const ADIOS_FILE *fp, int is_fortran);
 void common_read_print_fileinfo (const ADIOS_FILE *fp);
 
-// selections 
-ADIOS_SELECTION * common_read_selection_boundingbox (int ndim, const uint64_t *start, const uint64_t *count);
-ADIOS_SELECTION * common_read_selection_points (int ndim, uint64_t npoints, const uint64_t *points);
-ADIOS_SELECTION * common_read_selection_writeblock (int index);
-ADIOS_SELECTION * common_read_selection_auto (char *hints);
-void common_read_selection_delete (ADIOS_SELECTION *sel);
-
-
 
 #endif
diff --git a/src/core/flexpath.h b/src/core/flexpath.h
index 51fb551..03bbef1 100644
--- a/src/core/flexpath.h
+++ b/src/core/flexpath.h
@@ -26,32 +26,14 @@
 
 #define perr(...) if(getenv("FP_DEBUG")) fprintf(stderr, __VA_ARGS__);
 
-#define fp_log(LOG, ...)                             \
-            if(getenv("FP_DEBUG")) {    \
-                if(strcmp(getenv("FP_DEBUG"),"ALL")==0) {          \
-                    fprintf(stderr, __VA_ARGS__);   \
-                } else if(strcmp(getenv("FP_DEBUG"),LOG)==0) {     \
-                    fprintf(stderr, __VA_ARGS__);   \
-                }                                   \
-            }
-
-#define fp_write_log(LOG, ...)                                      \
-            if(getenv("FP_DEBUG")) {                                \
-                if(strcmp(getenv("FP_DEBUG"),"ALL")==0) {           \
-                    fprintf(stderr, "%d %s:", flexpathWriteData.rank, LOG);   \
-                    fprintf(stderr, __VA_ARGS__);                   \
-                } else {                                            \
-                    char* env_tok;                                  \
-                    char* env = strdup(getenv("FP_DEBUG"));         \
-                    env_tok = strtok(env, ",");                     \
-                    while(env_tok) {                                \
-                        if(strcmp(env_tok, LOG)==0) {               \
-                    fprintf(stderr, "%d %s:", flexpathWriteData.rank, LOG);   \
-                    fprintf(stderr, __VA_ARGS__);                   \
-                        }                                           \
-                        env_tok = strtok(NULL, ",");                \
-                    }                                               \
-                }                                                   \
+#define fp_verbose_init(flxp_file)   \
+	    if (getenv("FLEXPATH_VERBOSE")) { \
+		flxp_file->verbose = 1;\
+	    }
+#define fp_verbose(flxp_file, ...)                             \
+            if(flxp_file->verbose) {    \
+		fprintf(stderr, "file %p: %s %d:", flxp_file, FLEXPATH_SIDE, flxp_file->rank); \
+		fprintf(stderr, __VA_ARGS__);			   \
             }
             
 
diff --git a/src/core/globals.c b/src/core/globals.c
index a3ff6f0..bee3ede 100644
--- a/src/core/globals.c
+++ b/src/core/globals.c
@@ -10,6 +10,8 @@
  */
 
 #include "globals.h"
+#include <inttypes.h>
+
 
 static int globals_adios_appid = -1;
 static int globals_adios_was_set = 0;
@@ -244,18 +246,18 @@ void icee_dims_print(const char* name, const int ndims, const uint64_t *dims)
         fprintf(stderr, "%10s : none\n", name);
         break;
     case 1:
-        fprintf(stderr, "%10s : %llu\n", name, dims[0]);
+        fprintf(stderr, "%10s : %" PRIu64 "\n", name, dims[0]);
         break;
     case 2:
-        fprintf(stderr, "%10s : %llu,%llu\n", 
+        fprintf(stderr, "%10s : %" PRIu64 ",%" PRIu64 "\n", 
                 name, dims[0], dims[1]);
         break;
     case 3:
-        fprintf(stderr, "%10s : %llu,%llu,%llu\n", 
+        fprintf(stderr, "%10s : %" PRIu64 ",%" PRIu64 ",%" PRIu64 "\n", 
                 name, dims[0], dims[1], dims[2]);
         break;
     default:
-        fprintf(stderr, "%10s : %llu,%llu,%llu,...\n", 
+        fprintf(stderr, "%10s : %" PRIu64 ",%" PRIu64 ",%" PRIu64 ",...\n", 
                 name, dims[0], dims[1], dims[2]);
         break;
     }
@@ -275,7 +277,7 @@ void icee_varinfo_print(const icee_varinfo_rec_ptr_t vp)
         icee_dims_print("gdims", vp->ndims, vp->gdims);
         icee_dims_print("ldims", vp->ndims, vp->ldims);
         icee_dims_print("offsets", vp->ndims, vp->offsets);
-        fprintf(stderr, "%10s : %llu\n", "varlen", vp->varlen);
+        fprintf(stderr, "%10s : %" PRIu64 "\n", "varlen", vp->varlen);
         icee_data_print(vp->type, vp->varlen, vp->data);
     }
     else
diff --git a/src/core/mpidummy.c b/src/core/mpidummy.c
index eb102cc..ea763ba 100644
--- a/src/core/mpidummy.c
+++ b/src/core/mpidummy.c
@@ -10,6 +10,7 @@
 */
 
 #include <stdint.h>
+#include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
 //#define _LARGEFILE64_SOURCE
@@ -19,7 +20,7 @@
 
 #include "public/mpidummy.h"
 
-#if defined(__APPLE__) || defined(__WIN32__) 
+#if defined(__APPLE__) || defined(__WIN32__) || defined(__CYGWIN__) 
 #    define lseek64 lseek
 #    define open64  open
 #endif
@@ -66,7 +67,8 @@ int MPI_Gather(void *sendbuf, int sendcnt, MPI_Datatype sendtype,
 
   switch( sendtype )
   {
-    case MPI_INT : n = sizeof( int ) ;
+    case MPI_INT : n = sizeof( int );
+                   break;
     default      : return MPI_ERR_TYPE ;
   }
   nsent = n * sendcnt ;
@@ -74,6 +76,7 @@ int MPI_Gather(void *sendbuf, int sendcnt, MPI_Datatype sendtype,
   switch( recvtype )
   {
     case MPI_INT : nrecv = sizeof( int ) ;
+                   break;
     default      : return MPI_ERR_TYPE ;
   }
   nrecv = n * recvcnt ;
@@ -118,6 +121,7 @@ int MPI_Scatter(void *sendbuf, int sendcnt, MPI_Datatype sendtype,
   switch( sendtype )
   {
     case MPI_INT : n = sizeof( int ) ;
+                   break;
     default      : return MPI_ERR_TYPE ;
   }
   nsent = n * sendcnt ;
@@ -125,6 +129,7 @@ int MPI_Scatter(void *sendbuf, int sendcnt, MPI_Datatype sendtype,
   switch( recvtype )
   {
     case MPI_INT : nrecv = sizeof( int ) ;
+                   break;
     default      : return MPI_ERR_TYPE ;
   }
   nrecv = n * recvcnt ;
@@ -180,7 +185,7 @@ int MPI_File_read(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_
     uint64_t bytes_read;
     bytes_read = read (fh, buf, bytes_to_read);
     if (bytes_read != bytes_to_read) {
-        snprintf(mpierrmsg, MPI_MAX_ERROR_STRING, "could not read %llu bytes. read only: %llu\n", bytes_to_read, bytes_read);
+        snprintf(mpierrmsg, MPI_MAX_ERROR_STRING, "could not read %" PRIu64 " bytes. read only: %" PRIu64 "\n", bytes_to_read, bytes_read);
         return -2;
     }
     *status = bytes_read;
diff --git a/src/core/strutil.c b/src/core/strutil.c
new file mode 100644
index 0000000..d256d5a
--- /dev/null
+++ b/src/core/strutil.c
@@ -0,0 +1,356 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+#include <assert.h>
+#include <ctype.h>
+
+#include "config.h"
+#include "core/strutil.h"
+
+// copy an array of strings with allocation, return pointer
+// also return the sum of string lengths in 'total_length'
+char ** a2s_dup_string_array (const char ** v, int nelems, int * total_length)
+{
+    *total_length = 0;
+
+    if (!v || nelems < 1)
+        return NULL;
+
+    char ** p = malloc (nelems*sizeof(char*));
+    if (!p) return NULL;
+
+    int i, len;
+    for (i=0; i<nelems; i++) {
+        if (v[i]) {
+            len = strlen (v[i]) + 1;
+            p[i] = malloc (len*sizeof(char));
+            if (p[i])
+                memcpy (p[i], v[i], len);
+            *total_length += len;
+        } else {
+            p[i] = NULL;
+        }
+    }
+    return p;
+}
+
+void a2s_free_string_array (char ** v, int nelems) 
+{
+    int i;
+    for (i=0; i<nelems; i++) {
+        if (v[i]) free (v[i]);
+        v[i] = 0;
+    }
+    free (v);
+}
+
+void a2s_alloc_namelist (char ***namelist, int length)
+{
+    int j;
+
+    *namelist = (char **) malloc(length*sizeof(char*));
+    for (j=0;j<length;j++)
+        (*namelist)[j] = (char *) malloc(255);
+
+    return;
+}
+
+void a2s_free_namelist (char **namelist, int length)
+{
+    int i;
+    if (namelist) {
+        for (i=0;i<length;i++) {
+            if(namelist[i])
+                free(namelist[i]);
+            namelist[i] = NULL;
+        }
+        free(namelist);
+    }
+    return;
+}
+
+// remove leading white spaces
+// it returns a pointer inside str, it does not allocate new memory
+char * a2s_trimL (char * str)
+{
+    if (!str)
+        return str;
+    char * b = str;
+    while (isspace(*b))
+    {
+        b++;
+    }
+    return b;
+}
+
+// remove trailing white spaces
+// it returns str, it does not allocate new memory, just shortens the strings
+char * a2s_trimR (char * str)
+{
+    if (!str)
+        return str;
+    int len = strlen(str);
+    if (!len)
+        return str;
+    char * t = str+len-1;
+    while (isspace(*t))
+    {
+        *t = '\0';
+        t--;
+    }
+    return str;
+}
+
+
+char * a2s_trimLR (char * str)
+{
+    if (!str)
+        return str;
+    int len = strlen(str);
+    if (!len)
+        return str;
+
+    // trim front
+    char * b = str;
+    while (isspace(*b))
+    {
+        b++;
+    }
+
+    // trim trailing whitespaces
+    char * t = str+len-1;
+    while (isspace(*t))
+    {
+        *t = '\0';
+        t--;
+    }
+    return b;
+}
+
+void a2s_tokenize_dimensions (const char * str, char *** tokens, int * count)
+{
+    *count = 0;
+    *tokens = 0;
+    if (!str)
+        return;
+
+    char * dims[32];
+    char * save_str = strdup (str);
+    char * t = save_str;
+    int i;
+
+    for (t = strtok(save_str, ",");
+         t;
+         t = strtok(NULL, ","))
+    {
+        t = a2s_trimLR(t);
+        dims[*count] = strdup (t);
+        (*count)++;
+    }
+
+    if (*count)
+    {
+        *tokens = (char **) malloc (sizeof (char **) * *count);
+        for (i = 0; i < *count; i++)
+        {
+            (*tokens) [i] = dims[i];
+        }
+    }
+
+    free (save_str);
+}
+
+void a2s_cleanup_dimensions (char ** tokens, int count)
+{
+    int i;
+    for (i = 0; i < count; i++)
+    {
+        free (tokens[i]);
+    }
+    if (tokens)
+        free (tokens);
+}
+
+char * a2s_trim_spaces (const char * str)
+{
+    char * result = strdup (str);
+    char * r = result;
+    while (*str != '\0')
+    {
+        if (*str == ' ')
+        {
+            str++;
+        }
+        else
+        {
+            *r = *str;
+            r++;
+            str++;
+        }
+    }
+    *r = '\0';
+    return result;
+}
+
+
+/*******************************************************
+   Processing parameter lists
+**********************************************************/
+static char * remove_whitespace (char *start, char *end) 
+{
+    char *s = start;
+    char *e = end;
+    //int orig_len = (int) (e-s);
+    int final_len;
+    char *res;
+    // remove front whitespace (but do not go far beyond the end)
+    while (s <= e && 
+           (*s==' ' || *s=='\t' || *s=='\n')
+          ) s++;
+    if (s <= e) { // there is some text 
+        // remove tail whitespace
+        while (s <= e && 
+               (*e==' ' || *e=='\t' || *e=='\n')
+              ) e--;
+        // create result 
+        final_len = e - s + 1; //  length of result 
+        if (final_len > 0) {
+            res = (char *) malloc (final_len + 1); // allocate space s..e and \0
+            memcpy(res, s, final_len);
+            res[final_len] = 0;
+        } else {
+            // "   = something" patterns end here
+            res = NULL;
+        }
+    } else {
+        // no non-whitespace character found
+        res = NULL;
+    }
+    return res;
+}
+
+
+/* Split a line at = sign into name and value pair
+   Remove " ", TAB and Newline from around names and values
+   Return NULL for name and value if there is no = sign in line
+   Return newly allocated strings otherwise
+   Used by: esimmon_internal_text_to_name_value_pairs
+ */
+static void splitnamevalue (const char * line, int linelen,  char **name, char **value)
+{
+    char *equal; // position of first = sign in line
+
+    equal = strchr (line, '=');
+    if (equal && equal != line) {
+        /* 1. name */
+        // from first char to before =
+        *name = remove_whitespace ((char*)line, equal-1);
+        //printf ("      --name=[%s]\n", *name);
+        /* 2. value */
+        // from after = to the last character of line
+        *value = remove_whitespace (equal+1, (char*)line+linelen-1);
+        //printf ("      --value=[%s]\n", *value);
+
+    } else if (equal != line) {
+        /* check if it as name without = value statement */
+        *name = remove_whitespace ((char*)line, (char*)line+linelen-1);
+        //printf ("      --name only=[%s]\n", *name);
+        *value = NULL;
+    } else { 
+        // funny text starting with =. E.g. "=value" 
+        *name = NULL;
+        *value = NULL;
+    }
+}
+
+PairStruct * a2s_text_to_name_value_pairs (const char * text)
+{
+    /* Process a multi-line and/or ;-separated text and create a list
+       of name=value pairs from each line which has a 
+           name = value 
+       pattern. Whitespaces are removed. 
+         "X = 1
+          Y = 2"  
+       is not valid because of missing ';', but
+          "X=1; Y=5;
+          Z=apple"  
+       is valid
+    */
+    char *name, *value; 
+    char *item, *delim, *quote1, *quote2;
+    int len;
+    char line[256];
+    PairStruct *res = NULL, *last = NULL, *pair;
+
+    if (!text) return res;
+
+    item  = (char *)text; 
+    while (item) {
+        /* Before cutting the string up at ;, look for "
+         * A value might be a long string containing ;
+         * e.g.  methodparams = "aggr=5;ost=3;verbose=1"; method = MPI_AGGREGATE;
+         */
+        quote1 = strchr (item, '"');
+        delim  = strchr (item, ';');
+        if (quote1 && delim && delim > quote1) // ; is after opening "
+        {
+            if (quote1+1) // string continues
+            {
+                quote2 = strchr (quote1+1, '"'); // find closing "
+
+                if (quote2)
+                {
+                    delim = strchr (quote2, ';');
+                }
+                else
+                {
+                    // This is illegal text, no closing "
+                    // let's just pass the whole thing so result will look like e.g. name = "this is an unclosed string
+                }
+            }
+        }
+
+        if (delim) 
+            len = (int) (delim-item); 
+        else 
+            len = strlen (item);
+
+        strncpy (line, item, len);
+        line[len] = '\0';
+
+        //printf ("    --Line=[%s]\n", line);
+        splitnamevalue(line, len, &name, &value);
+        if (name) {
+            pair = (PairStruct *) malloc (sizeof(PairStruct));
+            pair->name = name;
+            pair->value = value;
+            pair->next = NULL;
+            if (last) {
+                last->next = pair;
+                last = pair;
+            } else {
+                res = pair; 
+                last = pair;
+            }
+        }
+        if (delim && delim+1 != 0)
+            item = delim+1;
+        else
+            item = NULL;
+    }
+    return res;
+}
+
+void a2s_free_name_value_pairs (PairStruct * pairs)
+{
+    PairStruct *p;
+    while (pairs) {
+        free(pairs->name);
+        free(pairs->value);
+        p = pairs;
+        pairs=pairs->next;
+        free(p);
+    }
+}
diff --git a/src/core/strutil.h b/src/core/strutil.h
new file mode 100644
index 0000000..0dc7925
--- /dev/null
+++ b/src/core/strutil.h
@@ -0,0 +1,53 @@
+#ifndef STRUTIL_H_
+#define STRUTIL_H_
+
+// copy an array of strings with allocation, return pointer
+// also return the sum of string lengths in 'total_length'
+char ** a2s_dup_string_array (const char ** v, int nelems, int * total_length);
+void a2s_free_string_array (char ** v, int nelems);
+
+void a2s_alloc_namelist (char ***namelist, int length);
+void a2s_free_namelist (char **namelist, int length);
+
+/* Remove leading and trailing white spaces.
+ * They return a pointer inside str, they do not allocate new memory.
+ */
+char * a2s_trimL  (char * str);
+char * a2s_trimR  (char * str);
+char * a2s_trimLR (char * str);
+
+/* Create a char** array of elements from a "n,m,z" type string used as dimension
+ * specification in adios. It trims all elements for easy processing later
+ */
+void a2s_tokenize_dimensions (const char * str, char *** tokens, int * count);
+
+/* Free the dimension char ** array which was created by tokenize_dimensions.
+ * It expects the pointers to array and counter, so it can set them to NULL / 0.
+ */
+void a2s_cleanup_dimensions (char ** tokens, int count);
+
+char * a2s_trim_spaces (const char * str);
+
+/*******************************************************
+   Processing parameter lists
+**********************************************************/
+/*
+   Process a ;-separated and possibly multi-line text and 
+   create a list of name=value pairs from each 
+   item which has a "name=value" pattern. Whitespaces are removed. 
+   Input is not modified. Space is allocated;
+   Also, simple "name" or "name=" patterns are processed and 
+   returned with value=NULL. 
+*/
+struct PairStruct {
+    char * name;
+    char * value;
+    struct PairStruct * next;
+};
+typedef struct PairStruct PairStruct;
+
+PairStruct * a2s_text_to_name_value_pairs (const char * text);
+void a2s_free_name_value_pairs (PairStruct * pairs);
+
+
+#endif
diff --git a/src/core/transforms/adios_patchdata.c b/src/core/transforms/adios_patchdata.c
index a3ad2ef..cf9a74b 100644
--- a/src/core/transforms/adios_patchdata.c
+++ b/src/core/transforms/adios_patchdata.c
@@ -32,6 +32,7 @@
 #include "core/common_read.h"
 #include "core/adios_subvolume.h"
 #include "core/adios_internals.h" // adios_get_type_size()
+#include "core/util.h"
 #include "core/adios_selection_util.h"
 #include "core/transforms/adios_patchdata.h"
 
@@ -84,7 +85,7 @@ inline static uint64_t adios_patch_data_bb_to_bb(void *dst, uint64_t dst_ragged_
     // Cleanup
     free(inter_off_relative_to_dst);
     free(inter_off_relative_to_src);
-    common_read_selection_delete(inter_sel);
+    a2sel_free(inter_sel);
 
     return volume;
 }
diff --git a/src/core/transforms/adios_transforms_datablock.c b/src/core/transforms/adios_transforms_datablock.c
index 7ed28cc..7c17f01 100644
--- a/src/core/transforms/adios_transforms_datablock.c
+++ b/src/core/transforms/adios_transforms_datablock.c
@@ -11,6 +11,7 @@
 #include "public/adios_error.h"
 #include "public/adios_types.h"
 #include "core/common_read.h"
+#include "core/a2sel.h"
 
 #include "core/transforms/adios_transforms_common.h"
 #include "core/transforms/adios_transforms_read.h"
@@ -79,7 +80,7 @@ adios_datablock * adios_datablock_new_ragged_offset(
     adios_datablock *datablock = malloc(sizeof(adios_datablock));
 
     datablock->elem_type = elem_type;
-    datablock->bounds = copy_selection(bounds);
+    datablock->bounds = a2sel_copy(bounds);
     datablock->timestep = timestep;
     datablock->ragged_offset = ragged_offset;
     datablock->data = data;
@@ -92,7 +93,7 @@ void adios_datablock_free(adios_datablock **datablock_ptr, int free_data) {
     adios_datablock *datablock = *datablock_ptr;
     if (datablock) {
         if (datablock->bounds)
-            common_read_selection_delete((ADIOS_SELECTION*)datablock->bounds);
+            a2sel_free((ADIOS_SELECTION*)datablock->bounds);
         if (free_data)
             MYFREE(datablock->data);
     }
diff --git a/src/core/transforms/adios_transforms_hooks_read.h b/src/core/transforms/adios_transforms_hooks_read.h
index a4b3eec..de5b163 100644
--- a/src/core/transforms/adios_transforms_hooks_read.h
+++ b/src/core/transforms/adios_transforms_hooks_read.h
@@ -23,6 +23,7 @@
 
 // Initialize the transform system for adios read-only libraries
 void adios_transform_read_init();
+int adios_transform_is_implemented (enum ADIOS_TRANSFORM_TYPE transform_type);
 
 int adios_transform_generate_read_subrequests(adios_transform_read_request *reqgroup, adios_transform_pg_read_request *pg_reqgroup);
 
diff --git a/src/core/transforms/adios_transforms_read.c b/src/core/transforms/adios_transforms_read.c
index 4af2762..6aea5a5 100644
--- a/src/core/transforms/adios_transforms_read.c
+++ b/src/core/transforms/adios_transforms_read.c
@@ -13,6 +13,7 @@
 #include "core/util.h"
 
 #include "core/adios_selection_util.h"
+#include "core/a2sel.h"
 
 #include "core/transforms/adios_transforms_reqgroup.h"
 #include "core/transforms/adios_transforms_common.h"
@@ -173,7 +174,7 @@ inline static const ADIOS_SELECTION * create_pg_bounds_from_varblock(int ndim, c
     //const uint64_t *new_count = (uint64_t*)bufdup(orig_vb->count, sizeof(uint64_t), ndim);
 
     //return common_read_selection_boundingbox(ndim, new_start, new_count);
-    return common_read_selection_boundingbox(ndim, orig_vb->start, orig_vb->count);
+    return a2sel_boundingbox(ndim, orig_vb->start, orig_vb->count);
 }
 
 // Creates a bounding box for a the varblock specified by a given writeblock
@@ -205,7 +206,7 @@ static int generate_read_request_for_pg(
     const ADIOS_VARBLOCK *orig_vb = &transinfo->orig_blockinfo[blockidx];
 
     pg_bounds_sel = create_pg_bounds_from_varblock(transinfo->orig_ndim, orig_vb);
-    pg_writeblock_sel = common_read_selection_writeblock(blockidx);
+    pg_writeblock_sel = a2sel_writeblock(blockidx);
     pg_writeblock_sel->u.block.is_absolute_index = 1;
 
     // Find the intersection, if any
@@ -216,6 +217,7 @@ static int generate_read_request_for_pg(
     } else {
     	abort(); // Should never be called with other types of selections
     }
+    a2sel_free(pg_writeblock_sel);
 
     // If there is an intersection, generate a corresponding PG read request
     if (pg_intersection_sel) {
@@ -236,7 +238,7 @@ static int generate_read_request_for_pg(
         return 1;
     } else {
         // Cleanup
-        common_read_selection_delete((ADIOS_SELECTION *)pg_bounds_sel); // OK to delete, because this function only frees the outer struct, not the arrays within
+        a2sel_free((ADIOS_SELECTION *)pg_bounds_sel); // OK to delete, because this function only frees the outer struct, not the arrays within
         return 0;
     }
 }
@@ -315,8 +317,6 @@ adios_transform_read_request * adios_transform_generate_read_reqgroup(const ADIO
                                                                       const ADIOS_SELECTION *sel, int from_steps, int nsteps, const char *param, void *data) {
     // Declares
     adios_transform_read_request *new_readreq;
-    int blockidx, timestep, timestep_blockidx;
-    int start_blockidx, end_blockidx;
 
     enum ADIOS_FLAG swap_endianness = (fp->endianness == get_system_endianness()) ? adios_flag_no : adios_flag_yes;
 
@@ -407,8 +407,6 @@ static uint64_t apply_datablock_to_buffer_local_selections(
         ADIOS_SELECTION **out_inter_sel, int want_out_inter_sel,
         enum ADIOS_FLAG swap_endianness)
 {
-	int may_have_intersection = 1;
-
 	// For writeblock selections, we can use adios_patch_data_to_local,
 	// but first we must determine the bounding box of the writeblock selection
     const ADIOS_SELECTION *vb_bounds_sel = create_writeblock_bounds(&output_sel->u.block, datablock->timestep, raw_varinfo, transinfo);
@@ -417,7 +415,7 @@ static uint64_t apply_datablock_to_buffer_local_selections(
     // if we need to allocate a fitting output buffer
     if (want_out_inter_sel || !*output_buffer) {
         *out_inter_sel = adios_selection_intersect_local(datablock->bounds, output_sel, datablock->timestep, raw_varinfo, transinfo);
-        may_have_intersection = (*out_inter_sel ? 1 : 0);
+        //int may_have_intersection = (*out_inter_sel ? 1 : 0);
     }
 
     // Allocate the output buffer if needed (inter_sel is populated by previous if statement)
@@ -439,7 +437,7 @@ static uint64_t apply_datablock_to_buffer_local_selections(
 				datablock->elem_type, swap_endianness);
 
 	// Clean up
-	common_read_selection_delete((ADIOS_SELECTION *)vb_bounds_sel);
+	a2sel_free((ADIOS_SELECTION *)vb_bounds_sel);
 	return used_count;
 }
 
@@ -480,7 +478,7 @@ static uint64_t apply_datablock_to_buffer_nonlocal_selections(
     		// Refitting the output selection to the intersection region, since we
     		// just allocated a buffer for that smaller region
     		if (global_output_buffer_sel != output_sel)
-    			common_read_selection_delete((ADIOS_SELECTION *)global_output_buffer_sel);
+    			a2sel_free((ADIOS_SELECTION *)global_output_buffer_sel);
     		output_sel = *out_inter_sel;
     		global_output_buffer_sel = *out_inter_sel;
     	}
@@ -494,9 +492,9 @@ static uint64_t apply_datablock_to_buffer_nonlocal_selections(
 
 	// Clean up
 	if (global_output_buffer_sel != output_sel)
-		common_read_selection_delete((ADIOS_SELECTION *)global_output_buffer_sel);
+		a2sel_free((ADIOS_SELECTION *)global_output_buffer_sel);
 	if (global_datablock_bounds != datablock->bounds)
-		common_read_selection_delete((ADIOS_SELECTION *)global_datablock_bounds);
+		a2sel_free((ADIOS_SELECTION *)global_datablock_bounds);
 
 	return used_count;
 }
@@ -589,7 +587,7 @@ static uint64_t apply_datablock_to_buffer_and_free(
 			*out_inter_sel = inter_sel;
 		} else {
 			// TODO: Deep delete the selection (delete points list, start/count arrays, etc.)
-			common_read_selection_delete(inter_sel);
+			a2sel_free(inter_sel);
 		}
 	}
 
@@ -664,9 +662,8 @@ static int apply_datablock_to_result_and_free(adios_datablock *datablock,
  * request group, identifies that data (if any), and returns it as an
  * ADIOS_VARCHUNK. Additionally, free the datablock.
  */
-static ADIOS_VARCHUNK * apply_datablock_to_chunk_and_free(adios_datablock *datablock, adios_transform_read_request *reqgroup) {
-    ADIOS_SELECTION *inter_sel;
-
+static ADIOS_VARCHUNK * apply_datablock_to_chunk_and_free(adios_datablock *datablock, adios_transform_read_request *reqgroup)
+{
     assert(datablock); assert(reqgroup);
     assert(reqgroup->orig_sel);
 
@@ -770,7 +767,7 @@ static ADIOS_VARCHUNK * extract_chunk_from_finished_read_reqgroup(adios_transfor
     reqgroup->orig_data = NULL;
 
     // Transfer ownership of orig_sel
-    chunk->sel = copy_selection(reqgroup->orig_sel);
+    chunk->sel = a2sel_copy(reqgroup->orig_sel);
     reqgroup->orig_sel = NULL;
 
     return chunk;
diff --git a/src/core/transforms/adios_transforms_read.h b/src/core/transforms/adios_transforms_read.h
index e81b539..5f9cda5 100644
--- a/src/core/transforms/adios_transforms_read.h
+++ b/src/core/transforms/adios_transforms_read.h
@@ -64,6 +64,9 @@ uint64_t adios_transform_get_transformed_var_size_from_blockinfo(int raw_ndim, c
 adios_transform_read_request * adios_transform_generate_read_reqgroup(const ADIOS_VARINFO *vi, const ADIOS_TRANSINFO* ti, const ADIOS_FILE *fp,
                                                                       const ADIOS_SELECTION *sel, int from_steps, int nsteps, const char *param, void *data);
 
+
+void adios_transform_cleanup_from_previous_check_reads(adios_transform_read_request **readreqs_head);
+
 /*
  * Processes a VARCHUNK just returned by the read layer against the given list of outstanding transform
  * read requests.
diff --git a/src/core/transforms/adios_transforms_reqgroup.c b/src/core/transforms/adios_transforms_reqgroup.c
index 889e21d..6935cdd 100644
--- a/src/core/transforms/adios_transforms_reqgroup.c
+++ b/src/core/transforms/adios_transforms_reqgroup.c
@@ -34,6 +34,8 @@
 #include "core/transforms/adios_transforms_reqgroup.h"
 #include "core/common_read.h"
 #include "core/adios_subvolume.h"
+//#include "core/util.h"
+#include "core/a2sel.h"
 #include "public/adios_selection.h"
 
 // An adios_transform_read_request corresponds to a variable read request
@@ -163,7 +165,7 @@ adios_transform_raw_read_request * adios_transform_raw_read_request_new_byte_seg
     ADIOS_SELECTION_WRITEBLOCK_STRUCT *wb;
 
     // NOTE: We use the absolute PG index, along with the is_absolute_index flag below
-    sel = common_read_selection_writeblock(pg_reqgroup->blockidx);
+    sel = a2sel_writeblock(pg_reqgroup->blockidx);
 
     wb = &sel->u.block;
     wb->is_absolute_index = 1;
@@ -200,7 +202,7 @@ adios_transform_raw_read_request * adios_transform_raw_read_request_new_byte_seg
 adios_transform_raw_read_request * adios_transform_raw_read_request_new_whole_pg(const adios_transform_pg_read_request *pg_reqgroup, void *data) {
 #ifdef RAW_READS_USE_WRITEBLOCK
     // Use absolute time index, but not sub-PG read
-    ADIOS_SELECTION *sel = common_read_selection_writeblock(pg_reqgroup->blockidx);
+    ADIOS_SELECTION *sel = a2sel_writeblock(pg_reqgroup->blockidx);
     sel->u.block.is_absolute_index = 1;
     return adios_transform_raw_read_request_new(sel, data);
 #else
@@ -235,7 +237,7 @@ void adios_transform_raw_read_request_free(adios_transform_raw_read_request **su
     assert(!subreq->next); // Not a perfect check, but will catch many requests that are still linked
 
     // Free malloc'd resources
-    common_read_selection_delete(subreq->raw_sel);
+    a2sel_free(subreq->raw_sel);
     MYFREE(subreq->data);
     MYFREE(subreq->transform_internal);
 
@@ -279,7 +281,7 @@ adios_transform_pg_read_request * adios_transform_pg_read_request_new(
     new_pg_reqgroup->transform_metadata = transform_metadata;
     new_pg_reqgroup->transform_metadata_len = transform_metadata_len;
 
-    ADIOS_SELECTION *wbsel = common_read_selection_writeblock(blockidx);
+    ADIOS_SELECTION *wbsel = a2sel_writeblock(blockidx);
     wbsel->u.block.is_absolute_index = 1;
     new_pg_reqgroup->pg_writeblock_sel = wbsel;
 
@@ -322,11 +324,11 @@ void adios_transform_pg_read_request_free(adios_transform_pg_read_request **pg_r
 
     // Free malloc'd resources
     if (pg_reqgroup->pg_intersection_sel)
-        common_read_selection_delete((ADIOS_SELECTION*)pg_reqgroup->pg_intersection_sel);
+        a2sel_free((ADIOS_SELECTION*)pg_reqgroup->pg_intersection_sel);
     if (pg_reqgroup->pg_bounds_sel)
-        common_read_selection_delete((ADIOS_SELECTION*)pg_reqgroup->pg_bounds_sel);
+        a2sel_free((ADIOS_SELECTION*)pg_reqgroup->pg_bounds_sel);
     if (pg_reqgroup->pg_writeblock_sel)
-    	common_read_selection_delete((ADIOS_SELECTION*)pg_reqgroup->pg_writeblock_sel);
+    	a2sel_free((ADIOS_SELECTION*)pg_reqgroup->pg_writeblock_sel);
     MYFREE(pg_reqgroup->transform_internal);
 
     // Clear all data to 0's for safety
@@ -356,7 +358,7 @@ adios_transform_read_request * adios_transform_read_request_new(
 
     new_reqgroup->from_steps = from_steps;
     new_reqgroup->nsteps = nsteps;
-    new_reqgroup->orig_sel = copy_selection(sel);
+    new_reqgroup->orig_sel = a2sel_copy(sel);
     new_reqgroup->read_param = param;
     new_reqgroup->orig_data = data;
     new_reqgroup->swap_endianness = swap_endianness;
@@ -430,7 +432,7 @@ void adios_transform_read_request_free(adios_transform_read_request **reqgroup_p
     if (reqgroup->lent_varchunk_data)
         MYFREE(reqgroup->lent_varchunk_data);
 
-    common_read_selection_delete((ADIOS_SELECTION*)reqgroup->orig_sel); // Remove const
+    a2sel_free((ADIOS_SELECTION*)reqgroup->orig_sel); // Remove const
 
     // DON'T FREE varinfo/transinfo, since they are stored in the infocache
     // common_read_free_transinfo(reqgroup->raw_varinfo, (ADIOS_TRANSINFO*)reqgroup->transinfo); // Remove const
diff --git a/src/core/transforms/adios_transforms_util.c b/src/core/transforms/adios_transforms_util.c
index cc540f7..8a13f80 100644
--- a/src/core/transforms/adios_transforms_util.c
+++ b/src/core/transforms/adios_transforms_util.c
@@ -17,7 +17,7 @@ static int buffer_reserve(char ** buffer, uint64_t * buffer_size
     {
         if (*buffer_offset + size + 1000 > max_size) {
             fprintf (stderr, "Cannot allocate memory in buffer_write.  "
-                             "Requested: %llu, Maximum: %llu\n", *buffer_offset + size + 1000, max_size);
+                             "Requested: %" PRIu64 ", Maximum: %" PRIu64 "\n", *buffer_offset + size + 1000, max_size);
             return 0;
         }
 
@@ -30,7 +30,7 @@ static int buffer_reserve(char ** buffer, uint64_t * buffer_size
         else
         {
             fprintf (stderr, "Cannot allocate memory in buffer_write.  "
-                             "Requested: %llu\n", *buffer_offset + size + 1000);
+                             "Requested: %" PRIu64 "\n", *buffer_offset + size + 1000);
 
             return 0;
         }
@@ -53,11 +53,11 @@ static int buffer_write (char ** buffer, uint64_t * buffer_size
 
 
 int shared_buffer_write(struct adios_file_struct *fd, const void * data, uint64_t size) {
-    return buffer_write(&fd->buffer, &fd->buffer_size, &fd->offset, data, size, fd->write_size_bytes);
+    return buffer_write(&fd->buffer, &fd->buffer_size, &fd->offset, data, size, fd->buffer_size /*fd->write_size_bytes*/);
 }
 
 int shared_buffer_reserve(struct adios_file_struct *fd, uint64_t size) {
-    return buffer_reserve(&fd->buffer, &fd->buffer_size, &fd->offset, size, fd->write_size_bytes);
+    return buffer_reserve(&fd->buffer, &fd->buffer_size, &fd->offset, size, fd->buffer_size /*fd->write_size_bytes*/);
 }
 
 int shared_buffer_mark_written(struct adios_file_struct *fd, uint64_t size) {
diff --git a/src/core/transforms/adios_transforms_util.h b/src/core/transforms/adios_transforms_util.h
index 72e8cf4..42dfab7 100644
--- a/src/core/transforms/adios_transforms_util.h
+++ b/src/core/transforms/adios_transforms_util.h
@@ -11,8 +11,7 @@
 #include <stdint.h>
 #include "public/adios_types.h"
 #include "core/adios_internals.h"
-//#include "adios_internals.h"
-
+#include "core/util.h"
 
 int shared_buffer_write(struct adios_file_struct *fd, const void * data, uint64_t size);
 int shared_buffer_reserve(struct adios_file_struct *fd, uint64_t size);
diff --git a/src/core/transforms/adios_transforms_write.c b/src/core/transforms/adios_transforms_write.c
index 72b3b80..bd21886 100644
--- a/src/core/transforms/adios_transforms_write.c
+++ b/src/core/transforms/adios_transforms_write.c
@@ -22,6 +22,53 @@
 ////////////////////////////////////////
 #define MIN(X, Y) ((X) < (Y) ? (X) : (Y) )
 #define MAX(X, Y) ((X) > (Y) ? (X) : (Y) )
+
+uint64_t adios_transform_worst_case_transformed_var_size(struct adios_var_struct * v)
+{
+    uint64_t vsize = adios_calc_var_overhead_v1(v);
+
+    // Get size of original data. Note that transformed size has not been calculated at this point.
+    // If v is transformed array, original dimensions are stored in pre_transformed_dimensions,
+    // so temporarily change pointer here
+    struct adios_dimension_struct * save_dims = v->dimensions;
+    enum ADIOS_DATATYPES save_type = v->type;
+    if (v->transform_type != adios_transform_none) {
+        v->dimensions = v->pre_transform_dimensions;
+        v->type = v->pre_transform_type;
+    }
+
+    vsize += adios_get_var_size (v, v->data);
+
+    if (v->transform_type != adios_transform_none) {
+        v->dimensions = save_dims;
+        v->type = save_type;
+    }
+
+    if (v->transform_type == adios_transform_none || !v->dimensions)
+    {
+        // for all scalars and non-transformed arrays, we are done
+        return vsize;
+    }
+
+    // Aggregated scaling information from all transforms
+    // The end result upper bound group size is:
+    // S' = total_constant_factor + S' * linear_factor + min(S',capped_linear_cap) * capped_linear_factor
+    uint64_t constant_factor = 0;
+    double linear_factor = 1;
+    double capped_linear_factor = 0;
+    uint64_t capped_linear_cap = 0;
+
+    // Get the growth factors for this transform method/spec
+    adios_transform_transformed_size_growth(v, v->transform_spec, &constant_factor, &linear_factor, &capped_linear_factor, &capped_linear_cap);
+
+    const uint64_t max_transformed_var_size =
+    		constant_factor +
+    		ceil(linear_factor * vsize) +
+    		ceil(capped_linear_factor * MIN(vsize, capped_linear_cap));
+
+    return max_transformed_var_size;
+}
+
 uint64_t adios_transform_worst_case_transformed_group_size(uint64_t group_size, struct adios_file_struct *fd)
 {
 	uint64_t transformed_group_size = group_size; // The upper bound on how much data /might/ be transformed
@@ -401,7 +448,7 @@ int adios_transform_variable_data(struct adios_file_struct * fd,
                                   int *wrote_to_shared_buffer) {
     //printf("[TRANSFORM] Would be doing transform ID %d on variable %s here, if it were implemented\n", var->transform_type, var->name);
     //printf("[TRANSFORM] Apparent type of variable is %s, but was originally %s\n", adios_type_to_string_int(var->type), adios_type_to_string_int(var->pre_transform_type));
-    //printf("[TRANSFORM] Original size of variable data is %llu\n", adios_transform_get_pre_transform_var_size(fd->group, var));
+    //printf("[TRANSFORM] Original size of variable data is %" PRIu64 "\n", adios_transform_get_pre_transform_var_size(fd->group, var));
 
     assert(fd);
     assert(var);
@@ -463,7 +510,7 @@ static void buffer_write (char ** buffer, uint64_t * buffer_size
         else
         {
             fprintf (stderr, "Cannot allocate memory in buffer_write.  "
-                             "Requested: %llu\n", *buffer_offset + size + 1000);
+                             "Requested: %" PRIu64 "\n", *buffer_offset + size + 1000);
 
             return;
         }
diff --git a/src/core/transforms/adios_transforms_write.h b/src/core/transforms/adios_transforms_write.h
index a947d52..80c8d71 100644
--- a/src/core/transforms/adios_transforms_write.h
+++ b/src/core/transforms/adios_transforms_write.h
@@ -63,6 +63,12 @@ int adios_transform_variable_data(struct adios_file_struct * fd,
                                   int *wrote_to_shared_buffer);
 
 /*
+ * Computes the worse-case required size for a variable.
+ * Use by common_adios_write() to check if variable is going to fit into the buffer.
+ */
+uint64_t adios_transform_worst_case_transformed_var_size(struct adios_var_struct * v);
+
+/*
  * Computes the worse-case required group size for an entire group.
  * Checks all variables in the group to find which transform types are used,
  * and chooses the worst of the worst-case group sizes to return.
diff --git a/src/core/types.h b/src/core/types.h
new file mode 100644
index 0000000..6e1af7b
--- /dev/null
+++ b/src/core/types.h
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+#ifndef TYPES_H
+#define TYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum BUFFERING_STATE { 
+    buffering_stopped = 0,     /* Buffering stopped after overflow */
+    buffering_ongoing = 1,     /* Buffering is going on (default value at start) */
+};
+
+enum BUFFERING_STRATEGY { 
+    no_buffering            = 0, /* No buffering by common layer */
+    stop_on_overflow        = 1, /* Buffering stopped after overflow. Does not demolish existing buffer until close()*/
+    continue_with_new_pg    = 2  /* Buffering is going on with new PG starting after overflow */
+    //contiguous_buffering    = 3 /* NOT SUPPORTED: Buffering is going on (default value at start) */
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/core/util.c b/src/core/util.c
index 00152c3..a378fed 100644
--- a/src/core/util.c
+++ b/src/core/util.c
@@ -6,9 +6,11 @@
 #include <assert.h>
 #include <ctype.h>
 
+
 #include "config.h"
 #include "core/util.h"
 #include "core/bp_utils.h"
+#include "core/common_read.h"
 #include "core/adios_endianness.h"
 #include "core/adios_logger.h"
 
@@ -41,7 +43,7 @@ void change_endianness( void *data, uint64_t slice_size, enum ADIOS_DATATYPES ty
        log_error ("Adios error in bp_utils.c:change_endianness(): "
                   "An array's endianness is to be converted but the size of array "
                   "is not dividable by the size of the elements: "
-                  "size = %lld, element size = %d\n", slice_size, size_of_type);
+                  "size = %" PRIu64 ", element size = %d\n", slice_size, size_of_type);
     }
 
     switch (type)
@@ -110,44 +112,7 @@ void change_endianness( void *data, uint64_t slice_size, enum ADIOS_DATATYPES ty
     }
 }
 
-// copy an array of strings with allocation, return pointer
-// also return the sum of string lengths in 'total_length'
-char ** dup_string_array (char ** v, int nelems, int * total_length) 
-{
-    *total_length = 0;
-
-    if (!v || nelems < 1)
-        return NULL;
-
-    char ** p = malloc (nelems*sizeof(char*));
-    if (!p) return NULL;
-
-    int i, len;
-    for (i=0; i<nelems; i++) {
-        if (v[i]) {
-            len = strlen (v[i]) + 1;
-            p[i] = malloc (len*sizeof(char));
-            if (p[i])
-                memcpy (p[i], v[i], len);
-            *total_length += len;
-        } else {
-            p[i] = NULL;
-        }
-    }
-    return p;
-}
-
-void free_string_array (char ** v, int nelems) 
-{
-    int i;
-    for (i=0; i<nelems; i++) {
-        if (v[i]) free (v[i]);
-        v[i] = 0;
-    }
-    free (v);
-}
-
-void copy_data (void *dst, void *src,
+void adios_util_copy_data (void *dst, void *src,
         int idim,
         int ndim,
         uint64_t* size_in_dset,
@@ -191,7 +156,7 @@ void copy_data (void *dst, void *src,
         }
         src_offset_new =src_offset + i * src_stride * src_step;
         dst_offset_new = dst_offset + i * dst_stride * dst_step;
-        copy_data ( dst, src, idim+1, ndim, size_in_dset,
+        adios_util_copy_data ( dst, src, idim+1, ndim, size_in_dset,
                 ldims,readsize,
                 dst_stride, src_stride,
                 dst_offset_new, src_offset_new,
@@ -199,30 +164,6 @@ void copy_data (void *dst, void *src,
     }
 }
 
-void alloc_namelist (char ***namelist, int length)
-{
-        int j;
-
-        *namelist = (char **) malloc(length*sizeof(char*));
-        for (j=0;j<length;j++)
-                (*namelist)[j] = (char *) malloc(255);
-
-        return;
-}
-
-void free_namelist (char **namelist, int length)
-{
-        int i;
-        if (namelist) {
-                for (i=0;i<length;i++) {
-                        if(namelist[i])
-                                free(namelist[i]);
-                }
-                free(namelist);
-        }
-        return;
-}
-
 void list_insert_read_request_tail (read_request ** h, read_request * q)
 {
     read_request * head;
@@ -317,7 +258,7 @@ void list_free_read_request (read_request * h)
     {
         n = h->next;
 
-        free_selection (h->sel);
+        a2sel_free (h->sel);
         if (h->priv)
         {
             free (h->priv);
@@ -348,7 +289,7 @@ read_request * copy_read_request (const read_request * r)
     newreq = (read_request *) malloc (sizeof (read_request));
     assert (newreq);
 
-    newreq->sel = copy_selection (r->sel);
+    newreq->sel = a2sel_copy (r->sel);
     newreq->varid = r->varid;
     newreq->from_steps = r->from_steps;
     newreq->nsteps = r->nsteps;
@@ -360,337 +301,6 @@ read_request * copy_read_request (const read_request * r)
     return newreq;
 }
 
-ADIOS_SELECTION * copy_selection (const ADIOS_SELECTION * sel)
-{
-    ADIOS_SELECTION * nsel;
-
-    nsel = (ADIOS_SELECTION *) malloc (sizeof (ADIOS_SELECTION));
-    assert (nsel);
-
-    nsel->type = sel->type;
-
-    if (sel->type == ADIOS_SELECTION_BOUNDINGBOX)
-    {
-        nsel->u.bb.ndim = sel->u.bb.ndim;
-        nsel->u.bb.start = (uint64_t *) malloc (sel->u.bb.ndim * 8);
-        nsel->u.bb.count = (uint64_t *) malloc (sel->u.bb.ndim * 8);
-        assert (nsel->u.bb.start && nsel->u.bb.count);
-
-        memcpy (nsel->u.bb.start, sel->u.bb.start, sel->u.bb.ndim * 8);
-        memcpy (nsel->u.bb.count, sel->u.bb.count, sel->u.bb.ndim * 8);
-    }
-    else if (sel->type == ADIOS_SELECTION_POINTS)
-    {
-        nsel->u.points.ndim = sel->u.points.ndim;
-        nsel->u.points.npoints = sel->u.points.npoints;
-        nsel->u.points.points = (uint64_t *) malloc (nsel->u.points.npoints * nsel->u.points.ndim * 8);
-        assert (nsel->u.points.points);
-
-        memcpy (nsel->u.points.points, sel->u.points.points, sel->u.points.npoints * sel->u.points.ndim * 8);
-    }
-    else if (sel->type == ADIOS_SELECTION_WRITEBLOCK)
-    {
-        nsel->u.block.index = sel->u.block.index;
-        // NCSU ALACRITY-ADIOS: Copy the new fields
-        nsel->u.block.is_absolute_index = sel->u.block.is_absolute_index;
-        nsel->u.block.is_sub_pg_selection = sel->u.block.is_sub_pg_selection;
-        nsel->u.block.element_offset = sel->u.block.element_offset;
-        nsel->u.block.nelements = sel->u.block.nelements;
-    }
-    else if (sel->type == ADIOS_SELECTION_AUTO)
-    {
-        //TODO
-    }
-    else
-    {
-        //adios_error (err_invalid_argument, "Wrong ADIOS selection type.\n");
-    }
-
-    return nsel;
-}
-
-void free_selection (ADIOS_SELECTION * sel)
-{
-    sel->type = sel->type;
-
-    if (sel->type == ADIOS_SELECTION_BOUNDINGBOX)
-    {
-        free (sel->u.bb.start);
-        free (sel->u.bb.count);
-    }
-    else if (sel->type == ADIOS_SELECTION_POINTS)
-    {
-        free (sel->u.points.points);
-    }
-
-    free (sel);
-}
-
-int unique (uint32_t * nids, int size)
-{
-    int i, j, k;
-    uint32_t temp;
-
-    // sort the nids first
-    for (i = 1; i < size; i++)
-    {
-        for (j = 0; j < size - i; j++)
-        {
-            if (nids[j] > nids[j + 1])
-            {
-                temp = nids[j];
-                nids[j] = nids[j + 1];
-                nids[j + 1] = temp;
-            }
-        }
-    }
-
-    // remove duplicates
-    i = 0;
-    k = 0;
-    while (i < size)
-    {
-        nids[k] = nids[i];
-
-        j = i + 1;
-        while (j < size && nids[i] == nids[j])
-        {
-            j++;
-        }
-   
-        if (j < size)
-        {
-            k++;
-            i = j;            
-        }
-        else
-        {
-            break;
-        }
-    }
-
-    return k + 1;
-}
-
-uint32_t nid_atoi ()
-{
-    int name_len;
-    char * nid_str, * str_buf = malloc (MPI_MAX_PROCESSOR_NAME);
-    uint32_t nid;
-
-    MPI_Get_processor_name (str_buf, &name_len);
-    nid_str = str_buf;
-    while (*nid_str != '\0' && (!isdigit (*nid_str) || *nid_str == '0'))
-    {
-        nid_str++;
-    }
-
-    if (*nid_str == '\0')
-    {
-        // report an error
-    }
-
-    nid = atoi (nid_str);
-    free (str_buf);
-
-    return nid;
-}
-
-// This helper routine returns a vector of unique NID's.
-// It is caller's responsiblity to free nids afterwards.
-int get_unique_nids (MPI_Comm comm, uint32_t ** nids)
-{
-    int size;
-    uint32_t my_nid;
-
-    my_nid = nid_atoi ();
-    MPI_Comm_size (comm, &size);
-    * nids = (uint32_t *) malloc (size * 4);
-    assert (* nids);
-
-    MPI_Allgather (&my_nid, 1, MPI_INT,
-                   *nids, 1, MPI_INT,
-                   comm);
-    return unique (*nids, size);
-}
-
-/*******************************************************
-   Processing parameter lists
-**********************************************************/
-static char * remove_whitespace (char *start, char *end) 
-{
-    char *s = start;
-    char *e = end;
-    //int orig_len = (int) (e-s);
-    int final_len;
-    char *res;
-    // remove front whitespace (but do not go far beyond the end)
-    while (s <= e && 
-           (*s==' ' || *s=='\t' || *s=='\n')
-          ) s++;
-    if (s <= e) { // there is some text 
-        // remove tail whitespace
-        while (s <= e && 
-               (*e==' ' || *e=='\t' || *e=='\n')
-              ) e--;
-        // create result 
-        final_len = e - s + 1; //  length of result 
-        if (final_len > 0) {
-            res = (char *) malloc (final_len + 1); // allocate space s..e and \0
-            memcpy(res, s, final_len);
-            res[final_len] = 0;
-        } else {
-            // "   = something" patterns end here
-            res = NULL;
-        }
-    } else {
-        // no non-whitespace character found
-        res = NULL;
-    }
-    return res;
-}
-
-
-/* Split a line at = sign into name and value pair
-   Remove " ", TAB and Newline from around names and values
-   Return NULL for name and value if there is no = sign in line
-   Return newly allocated strings otherwise
-   Used by: esimmon_internal_text_to_name_value_pairs
- */
-static void splitnamevalue (const char * line, int linelen,  char **name, char **value)
-{
-    char *equal; // position of first = sign in line
-
-    equal = strchr (line, '=');
-    if (equal && equal != line) {
-        /* 1. name */
-        // from first char to before =
-        *name = remove_whitespace ((char*)line, equal-1);
-        //printf ("      --name=[%s]\n", *name);
-        /* 2. value */
-        // from after = to the last character of line
-        *value = remove_whitespace (equal+1, (char*)line+linelen-1);
-        //printf ("      --value=[%s]\n", *value);
-
-    } else if (equal != line) {
-        /* check if it as name without = value statement */
-        *name = remove_whitespace ((char*)line, (char*)line+linelen-1);
-        //printf ("      --name only=[%s]\n", *name);
-        *value = NULL;
-    } else { 
-        // funny text starting with =. E.g. "=value" 
-        *name = NULL;
-        *value = NULL;
-    }
-}
-
-PairStruct * text_to_name_value_pairs (const char * text)
-{
-    /* Process a multi-line and/or ;-separated text and create a list
-       of name=value pairs from each line which has a 
-           name = value 
-       pattern. Whitespaces are removed. 
-         "X = 1
-          Y = 2"  
-       is not valid because of missing ';', but
-          "X=1; Y=5;
-          Z=apple"  
-       is valid
-    */
-    char *name, *value; 
-    char *item, *delim;
-    int len;
-    char line[256];
-    PairStruct *res = NULL, *last = NULL, *pair;
-
-    if (!text) return res;
-
-    item  = (char *)text; 
-    while (item) {
-        delim = strchr (item, ';');
-        if (delim) 
-            len = (int) (delim-item); 
-        else 
-            len = strlen (item);
-
-        strncpy (line, item, len);
-        line[len] = '\0';
-
-        //printf ("    --Line=[%s]\n", line);
-        splitnamevalue(line, len, &name, &value);
-        if (name) {
-            pair = (PairStruct *) malloc (sizeof(PairStruct));
-            pair->name = name;
-            pair->value = value;
-            pair->next = NULL;
-            if (last) {
-                last->next = pair;
-                last = pair;
-            } else {
-                res = pair; 
-                last = pair;
-            }
-        }
-        if (delim && delim+1 != 0)
-            item = delim+1;
-        else
-            item = NULL;
-    }
-    return res;
-}
-
-
-void free_name_value_pairs (PairStruct * pairs)
-{
-    PairStruct *p;
-    while (pairs) {
-        free(pairs->name);
-        free(pairs->value);
-        p = pairs;
-        pairs=pairs->next;
-        free(p);
-    }
-}
-
-
-/*******************************************************
-   Timing
-**********************************************************/
-#include <time.h> // nanosleep 
-void adios_nanosleep (int sec, int nanosec)
-{
-#if HAVE_NANOSLEEP
-    struct timespec treq = {.tv_sec=sec, .tv_nsec=nanosec};
-    struct timespec trem;
-    int r;
-    r = nanosleep(&treq, &trem);
-    //log_debug("adios_nanosleep: Nanoslept for %d.%9.9d sec, r=%d, errno=%d\n",
-    //          treq.tv_sec, treq.tv_nsec, r, errno);
-    while (r == -1 && errno == EINTR) {
-        treq.tv_sec = trem.tv_sec;
-        treq.tv_nsec = trem.tv_nsec;
-        r = nanosleep (&treq, &trem);
-    }
-#else
-    if (sec>0) {
-        //log_debug("adios_nanosleep: Slept for %d seconds\n");
-        sleep(sec);
-    } else {
-        //log_debug("adios_nanosleep: Slept for 1 second\n");
-        sleep(1);
-    }
-
-#endif
-}   
-
-#include <sys/time.h>
-struct timeval adios_timer_tp;
-double adios_gettime() 
-{
-    gettimeofday(&adios_timer_tp, NULL); \
-        return  ((double)adios_timer_tp.tv_sec + ((double)adios_timer_tp.tv_usec)/1000000.0);
-}
-
 void * bufdup(const void *buf, uint64_t elem_size, uint64_t count) {
     const uint64_t len = elem_size * count;
     void *newbuf = malloc(len);
diff --git a/src/core/util.h b/src/core/util.h
index 71d2d43..0a2f6e8 100644
--- a/src/core/util.h
+++ b/src/core/util.h
@@ -2,9 +2,10 @@
 #define UTIL_H_
 
 #include <stdint.h>
-#include "public/adios_mpi.h"
+#include <inttypes.h>
 #include "public/adios_types.h"
 #include "public/adios_selection.h"
+#include "core/a2sel.h"
 
 typedef struct read_request
 {
@@ -25,66 +26,29 @@ typedef struct read_request
 void swap_order(int n, uint64_t *array, int *timedim);
 void change_endianness( void *data, uint64_t slice_size, enum ADIOS_DATATYPES type);
 
-// copy an array of strings with allocation, return pointer
-// also return the sum of string lengths in 'total_length'
-char ** dup_string_array (char ** v, int nelems, int * total_length);
-void free_string_array (char ** v, int nelems);
+/* Copy data from one n-dimensional block to another, where the two blocks logically somewhat overlap.
+ */
+void adios_util_copy_data (void *dst, void *src,
+                           int idim,
+                           int ndim,
+                           uint64_t* size_in_dset,
+                           uint64_t* ldims,
+                           const uint64_t * readsize,
+                           uint64_t dst_stride,
+                           uint64_t src_stride,
+                           uint64_t dst_offset,
+                           uint64_t src_offset,
+                           uint64_t ele_num,
+                           int      size_of_type,
+                           enum ADIOS_FLAG change_endiness,
+                           enum ADIOS_DATATYPES type
+);
 
-void copy_data (void *dst, void *src,
-                int idim,
-                int ndim,
-                uint64_t* size_in_dset,
-                uint64_t* ldims,
-                const uint64_t * readsize,
-                uint64_t dst_stride,
-                uint64_t src_stride,
-                uint64_t dst_offset,
-                uint64_t src_offset,
-                uint64_t ele_num,
-                int      size_of_type,
-                enum ADIOS_FLAG change_endiness,
-                enum ADIOS_DATATYPES type
-                );
-void alloc_namelist (char ***namelist, int length);
-void free_namelist (char **namelist, int length);
 void list_insert_read_request_tail (read_request ** h, read_request * q);
 void list_insert_read_request_next (read_request ** h, read_request * q);
 void list_append_read_request_list (read_request ** h, read_request * q);
 void list_free_read_request (read_request * h);
 int list_get_length (read_request * h);
-ADIOS_SELECTION * copy_selection (const ADIOS_SELECTION * sel);
-void free_selection (ADIOS_SELECTION * sel);
-// This helper routine returns a vector of unique NID's
-int get_nids (MPI_Comm comm, uint32_t * nids);
-
-/*******************************************************
-   Processing parameter lists
-**********************************************************/
-/*
-   Process a ;-separated and possibly multi-line text and 
-   create a list of name=value pairs from each 
-   item which has a "name=value" pattern. Whitespaces are removed. 
-   Input is not modified. Space is allocated;
-   Also, simple "name" or "name=" patterns are processed and 
-   returned with value=NULL. 
-*/
-struct PairStruct {
-    char * name;
-    char * value;
-    struct PairStruct * next;
-};
-typedef struct PairStruct PairStruct;
-
-PairStruct * text_to_name_value_pairs (const char * text);
-void free_name_value_pairs (PairStruct * pairs);
-
-/**********************************************************
-   Timing
-**********************************************************/
-/* sleep for a bit */
-void adios_nanosleep (int sec, int nanosec);
-/* get current time as double (in seconds) */
-double adios_gettime();
 
 void * bufdup(const void *buf, uint64_t elem_size, uint64_t count);
 
diff --git a/src/core/util_mpi.c b/src/core/util_mpi.c
new file mode 100644
index 0000000..96f9f70
--- /dev/null
+++ b/src/core/util_mpi.c
@@ -0,0 +1,101 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+#include <assert.h>
+#include <ctype.h>
+
+#include "config.h"
+#include "core/util_mpi.h"
+
+
+static int unique (uint32_t * nids, int size)
+{
+    int i, j, k;
+    uint32_t temp;
+
+    // sort the nids first
+    for (i = 1; i < size; i++)
+    {
+        for (j = 0; j < size - i; j++)
+        {
+            if (nids[j] > nids[j + 1])
+            {
+                temp = nids[j];
+                nids[j] = nids[j + 1];
+                nids[j + 1] = temp;
+            }
+        }
+    }
+
+    // remove duplicates
+    i = 0;
+    k = 0;
+    while (i < size)
+    {
+        nids[k] = nids[i];
+
+        j = i + 1;
+        while (j < size && nids[i] == nids[j])
+        {
+            j++;
+        }
+   
+        if (j < size)
+        {
+            k++;
+            i = j;            
+        }
+        else
+        {
+            break;
+        }
+    }
+
+    return k + 1;
+}
+
+static uint32_t nid_atoi ()
+{
+    int name_len;
+    char * nid_str, * str_buf = malloc (MPI_MAX_PROCESSOR_NAME);
+    uint32_t nid;
+
+    MPI_Get_processor_name (str_buf, &name_len);
+    nid_str = str_buf;
+    while (*nid_str != '\0' && (!isdigit (*nid_str) || *nid_str == '0'))
+    {
+        nid_str++;
+    }
+
+    if (*nid_str == '\0')
+    {
+        // report an error
+    }
+
+    nid = atoi (nid_str);
+    free (str_buf);
+
+    return nid;
+}
+
+// This helper routine returns a vector of unique NID's.
+// It is caller's responsiblity to free nids afterwards.
+int get_unique_nids (MPI_Comm comm, uint32_t ** nids)
+{
+    int size;
+    uint32_t my_nid;
+
+    my_nid = nid_atoi ();
+    MPI_Comm_size (comm, &size);
+    * nids = (uint32_t *) malloc (size * 4);
+    assert (* nids);
+
+    MPI_Allgather (&my_nid, 1, MPI_INT,
+                   *nids, 1, MPI_INT,
+                   comm);
+    return unique (*nids, size);
+}
+
+
diff --git a/src/core/util_mpi.h b/src/core/util_mpi.h
new file mode 100644
index 0000000..fa73d44
--- /dev/null
+++ b/src/core/util_mpi.h
@@ -0,0 +1,10 @@
+#ifndef UTIL_MPI_H_
+#define UTIL_MPI_H_
+
+#include <stdint.h>
+#include "public/adios_mpi.h"
+
+// This helper routine returns a vector of unique NID's
+int get_unique_nids (MPI_Comm comm, uint32_t ** nids);
+
+#endif
diff --git a/src/mxml/CMakeLists.txt b/src/mxml/CMakeLists.txt
new file mode 100644
index 0000000..e0936f1
--- /dev/null
+++ b/src/mxml/CMakeLists.txt
@@ -0,0 +1,36 @@
+set(MXML_SRCDIR "mxml-2.9")
+include_directories(${PROJECT_SOURCE_DIR}/src/mxml)
+include_directories(${PROJECT_SOURCE_DIR}/src/mxml/${MXML_SRCDIR})
+include_directories(${PROJECT_BINARY_DIR}/src/mxml)
+link_directories(${PROJECT_BINARY_DIR}/src/mxml)
+
+
+set(CLEANFILES "")
+set(include_HEADERS "")
+set(nodist_include_HEADERS "")
+set(lib_LIBRARIES "")
+
+if(BUILD_MXML)
+    set(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
+       )
+    set(libmxml_a_CPPFLAGS "${AM_CPPFLAGS}")
+    set(libmxml_a_CFLAGS "${AM_CFLAGS}")
+
+    add_library(mxml OBJECT ${libmxml_a_SOURCES})
+    #set_target_properties(mxml PROPERTIES COMPILE_FLAGS "")
+
+## Do not install libmxml.a, adios does not need it
+#install(FILES ${PROJECT_BINARY_DIR}/mxml/libmxml.a
+#        DESTINATION ${libdir})
+
+endif(BUILD_MXML)
diff --git a/src/mxml/Makefile.am b/src/mxml/Makefile.am
new file mode 100644
index 0000000..bcc0913
--- /dev/null
+++ b/src/mxml/Makefile.am
@@ -0,0 +1,41 @@
+MXML_SRCDIR=mxml-2.9
+
+AM_CPPFLAGS=-I$(top_srcdir)/mxml/${MXML_SRCDIR}
+
+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
+
diff --git a/src/mxml/Makefile.in b/src/mxml/Makefile.in
new file mode 100644
index 0000000..9bede00
--- /dev/null
+++ b/src/mxml/Makefile.in
@@ -0,0 +1,868 @@
+# Makefile.in generated by automake 1.14 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/mxml
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
+	$(top_srcdir)/config/ac_aplod.m4 \
+	$(top_srcdir)/config/ac_bgq.m4 \
+	$(top_srcdir)/config/ac_bzip2.m4 \
+	$(top_srcdir)/config/ac_cray_pmi.m4 \
+	$(top_srcdir)/config/ac_cray_ugni.m4 \
+	$(top_srcdir)/config/ac_dataspaces.m4 \
+	$(top_srcdir)/config/ac_datatap.m4 \
+	$(top_srcdir)/config/ac_dcmf.m4 \
+	$(top_srcdir)/config/ac_dimes.m4 \
+	$(top_srcdir)/config/ac_dmalloc.m4 \
+	$(top_srcdir)/config/ac_fastbit.m4 \
+	$(top_srcdir)/config/ac_fgr.m4 \
+	$(top_srcdir)/config/ac_flexpath.m4 \
+	$(top_srcdir)/config/ac_glib.m4 \
+	$(top_srcdir)/config/ac_hdf5.m4 \
+	$(top_srcdir)/config/ac_infiniband.m4 \
+	$(top_srcdir)/config/ac_isobar.m4 \
+	$(top_srcdir)/config/ac_lustre.m4 \
+	$(top_srcdir)/config/ac_mxml.m4 \
+	$(top_srcdir)/config/ac_nc4par.m4 \
+	$(top_srcdir)/config/ac_netcdf.m4 \
+	$(top_srcdir)/config/ac_nssi.m4 \
+	$(top_srcdir)/config/ac_pablo.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_zlib.m4 \
+	$(top_srcdir)/config/acx_mpi.m4 \
+	$(top_srcdir)/config/acx_pthread.m4 \
+	$(top_srcdir)/config/cercs.m4 $(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+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 =
+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_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp =
+am__depfiles_maybe =
+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 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
+ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
+ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
+ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
+ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
+ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
+ADIOSLIB_INT_LDFLAGS = @ADIOSLIB_INT_LDFLAGS@
+ADIOSLIB_LDADD = @ADIOSLIB_LDADD@
+ADIOSLIB_LDFLAGS = @ADIOSLIB_LDFLAGS@
+ADIOSLIB_SEQ_CFLAGS = @ADIOSLIB_SEQ_CFLAGS@
+ADIOSLIB_SEQ_CPPFLAGS = @ADIOSLIB_SEQ_CPPFLAGS@
+ADIOSLIB_SEQ_LDADD = @ADIOSLIB_SEQ_LDADD@
+ADIOSLIB_SEQ_LDFLAGS = @ADIOSLIB_SEQ_LDFLAGS@
+ADIOSREADLIB_CFLAGS = @ADIOSREADLIB_CFLAGS@
+ADIOSREADLIB_CPPFLAGS = @ADIOSREADLIB_CPPFLAGS@
+ADIOSREADLIB_LDADD = @ADIOSREADLIB_LDADD@
+ADIOSREADLIB_LDFLAGS = @ADIOSREADLIB_LDFLAGS@
+ADIOSREADLIB_SEQ_CFLAGS = @ADIOSREADLIB_SEQ_CFLAGS@
+ADIOSREADLIB_SEQ_CPPFLAGS = @ADIOSREADLIB_SEQ_CPPFLAGS@
+ADIOSREADLIB_SEQ_LDADD = @ADIOSREADLIB_SEQ_LDADD@
+ADIOSREADLIB_SEQ_LDFLAGS = @ADIOSREADLIB_SEQ_LDFLAGS@
+ADIOS_TIMERS = @ADIOS_TIMERS@
+ADIOS_TIMER_EVENTS = @ADIOS_TIMER_EVENTS@
+ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
+ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
+ALACRITY_LIBS = @ALACRITY_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
+APLOD_LDFLAGS = @APLOD_LDFLAGS@
+APLOD_LIBS = @APLOD_LIBS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
+BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
+BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
+BZIP2_LIBS = @BZIP2_LIBS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRAY_PMI_CPPFLAGS = @CRAY_PMI_CPPFLAGS@
+CRAY_PMI_LDFLAGS = @CRAY_PMI_LDFLAGS@
+CRAY_PMI_LIBS = @CRAY_PMI_LIBS@
+CRAY_UGNI_CPPFLAGS = @CRAY_UGNI_CPPFLAGS@
+CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
+CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
+CSH = @CSH@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATASPACES_CPPFLAGS = @DATASPACES_CPPFLAGS@
+DATASPACES_LDFLAGS = @DATASPACES_LDFLAGS@
+DATASPACES_LIBS = @DATASPACES_LIBS@
+DCMF_CFLAGS = @DCMF_CFLAGS@
+DCMF_CPPFLAGS = @DCMF_CPPFLAGS@
+DCMF_LDFLAGS = @DCMF_LDFLAGS@
+DCMF_LIBS = @DCMF_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
+DIMES_LDFLAGS = @DIMES_LDFLAGS@
+DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
+DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
+DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
+DMALLOC_LIBS = @DMALLOC_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DT_CPPFLAGS = @DT_CPPFLAGS@
+DT_LDFLAGS = @DT_LDFLAGS@
+DT_LIBS = @DT_LIBS@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FASTBIT_CPPFLAGS = @FASTBIT_CPPFLAGS@
+FASTBIT_LDFLAGS = @FASTBIT_LDFLAGS@
+FASTBIT_LIBS = @FASTBIT_LIBS@
+FC = @FC@
+FCFLAGS = @FCFLAGS@
+FCLIBS = @FCLIBS@
+FGREP = @FGREP@
+FGR_CPPFLAGS = @FGR_CPPFLAGS@
+FGR_LDFLAGS = @FGR_LDFLAGS@
+FGR_LIBS = @FGR_LIBS@
+FP_CPPFLAGS = @FP_CPPFLAGS@
+FP_LDFLAGS = @FP_LDFLAGS@
+FP_LIBS = @FP_LIBS@
+GLIB_CPPFLAGS = @GLIB_CPPFLAGS@
+GLIB_LDFLAGS = @GLIB_LDFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GREP = @GREP@
+HDF5_CPPFLAGS = @HDF5_CPPFLAGS@
+HDF5_LDFLAGS = @HDF5_LDFLAGS@
+HDF5_LIBS = @HDF5_LIBS@
+INFINIBAND_CFLAGS = @INFINIBAND_CFLAGS@
+INFINIBAND_CPPFLAGS = @INFINIBAND_CPPFLAGS@
+INFINIBAND_LDFLAGS = @INFINIBAND_LDFLAGS@
+INFINIBAND_LIBS = @INFINIBAND_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISOBAR_CPPFLAGS = @ISOBAR_CPPFLAGS@
+ISOBAR_LDFLAGS = @ISOBAR_LDFLAGS@
+ISOBAR_LIBS = @ISOBAR_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
+LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
+LUSTRE_LIBS = @LUSTRE_LIBS@
+MACRODEFFLAG = @MACRODEFFLAG@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPICXX = @MPICXX@
+MPIFC = @MPIFC@
+MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
+MXML_CPPFLAGS = @MXML_CPPFLAGS@
+MXML_LDFLAGS = @MXML_LDFLAGS@
+MXML_LIBS = @MXML_LIBS@
+NC4PAR_CPPFLAGS = @NC4PAR_CPPFLAGS@
+NC4PAR_LDFLAGS = @NC4PAR_LDFLAGS@
+NC4PAR_LIBS = @NC4PAR_LIBS@
+NETCDF_CPPFLAGS = @NETCDF_CPPFLAGS@
+NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
+NETCDF_LIBS = @NETCDF_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NSSI_BUILDDIR = @NSSI_BUILDDIR@
+NSSI_CFLAGS = @NSSI_CFLAGS@
+NSSI_CPPFLAGS = @NSSI_CPPFLAGS@
+NSSI_LDFLAGS = @NSSI_LDFLAGS@
+NSSI_LIBS = @NSSI_LIBS@
+NSSI_SERVER_LIBS = @NSSI_SERVER_LIBS@
+NSSI_SRCDIR = @NSSI_SRCDIR@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PABLO_CPPFLAGS = @PABLO_CPPFLAGS@
+PABLO_LDFLAGS = @PABLO_LDFLAGS@
+PABLO_LIBS = @PABLO_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PAMI_CFLAGS = @PAMI_CFLAGS@
+PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
+PAMI_LDFLAGS = @PAMI_LDFLAGS@
+PAMI_LIBS = @PAMI_LIBS@
+PATHPROG = @PATHPROG@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PHDF5_CPPFLAGS = @PHDF5_CPPFLAGS@
+PHDF5_LDFLAGS = @PHDF5_LDFLAGS@
+PHDF5_LIBS = @PHDF5_LIBS@
+PORTALS_CFLAGS = @PORTALS_CFLAGS@
+PORTALS_CPPFLAGS = @PORTALS_CPPFLAGS@
+PORTALS_HEADER = @PORTALS_HEADER@
+PORTALS_LDFLAGS = @PORTALS_LDFLAGS@
+PORTALS_LIBS = @PORTALS_LIBS@
+PORTALS_NAL_HEADER = @PORTALS_NAL_HEADER@
+PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SKEL_HAVE_ADIOS_TIMING = @SKEL_HAVE_ADIOS_TIMING@
+STRIP = @STRIP@
+SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
+SZIP_LDFLAGS = @SZIP_LDFLAGS@
+SZIP_LIBS = @SZIP_LIBS@
+VERSION = @VERSION@
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MICRO = @VERSION_MICRO@
+VERSION_MINOR = @VERSION_MINOR@
+ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
+ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_FC = @ac_ct_FC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+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}
+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
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mxml/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/mxml/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(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
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f ${MXML_SRCDIR}/*.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+${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
+
+${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`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+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)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+
+# 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.
+.NOEXPORT:
diff --git a/src/mxml/cmake_try_longlong.c b/src/mxml/cmake_try_longlong.c
new file mode 100644
index 0000000..92d31c2
--- /dev/null
+++ b/src/mxml/cmake_try_longlong.c
@@ -0,0 +1,6 @@
+#include <stdint.h>
+
+void main()
+{
+    long long int a = 0LL;
+}
diff --git a/src/mxml/config.h b/src/mxml/config.h
new file mode 100644
index 0000000..8b6f5bd
--- /dev/null
+++ b/src/mxml/config.h
@@ -0,0 +1,39 @@
+/*
+ * Config file to include necessary headers for mxml and then
+ * include the adios config file
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <ctype.h>
+
+/* This should be the ADIOS config.h; ../../config.h should work */
+#include "../../config.h" 
+
+/* We build Mini-XML without pthread support because ADIOS does not need it */
+#undef HAVE_PTHREAD_H
+
+/*
+ * Define prototypes for string functions as needed...
+ */
+
+#  ifndef HAVE_STRDUP
+extern char	*_mxml_strdup(const char *);
+#    define strdup _mxml_strdup
+#  endif /* !HAVE_STRDUP */
+
+extern char	*_mxml_strdupf(const char *, ...);
+extern char	*_mxml_vstrdupf(const char *, va_list);
+
+#  ifndef HAVE_SNPRINTF
+extern int	_mxml_snprintf(char *, size_t, const char *, ...);
+#    define snprintf _mxml_snprintf
+#  endif /* !HAVE_SNPRINTF */
+
+#  ifndef HAVE_VSNPRINTF
+extern int	_mxml_vsnprintf(char *, size_t, const char *, va_list);
+#    define vsnprintf _mxml_vsnprintf
+#  endif /* !HAVE_VSNPRINTF */
+
diff --git a/src/mxml/mxml-2.9/ANNOUNCEMENT b/src/mxml/mxml-2.9/ANNOUNCEMENT
new file mode 100644
index 0000000..2a33819
--- /dev/null
+++ b/src/mxml/mxml-2.9/ANNOUNCEMENT
@@ -0,0 +1,11 @@
+Mini-XML 2.8 is now available for download from:
+
+    http://www.msweet.org/downloads.php/Mini-XML
+
+Mini-XML 2.8 fixes some minor platform and XML issues. Changes include:
+
+- Now call docsetutil using xcrun on OS X (Bug #458)
+- mxmldoc did not escape special HTML characters inside @code foo@ comments.
+- Fixed a memory leak in mxmlElementDeleteAttr (Bug #452)
+- Added MXML_MAJOR/MINOR_VERSION definitions to mxml.h (Bug $461)
+- Fixed a bug reading UTF-16 characters from a file (Bug #454)
diff --git a/src/mxml/mxml-2.9/CHANGES b/src/mxml/mxml-2.9/CHANGES
new file mode 100644
index 0000000..91611b0
--- /dev/null
+++ b/src/mxml/mxml-2.9/CHANGES
@@ -0,0 +1,363 @@
+CHANGES - 2014-10-19
+--------------------
+
+CHANGES IN Mini-XML 2.9
+
+	- mxmlLoad* did not correctly load value nodes with MXML_NO_CALLBACK
+	  or MXML_TEXT_CALLBACK (Bug #502)
+
+
+CHANGES IN Mini-XML 2.8
+
+	- Now call docsetutil using xcrun on OS X (Bug #458)
+	- mxmldoc did not escape special HTML characters inside @code foo@
+	  comments.
+	- Fixed a memory leak in mxmlElementDeleteAttr (Bug #452)
+	- Added MXML_MAJOR/MINOR_VERSION definitions to mxml.h (Bug $461)
+	- Fixed a bug reading UTF-16 characters from a file (Bug #454)
+	- Fixed a memory leak when loading invalid XML (Bug #496)
+	- Fixed an XML fragment loading problem (Bug #494)
+
+
+CHANGES IN Mini-XML 2.7
+
+	- Added 64-bit configurations to the VC++ project files (STR #129)
+	- Fixed conformance of mxmldoc's HTML and CSS output.
+	- Added data accessor ("get") functions and made the mxml_node_t and
+	  mxml_index_t structures private but still available in the Mini-XML
+	  header to preserve source compatibility (STR #118)
+	- Updated the source headers to reference the Mini-XML license and its
+	  exceptions to the LGPL2 (STR #108)
+	- Fixed a memory leak when loading a badly-formed XML file (STR #121)
+      	- Added a new mxmlFindPath() function to find the value node of a
+	  named element (STR #110)
+	- Building a static version of the library did not work on Windows
+	  (STR #112)
+	- The shared library did not include a destructor for the thread-
+	  specific data key on UNIX-based operating systems (STR #103)
+	- mxmlLoad* did not error out on XML with multiple root nodes (STR #101)
+	- Fixed an issue with the _mxml_vstrdupf function (STR #107)
+	- mxmlSave* no longer write all siblings of the passed node, just that
+	  node and its children (STR #109)
+
+
+CHANGES IN Mini-XML 2.6
+
+	- Documentation fixes (STR #91, STR #92)
+	- The mxmldoc program did not handle typedef comments properly (STR #72)
+	- Added support for "long long" printf formats.
+	- The XML parser now ignores BOMs in UTF-8 XML files (STR #89)
+	- The mxmldoc program now supports generating Xcode documentation sets.
+	- mxmlSave*() did not output UTF-8 correctly on some platforms.
+	- mxmlNewXML() now adds encoding="utf-8" in the ?xml directive to avoid
+	  problems with non-conformant XML parsers that assume something other
+	  than UTF-8 as the default encoding.
+	- Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and
+	  "<?xml ... ?>" was always followed by a newline (STR #76)
+	- The mxml.pc.in file was broken (STR #79)
+	- The mxmldoc program now handles "typedef enum name {} name" correctly
+	  (STR #72)
+
+
+CHANGES IN Mini-XML 2.5
+
+	- The mxmldoc program now makes greater use of CSS and
+	  supports a --css option to embed an alternate stylesheet.
+	- The mxmldoc program now supports --header and --footer
+	  options to insert documentation content before and
+	  after the generated content.
+	- The mxmldoc program now supports a --framed option to
+	  generate framed HTML output.
+	- The mxmldoc program now creates a table of contents
+	  including any headings in the --intro file when
+	  generating HTML output.
+	- The man pages and man page output from mxmldoc did
+	  not use "\-" for dashes (STR #68)
+	- The debug version of the Mini-XML DLL could not be
+	  built (STR #65)
+	- Processing instructions and directives did not work
+	  when not at the top level of a document (STR #67)
+	- Spaces around the "=" in attributes were not supported
+	  (STR #67)
+
+
+CHANGES IN Mini-XML 2.4
+
+	- Fixed shared library build problems on HP-UX and Mac OS X.
+	- The mxmldoc program did not output argument descriptions
+	  for functions properly.
+	- All global settings (custom, error, and entity callbacks
+	  and the wrap margin) are now managed separately for each
+	  thread.
+	- Added mxmlElementDeleteAttr() function (STR #59)
+	- mxmlElementSetAttrf() did not work (STR #57)
+	- mxmlLoad*() incorrectly treated declarations as parent
+	  elements (STR #56)
+	- mxmlLoad*() incorrectly allowed attributes without values
+	  (STR #47)
+	- Fixed Visual C++ build problems (STR #49)
+	- mxmlLoad*() did not return NULL when an element contained
+	  an error (STR #46)
+	- Added support for the apos character entity (STR #54)
+	- Fixed whitespace detection with Unicode characters (STR
+	  #48)
+	- mxmlWalkNext() and mxmlWalkPrev() did not work correctly
+	  when called with a node with no children as the top node
+	  (STR #53)
+
+
+CHANGES IN Mini-XML 2.3
+
+	- Added two exceptions to the LGPL to support static
+	  linking of applications against Mini-XML
+	- The mxmldoc utility can now generate man pages, too.
+	- Added a mxmlNewXML() function
+	- Added a mxmlElementSetAttrf() function (STR #43)
+	- Added snprintf() emulation function for test program (STR
+	  #32)
+	- Added the _CRT_SECURE_NO_DEPRECATE definition when
+	  building on VC++ 2005 (STR #36)
+	- mxmlLoad*() did not detect missing > characters in
+	  elements (STR #41)
+	- mxmlLoad*() did not detect missing close tags at the end
+	  of an XML document (STR #45)
+	- Added user_data and ref_count members to mxml_node_t
+	  structure
+	- Added mxmlReleaseNode() and mxmlRetainNode() APIs for
+	  reference-counted nodes
+	- Added mxmlSetWrapMargin() to control the wrapping of XML
+	  output
+	- Added conditional check for EINTR error code for
+	  certain Windows compilers that do not define it (STR
+	  #33)
+	- The mxmldoc program now generates correct HTML 4.0
+	  output - previously it generated invalid XHTML
+	- The mxmldoc program now supports "@deprecated@,
+	  "@private@", and "@since version@" comments
+	- Fixed function and enumeration type bugs in mxmldoc.
+	- Fixed the XML schema for mxmldoc
+	- The mxmldoc program now supports --intro, --section,
+	  and --title options
+	- The mxmlLoad*() functions could leak a node on an error
+	  (STR #27)
+	- The mxml_vsnprintf() function could get in an infinite
+	  loop on a buffer overflow (STR #25)
+	- Added new mxmlNewCDATA() and mxmlSetCDATA() functions
+	  to create and set CDATA nodes, which are really just
+	  special element nodes
+	- Added new MXML_IGNORE type and MXML_IGNORE_CB callback
+	  to ignore non-element nodes, e.g. whitespace
+	- mxmlLoad*() crashed when reporting an error in some
+	  invalid XML (STR #23)
+
+
+CHANGES IN Mini-XML 2.2.2
+
+	- mxmlLoad*() did not treat custom data as opaque, so
+	  whitespace characters would be lost.
+
+
+CHANGES IN Mini-XML 2.2.1
+
+	- mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now
+	  correctly return NULL on error (STR #21)
+	- mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(),
+	  mxmlNewText(), and mxmlNewTextf() incorrectly required
+	  a parent node (STR #22)
+	- Fixed an XML output bug in mxmldoc.
+	- The "make install" target now uses the install command
+	  to set the proper permissions on UNIX/Linux/OSX.
+	- Fixed a MingW/Cygwin compilation problem (STR #18)
+
+
+CHANGES IN Mini-XML 2.2
+
+	- Added shared library support (STR #17)
+	- mxmlLoad*() now returns an error when an XML stream
+	  contains illegal control characters (STR #10)
+	- mxmlLoad*() now returns an error when an element
+	  contains two attributes with the same name in
+	  conformance with the XML spec (STR #16)
+	- Added support for CDATA (STR #14, STR #15)
+	- Updated comment and processing instruction handling -
+	  no entity support per XML specification.
+	- Added checking for invalid comment termination ("--->"
+	  is not allowed)
+
+
+CHANGES IN Mini-XML 2.1
+
+	- Added support for custom data nodes (STR #6)
+	- Now treat UTF-8 sequences which are longer than
+	  necessary as an error (STR #4)
+	- Fixed entity number support (STR #8)
+	- Fixed mxmlLoadString() bug with UTF-8 (STR #7)
+	- Fixed entity lookup bug (STR #5)
+	- Added mxmlLoadFd() and mxmlSaveFd() functions.
+	- Fixed multi-word UTF-16 handling.
+
+
+CHANGES IN Mini-XML 2.0
+
+	- New programmers manual.
+	- Added Visual C++ project files for Microsoft Windows
+	  users.
+	- Added optimizations to mxmldoc, mxmlSaveFile(), and
+	  mxmlIndexNew() (STR #2)
+	- mxmlEntityAddCallback() now returns an integer status
+	  (STR #2)
+	- Added UTF-16 support (input only; all output is UTF-8)
+	- Added index functions to build a searchable index of
+	  XML nodes.
+	- Added character entity callback interface to support
+	  additional character entities beyond those defined in
+	  the XHTML specification.
+	- Added support for XHTML character entities.
+	- The mxmldoc utility now produces XML output which
+	  conforms to an updated XML schema, described in the file
+	  "doc/mxmldoc.xsd".
+	- Changed the whitespace callback interface to return
+	  strings instead of a single character, allowing for
+	  greater control over the formatting of XML files
+	  written using Mini-XML.  THIS CHANGE WILL REQUIRE
+	  CHANGES TO YOUR 1.x CODE IF YOU USE WHITESPACE
+	  CALLBACKS.
+	- The mxmldoc utility is now capable of documenting C++
+	  classes, functions, and structures, and correctly
+	  handles C++ comments.
+	- Added new modular tests for mxmldoc.
+	- Updated the mxmldoc output to be more compatible with
+	  embedding in manuals produced with HTMLDOC.
+	- The makefile incorrectly included a "/" separator
+	  between the destination path and install path.  This
+	  caused problems when building and installing with
+	  MingW.
+
+
+CHANGES IN Mini-XML 1.3
+
+	- Fixes for mxmldoc.
+	- Added support for reading standard HTML entity names.
+	- mxmlLoadString/File() did not decode character
+	  entities in element names, attribute names, or
+	  attribute values.
+	- mxmlLoadString/File() would crash when loading non-
+	  conformant XML data under an existing parent (top)
+	  node.
+	- Fixed several bugs in the mxmldoc utility.
+	- Added new error callback function to catch a variety
+	  of errors and log them to someplace other than stderr.
+	- The mxmlElementSetAttr() function now allows for NULL
+	  attribute values.
+	- The load and save functions now properly handle quoted
+	  element and attribute name strings properly, e.g. for
+	  !DOCTYPE declarations.
+
+
+CHANGES IN Mini-XML 1.2
+
+	- Added new "set" methods to set the value of a node.
+	- Added new formatted text methods mxmlNewTextf() and
+	  mxmlSetTextf() to create/set a text node value using
+	  printf-style formats.
+	- Added new standard callbacks for use with the mxmlLoad
+	  functions.
+	- Updated the HTML documentation to include examples of
+	  the walk and load function output.
+	- Added --with/without-ansi configure option to control
+	  the strdup() function check.
+	- Added --with/without-snprintf configure option to
+	  control the snprintf() and vsnprintf() function
+	  checks.
+
+
+CHANGES IN Mini-XML 1.1.2
+
+	- The mxml(3) man page wasn't updated for the string
+	  functions.
+	- mxmlSaveString() returned the wrong number of
+	  characters.
+	- mxml_add_char() updated the buffer pointer in the
+	  wrong place.
+
+
+CHANGES IN Mini-XML 1.1.1
+
+	- The private mxml_add_ch() function did not update the
+	  start-of-buffer pointer which could cause a crash when
+	  using mxmlSaveString().
+	- The private mxml_write_ws() function called putc()
+	  instead of using the proper callback which could cause
+	  a crash when using mxmlSaveString().
+	- Added a mxmlSaveAllocString() convenience function for
+	  saving an XML node tree to an allocated string.
+
+
+CHANGES IN Mini-XML 1.1
+
+	- The mxmlLoadFile() function now uses dynamically
+	  allocated string buffers for element names, attribute
+	  names, and attribute values.  Previously they were
+	  capped at 16383, 255, and 255 bytes, respectively.
+	- Added a new mxmlLoadString() function for loading an
+	  XML node tree from a string.
+	- Added a new mxmlSaveString() function for saving an
+	  XML node tree to a string.
+	- Add emulation of strdup() if the local platform does
+	  not provide the function.
+
+
+CHANGES IN Mini-XML 1.0
+
+	- The mxmldoc program now handles function arguments,
+	  structures, unions, enumerations, classes, and
+	  typedefs properly.
+	- Documentation provided via mxmldoc and more in-line
+	  comments in the code.
+	- Added man pages and packaging files.
+
+
+CHANGES IN Mini-XML 0.93
+
+	- New mxmldoc example program that is also used to
+	  create and update code documentation using XML and
+	  produce HTML reference pages.
+	- Added mxmlAdd() and mxmlRemove() functions to add and
+	  remove nodes from a tree.  This provides more
+	  flexibility over where the nodes are inserted and
+	  allows nodes to be moved within the tree as needed.
+	- mxmlLoadFile() now correctly handles comments.
+	- mxmlLoadFile() now supports the required "gt", "quot",
+	  and "nbsp" character entities.
+	- mxmlSaveFile() now uses newlines as whitespace
+	  when valid to do so.
+	- mxmlFindElement() now also takes attribute name and
+	  attribute value string arguments to limit the search
+	  to specific elements with attributes and/or values.
+	  NULL pointers can be used as "wildcards".
+	- Added uninstall target to makefile, and auto-reconfig
+	  if Makefile.in or configure.in are changed.
+	- mxmlFindElement(), mxmlWalkNext(), and mxmlWalkPrev()
+	  now all provide "descend" arguments to control whether
+	  they descend into child nodes in the tree.
+	- Fixed some whitespace issues in mxmlLoadFile().
+	- Fixed Unicode output and whitespace issues in
+	  mxmlSaveFile().
+	- mxmlSaveFile() now supports a whitespace callback to
+	  provide more human-readable XML output under program
+	  control.
+
+
+CHANGES IN Mini-XML 0.92
+
+	- mxmlSaveFile() didn't return a value on success.
+
+
+CHANGES IN Mini-XML 0.91
+
+	- mxmlWalkNext() would go into an infinite loop.
+
+
+CHANGES IN Mini-XML 0.9
+
+	- Initial public release.
diff --git a/src/mxml/mxml-2.9/COPYING b/src/mxml/mxml-2.9/COPYING
new file mode 100644
index 0000000..4d0aa78
--- /dev/null
+++ b/src/mxml/mxml-2.9/COPYING
@@ -0,0 +1,507 @@
+			   Mini-XML License
+			  September 18, 2010
+
+
+The Mini-XML library and included programs are provided under the
+terms of the GNU Library General Public License version 2 (LGPL2)
+with the following exceptions:
+
+  1. Static linking of applications to the Mini-XML library
+does not constitute a derivative work and does not require
+the author to provide source code for the application, use
+the shared Mini-XML libraries, or link their applications
+against a user-supplied version of Mini-XML.
+
+If you link the application to a modified version of
+Mini-XML, then the changes to Mini-XML must be provided
+under the terms of the LGPL2 in sections 1, 2, and 4.
+
+  2. You do not have to provide a copy of the Mini-XML license
+with programs that are linked to the Mini-XML library, nor
+do you have to identify the Mini-XML license in your
+program or documentation as required by section 6 of the
+LGPL2.
+
+
+
		  GNU LIBRARY GENERAL PUBLIC LICENSE
+			 Version 2, June 1991
+
+	  Copyright (C) 1991 Free Software Foundation, Inc.
+       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+      of this license document, but changing it is not allowed.
+
+    [This is the first released version of the library GPL.  It is
+   numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			       Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+

+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+

+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+

+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+

+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+

+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+

+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+

+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+

+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+

+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/src/mxml/mxml-2.9/Makefile.in b/src/mxml/mxml-2.9/Makefile.in
new file mode 100644
index 0000000..92a490f
--- /dev/null
+++ b/src/mxml/mxml-2.9/Makefile.in
@@ -0,0 +1,434 @@
+#
+# "$Id: Makefile.in 459 2014-10-19 17:21:48Z msweet $"
+#
+# Makefile for Mini-XML, a small XML-like file parsing library.
+#
+# Copyright 2003-2014 by Michael R Sweet.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Michael R Sweet and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "COPYING"
+# which should have been included with this file.  If this file is
+# missing or damaged, see the license at:
+#
+#     http://www.msweet.org/projects.php/Mini-XML
+#
+
+#
+# Compiler tools definitions...
+#
+
+AR		=	@AR@
+ARFLAGS		=	@ARFLAGS@
+ARCHFLAGS	=	@ARCHFLAGS@
+CC		=	@CC@
+CFLAGS		=	$(OPTIM) $(ARCHFLAGS) @CFLAGS@ @CPPFLAGS@ @PTHREAD_FLAGS@
+CP		=	@CP@
+DSO		=	@DSO@
+DSOFLAGS	=	@DSOFLAGS@
+LDFLAGS		=	$(OPTIM) $(ARCHFLAGS) @LDFLAGS@
+INSTALL		=	@INSTALL@
+LIBMXML		=	@LIBMXML@
+LIBS		=	@LIBS@ @PTHREAD_LIBS@
+LN		=	@LN@ -s
+MKDIR		=	@MKDIR@
+OPTIM		=	@OPTIM@
+RANLIB		=	@RANLIB@
+RM		=	@RM@ -f
+SHELL		=	/bin/sh
+
+
+#
+# Configured directories...
+#
+
+prefix		=	@prefix@
+exec_prefix	=	@exec_prefix@
+bindir		=	@bindir@
+datarootdir	=	@datarootdir@
+includedir	=	@includedir@
+libdir		=	@libdir@
+mandir		=	@mandir@
+docdir		=	@docdir@
+BUILDROOT	=	$(DSTROOT)
+
+
+#
+# Install commands...
+#
+
+INSTALL_BIN	=	$(LIBTOOL) $(INSTALL) -m 755 -s
+INSTALL_DATA	=	$(INSTALL) -m 644
+INSTALL_DIR	=	$(INSTALL) -d
+INSTALL_LIB	=	$(LIBTOOL) $(INSTALL) -m 755
+INSTALL_MAN	=	$(INSTALL) -m 644
+INSTALL_SCRIPT	=	$(INSTALL) -m 755
+
+
+#
+# Rules...
+#
+
+.SILENT:
+.SUFFIXES:	.c .man .o
+.c.o:
+	echo Compiling $<
+	$(CC) $(CFLAGS) -c -o $@ $<
+
+
+#
+# Targets...
+#
+
+DOCFILES	=	doc/0.gif doc/1.gif doc/2.gif doc/3.gif doc/4.gif \
+			doc/A.gif doc/B.gif doc/C.gif doc/D.gif \
+			doc/mxml.html doc/mxmldoc.xsd \
+			README COPYING CHANGES
+PUBLIBOBJS	=	mxml-attr.o mxml-entity.o mxml-file.o mxml-get.o \
+			mxml-index.o mxml-node.o mxml-search.o mxml-set.o
+LIBOBJS		=	$(PUBLIBOBJS) mxml-private.o mxml-string.o
+OBJS		=	mxmldoc.o testmxml.o $(LIBOBJS)
+TARGETS		=	$(LIBMXML) mxmldoc testmxml mxml.xml doc/mxml.man
+
+
+#
+# Make everything...
+#
+
+all:		Makefile config.h $(TARGETS)
+
+
+#
+# Clean everything...
+#
+
+clean:
+	echo Cleaning build files...
+	$(RM) $(OBJS) $(TARGETS)
+	$(RM) mxmldoc-static libmxml.a libmxml.so.1.5 libmxml.sl.1 libmxml.1.dylib
+
+
+#
+# Really clean everything...
+#
+
+distclean:	clean
+	echo Cleaning distribution files...
+	$(RM) config.cache config.log config.status
+	$(RM) Makefile config.h
+	$(RM) -r autom4te*.cache
+	$(RM) *.bck *.bak
+	$(RM) -r clang
+
+
+#
+# Run the clang.llvm.org static code analysis tool on the C sources.
+#
+
+.PHONY: clang clang-changes
+clang:
+	echo Doing static code analysis of all code using CLANG...
+	$(RM) -r clang
+	scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all
+clang-changes:
+	echo Doing static code analysis of changed code using CLANG...
+	scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all
+
+
+#
+# Install everything...
+#
+
+install:	$(TARGETS) install-$(LIBMXML) install-libmxml.a
+	echo Installing mxmldoc in $(BUILDROOT)$(bindir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(bindir)
+	$(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir)
+	echo Installing documentation in $(BUILDROOT)$(docdir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(docdir)
+	for file in $(DOCFILES); do \
+		$(INSTALL_MAN) $$file $(BUILDROOT)$(docdir); \
+	done
+	echo Installing header files in $(BUILDROOT)$(includedir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(includedir)
+	$(INSTALL_DATA) mxml.h $(BUILDROOT)$(includedir)
+	echo Installing pkgconfig files in $(BUILDROOT)$(libdir)/pkgconfig...
+	$(INSTALL_DIR) $(BUILDROOT)$(libdir)/pkgconfig
+	$(INSTALL_DATA) mxml.pc $(BUILDROOT)$(libdir)/pkgconfig
+	echo Installing man pages in $(BUILDROOT)$(mandir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1
+	$(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.1
+	$(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3
+	$(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.3
+
+install-libmxml.a:
+	echo Installing libmxml.a to $(BUILDROOT)$(libdir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(libdir)
+	$(INSTALL_LIB) libmxml.a $(BUILDROOT)$(libdir)
+	$(RANLIB) $(BUILDROOT)$(libdir)/libmxml.a
+
+install-libmxml.so.1.5:
+	echo Installing libmxml.so to $(BUILDROOT)$(libdir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(libdir)
+	$(INSTALL_LIB) libmxml.so.1.5 $(BUILDROOT)$(libdir)
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.so
+	$(LN) libmxml.so.1.5 $(BUILDROOT)$(libdir)/libmxml.so
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1
+	$(LN) libmxml.so.1.5 $(BUILDROOT)$(libdir)/libmxml.so.1
+
+install-libmxml.sl.1:
+	echo Installing libmxml.sl to $(BUILDROOT)$(libdir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(libdir)
+	$(INSTALL_LIB) libmxml.sl.1 $(BUILDROOT)$(libdir)
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.so
+	$(LN) libmxml.sl.1 $(BUILDROOT)$(libdir)/libmxml.sl
+
+install-libmxml.1.dylib:
+	echo Installing libmxml.dylib to $(BUILDROOT)$(libdir)...
+	$(INSTALL_DIR) $(BUILDROOT)$(libdir)
+	$(INSTALL_LIB) libmxml.1.dylib $(BUILDROOT)$(libdir)
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.dylib
+	$(LN) libmxml.1.dylib $(BUILDROOT)$(libdir)/libmxml.dylib
+
+
+#
+# Uninstall everything...
+#
+
+uninstall: uninstall-$(LIBMXML) uninstall-libmxml.a
+	echo Uninstalling mxmldoc from $(BUILDROOT)$(bindir)...
+	$(RM) $(BUILDROOT)$(bindir)/mxmldoc
+	echo Uninstalling documentation from $(BUILDROOT)$(docdir)...
+	$(RM) -r $(BUILDROOT)$(docdir)
+	echo Uninstalling headers from $(BUILDROOT)$(includedir)...
+	$(RM) $(BUILDROOT)$(includedir)/mxml.h
+	echo Uninstalling pkgconfig files from $(BUILDROOT)$(libdir)/pkgconfig...
+	$(RM) $(BUILDROOT)$(libdir)/pkgconfig/mxml.pc
+	echo Uninstalling man pages from $(BUILDROOT)$(mandir)...
+	$(RM) $(BUILDROOT)$(mandir)/man1/mxmldoc.1
+	$(RM) $(BUILDROOT)$(mandir)/man3/mxml.3
+
+uninstall-libmxml.a:
+	echo Uninstalling libmxml.a from $(BUILDROOT)$(libdir)...
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.a
+
+uninstall-libmxml.so.1.5:
+	echo Uninstalling libmxml.so from $(BUILDROOT)$(libdir)...
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.so
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1.4
+
+uninstall-libmxml.sl.1:
+	echo Uninstalling libmxml.sl from $(BUILDROOT)$(libdir)...
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.sl
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.sl.1
+
+uninstall-libmxml.1.dylib:
+	echo Uninstalling libmxml.dylib from $(BUILDROOT)$(libdir)...
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.dylib
+	$(RM) $(BUILDROOT)$(libdir)/libmxml.1.dylib
+
+
+#
+# Make packages using EPM (http://www.epmhome.org/)
+#
+
+epm:	all
+	echo Creating distribution packages...
+	epm --output-dir dist -v -f native mxml
+	epm --output-dir dist -v -f portable mxml
+
+
+#
+# autoconf stuff...
+#
+
+Makefile:	configure Makefile.in
+	echo Updating makefile...
+	if test -f config.status; then \
+		./config.status --recheck; \
+		./config.status; \
+	else \
+		./configure; \
+	fi
+	touch config.h
+
+
+config.h:	configure config.h.in
+	echo Updating config.h...
+	autoconf
+	if test -f config.status; then \
+		./config.status --recheck; \
+		./config.status; \
+	else \
+		./configure; \
+	fi
+	touch config.h
+
+
+#
+# Figure out lines-of-code...
+#
+
+.PHONY: sloc
+
+sloc:
+	echo "libmxml: \c"
+	sloccount $(LIBOBJS:.o=.c) mxml-private.c mxml.h 2>/dev/null | \
+		grep "Total Physical" | awk '{print $$9}'
+
+
+#
+# libmxml.a
+#
+
+libmxml.a:	$(LIBOBJS)
+	echo Creating $@...
+	$(RM) $@
+	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
+	$(RANLIB) $@
+
+$(LIBOBJS):	mxml.h
+mxml-entity.o mxml-file.o mxml-private.o: mxml-private.h
+
+
+#
+# libmxml.so.1.5
+#
+
+libmxml.so.1.5:	$(LIBOBJS)
+	echo Creating $@...
+	$(DSO) $(DSOFLAGS) -o libmxml.so.1.5 $(LIBOBJS)
+	$(RM) libmxml.so libmxml.so.1
+	$(LN) libmxml.so.1.5 libmxml.so
+	$(LN) libmxml.so.1.5 libmxml.so.1
+
+
+#
+# libmxml.sl.1
+#
+
+libmxml.sl.1:	$(LIBOBJS)
+	echo Creating $@...
+	$(DSO) $(DSOFLAGS) -o libmxml.sl.1 $(LIBOBJS)
+	$(RM) libmxml.sl
+	$(LN) libmxml.sl.1 libmxml.sl
+
+
+#
+# libmxml.1.dylib
+#
+
+libmxml.1.dylib:	$(LIBOBJS)
+	echo Creating $@...
+	$(DSO) $(DSOFLAGS) -o libmxml.1.dylib \
+		-install_name $(libdir)/libmxml.dylib \
+		-current_version 1.5.0 \
+		-compatibility_version 1.0.0 \
+		$(LIBOBJS)
+	$(RM) libmxml.dylib
+	$(LN) libmxml.1.dylib libmxml.dylib
+
+
+#
+# mxmldoc
+#
+
+mxmldoc:	$(LIBMXML) mxmldoc.o
+	echo Linking $@...
+	$(CC) -L. $(LDFLAGS) -o $@ mxmldoc.o -lmxml $(LIBS)
+
+mxmldoc-static:	libmxml.a mxmldoc.o
+	echo Linking $@...
+	$(CC) $(LDFLAGS) -o $@ mxmldoc.o libmxml.a $(LIBS)
+
+mxmldoc.o:	mxml.h
+
+
+#
+# testmxml
+#
+
+testmxml:	libmxml.a testmxml.o
+	echo Linking $@...
+	$(CC) $(LDFLAGS) -o $@ testmxml.o libmxml.a $(LIBS)
+	@echo Testing library...
+	./testmxml test.xml temp1s.xml >temp1.xml
+	./testmxml temp1.xml temp2s.xml >temp2.xml
+	@if cmp temp1.xml temp2.xml; then \
+		echo Stdio file test passed!; \
+		$(RM) temp2.xml temp2s.xml; \
+	else \
+		echo Stdio file test failed!; \
+	fi
+	@if cmp temp1.xml temp1s.xml; then \
+		echo String test passed!; \
+		$(RM) temp1.xml temp1s.xml; \
+	else \
+		echo String test failed!; \
+	fi
+	@if cmp test.xml test.xmlfd; then \
+		echo File descriptor test passed!; \
+		$(RM) test.xmlfd; \
+	else \
+		echo File descriptor test failed!; \
+	fi
+
+testmxml-vg:	$(LIBOBJS) testmxml.o
+	echo Linking $@...
+	$(CC) $(LDFLAGS) -o $@ testmxml.o $(LIBOBJS) $(LIBS)
+
+testmxml.o:	mxml.h
+
+
+#
+# mxml.xml
+#
+
+mxml.xml:	mxmldoc-static mxml.h $(PUBLIBOBJS:.o=.c)
+	echo Generating API documentation...
+	$(RM) mxml.xml
+	./mxmldoc-static --header doc/reference.heading mxml.xml mxml.h $(PUBLIBOBJS:.o=.c) >doc/reference.html
+	if test "x`uname`" = xDarwin; then \
+		./mxmldoc-static --docset org.minixml.docset \
+			--docversion @VERSION@ --feedname minixml.org \
+			--feedurl http://www.minixml.org/org.minixml.atom \
+			--header doc/docset.header --intro doc/docset.intro \
+			--css doc/docset.css --title "Mini-XML API Reference" \
+			mxml.xml || exit 1; \
+		$(RM) org.minixml.atom; \
+		xcrun docsetutil package --output org.minixml.xar \
+			--atom org.minixml.atom \
+			--download-url http://www.minixml.org/org.minixml.xar \
+			org.minixml.docset || exit 1; \
+	fi
+
+valgrind:	mxmldoc-static
+	echo Doing dynamic code analysis using Valgrind...
+	$(RM) valgrind.xml
+	valgrind --tool=memcheck --leak-check=yes ./mxmldoc-static \
+		valgrind.xml mxml.h $(PUBLIBOBJS:.o=.c) \
+		>valgrind.html 2>valgrind.out
+
+
+#
+# doc/mxml.man
+#
+
+doc/mxml.man: mxmldoc-static mxml.xml
+	echo "Generating mxml(3) man page..."
+	$(RM) doc/mxml.man
+	./mxmldoc-static --man mxml --title "Mini-XML API" \
+		--intro doc/intro.man --footer doc/footer.man \
+		mxml.xml >doc/mxml.man
+
+
+#
+# All object files depend on the makefile...
+#
+
+$(OBJS):	Makefile config.h
+
+
+#
+# End of "$Id: Makefile.in 459 2014-10-19 17:21:48Z msweet $".
+#
diff --git a/src/mxml/mxml-2.9/README b/src/mxml/mxml-2.9/README
new file mode 100644
index 0000000..efc1fad
--- /dev/null
+++ b/src/mxml/mxml-2.9/README
@@ -0,0 +1,196 @@
+README - 2014-10-19
+-------------------
+
+
+INTRODUCTION
+
+    This README file describes the Mini-XML library version 2.9.
+
+    Mini-XML is a small XML parsing library that you can use to read XML and
+    XML-like data files in your application without requiring large non-standard
+    libraries.  Mini-XML only requires an ANSI C compatible compiler (GCC works,
+    as do most vendors' ANSI C compilers) and a "make" program.
+
+    Mini-XML provides the following functionality:
+
+	- Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and
+	  strings.
+	- Data is stored in a linked-list tree structure, preserving the XML
+	  data hierarchy.
+	- Supports arbitrary element names, attributes, and attribute values
+	  with no preset limits, just available memory.
+	- Supports integer, real, opaque ("cdata"), and text data types in
+	  "leaf" nodes.
+	- Functions for creating and managing trees of data.
+	- "Find" and "walk" functions for easily locating and navigating trees
+	  of data.
+
+    Mini-XML doesn't do validation or other types of processing on the data
+    based upon schema files or other sources of definition information.
+
+
+BUILDING Mini-XML
+
+    Mini-XML comes with an autoconf-based configure script; just type the
+    following command to get things going:
+
+        ./configure
+
+    The default install prefix is /usr/local, which can be overridden using the
+    --prefix option:
+
+        ./configure --prefix=/foo
+
+    Other configure options can be found using the --help option:
+
+        ./configure --help
+
+    Once you have configured the software, type "make" to do the build and run
+    the test program to verify that things are working, as follows:
+
+        make
+
+    If you are using Mini-XML under Microsoft Windows with Visual C++, use the
+    included project files in the "vcnet" subdirectory to build the library
+    instead.
+
+
+INSTALLING Mini-XML
+
+    The "install" target will install Mini-XML in the lib and include
+    directories:
+
+        make install
+
+    Once you have installed it, use the "-lmxml" option to link your application
+    against it.
+
+
+DOCUMENTATION
+
+    The documentation is available in the "doc" subdirectory in the files
+    "mxml.html" (HTML) and "mxml.pdf" (PDF). You can also look at the
+    "testmxml.c" and "mxmldoc.c" source files for examples of using Mini-XML.
+
+    Mini-XML provides a single header file which you include:
+
+        #include <mxml.h>
+
+    Nodes are defined by the "mxml_node_t" structure; the "type" member defines
+    the node type (element, integer, opaque, real, or text) which determines
+    which value you want to look at in the "value" union.  New nodes can be
+    created using the "mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()",
+    "mxmlNewReal()", and "mxmlNewText()" functions.  Only elements can have
+    child nodes, and the top node must be an element, usually "?xml".
+
+    You load an XML file using the "mxmlLoadFile()" function:
+
+        FILE *fp;
+        mxml_node_t *tree;
+
+	fp = fopen("filename.xml", "r");
+	tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+	fclose(fp);
+
+    Similarly, you save an XML file using the "mxmlSaveFile()" function:
+
+        FILE *fp;
+        mxml_node_t *tree;
+
+	fp = fopen("filename.xml", "w");
+	mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+	fclose(fp);
+
+    The "mxmlLoadString()", "mxmlSaveAllocString()", and "mxmlSaveString()"
+    functions load XML node trees from and save XML node trees to strings:
+
+        char buffer[8192];
+	char *ptr;
+	mxml_node_t *tree;
+
+        ...
+	tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
+
+        ...
+        mxmlSaveString(tree, buffer, sizeof(buffer), MXML_NO_CALLBACK);
+
+        ...
+	ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+
+    You can find a named element/node using the "mxmlFindElement()" function:
+
+        mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr",
+	                                    "value", MXML_DESCEND);
+
+    The "name", "attr", and "value" arguments can be passed as NULL to act as
+    wildcards, e.g.:
+
+        /* Find the first "a" element */
+        node = mxmlFindElement(tree, tree, "a", NULL, NULL, MXML_DESCEND);
+
+        /* Find the first "a" element with "href" attribute */
+        node = mxmlFindElement(tree, tree, "a", "href", NULL, MXML_DESCEND);
+
+        /* Find the first "a" element with "href" to a URL */
+        node = mxmlFindElement(tree, tree, "a", "href",
+	                       "http://www.minixml.org/",
+			       MXML_DESCEND);
+
+        /* Find the first element with a "src" attribute*/
+        node = mxmlFindElement(tree, tree, NULL, "src", NULL, MXML_DESCEND);
+
+        /* Find the first element with a "src" = "foo.jpg" */
+        node = mxmlFindElement(tree, tree, NULL, "src", "foo.jpg",
+	                       MXML_DESCEND);
+
+    You can also iterate with the same function:
+
+        mxml_node_t *node;
+
+	for (node = mxmlFindElement(tree, tree, "name", NULL, NULL,
+	                            MXML_DESCEND);
+	     node != NULL;
+	     node = mxmlFindElement(node, tree, "name", NULL, NULL,
+	                            MXML_DESCEND))
+        {
+	  ... do something ...
+	}
+
+    The "mxmlFindPath()" function finds the (first) value node under a specific
+    element using a "path":
+
+        mxml_node_t *value = mxmlFindPath(tree, "path/to/*/foo/bar");
+
+    The "mxmlGetInteger()", "mxmlGetOpaque()", "mxmlGetReal()", and
+    "mxmlGetText()" functions retrieve the value from a node:
+
+        mxml_node_t *node;
+
+        int intvalue = mxmlGetInteger(node);
+
+        const char *opaquevalue = mxmlGetOpaque(node);
+
+        double realvalue = mxmlGetReal(node);
+
+        int whitespacevalue;
+        const char *textvalue = mxmlGetText(node, &whitespacevalue);
+
+    Finally, once you are done with the XML data, use the "mxmlDelete()"
+    function to recursively free the memory that is used for a particular node
+    or the entire tree:
+
+        mxmlDelete(tree);
+
+
+GETTING HELP AND REPORTING PROBLEMS
+
+    The Mini-XML project page provides access to a discussion forum and bug
+    reporting page:
+
+        http://www.msweet.org/projects.php/Mini-XML
+
+
+LEGAL STUFF
+
+    The Mini-XML library is Copyright 2003-2014 by Michael Sweet.  License terms
+    are described in the file "COPYING".
diff --git a/src/mxml/mxml-2.9/config.h.in b/src/mxml/mxml-2.9/config.h.in
new file mode 100644
index 0000000..a748a76
--- /dev/null
+++ b/src/mxml/mxml-2.9/config.h.in
@@ -0,0 +1,95 @@
+/*
+ * "$Id: config.h.in 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Configuration file for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <ctype.h>
+
+
+/*
+ * Version number...
+ */
+
+#define MXML_VERSION	""
+
+
+/*
+ * Inline function support...
+ */
+
+#define inline
+
+
+/*
+ * Long long support...
+ */
+
+#undef HAVE_LONG_LONG
+
+
+/*
+ * Do we have the snprintf() and vsnprintf() functions?
+ */
+
+#undef HAVE_SNPRINTF
+#undef HAVE_VSNPRINTF
+
+
+/*
+ * Do we have the strXXX() functions?
+ */
+
+#undef HAVE_STRDUP
+
+
+/*
+ * Do we have threading support?
+ */
+
+#undef HAVE_PTHREAD_H
+
+
+/*
+ * Define prototypes for string functions as needed...
+ */
+
+#  ifndef HAVE_STRDUP
+extern char	*_mxml_strdup(const char *);
+#    define strdup _mxml_strdup
+#  endif /* !HAVE_STRDUP */
+
+extern char	*_mxml_strdupf(const char *, ...);
+extern char	*_mxml_vstrdupf(const char *, va_list);
+
+#  ifndef HAVE_SNPRINTF
+extern int	_mxml_snprintf(char *, size_t, const char *, ...);
+#    define snprintf _mxml_snprintf
+#  endif /* !HAVE_SNPRINTF */
+
+#  ifndef HAVE_VSNPRINTF
+extern int	_mxml_vsnprintf(char *, size_t, const char *, va_list);
+#    define vsnprintf _mxml_vsnprintf
+#  endif /* !HAVE_VSNPRINTF */
+
+/*
+ * End of "$Id: config.h.in 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/configure b/src/mxml/mxml-2.9/configure
new file mode 100755
index 0000000..81a4d5e
--- /dev/null
+++ b/src/mxml/mxml-2.9/configure
@@ -0,0 +1,5742 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="mxml.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+PC_LIBS
+PC_CFLAGS
+PICFLAG
+LIBMXML
+DSOFLAGS
+DSO
+PTHREAD_LIBS
+PTHREAD_FLAGS
+EGREP
+GREP
+CPP
+ARFLAGS
+RM
+MKDIR
+LN
+CP
+AR
+RANLIB
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+CFLAGS
+CC
+ARCHFLAGS
+OPTIM
+LDFLAGS
+VERSION
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_ansi
+with_archflags
+enable_debug
+with_docdir
+with_vsnprintf
+enable_threads
+enable_shared
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+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 this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-debug          turn on debugging, default=no
+  --enable-threads        enable multi-threading support
+  --enable-shared         turn on shared libraries, default=no
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-ansi             set full ANSI C mode, default=no
+  --with-archflags        set additional architecture flags, default=none
+  --with-docdir           set directory for documentation, default=${prefix}/share/doc/mxml
+  --with-vsnprintf        use vsnprintf emulation functions, default=auto
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+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 $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+VERSION=2.9
+
+cat >>confdefs.h <<_ACEOF
+#define MXML_VERSION "Mini-XML v$VERSION"
+_ACEOF
+
+
+CFLAGS="${CFLAGS:=}"
+CXXFLAGS="${CXXFLAGS:=}"
+LDFLAGS="${LDFLAGS:=}"
+
+OPTIM=""
+
+
+
+# Check whether --with-ansi was given.
+if test "${with_ansi+set}" = set; then :
+  withval=$with_ansi; use_ansi="$withval"
+else
+  use_ansi="no"
+fi
+
+
+
+# Check whether --with-archflags was given.
+if test "${with_archflags+set}" = set; then :
+  withval=$with_archflags; ARCHFLAGS="$withval"
+else
+  ARCHFLAGS=""
+fi
+
+
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug; if eval "test x$enable_debug = xyes"; then
+ 	OPTIM="-g"
+fi
+fi
+
+
+
+# Check whether --with-docdir was given.
+if test "${with_docdir+set}" = set; then :
+  withval=$with_docdir; docdir="$withval"
+else
+  docdir="NONE"
+fi
+
+
+
+
+
+# Check whether --with-vsnprintf was given.
+if test "${with_vsnprintf+set}" = set; then :
+  withval=$with_vsnprintf; use_vsnprintf="$withval"
+else
+  use_vsnprintf="no"
+fi
+
+
+uname=`uname`
+uversion=`uname -r | sed -e '1,$s/[^0-9]//g'`
+if test x$uname = xIRIX64; then
+	uname="IRIX"
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+if test "$INSTALL" = "$ac_install_sh"; then
+	# Use full path to install-sh script...
+	INSTALL="`pwd`/install-sh -c"
+fi
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+# Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $AR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_AR="$AR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+AR=$ac_cv_path_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "cp", so it can be a program name with args.
+set dummy cp; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CP="$CP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CP=$ac_cv_path_CP
+if test -n "$CP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5
+$as_echo "$CP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "ln", so it can be a program name with args.
+set dummy ln; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $LN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_LN="$LN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+LN=$ac_cv_path_LN
+if test -n "$LN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5
+$as_echo "$LN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "mkdir", so it can be a program name with args.
+set dummy mkdir; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKDIR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MKDIR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MKDIR=$ac_cv_path_MKDIR
+if test -n "$MKDIR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5
+$as_echo "$MKDIR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "rm", so it can be a program name with args.
+set dummy rm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $RM in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RM="$RM" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+RM=$ac_cv_path_RM
+if test -n "$RM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+case "$uname" in
+        Darwin* | *BSD*)
+                ARFLAGS="-rcv"
+                ;;
+        *)
+                ARFLAGS="crvs"
+                ;;
+esac
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+if test "x$use_ansi" != xyes; then
+	for ac_func in strdup
+do :
+  ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRDUP 1
+_ACEOF
+
+fi
+done
+
+fi
+
+if test "x$use_vsnprintf" != xyes; then
+	for ac_func in snprintf vsnprintf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_c_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$GCC" = yes; then
+		ac_cv_c_long_long=yes
+	else
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+long long int i;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_long_long=yes
+else
+  ac_cv_c_long_long=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_long_long" >&5
+$as_echo "$ac_cv_c_long_long" >&6; }
+
+if test $ac_cv_c_long_long = yes; then
+	$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then :
+  enableval=$enable_threads;
+fi
+
+
+have_pthread=no
+PTHREAD_FLAGS=""
+PTHREAD_LIBS=""
+
+if test "x$enable_threads" != xno; then
+	ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+  $as_echo "#define HAVE_PTHREAD_H 1" >>confdefs.h
+
+fi
+
+
+
+	if test x$ac_cv_header_pthread_h = xyes; then
+				for flag in -lpthreads -lpthread -pthread; do
+        		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create using $flag" >&5
+$as_echo_n "checking for pthread_create using $flag... " >&6; }
+			SAVELIBS="$LIBS"
+			LIBS="$flag $LIBS"
+        		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+pthread_create(0, 0, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  have_pthread=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_pthread" >&5
+$as_echo "$have_pthread" >&6; }
+			LIBS="$SAVELIBS"
+
+			if test $have_pthread = yes; then
+				PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT"
+				PTHREAD_LIBS="$flag"
+
+				# Solaris requires -D_POSIX_PTHREAD_SEMANTICS to
+				# be POSIX-compliant... :(
+				if test $uname = SunOS; then
+					PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS"
+				fi
+				break
+			fi
+		done
+	fi
+fi
+
+
+
+
+DSO="${DSO:=:}"
+DSOFLAGS="${DSOFLAGS:=}"
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared;
+fi
+
+
+if test x$enable_shared != xno; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library support" >&5
+$as_echo_n "checking for shared library support... " >&6; }
+	PICFLAG=1
+
+	case "$uname" in
+		SunOS* | UNIX_S*)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)"
+			LDFLAGS="$LDFLAGS -R\$(libdir)"
+                	;;
+
+		HP-UX*)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			LIBMXML="libmxml.sl.1"
+			DSO="ld"
+			DSOFLAGS="$DSOFLAGS -b -z +h libmxml.sl.1 +s +b \$(libdir)"
+			LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)"
+			;;
+
+		IRIX)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)"
+			;;
+
+		OSF1* | Linux | GNU)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)"
+                        LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)"
+			;;
+
+		*BSD*)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)"
+			LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)"
+                        ;;
+
+		Darwin*)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			LIBMXML="libmxml.1.dylib"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS \$(RC_CFLAGS) -dynamiclib -lc"
+			;;
+
+		*)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: shared libraries not supported on this platform." >&5
+$as_echo "$as_me: WARNING: shared libraries not supported on this platform." >&2;}
+			PICFLAG=0
+			LIBMXML="libmxml.a"
+			;;
+	esac
+else
+	PICFLAG=0
+	LIBMXML="libmxml.a"
+fi
+
+
+
+
+
+
+if test -n "$GCC"; then
+	CFLAGS="-Wall $CFLAGS"
+
+	if test "x$OPTIM" = x; then
+		OPTIM="-Os -g"
+	fi
+
+	if test "x$use_ansi" = xyes; then
+		CFLAGS="-ansi -pedantic $CFLAGS"
+	fi
+
+	if test $PICFLAG = 1 -a $uname != AIX; then
+    		OPTIM="-fPIC $OPTIM"
+	fi
+else
+	case $uname in
+		HP-UX*)
+			CFLAGS="-Ae $CFLAGS"
+
+			if test "x$OPTIM" = x; then
+				OPTIM="-O"
+			fi
+
+			OPTIM="+DAportable $OPTIM"
+
+			if test $PICFLAG = 1; then
+				OPTIM="+z $OPTIM"
+			fi
+			;;
+
+		UNIX_SVR* | SunOS*)
+			if test "x$OPTIM" = x; then
+				OPTIM="-O"
+			fi
+
+			if test $PICFLAG = 1; then
+				OPTIM="-KPIC $OPTIM"
+			fi
+			;;
+
+		*)
+			if test "x$OPTIM" = x; then
+				OPTIM="-O"
+			fi
+			;;
+	esac
+fi
+
+if test "$prefix" = "NONE"; then
+	prefix="/usr/local"
+fi
+
+if test "$exec_prefix" = "NONE"; then
+	exec_prefix="$prefix"
+fi
+
+if test "$docdir" = "NONE"; then
+	docdir="$datadir/doc/mxml"
+fi
+
+if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
+	case "$uname" in
+        	*BSD* | Darwin* | Linux*)
+        		# BSD, Darwin (MacOS X), and Linux
+        		mandir="/usr/share/man"
+        		;;
+        	IRIX*)
+        		# SGI IRIX
+        		mandir="/usr/share/catman/u_man"
+        		;;
+        	*)
+        		# All others
+        		mandir="/usr/man"
+        		;;
+	esac
+fi
+
+if test "$includedir" != /usr/include; then
+	PC_CFLAGS="-I$includedir"
+else
+	PC_CFLAGS=""
+fi
+
+if test "$libdir" != /usr/lib; then
+	PC_LIBS="-L$libdir -lmxml"
+else
+	PC_LIBS="-lmxml"
+fi
+
+
+
+
+ac_config_files="$ac_config_files Makefile mxml.list mxml.pc"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "mxml.list") CONFIG_FILES="$CONFIG_FILES mxml.list" ;;
+    "mxml.pc") CONFIG_FILES="$CONFIG_FILES mxml.pc" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+ ;;
+
+
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
diff --git a/src/mxml/mxml-2.9/configure.in b/src/mxml/mxml-2.9/configure.in
new file mode 100644
index 0000000..de1bf8b
--- /dev/null
+++ b/src/mxml/mxml-2.9/configure.in
@@ -0,0 +1,338 @@
+dnl
+dnl "$Id: configure.in 459 2014-10-19 17:21:48Z msweet $"
+dnl
+dnl Configuration script for Mini-XML, a small XML-like file parsing library.
+dnl
+dnl Copyright 2003-2014 by Michael R Sweet.
+dnl
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Michael R Sweet and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "COPYING"
+dnl which should have been included with this file.  If this file is
+dnl missing or damaged, see the license at:
+dnl
+dnl     http://www.msweet.org/projects.php/Mini-XML
+dnl
+
+dnl Specify a source file from the distribution...
+AC_INIT(mxml.h)
+
+dnl Set the name of the config header file...
+AC_CONFIG_HEADER(config.h)
+
+dnl Version number...
+VERSION=2.9
+AC_SUBST(VERSION)
+AC_DEFINE_UNQUOTED(MXML_VERSION, "Mini-XML v$VERSION")
+
+dnl Clear default debugging options and set normal optimization by
+dnl default unless the user asks for debugging specifically.
+CFLAGS="${CFLAGS:=}"
+CXXFLAGS="${CXXFLAGS:=}"
+LDFLAGS="${LDFLAGS:=}"
+AC_SUBST(LDFLAGS)
+OPTIM=""
+AC_SUBST(OPTIM)
+
+AC_ARG_WITH(ansi, [  --with-ansi             set full ANSI C mode, default=no],
+	use_ansi="$withval",
+	use_ansi="no")
+
+AC_ARG_WITH(archflags, [  --with-archflags        set additional architecture flags, default=none],
+	ARCHFLAGS="$withval",
+	ARCHFLAGS="")
+AC_SUBST(ARCHFLAGS)
+
+AC_ARG_ENABLE(debug, [  --enable-debug          turn on debugging, default=no],
+if eval "test x$enable_debug = xyes"; then
+ 	OPTIM="-g"
+fi)
+
+AC_ARG_WITH(docdir, [  --with-docdir           set directory for documentation, default=${prefix}/share/doc/mxml],
+	docdir="$withval",
+	docdir="NONE")
+
+AC_SUBST(docdir)
+
+AC_ARG_WITH(vsnprintf, [  --with-vsnprintf        use vsnprintf emulation functions, default=auto],
+	use_vsnprintf="$withval",
+	use_vsnprintf="no")
+
+dnl Get the operating system and version number...
+uname=`uname`
+uversion=`uname -r | sed -e '1,$s/[[^0-9]]//g'`
+if test x$uname = xIRIX64; then
+	uname="IRIX"
+fi
+
+dnl Checks for programs...
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_INSTALL
+if test "$INSTALL" = "$ac_install_sh"; then
+	# Use full path to install-sh script...
+	INSTALL="`pwd`/install-sh -c"
+fi
+AC_PROG_RANLIB
+AC_PATH_PROG(AR,ar)
+AC_PATH_PROG(CP,cp)
+AC_PATH_PROG(LN,ln)
+AC_PATH_PROG(MKDIR,mkdir)
+AC_PATH_PROG(RM,rm)
+
+dnl Flags for "ar" command...
+case "$uname" in
+        Darwin* | *BSD*)
+                ARFLAGS="-rcv"
+                ;;
+        *)
+                ARFLAGS="crvs"
+                ;;
+esac
+
+AC_SUBST(ARFLAGS)
+
+dnl Inline functions...
+AC_C_INLINE
+
+dnl Checks for string functions.
+if test "x$use_ansi" != xyes; then
+	AC_CHECK_FUNCS(strdup)
+fi
+
+if test "x$use_vsnprintf" != xyes; then
+	AC_CHECK_FUNCS(snprintf vsnprintf)
+fi
+
+dnl Check for "long long" support...
+AC_CACHE_CHECK(for long long int, ac_cv_c_long_long,
+	[if test "$GCC" = yes; then
+		ac_cv_c_long_long=yes
+	else
+		AC_TRY_COMPILE(,[long long int i;],
+			ac_cv_c_long_long=yes,
+			ac_cv_c_long_long=no)
+	fi])
+
+if test $ac_cv_c_long_long = yes; then
+	AC_DEFINE(HAVE_LONG_LONG)
+fi
+
+dnl Threading support
+AC_ARG_ENABLE(threads, [  --enable-threads        enable multi-threading support])
+
+have_pthread=no
+PTHREAD_FLAGS=""
+PTHREAD_LIBS=""
+
+if test "x$enable_threads" != xno; then
+	AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H))
+
+	if test x$ac_cv_header_pthread_h = xyes; then
+		dnl Check various threading options for the platforms we support
+		for flag in -lpthreads -lpthread -pthread; do
+        		AC_MSG_CHECKING([for pthread_create using $flag])
+			SAVELIBS="$LIBS"
+			LIBS="$flag $LIBS"
+        		AC_TRY_LINK([#include <pthread.h>],
+				[pthread_create(0, 0, 0, 0);],
+        			have_pthread=yes)
+        		AC_MSG_RESULT([$have_pthread])
+			LIBS="$SAVELIBS"
+
+			if test $have_pthread = yes; then
+				PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT"
+				PTHREAD_LIBS="$flag"
+
+				# Solaris requires -D_POSIX_PTHREAD_SEMANTICS to
+				# be POSIX-compliant... :(
+				if test $uname = SunOS; then
+					PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS"
+				fi
+				break
+			fi
+		done
+	fi
+fi
+
+AC_SUBST(PTHREAD_FLAGS)
+AC_SUBST(PTHREAD_LIBS)
+
+dnl Shared library support...
+DSO="${DSO:=:}"
+DSOFLAGS="${DSOFLAGS:=}"
+
+AC_ARG_ENABLE(shared, [  --enable-shared         turn on shared libraries, default=no])
+
+if test x$enable_shared != xno; then
+	AC_MSG_CHECKING(for shared library support)
+	PICFLAG=1
+
+	case "$uname" in
+		SunOS* | UNIX_S*)
+			AC_MSG_RESULT(yes)
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)"
+			LDFLAGS="$LDFLAGS -R\$(libdir)"
+                	;;
+
+		HP-UX*)
+			AC_MSG_RESULT(yes)
+			LIBMXML="libmxml.sl.1"
+			DSO="ld"
+			DSOFLAGS="$DSOFLAGS -b -z +h libmxml.sl.1 +s +b \$(libdir)"
+			LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)"
+			;;
+
+		IRIX)
+			AC_MSG_RESULT(yes)
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)"
+			;;
+
+		OSF1* | Linux | GNU)
+			AC_MSG_RESULT(yes)
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)"
+                        LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)"
+			;;
+
+		*BSD*)
+			AC_MSG_RESULT(yes)
+			LIBMXML="libmxml.so.1.5"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)"
+			LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)"
+                        ;;
+
+		Darwin*)
+			AC_MSG_RESULT(yes)
+			LIBMXML="libmxml.1.dylib"
+			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS \$(RC_CFLAGS) -dynamiclib -lc"
+			;;
+
+		*)
+			AC_MSG_RESULT(no)
+			AC_MSG_WARN(shared libraries not supported on this platform.)
+			PICFLAG=0
+			LIBMXML="libmxml.a"
+			;;
+	esac
+else
+	PICFLAG=0
+	LIBMXML="libmxml.a"
+fi
+
+AC_SUBST(DSO)
+AC_SUBST(DSOFLAGS)
+AC_SUBST(LIBMXML)
+AC_SUBST(PICFLAG)
+
+dnl Add -Wall for GCC...
+if test -n "$GCC"; then
+	CFLAGS="-Wall $CFLAGS"
+
+	if test "x$OPTIM" = x; then
+		OPTIM="-Os -g"
+	fi
+
+	if test "x$use_ansi" = xyes; then
+		CFLAGS="-ansi -pedantic $CFLAGS"
+	fi
+
+	if test $PICFLAG = 1 -a $uname != AIX; then
+    		OPTIM="-fPIC $OPTIM"
+	fi
+else
+	case $uname in
+		HP-UX*)
+			CFLAGS="-Ae $CFLAGS"
+
+			if test "x$OPTIM" = x; then
+				OPTIM="-O"
+			fi
+
+			OPTIM="+DAportable $OPTIM"
+
+			if test $PICFLAG = 1; then
+				OPTIM="+z $OPTIM"
+			fi
+			;;
+
+		UNIX_SVR* | SunOS*)
+			if test "x$OPTIM" = x; then
+				OPTIM="-O"
+			fi
+
+			if test $PICFLAG = 1; then
+				OPTIM="-KPIC $OPTIM"
+			fi
+			;;
+
+		*)
+			if test "x$OPTIM" = x; then
+				OPTIM="-O"
+			fi
+			;;
+	esac
+fi
+
+dnl Fix "prefix" variable if it hasn't been specified...
+if test "$prefix" = "NONE"; then
+	prefix="/usr/local"
+fi
+
+dnl Fix "exec_prefix" variable if it hasn't been specified...
+if test "$exec_prefix" = "NONE"; then
+	exec_prefix="$prefix"
+fi
+
+dnl Fix "docdir" variable if it hasn't been specified...
+if test "$docdir" = "NONE"; then
+	docdir="$datadir/doc/mxml"
+fi
+
+dnl Fix "mandir" variable if it hasn't been specified...
+if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
+	case "$uname" in
+        	*BSD* | Darwin* | Linux*)
+        		# BSD, Darwin (MacOS X), and Linux
+        		mandir="/usr/share/man"
+        		;;
+        	IRIX*)
+        		# SGI IRIX
+        		mandir="/usr/share/catman/u_man"
+        		;;
+        	*)
+        		# All others
+        		mandir="/usr/man"
+        		;;
+	esac
+fi
+
+dnl pkg-config stuff...
+if test "$includedir" != /usr/include; then
+	PC_CFLAGS="-I$includedir"
+else
+	PC_CFLAGS=""
+fi
+
+if test "$libdir" != /usr/lib; then
+	PC_LIBS="-L$libdir -lmxml"
+else
+	PC_LIBS="-lmxml"
+fi
+
+AC_SUBST(PC_CFLAGS)
+AC_SUBST(PC_LIBS)
+
+dnl Output the makefile, etc...
+AC_OUTPUT(Makefile mxml.list mxml.pc)
+
+dnl
+dnl End of "$Id: configure.in 459 2014-10-19 17:21:48Z msweet $".
+dnl
diff --git a/src/mxml/mxml-2.9/doc/0.gif b/src/mxml/mxml-2.9/doc/0.gif
new file mode 100644
index 0000000..d5e883c
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/0.gif differ
diff --git a/src/mxml/mxml-2.9/doc/1.gif b/src/mxml/mxml-2.9/doc/1.gif
new file mode 100644
index 0000000..316ff7c
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/1.gif differ
diff --git a/src/mxml/mxml-2.9/doc/2.gif b/src/mxml/mxml-2.9/doc/2.gif
new file mode 100644
index 0000000..ebc1e75
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/2.gif differ
diff --git a/src/mxml/mxml-2.9/doc/3.gif b/src/mxml/mxml-2.9/doc/3.gif
new file mode 100644
index 0000000..2b3ac7b
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/3.gif differ
diff --git a/src/mxml/mxml-2.9/doc/4.gif b/src/mxml/mxml-2.9/doc/4.gif
new file mode 100644
index 0000000..bd145f2
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/4.gif differ
diff --git a/src/mxml/mxml-2.9/doc/5.gif b/src/mxml/mxml-2.9/doc/5.gif
new file mode 100644
index 0000000..fbbb5fb
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/5.gif differ
diff --git a/src/mxml/mxml-2.9/doc/6.gif b/src/mxml/mxml-2.9/doc/6.gif
new file mode 100644
index 0000000..a4a57a8
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/6.gif differ
diff --git a/src/mxml/mxml-2.9/doc/7.gif b/src/mxml/mxml-2.9/doc/7.gif
new file mode 100644
index 0000000..80d675f
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/7.gif differ
diff --git a/src/mxml/mxml-2.9/doc/8.gif b/src/mxml/mxml-2.9/doc/8.gif
new file mode 100644
index 0000000..58605dd
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/8.gif differ
diff --git a/src/mxml/mxml-2.9/doc/9.gif b/src/mxml/mxml-2.9/doc/9.gif
new file mode 100644
index 0000000..07388f3
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/9.gif differ
diff --git a/src/mxml/mxml-2.9/doc/A.gif b/src/mxml/mxml-2.9/doc/A.gif
new file mode 100644
index 0000000..7f2a147
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/A.gif differ
diff --git a/src/mxml/mxml-2.9/doc/B.gif b/src/mxml/mxml-2.9/doc/B.gif
new file mode 100644
index 0000000..54f81f4
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/B.gif differ
diff --git a/src/mxml/mxml-2.9/doc/C.gif b/src/mxml/mxml-2.9/doc/C.gif
new file mode 100644
index 0000000..891e7fe
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/C.gif differ
diff --git a/src/mxml/mxml-2.9/doc/D.gif b/src/mxml/mxml-2.9/doc/D.gif
new file mode 100644
index 0000000..dd8f829
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/D.gif differ
diff --git a/src/mxml/mxml-2.9/doc/E.gif b/src/mxml/mxml-2.9/doc/E.gif
new file mode 100644
index 0000000..6b164c0
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/E.gif differ
diff --git a/src/mxml/mxml-2.9/doc/F.gif b/src/mxml/mxml-2.9/doc/F.gif
new file mode 100644
index 0000000..88961f0
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/F.gif differ
diff --git a/src/mxml/mxml-2.9/doc/advanced.html b/src/mxml/mxml-2.9/doc/advanced.html
new file mode 100644
index 0000000..67fcbb8
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/advanced.html
@@ -0,0 +1,634 @@
+<html>
+<body>
+
+<h1 align='right'><a name='ADVANCED'><img src="3.gif" align="right"
+hspace="10" width="100" height="100" alt="3"></a>More Mini-XML
+Programming Techniques</h1>
+
+<p>This chapter shows additional ways to use the Mini-XML
+library in your programs.</p>
+
+<h2><a name='LOAD_CALLBACKS'>Load Callbacks</a></h2>
+
+<p><a href='#LOAD_XML'>Chapter 2</a> introduced the <a
+href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a> and <a
+href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a> functions.
+The last argument to these functions is a callback function
+which is used to determine the value type of each data node in
+an XML document.</p>
+
+<p>Mini-XML defines several standard callbacks for simple
+XML data files:</p>
+
+<ul>
+
+        <li><tt>MXML_INTEGER_CALLBACK</tt> - All data nodes
+        contain whitespace-separated integers.</li>
+
+        <li><tt>MXML_OPAQUE_CALLBACK</tt> - All data nodes
+        contain opaque strings ("CDATA").</li>
+
+	<li><tt>MXML_REAL_CALLBACK</tt> - All data nodes contain
+	whitespace-separated floating-point numbers.</li>
+
+	<li><tt>MXML_TEXT_CALLBACK</tt> - All data nodes contain
+	whitespace-separated strings.</li>
+
+</ul>
+
+<p>You can provide your own callback functions for more complex
+XML documents. Your callback function will receive a pointer to
+the current element node and must return the value type of the
+immediate children for that element node: <tt>MXML_INTEGER</tt>,
+<tt>MXML_OPAQUE</tt>, <tt>MXML_REAL</tt>, or <tt>MXML_TEXT</tt>.
+The function is called <i>after</i> the element and its
+attributes have been read, so you can look at the element name,
+attributes, and attribute values to determine the proper value
+type to return.</p>
+
+<!-- NEED 2in -->
+<p>The following callback function looks for an attribute named
+"type" or the element name to determine the value type for its
+child nodes:</p>
+
+<pre>
+    mxml_type_t
+    type_cb(mxml_node_t *node)
+    {
+      const char *type;
+
+     /*
+      * You can lookup attributes and/or use the
+      * element name, hierarchy, etc...
+      */
+
+      type = mxmlElementGetAttr(node, "type");
+      if (type == NULL)
+	type = mxmlGetElement(node);
+
+      if (!strcmp(type, "integer"))
+	return (MXML_INTEGER);
+      else if (!strcmp(type, "opaque"))
+	return (MXML_OPAQUE);
+      else if (!strcmp(type, "real"))
+	return (MXML_REAL);
+      else
+	return (MXML_TEXT);
+    }
+</pre>
+
+<p>To use this callback function, simply use the name when you
+call any of the load functions:</p>
+
+<pre>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "r");
+    tree = mxmlLoadFile(NULL, fp, <b>type_cb</b>);
+    fclose(fp);
+</pre>
+
+
+<h2><a name='SAVE_CALLBACKS'>Save Callbacks</a></h2>
+
+<p><a href='#LOAD_XML'>Chapter 2</a> also introduced the <a
+href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a>, <a
+href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a>, and <a
+href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString()</tt></a>
+functions. The last argument to these functions is a callback
+function which is used to automatically insert whitespace in an
+XML document.</p>
+
+<p>Your callback function will be called up to four times for
+each element node with a pointer to the node and a "where" value
+of <tt>MXML_WS_BEFORE_OPEN</tt>, <tt>MXML_WS_AFTER_OPEN</tt>,
+<tt>MXML_WS_BEFORE_CLOSE</tt>, or <tt>MXML_WS_AFTER_CLOSE</tt>.
+The callback function should return <tt>NULL</tt> if no
+whitespace should be added and the string to insert (spaces,
+tabs, carriage returns, and newlines) otherwise.</p>
+
+<p>The following whitespace callback can be used to add
+whitespace to XHTML output to make it more readable in a standard
+text editor:</p>
+
+<pre>
+    const char *
+    whitespace_cb(mxml_node_t *node,
+                  int where)
+    {
+      const char *name;
+
+     /*
+      * We can conditionally break to a new line
+      * before or after any element. These are
+      * just common HTML elements...
+      */
+
+      name = mxmlGetElement(node);
+
+      if (!strcmp(name, "html") ||
+          !strcmp(name, "head") ||
+          !strcmp(name, "body") ||
+	  !strcmp(name, "pre") ||
+          !strcmp(name, "p") ||
+	  !strcmp(name, "h1") ||
+          !strcmp(name, "h2") ||
+          !strcmp(name, "h3") ||
+	  !strcmp(name, "h4") ||
+          !strcmp(name, "h5") ||
+          !strcmp(name, "h6"))
+      {
+       /*
+	* Newlines before open and after
+        * close...
+	*/
+
+	if (where == MXML_WS_BEFORE_OPEN ||
+            where == MXML_WS_AFTER_CLOSE)
+	  return ("\n");
+      }
+      else if (!strcmp(name, "dl") ||
+               !strcmp(name, "ol") ||
+               !strcmp(name, "ul"))
+      {
+       /*
+	* Put a newline before and after list
+        * elements...
+	*/
+
+	return ("\n");
+      }
+      else if (!strcmp(name, "dd") ||
+               !strcmp(name, "dt") ||
+               !strcmp(name, "li"))
+      {
+       /*
+	* Put a tab before <li>'s, * <dd>'s,
+        * and <dt>'s, and a newline after them...
+	*/
+
+	if (where == MXML_WS_BEFORE_OPEN)
+	  return ("\t");
+	else if (where == MXML_WS_AFTER_CLOSE)
+	  return ("\n");
+      }
+
+     /*
+      * Return NULL for no added whitespace...
+      */
+
+      return (NULL);
+    }
+</pre>
+
+<p>To use this callback function, simply use the name when you
+call any of the save functions:</p>
+
+<pre>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "w");
+    mxmlSaveFile(tree, fp, <b>whitespace_cb</b>);
+    fclose(fp);
+</pre>
+
+
+<!-- NEED 10 -->
+<h2>Custom Data Types</h2>
+
+<p>Mini-XML supports custom data types via global load and save
+callbacks. Only a single set of callbacks can be active at any
+time, however your callbacks can store additional information in
+order to support multiple custom data types as needed. The
+<tt>MXML_CUSTOM</tt> node type identifies custom data nodes.</p>
+
+<p>The load callback receives a pointer to the current data node
+and a string of opaque character data from the XML source with
+character entities converted to the corresponding UTF-8
+characters. For example, if we wanted to support a custom
+date/time type whose value is encoded as "yyyy-mm-ddThh:mm:ssZ"
+(ISO format), the load callback would look like the
+following:</p>
+
+<pre>
+    typedef struct
+    {
+      unsigned      year,    /* Year */
+                    month,   /* Month */
+                    day,     /* Day */
+                    hour,    /* Hour */
+                    minute,  /* Minute */
+                    second;  /* Second */
+      time_t        unix;    /* UNIX time */
+    } iso_date_time_t;
+
+    int
+    load_custom(mxml_node_t *node,
+                const char *data)
+    {
+      iso_date_time_t *dt;
+      struct tm tmdata;
+
+     /*
+      * Allocate data structure...
+      */
+
+      dt = calloc(1, sizeof(iso_date_time_t));
+
+     /*
+      * Try reading 6 unsigned integers from the
+      * data string...
+      */
+
+      if (sscanf(data, "%u-%u-%uT%u:%u:%uZ",
+                 &(dt->year), &(dt->month),
+                 &(dt->day), &(dt->hour),
+                 &(dt->minute),
+                 &(dt->second)) != 6)
+      {
+       /*
+        * Unable to read numbers, free the data
+        * structure and return an error...
+        */
+
+        free(dt);
+
+        return (-1);
+      }
+
+     /*
+      * Range check values...
+      */
+
+      if (dt->month < 1 || dt->month > 12 ||
+          dt->day < 1 || dt->day > 31 ||
+          dt->hour < 0 || dt->hour > 23 ||
+          dt->minute < 0 || dt->minute > 59 ||
+          dt->second < 0 || dt->second > 59)
+      {
+       /*
+        * Date information is out of range...
+        */
+
+        free(dt);
+
+        return (-1);
+      }
+
+     /*
+      * Convert ISO time to UNIX time in
+      * seconds...
+      */
+
+      tmdata.tm_year = dt->year - 1900;
+      tmdata.tm_mon  = dt->month - 1;
+      tmdata.tm_day  = dt->day;
+      tmdata.tm_hour = dt->hour;
+      tmdata.tm_min  = dt->minute;
+      tmdata.tm_sec  = dt->second;
+
+      dt->unix = gmtime(&tmdata);
+
+     /*
+      * Assign custom node data and destroy
+      * function pointers...
+      */
+
+      mxmlSetCustom(node, data, destroy);
+
+     /*
+      * Return with no errors...
+      */
+
+      return (0);
+    }
+</pre>
+
+<p>The function itself can return 0 on success or -1 if it is
+unable to decode the custom data or the data contains an error.
+Custom data nodes contain a <tt>void</tt> pointer to the
+allocated custom data for the node and a pointer to a destructor
+function which will free the custom data when the node is
+deleted.</p>
+
+<!-- NEED 15 -->
+<p>The save callback receives the node pointer and returns an
+allocated string containing the custom data value. The following
+save callback could be used for our ISO date/time type:</p>
+
+<pre>
+    char *
+    save_custom(mxml_node_t *node)
+    {
+      char data[255];
+      iso_date_time_t *dt;
+
+
+      dt = (iso_date_time_t *)mxmlGetCustom(node);
+
+      snprintf(data, sizeof(data),
+               "%04u-%02u-%02uT%02u:%02u:%02uZ",
+               dt->year, dt->month, dt->day,
+               dt->hour, dt->minute, dt->second);
+
+      return (strdup(data));
+    }
+</pre>
+
+<p>You register the callback functions using the <a
+href='#mxmlSetCustomHandlers'><tt>mxmlSetCustomHandlers()</tt></a>
+function:</p>
+
+<pre>
+    mxmlSetCustomHandlers(<b>load_custom</b>,
+                          <b>save_custom</b>);
+</pre>
+
+
+<!-- NEED 20 -->
+<h2>Changing Node Values</h2>
+
+<p>All of the examples so far have concentrated on creating and
+loading new XML data nodes. Many applications, however, need to
+manipulate or change the nodes during their operation, so
+Mini-XML provides functions to change node values safely and
+without leaking memory.</p>
+
+<p>Existing nodes can be changed using the <a
+href='#mxmlSetElement'><tt>mxmlSetElement()</tt></a>, <a
+href='#mxmlSetInteger'><tt>mxmlSetInteger()</tt></a>, <a
+href='#mxmlSetOpaque'><tt>mxmlSetOpaque()</tt></a>, <a
+href='#mxmlSetReal'><tt>mxmlSetReal()</tt></a>, <a
+href='#mxmlSetText'><tt>mxmlSetText()</tt></a>, and <a
+href='#mxmlSetTextf'><tt>mxmlSetTextf()</tt></a> functions. For
+example, use the following function call to change a text node
+to contain the text "new" with leading whitespace:</p>
+
+<pre>
+    mxml_node_t *node;
+
+    mxmlSetText(node, 1, "new");
+</pre>
+
+
+<h2>Formatted Text</h2>
+
+<p>The <a href='#mxmlNewTextf'><tt>mxmlNewTextf()</tt></a> and <a
+href='#mxmlSetTextf'><tt>mxmlSetTextf()</tt></a> functions create
+and change text nodes, respectively, using <tt>printf</tt>-style
+format strings and arguments. For example, use the following
+function call to create a new text node containing a constructed
+filename:</p>
+
+<pre>
+    mxml_node_t</a> *node;
+
+    node = mxmlNewTextf(node, 1, "%s/%s",
+                        path, filename);
+</pre>
+
+
+<h2>Indexing</h2>
+
+<p>Mini-XML provides functions for managing indices of nodes.
+The current implementation provides the same functionality as
+<a href='#mxmlFindElement'><tt>mxmlFindElement()</tt></a>.
+The advantage of using an index is that searching and
+enumeration of elements is significantly faster. The only
+disadvantage is that each index is a static snapshot of the XML
+document, so indices are not well suited to XML data that is
+updated more often than it is searched. The overhead of creating
+an index is approximately equal to walking the XML document
+tree. Nodes in the index are sorted by element name and
+attribute value.</p>
+
+<p>Indices are stored in <a href='#mxml_index_t'><tt>mxml_index_t</tt></a>
+structures. The <a href='#mxmlIndexNew'><tt>mxmlIndexNew()</tt></a> function
+creates a new index:</p>
+
+<pre>
+    mxml_node_t *tree;
+    mxml_index_t *ind;
+
+    ind = mxmlIndexNew(tree, "element",
+                       "attribute");
+</pre>
+
+<p>The first argument is the XML node tree to index. Normally this
+will be a pointer to the <tt>?xml</tt> element.</p>
+
+<p>The second argument contains the element to index; passing
+<tt>NULL</tt> indexes all element nodes alphabetically.</p>
+
+<p>The third argument contains the attribute to index; passing
+<tt>NULL</tt> causes only the element name to be indexed.</p>
+
+<p>Once the index is created, the <a
+href='#mxmlIndexEnum'><tt>mxmlIndexEnum()</tt></a>,  <a
+href='#mxmlIndexFind'><tt>mxmlIndexFind()</tt></a>, and  <a
+href='#mxmlIndexReset'><tt>mxmlIndexReset()</tt></a> functions
+are used to access the nodes in the index. The <a
+href='#mxmlIndexReset'><tt>mxmlIndexReset()</tt></a> function
+resets the "current" node pointer in the index, allowing you to
+do new searches and enumerations on the same index. Typically
+you will call this function prior to your calls to <a
+href='#mxmlIndexEnum'><tt>mxmlIndexEnum()</tt></a> and <a
+href='#mxmlIndexFind'><tt>mxmlIndexFind()</tt></a>.</p>
+
+<p>The <a href='#mxmlIndexEnum'><tt>mxmlIndexEnum()</tt></a>
+function enumerates each of the nodes in the index and can be
+used in a loop as follows:</p>
+
+<pre>
+    mxml_node_t *node;
+
+    mxmlIndexReset(ind);
+
+    while ((node = mxmlIndexEnum(ind)) != NULL)
+    {
+      // do something with node
+    }
+</pre>
+
+<p>The <a href='#mxmlIndexFind'><tt>mxmlIndexFind()</tt></a>
+function locates the next occurrence of the named element and
+attribute value in the index. It can be used to find all
+matching elements in an index, as follows:</p>
+
+<pre>
+    mxml_node_t *node;
+
+    mxmlIndexReset(ind);
+
+    while ((node = mxmlIndexFind(ind, "element",
+                                 "attr-value"))
+                != NULL)
+    {
+      // do something with node
+    }
+</pre>
+
+<p>The second and third arguments represent the element name and
+attribute value, respectively. A <tt>NULL</tt> pointer is used
+to return all elements or attributes in the index. Passing
+<tt>NULL</tt> for both the element name and attribute value
+is equivalent to calling <tt>mxmlIndexEnum</tt>.</p>
+
+<p>When you are done using the index, delete it using the
+<a href='#mxmlIndexDelete()'><tt>mxmlIndexDelete()</tt></a>
+function:</p>
+
+<pre>
+    mxmlIndexDelete(ind);
+</pre>
+
+<h2>SAX (Stream) Loading of Documents</h2>
+
+<p>Mini-XML supports an implementation of the Simple API for XML
+(SAX) which allows you to load and process an XML document as a
+stream of nodes. Aside from allowing you to process XML documents of
+any size, the Mini-XML implementation also allows you to retain
+portions of the document in memory for later processing.</p>
+
+<p>The <a href='#mxmlSAXLoad'><tt>mxmlSAXLoadFd</tt></a>, <a
+href='#mxmlSAXLoadFile'><tt>mxmlSAXLoadFile</tt></a>, and <a
+href='#mxmlSAXLoadString'><tt>mxmlSAXLoadString</tt></a> functions
+provide the SAX loading APIs. Each function works like the
+corresponding <tt>mxmlLoad</tt> function but uses a callback to
+process each node as it is read.</p>
+
+<p>The callback function receives the node, an event code, and
+a user data pointer you supply:</p>
+
+<pre>
+    void
+    sax_cb(mxml_node_t *node,
+           mxml_sax_event_t event,
+           void *data)
+    {
+      ... do something ...
+    }
+</pre>
+
+<p>The event will be one of the following:</p>
+
+<ul>
+
+	<li><tt>MXML_SAX_CDATA</tt> - CDATA was just read</li>
+
+	<li><tt>MXML_SAX_COMMENT</tt> - A comment was just read</li>
+
+	<li><tt>MXML_SAX_DATA</tt> - Data (custom, integer, opaque, real, or text) was just read</li>
+
+	<li><tt>MXML_SAX_DIRECTIVE</tt> - A processing directive was just read</li>
+
+	<li><tt>MXML_SAX_ELEMENT_CLOSE</tt> - A close element was just read (<tt></element></tt>)</li>
+
+	<li><tt>MXML_SAX_ELEMENT_OPEN</tt> - An open element was just read (<tt><element></tt>)</li>
+
+</ul>
+
+<p>Elements are <em>released</em> after the close element is
+processed. All other nodes are released after they are processed.
+The SAX callback can <em>retain</em> the node using the <a
+href='#mxmlRetain'><tt>mxmlRetain</tt></a> function. For example,
+the following SAX callback will retain all nodes, effectively
+simulating a normal in-memory load:</p>
+
+<pre>
+    void
+    sax_cb(mxml_node_t *node,
+           mxml_sax_event_t event,
+           void *data)
+    {
+      if (event != MXML_SAX_ELEMENT_CLOSE)
+        mxmlRetain(node);
+    }
+</pre>
+
+<p>More typically the SAX callback will only retain a small portion
+of the document that is needed for post-processing. For example, the
+following SAX callback will retain the title and headings in an
+XHTML file. It also retains the (parent) elements like <tt><html></tt>, <tt><head></tt>, and <tt><body></tt>, and processing
+directives like  <tt><?xml ... ?></tt> and  <tt><!DOCTYPE ... ></tt>:</p>
+
+<!-- NEED 10 -->
+<pre>
+    void
+    sax_cb(mxml_node_t *node,
+           mxml_sax_event_t event,
+           void *data)
+    {
+      if (event == MXML_SAX_ELEMENT_OPEN)
+      {
+       /*
+        * Retain headings and titles...
+        */
+
+        char *name = mxmlGetElement(node);
+
+        if (!strcmp(name, "html") ||
+            !strcmp(name, "head") ||
+            !strcmp(name, "title") ||
+            !strcmp(name, "body") ||
+            !strcmp(name, "h1") ||
+            !strcmp(name, "h2") ||
+            !strcmp(name, "h3") ||
+            !strcmp(name, "h4") ||
+            !strcmp(name, "h5") ||
+            !strcmp(name, "h6"))
+          mxmlRetain(node);
+      }
+      else if (event == MXML_SAX_DIRECTIVE)
+        mxmlRetain(node);
+      else if (event == MXML_SAX_DATA)
+      {
+        if (mxmlGetRefCount(mxmlGetParent(node)) > 1)
+        {
+         /*
+          * If the parent was retained, then retain
+          * this data node as well.
+          */
+
+          mxmlRetain(node);
+        }
+      }
+    }
+</pre>
+
+<p>The resulting skeleton document tree can then be searched just
+like one loaded using the <tt>mxmlLoad</tt> functions. For example,
+a filter that reads an XHTML document from stdin and then shows the
+title and headings in the document would look like:</p>
+
+<pre>
+    mxml_node_t *doc, *title, *body, *heading;
+
+    doc = mxmlSAXLoadFd(NULL, 0,
+                        MXML_TEXT_CALLBACK,
+                        <b>sax_cb</b>, NULL);
+
+    title = mxmlFindElement(doc, doc, "title",
+                            NULL, NULL,
+                            MXML_DESCEND);
+
+    if (title)
+      print_children(title);
+
+    body = mxmlFindElement(doc, doc, "body",
+                           NULL, NULL,
+                           MXML_DESCEND);
+
+    if (body)
+    {
+      for (heading = mxmlGetFirstChild(body);
+           heading;
+           heading = mxmlGetNextSibling(heading))
+        print_children(heading);
+    }
+</pre>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/basics.html b/src/mxml/mxml-2.9/doc/basics.html
new file mode 100644
index 0000000..7823fa6
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/basics.html
@@ -0,0 +1,606 @@
+<html>
+<body>
+
+<h1 align='right'><a name='BASICS'><img src="2.gif" align="right"
+hspace="10" width="100" height="100" alt="2"></a>Getting Started
+with Mini-XML</h1>
+
+<p>This chapter describes how to write programs that use Mini-XML to
+access data in an XML file. Mini-XML provides the following
+functionality:</p>
+
+<ul>
+
+	<li>Functions for creating and managing XML documents
+	in memory.</li>
+
+	<li>Reading of UTF-8 and UTF-16 encoded XML files and
+	strings.</li>
+
+	<li>Writing of UTF-8 encoded XML files and strings.</li>
+
+	<li>Support for arbitrary element names, attributes, and
+	attribute values with no preset limits, just available
+	memory.</li>
+
+	<li>Support for integer, real, opaque ("CDATA"), and text
+	data types in "leaf" nodes.</li>
+
+	<li>"Find", "index", and "walk" functions for easily
+	accessing data in an XML document.</li>
+
+</ul>
+
+<p>Mini-XML doesn't do validation or other types of processing
+on the data based upon schema files or other sources of
+definition information, nor does it support character entities
+other than those required by the XML specification.</p>
+
+
+<h2>The Basics</h2>
+
+<p>Mini-XML provides a single header file which you include:</p>
+
+<pre>
+    #include <mxml.h>
+</pre>
+
+<p>The Mini-XML library is included with your program using the
+<kbd>-lmxml</kbd> option:</p>
+
+<pre>
+    <kbd>gcc -o myprogram myprogram.c -lmxml ENTER</kbd>
+</pre>
+
+<p>If you have the <tt>pkg-config(1)</tt> software installed,
+you can use it to determine the proper compiler and linker options
+for your installation:</p>
+
+<pre>
+    <kbd>pkg-config --cflags mxml ENTER</kbd>
+    <kbd>pkg-config --libs mxml ENTER</kbd>
+</pre>
+
+<h2>Nodes</h2>
+
+<p>Every piece of information in an XML file is stored in memory in "nodes".
+Nodes are defined by the <a href='#mxml_node_t'><tt>mxml_node_t</tt></a>
+structure. Each node has a typed value, optional user data, a parent node,
+sibling nodes (previous and next), and potentially child nodes.</p>
+
+<p>For example, if you have an XML file like the following:</p>
+
+<pre>
+    <?xml version="1.0" encoding="utf-8"?>
+    <data>
+        <node>val1</node>
+        <node>val2</node>
+        <node>val3</node>
+        <group>
+            <node>val4</node>
+            <node>val5</node>
+            <node>val6</node>
+        </group>
+        <node>val7</node>
+        <node>val8</node>
+    </data>
+</pre>
+
+<p>the node tree for the file would look like the following in memory:</p>
+
+<pre>
+    ?xml version="1.0" encoding="utf-8"?
+      |
+    data
+      |
+    node - node - node - group - node - node
+      |      |      |      |       |      |
+    val1   val2   val3     |     val7   val8
+                           |
+                         node - node - node
+                           |      |      |
+                         val4   val5   val6
+</pre>
+
+<p>where "-" is a pointer to the sibling node and "|" is a pointer
+to the first child or parent node.</p>
+
+<p>The <a href="#mxmlGetType"><tt>mxmlGetType</tt></a> function gets the type of
+a node, one of <tt>MXML_CUSTOM</tt>, <tt>MXML_ELEMENT</tt>,
+<tt>MXML_INTEGER</tt>, <tt>MXML_OPAQUE</tt>, <tt>MXML_REAL</tt>, or
+<tt>MXML_TEXT</tt>. The parent and sibling nodes are accessed using the
+<a href="#mxmlGetParent"><tt>mxmlGetParent</tt></a>,
+<a href="#mxmlGetNext"><tt>mxmlGetNext</tt></a>, and
+<a href="#mxmlGetPrevious"><tt>mxmlGetPrevious</tt></a> functions. The
+<a href="#mxmlGetUserData"><tt>mxmlGetUserData</tt></a> function gets any user
+data associated with the node.</p>
+
+<h3>CDATA Nodes</h3>
+
+<p>CDATA (<tt>MXML_ELEMENT</tt>) nodes are created using the
+<a href="#mxmlNewCDATA"><tt>mxmlNewCDATA</tt></a> function. The
+<a href="#mxmlGetCDATA"><tt>mxmlGetCDATA</tt></a> function retrieves the
+CDATA string pointer for a node.</p>
+
+<blockquote><b>Note:</b>
+
+<p>CDATA nodes are currently stored in memory as special elements. This will
+be changed in a future major release of Mini-XML.</p>
+</blockquote>
+
+<h3>Custom Nodes</h3>
+
+<p>Custom (<tt>MXML_CUSTOM</tt>) nodes are created using the
+<a href="#mxmlNewCustom"><tt>mxmlNewCustom</tt></a> function or using a custom
+load callback specified using the
+<a href="#mxmlSetCustomHandlers"><tt>mxmlSetCustomHandlers</tt></a> function.
+The <a href="#mxmlGetCustom"><tt>mxmlGetCustom</tt></a> function retrieves the
+custom value pointer for a node.</p>
+
+<h3>Comment Nodes</h3>
+
+<p>Comment (<tt>MXML_ELEMENT</tt>) nodes are created using the
+<a href="#mxmlNewElement"><tt>mxmlNewElement</tt></a> function. The
+<a href="#mxmlGetElement"><tt>mxmlGetElement</tt></a> function retrieves the
+comment string pointer for a node, including the surrounding "!--" and "--"
+characters.</p>
+
+<blockquote><b>Note:</b>
+
+<p>Comment nodes are currently stored in memory as special elements. This will
+be changed in a future major release of Mini-XML.</p>
+</blockquote>
+
+<h3>Element Nodes</h3>
+
+<p>Element (<tt>MXML_ELEMENT</tt>) nodes are created using the
+<a href="#mxmlNewElement"><tt>mxmlNewElement</tt></a> function. The
+<a href="#mxmlGetElement"><tt>mxmlGetElement</tt></a> function retrieves the
+element name, the
+<a href="#mxmlElementGetAttr"><tt>mxmlElementGetAttr</tt></a> function retrieves
+the value string for a named attribute associated with the element, and the
+<a href="#mxmlGetFirstChild"><tt>mxmlGetFirstChild</tt></a> and
+<a href="#mxmlGetLastChild"><tt>mxmlGetLastChild</tt></a> functions retrieve the
+first and last child nodes for the element, respectively.</p>
+
+<h3>Integer Nodes</h3>
+
+<p>Integer (<tt>MXML_INTEGER</tt>) nodes are created using the
+<a href="#mxmlNewInteger"><tt>mxmlNewInteger</tt></a> function. The
+<a href="#mxmlGetInteger"><tt>mxmlGetInteger</tt></a> function retrieves the
+integer value for a node.</p>
+
+<h3>Opaque Nodes</h3>
+
+<p>Opaque (<tt>MXML_OPAQUE</tt>) nodes are created using the
+<a href="#mxmlNewOpaque"><tt>mxmlNewOpaque</tt></a> function. The
+<a href="#mxmlGetOpaque"><tt>mxmlGetOpaque</tt></a> function retrieves the
+opaque string pointer for a node. Opaque nodes are like string nodes but
+preserve all whitespace between nodes.</p>
+
+<h3>Text Nodes</h3>
+
+<p>Text (<tt>MXML_TEXT</tt>) nodes are created using the
+<a href="#mxmlNewText"><tt>mxmlNewText</tt></a> and
+<a href="#mxmlNewTextf"><tt>mxmlNewTextf</tt></a> functions. Each text node
+consists of a text string and (leading) whitespace value - the
+<a href="#mxmlGetText"><tt>mxmlGetText</tt></a> function retrieves the
+text string pointer and whitespace value for a node.</p>
+
+<!-- NEED 12 -->
+<h3>Processing Instruction Nodes</h3>
+
+<p>Processing instruction (<tt>MXML_ELEMENT</tt>) nodes are created using the
+<a href="#mxmlNewElement"><tt>mxmlNewElement</tt></a> function. The
+<a href="#mxmlGetElement"><tt>mxmlGetElement</tt></a> function retrieves the
+processing instruction string for a node, including the surrounding "?"
+characters.</p>
+
+<blockquote><b>Note:</b>
+
+<p>Processing instruction nodes are currently stored in memory as special
+elements. This will be changed in a future major release of Mini-XML.</p>
+</blockquote>
+
+<h3>Real Number Nodes</h3>
+
+<p>Real number (<tt>MXML_REAL</tt>) nodes are created using the
+<a href="#mxmlNewReal"><tt>mxmlNewReal</tt></a> function. The
+<a href="#mxmlGetReal"><tt>mxmlGetReal</tt></a> function retrieves the
+CDATA string pointer for a node.</p>
+
+<!-- NEED 15 -->
+<h3>XML Declaration Nodes</h3>
+
+<p>XML declaration (<tt>MXML_ELEMENT</tt>) nodes are created using the
+<a href="#mxmlNewXML"><tt>mxmlNewXML</tt></a> function. The
+<a href="#mxmlGetElement"><tt>mxmlGetElement</tt></a> function retrieves the
+XML declaration string for a node, including the surrounding "?" characters.</p>
+
+<blockquote><b>Note:</b>
+
+<p>XML declaration nodes are currently stored in memory as special elements.
+This will be changed in a future major release of Mini-XML.</p>
+</blockquote>
+
+
+<!-- NEW PAGE -->
+<h2>Creating XML Documents</h2>
+
+<p>You can create and update XML documents in memory using the
+various <tt>mxmlNew</tt> functions. The following code will
+create the XML document described in the previous section:</p>
+
+<pre>
+    mxml_node_t *xml;    /* <?xml ... ?> */
+    mxml_node_t *data;   /* <data> */
+    mxml_node_t *node;   /* <node> */
+    mxml_node_t *group;  /* <group> */
+
+    xml = mxmlNewXML("1.0");
+
+    data = mxmlNewElement(xml, "data");
+
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val1");
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val2");
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val3");
+
+        group = mxmlNewElement(data, "group");
+
+            node = mxmlNewElement(group, "node");
+            mxmlNewText(node, 0, "val4");
+            node = mxmlNewElement(group, "node");
+            mxmlNewText(node, 0, "val5");
+            node = mxmlNewElement(group, "node");
+            mxmlNewText(node, 0, "val6");
+
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val7");
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val8");
+</pre>
+
+<!-- NEED 6 -->
+<p>We start by creating the declaration node common to all XML files using the
+<a href="#mxmlNewXML"><tt>mxmlNewXML</tt></a> function:</p>
+
+<pre>
+    xml = mxmlNewXML("1.0");
+</pre>
+
+<p>We then create the <tt><data></tt> node used for this document using
+the <a href="#mxmlNewElement"><tt>mxmlNewElement</tt></a> function. The first
+argument specifies the parent node (<tt>xml</tt>) while the second specifies the
+element name (<tt>data</tt>):</p>
+
+<pre>
+    data = mxmlNewElement(xml, "data");
+</pre>
+
+<p>Each <tt><node>...</node></tt> in the file is created using the
+<tt>mxmlNewElement</tt> and <a href="#mxmlNewText"><tt>mxmlNewText</tt></a>
+functions. The first argument of <tt>mxmlNewText</tt> specifies the parent node
+(<tt>node</tt>). The second argument specifies whether whitespace appears before
+the text - 0 or false in this case. The last argument specifies the actual text
+to add:</p>
+
+<pre>
+    node = mxmlNewElement(data, "node");
+    mxmlNewText(node, 0, "val1");
+</pre>
+
+<p>The resulting in-memory XML document can then be saved or processed just like
+one loaded from disk or a string.</p>
+
+<!-- NEED 15 -->
+<h2>Loading XML</h2>
+
+<p>You load an XML file using the <a
+href='#mxmlLoadFile'><tt>mxmlLoadFile</tt></a>
+function:</p>
+
+<pre>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "r");
+    tree = mxmlLoadFile(NULL, fp,
+                        MXML_TEXT_CALLBACK);
+    fclose(fp);
+</pre>
+
+<p>The first argument specifies an existing XML parent node, if
+any. Normally you will pass <tt>NULL</tt> for this argument
+unless you are combining multiple XML sources. The XML file must
+contain a complete XML document including the <tt>?xml</tt>
+element if the parent node is <tt>NULL</tt>.</p>
+
+<p>The second argument specifies the stdio file to read from, as
+opened by <tt>fopen()</tt> or <tt>popen()</tt>. You can also use
+<tt>stdin</tt> if you are implementing an XML filter
+program.</p>
+
+<p>The third argument specifies a callback function which returns
+the value type of the immediate children for a new element node:
+<tt>MXML_CUSTOM</tt>, <tt>MXML_IGNORE</tt>,
+<tt>MXML_INTEGER</tt>, <tt>MXML_OPAQUE</tt>, <tt>MXML_REAL</tt>,
+or <tt>MXML_TEXT</tt>. Load callbacks are described in detail in
+<a href='#LOAD_CALLBACKS'>Chapter 3</a>. The example code uses
+the <tt>MXML_TEXT_CALLBACK</tt> constant which specifies that all
+data nodes in the document contain whitespace-separated text
+values. Other standard callbacks include
+<tt>MXML_IGNORE_CALLBACK</tt>, <tt>MXML_INTEGER_CALLBACK</tt>,
+<tt>MXML_OPAQUE_CALLBACK</tt>, and 
+<tt>MXML_REAL_CALLBACK</tt>.</p>
+
+<p>The <a href='#mxmlLoadString'><tt>mxmlLoadString</tt></a>
+function loads XML node trees from a string:</p>
+
+<!-- NEED 10 -->
+<pre>
+    char buffer[8192];
+    mxml_node_t *tree;
+
+    ...
+    tree = mxmlLoadString(NULL, buffer,
+                          MXML_TEXT_CALLBACK);
+</pre>
+
+<p>The first and third arguments are the same as used for
+<tt>mxmlLoadFile()</tt>. The second argument specifies the
+string or character buffer to load and must be a complete XML
+document including the <tt>?xml</tt> element if the parent node
+is <tt>NULL</tt>.</p>
+
+
+<!-- NEED 15 -->
+<h2>Saving XML</h2>
+
+<p>You save an XML file using the <a
+href='#mxmlSaveFile'><tt>mxmlSaveFile</tt></a> function:</p>
+
+<pre>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "w");
+    mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+    fclose(fp);
+</pre>
+
+<p>The first argument is the XML node tree to save. It should
+normally be a pointer to the top-level <tt>?xml</tt> node in
+your XML document.</p>
+
+<p>The second argument is the stdio file to write to, as opened
+by <tt>fopen()</tt> or <tt>popen()</tt>. You can also use
+<tt>stdout</tt> if you are implementing an XML filter
+program.</p>
+
+<p>The third argument is the whitespace callback to use when
+saving the file. Whitespace callbacks are covered in detail in <a
+href='SAVE_CALLBACKS'>Chapter 3</a>. The previous example code
+uses the <tt>MXML_NO_CALLBACK</tt> constant to specify that no
+special whitespace handling is required.</p>
+
+<p>The <a
+href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString</tt></a>,
+and <a href='#mxmlSaveString'><tt>mxmlSaveString</tt></a>
+functions save XML node trees to strings:</p>
+
+<pre>
+    char buffer[8192];
+    char *ptr;
+    mxml_node_t *tree;
+
+    ...
+    mxmlSaveString(tree, buffer, sizeof(buffer),
+                   MXML_NO_CALLBACK);
+
+    ...
+    ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+</pre>
+
+<p>The first and last arguments are the same as used for
+<tt>mxmlSaveFile()</tt>. The <tt>mxmlSaveString</tt> function
+takes pointer and size arguments for saving the XML document to
+a fixed-size buffer, while <tt>mxmlSaveAllocString()</tt>
+returns a string buffer that was allocated using
+<tt>malloc()</tt>.</p>
+
+<!-- NEED 15 -->
+<h3>Controlling Line Wrapping</h3>
+
+<p>When saving XML documents, Mini-XML normally wraps output
+lines at column 75 so that the text is readable in terminal
+windows. The <a
+href='#mxmlSetWrapMargin'><tt>mxmlSetWrapMargin</tt></a> function
+overrides the default wrap margin:</p>
+
+<pre>
+    /* Set the margin to 132 columns */
+    mxmlSetWrapMargin(132);
+
+    /* Disable wrapping */
+    mxmlSetWrapMargin(0);
+</pre>
+
+<h2>Memory Management</h2>
+
+<p>Once you are done with the XML data, use the <a
+href="#mxmlDelete"><tt>mxmlDelete</tt></a> function to recursively
+free the memory that is used for a particular node or the entire
+tree:</p>
+
+<pre>
+    mxmlDelete(tree);
+</pre>
+
+<p>You can also use reference counting to manage memory usage. The
+<a href="#mxmlRetain"><tt>mxmlRetain</tt></a> and
+<a href="#mxmlRelease"><tt>mxmlRelease</tt></a> functions increment and
+decrement a node's use count, respectively. When the use count goes to 0,
+<tt>mxmlRelease</tt> will automatically call <tt>mxmlDelete</tt> to actually
+free the memory used by the node tree. New nodes automatically start with a
+use count of 1.</p>
+
+
+<!-- NEW PAGE-->
+<h2>Finding and Iterating Nodes</h2>
+
+<p>The <a
+href='#mxmlWalkPrev'><tt>mxmlWalkPrev</tt></a>
+and <a
+href='#mxmlWalkNext'><tt>mxmlWalkNext</tt></a>functions
+can be used to iterate through the XML node tree:</p>
+
+<pre>
+    mxml_node_t *node;
+    
+    node = mxmlWalkPrev(current, tree,
+                        MXML_DESCEND);
+
+    node = mxmlWalkNext(current, tree,
+                        MXML_DESCEND);
+</pre>
+
+<p>In addition, you can find a named element/node using the <a
+href='#mxmlFindElement'><tt>mxmlFindElement</tt></a>
+function:</p>
+
+<pre>
+    mxml_node_t *node;
+    
+    node = mxmlFindElement(tree, tree, "name",
+                           "attr", "value",
+                           MXML_DESCEND);
+</pre>
+
+<p>The <tt>name</tt>, <tt>attr</tt>, and <tt>value</tt>
+arguments can be passed as <tt>NULL</tt> to act as wildcards,
+e.g.:</p>
+
+<!-- NEED 4 -->
+<pre>
+    /* Find the first "a" element */
+    node = mxmlFindElement(tree, tree, "a",
+                           NULL, NULL,
+                           MXML_DESCEND);
+</pre>
+<!-- NEED 5 -->
+<pre>
+    /* Find the first "a" element with "href"
+       attribute */
+    node = mxmlFindElement(tree, tree, "a",
+                           "href", NULL,
+                           MXML_DESCEND);
+</pre>
+<!-- NEED 6 -->
+<pre>
+    /* Find the first "a" element with "href"
+       to a URL */
+    node = mxmlFindElement(tree, tree, "a",
+                           "href",
+                           "http://www.easysw.com/",
+                           MXML_DESCEND);
+</pre>
+<!-- NEED 5 -->
+<pre>
+    /* Find the first element with a "src"
+       attribute */
+    node = mxmlFindElement(tree, tree, NULL,
+                           "src", NULL,
+                           MXML_DESCEND);
+</pre>
+<!-- NEED 5 -->
+<pre>
+    /* Find the first element with a "src"
+       = "foo.jpg" */
+    node = mxmlFindElement(tree, tree, NULL,
+                           "src", "foo.jpg",
+                           MXML_DESCEND);
+</pre>
+
+<p>You can also iterate with the same function:</p>
+
+<pre>
+    mxml_node_t *node;
+
+    for (node = mxmlFindElement(tree, tree,
+                                "name",
+                                NULL, NULL,
+                                MXML_DESCEND);
+         node != NULL;
+         node = mxmlFindElement(node, tree,
+                                "name",
+                                NULL, NULL,
+                                MXML_DESCEND))
+    {
+      ... do something ...
+    }
+</pre>
+
+<!-- NEED 10 -->
+<p>The <tt>MXML_DESCEND</tt> argument can actually be one of
+three constants:</p>
+
+<ul>
+
+	<li><tt>MXML_NO_DESCEND</tt> means to not to look at any
+	child nodes in the element hierarchy, just look at
+	siblings at the same level or parent nodes until the top
+	node or top-of-tree is reached.
+
+        <p>The previous node from "group" would be the "node"
+        element to the left, while the next node from "group" would
+        be the "node" element to the right.<br><br></p></li>
+
+        <li><tt>MXML_DESCEND_FIRST</tt> means that it is OK to
+        descend to the first child of a node, but not to descend
+        further when searching. You'll normally use this when
+        iterating through direct children of a parent node, e.g. all
+        of the "node" and "group" elements under the "?xml" parent
+        node in the example above.
+
+        <p>This mode is only applicable to the search function; the
+        walk functions treat this as <tt>MXML_DESCEND</tt> since
+        every call is a first time.<br><br></p></li>
+
+        <li><tt>MXML_DESCEND</tt> means to keep descending until
+        you hit the bottom of the tree. The previous node from
+        "group" would be the "val3" node and the next node would
+        be the first node element under "group".
+
+        <p>If you were to walk from the root node "?xml" to the end
+        of the tree with <tt>mxmlWalkNext()</tt>, the order would
+        be:</p>
+
+        <p><tt>?xml data node val1 node val2 node val3 group node
+        val4 node val5 node val6 node val7 node val8</tt></p>
+
+	<p>If you started at "val8" and walked using
+	<tt>mxmlWalkPrev()</tt>, the order would be reversed,
+	ending at "?xml".</p></li>
+
+</ul>
+
+<h2>Finding Specific Nodes</h2>
+
+<p>You can find specific nodes in the tree using the <a
+href='#mxmlFindValue'><tt>mxmlFindPath</tt></a>, for example:
+
+<pre>
+    mxml_node_t *value;
+
+    value = mxmlFindPath(tree, "path/to/*/foo/bar");
+</pre>
+
+<p>The second argument is a "path" to the parent node. Each component of the
+path is separated by a slash (/) and represents a named element in the document
+tree or a wildcard (*) path representing 0 or more intervening nodes.</p>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/chapters.xcf.gz b/src/mxml/mxml-2.9/doc/chapters.xcf.gz
new file mode 100644
index 0000000..e12a942
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/chapters.xcf.gz differ
diff --git a/src/mxml/mxml-2.9/doc/docset.css b/src/mxml/mxml-2.9/doc/docset.css
new file mode 100644
index 0000000..60cb26a
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/docset.css
@@ -0,0 +1,114 @@
+body {
+  background: white;
+  color: black;
+  font-family: "lucida grande", geneva, helvetica, arial, sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6, p, td, th {
+  font-family: "lucida grande", geneva, helvetica, arial, sans-serif;
+}
+
+kbd {
+  color: #006600;
+  font-family: monaco, courier, monospace;
+  font-weight: bold;
+}
+
+pre {
+  font-family: monaco, courier, monospace;
+}
+
+pre.example {
+  background: white;
+  border: dotted thin #999999;
+  margin-left: 36pt;
+  padding: 10px;
+}
+
+pre.example em {
+  color: #3f0000;
+  font-family: "lucida grande", geneva, helvetica, arial, sans-serif;
+}
+
+div.summary table {
+  border: solid thin #999999;
+  border-collapse: collapse;
+  border-spacing: 0;
+  margin: 10px;
+  width: 33%;
+}
+
+div.summary table td, div.summary table th {
+  background: white;
+  border: solid thin #999999;
+  border-spacing: 0;
+  padding: 5px;
+  text-align: left;
+  vertical-align: top;
+}
+
+div.summary table thead th {
+  background: #f0f0f0;
+}
+
+div.body h1 {
+  margin: 0;
+}
+div.body h2 {
+  margin-top: 1.5em;
+}
+div.body h3, div.body h4, div.body h5 {
+  margin-bottom: 0.5em;
+  margin-top: 1.5em;
+}
+.class, .enumeration, .function, .struct, .typedef, .union {
+  border-bottom: solid thin #999999;
+  margin-bottom: 0;
+  margin-top: 2em;
+}
+.description {
+  margin-top: 0.5em;
+}
+code, p.code, pre, ul.code li {
+  font-family: monaco, courier, monospace;
+  font-size: 90%;
+}
+ul.code, ul.contents, ul.subcontents {
+  list-style-type: none;
+  margin: 0;
+  padding-left: 0;
+}
+ul.code li {
+  margin: 0;
+}
+ul.contents > li {
+  margin-top: 1em;
+}
+ul.contents li ul.code, ul.contents li ul.subcontents {
+  padding-left: 2em;
+}
+div.body dl {
+  margin-left: 0;
+  margin-top: 0;
+}
+div.body dt {
+  font-style: italic;
+  margin-left: 0;
+  margin-top: 0;
+}
+div.body dd {
+  margin-bottom: 0.5em;
+}
+span.info {
+  background: black;
+  border: thin solid black;
+  color: white;
+  font-size: 80%;
+  font-style: italic;
+  font-weight: bold;
+  white-space: nowrap;
+}
+h2 span.info, h3 span.info, h4 span.info {
+  float: right;
+  font-size: 100%;
+}
diff --git a/src/mxml/mxml-2.9/doc/docset.header b/src/mxml/mxml-2.9/doc/docset.header
new file mode 100644
index 0000000..3fc8573
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/docset.header
@@ -0,0 +1,16 @@
+<h1>Mini-XML API Reference</h1>
+
+<div class='summary'><table summary='General Information'>
+<thead>
+<tr>
+	<th>Header</th>
+	<th>mxml.h</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<th>Library</th>
+	<td>-lmxml</td>
+</tr>
+</tbody>
+</table></div>
diff --git a/src/mxml/mxml-2.9/doc/docset.intro b/src/mxml/mxml-2.9/doc/docset.intro
new file mode 100644
index 0000000..a179ddd
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/docset.intro
@@ -0,0 +1,178 @@
+<h2 class='title'><a name='INTRODUCTION'>Introduction</a></h2>
+
+<p>Mini-XML is a small XML parsing library that you can use to read XML and
+XML-like data files in your application without requiring large non-standard
+libraries.  Mini-XML only requires an ANSI C compatible compiler (GCC works,
+as do most vendors' ANSI C compilers) and a "make" program.</p>
+
+<p>Mini-XML provides the following functionality:</p>
+
+<ul>
+
+	<li>Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files
+	and strings.</li>
+
+	<li>Data is stored in a linked-list tree structure, preserving the XML
+	data hierarchy.</li>
+
+	<li>Supports arbitrary element names, attributes, and attribute values
+	with no preset limits, just available memory.</li>
+
+	<li>Supports integer, real, opaque ("CDATA"), and text data types in
+	"leaf" nodes.</li>
+
+	<li>Functions for creating, indexing, and managing trees of data.</li>
+
+	<li>"Find" and "walk" functions for easily locating and navigating trees
+	of data.</li>
+
+</ul>
+
+<p>Mini-XML doesn't do validation or other types of processing on the data based
+upon schema files or other sources of definition information, nor does it
+support character entities other than those required by the XML
+specification.</p>
+
+<h2 class='title'><a name='USING'>Using Mini-XML</a></h2>
+
+<p>Mini-XML provides a single header file which you include:</p>
+
+<pre class='example'>
+#include <mxml.h>
+</pre>
+
+<p>Nodes are defined by the "<a href='#mxml_node_s'>mxml_node_t</a>" structure;
+the "type" member defines the node type (element, integer, opaque, real, or
+text) which determines which value you want to look at in the "value" union.
+New nodes can be created using the
+"<a href='#mxmlNewElement'>mxmlNewElement()</a>",
+"<a href='#mxmlNewInteger'>mxmlNewInteger()</a>",
+"<a href='#mxmlNewOpaque'>mxmlNewOpaque()</a>",
+"<a href='#mxmlNewReal'>mxmlNewReal()</a>", and
+"<a href='#mxmlNewText'>mxmlNewText()</a>" functions. Only elements can have
+child nodes, and the top node must be an element, usually "?xml".</p>
+
+<p>You load an XML file using the "mxmlLoadFile()" function:</p>
+
+<pre class='example'>
+FILE *fp;
+mxml_node_t *tree;
+
+fp = fopen("filename.xml", "r");
+tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+fclose(fp);
+</pre>
+
+<p>Similarly, you save an XML file using the
+"<a href='#mxmlSaveFile'>mxmlSaveFile()</a>" function:
+
+<pre class='example'>
+FILE *fp;
+mxml_node_t *tree;
+
+fp = fopen("filename.xml", "w");
+mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+fclose(fp);
+</pre>
+
+<p>The "<a href='#mxmlLoadString'>mxmlLoadString()</a>",
+"<a href='#mxmlSaveAllocString'>mxmlSaveAllocString()</a>", and
+"<a href='#mxmlSaveString'>mxmlSaveString()</a>" functions load XML node trees
+from and save XML node trees to strings:</p>
+
+<pre class='example'>
+char buffer[8192];
+char *ptr;
+mxml_node_t *tree;
+
+...
+tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
+
+...
+mxmlSaveString(tree, buffer, sizeof(buffer),
+	       MXML_NO_CALLBACK);
+
+...
+ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+</pre>
+
+<p>You can find a named element/node using the
+"<a href='#mxmlFindElement'>mxmlFindElement()</a>" function:</p>
+
+<pre class='example'>
+mxml_node_t *node = mxmlFindElement(tree, tree, "name",
+				    "attr", "value",
+				    MXML_DESCEND);
+</pre>
+
+<p>The "name", "attr", and "value" arguments can be passed as
+<code>NULL</code> to act as wildcards, e.g.:</p>
+
+<pre class='example'>
+/* Find the first "a" element */
+node = mxmlFindElement(tree, tree, "a", NULL, NULL,
+		       MXML_DESCEND);
+
+/* Find the first "a" element with "href" attribute */
+node = mxmlFindElement(tree, tree, "a", "href", NULL,
+		       MXML_DESCEND);
+
+/* Find the first "a" element with "href" to a URL */
+node = mxmlFindElement(tree, tree, "a", "href",
+		       "http://www.easysw.com/~mike/mxml/",
+		       MXML_DESCEND);
+
+/* Find the first element with a "src" attribute*/
+node = mxmlFindElement(tree, tree, NULL, "src", NULL,
+		       MXML_DESCEND);
+
+/* Find the first element with a "src" = "foo.jpg" */
+node = mxmlFindElement(tree, tree, NULL, "src",
+		       "foo.jpg", MXML_DESCEND);
+</pre>
+
+<p>You can also iterate with the same function:</p>
+
+<pre class='example'>
+mxml_node_t *node;
+
+for (node = mxmlFindElement(tree, tree, "name", NULL,
+			    NULL, MXML_DESCEND);
+     node != NULL;
+     node = mxmlFindElement(node, tree, "name", NULL,
+			    NULL, MXML_DESCEND))
+{
+  ... do something ...
+}
+</pre>
+
+<p>The "mxmlFindPath()" function finds the (first) value node under a specific
+element using a "path":</p>
+
+<pre class='example'>
+mxml_node_t *value = mxmlFindPath(tree, "path/to/*/foo/bar");
+</pre>
+
+<p>The "mxmlGetInteger()", "mxmlGetOpaque()", "mxmlGetReal()", and
+"mxmlGetText()" functions retrieve the value from a node:</p>
+
+<pre class='example'>
+mxml_node_t *node;
+
+int intvalue = mxmlGetInteger(node);
+
+const char *opaquevalue = mxmlGetOpaque(node);
+
+double realvalue = mxmlGetReal(node);
+
+int whitespacevalue;
+const char *textvalue = mxmlGetText(node, &whitespacevalue);
+</pre>
+
+<p>Finally, once you are done with the XML data, use the
+"<a href='#mxmlDelete'>mxmlDelete()</a>" function to recursively free the
+memory that is used for a particular node or the entire tree:</p>
+
+<pre class='example'>
+mxmlDelete(tree);
+</pre>
diff --git a/src/mxml/mxml-2.9/doc/footer.man b/src/mxml/mxml-2.9/doc/footer.man
new file mode 100644
index 0000000..db38303
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/footer.man
@@ -0,0 +1,4 @@
+.SH SEE ALSO
+mxmldoc(1), Mini-XML Programmers Manual, http://www.minixml.org/
+.SH COPYRIGHT
+Copyright 2003-2011 by Michael Sweet.
diff --git a/src/mxml/mxml-2.9/doc/install.html b/src/mxml/mxml-2.9/doc/install.html
new file mode 100644
index 0000000..5884501
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/install.html
@@ -0,0 +1,119 @@
+<html>
+<body>
+
+<h1 align='right'><a name='INSTALL'><img src="1.gif" align="right"
+hspace="10" width="100" height="100" alt="1"></a>Building,
+Installing, and Packaging Mini-XML</h1>
+
+<p>This chapter describes how to build, install, and package
+Mini-XML on your system from the source archive. You will need an
+ANSI/ISO-C compatible compiler to build Mini-XML - GCC works, as
+do most vendors' C compilers. If you are building Mini-XML on
+Windows, we recommend using the Visual C++ environment with the
+supplied solution file. For other operating systems, you'll need a
+POSIX-compatible shell and <tt>make</tt> program in addition to
+the C compiler.</p>
+
+<h2>Compiling Mini-XML</h2>
+
+<p>Mini-XML comes with both an autoconf-based configure script
+and a Visual C++ solution that can be used to compile the library
+and associated tools.</p>
+
+<h3>Compiling with Visual C++</h3>
+
+<p>Open the <VAR>mxml.sln</VAR> solution in the <VAR>vcnet</VAR>
+folder. Choose the desired build configuration, "Debug" (the
+default) or "Release", and then choose <VAR>Build Solution</VAR>
+from the <VAR>Build</VAR> menu.</p>
+
+<h3>Compiling with Command-Line Tools</h3>
+
+<p>Type the following command to configure the Mini-XML source
+code for your system:</p>
+
+<pre>
+    <kbd>./configure ENTER</kbd>
+</pre>
+
+<p>The default install prefix is <var>/usr/local</var>, which
+can be overridden using the <kbd>--prefix</kbd> option:</p>
+
+<pre>
+    <kbd>./configure --prefix=/foo ENTER</kbd>
+</pre>
+
+<p>Other configure options can be found using the
+<kbd>--help</kbd> option:</p>
+
+<pre>
+    <kbd>./configure --help ENTER</kbd>
+</pre>
+
+<p>Once you have configured the software, use the
+<tt>make(1)</tt> program to do the build and run the test
+program to verify that things are working, as follows:</p>
+
+<pre>
+    <kbd>make ENTER</kbd>
+</pre>
+
+
+<h2>Installing Mini-XML</h2>
+
+<p>If you are using Visual C++, copy the <VAR>mxml.lib</VAR> and
+and <VAR>mxml.h</VAR> files to the Visual C++ <VAR>lib</VAR> and
+<VAR>include<VAR> directories, respectively.</p>
+
+<p>Otherwise, use the <tt>make</tt> command with the
+<kbd>install</kbd> target to install Mini-XML in the configured
+directories:</p>
+
+<pre>
+    <kbd>make install ENTER</kbd>
+</pre>
+
+
+<h2>Creating Mini-XML Packages</h2>
+
+<p>Mini-XML includes two files that can be used to create binary
+packages. The first file is <var>mxml.spec</var> which is used
+by the <tt>rpmbuild(8)</tt> software to create Red Hat Package
+Manager ("RPM") packages which are commonly used on Linux. Since
+<tt>rpmbuild</tt> wants to compile the software on its own, you
+can provide it with the Mini-XML tar file to build the
+package:</p>
+
+<pre>
+    <kbd>rpmbuild -ta mxml-<i>version</i>.tar.gz ENTER</kbd>
+</pre>
+
+<p>The second file is <var>mxml.list</var> which is used by the
+<tt>epm(1)</tt> program to create software packages in a variety
+of formats. The <tt>epm</tt> program is available from the
+following URL:</p>
+
+<pre>
+    <a href="http://www.epmhome.org/">http://www.epmhome.org/</a>
+</pre>
+
+<p>Use the <tt>make</tt> command with the <kbd>epm</kbd> target
+to create portable and native packages for your system:</p>
+
+<pre>
+    <kbd>make epm ENTER</kbd>
+</pre>
+
+<p>The packages are stored in a subdirectory named
+<var>dist</var> for your convenience. The portable packages
+utilize scripts and tar files to install the software on the
+target system. After extracting the package archive, use the
+<var>mxml.install</var> script to install the software.</p>
+
+<p>The native packages will be in the local OS's native format:
+RPM for Red Hat Linux, DPKG for Debian Linux, PKG for Solaris,
+and so forth. Use the corresponding commands to install the
+native packages.</p>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/intro.html b/src/mxml/mxml-2.9/doc/intro.html
new file mode 100644
index 0000000..efe0e78
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/intro.html
@@ -0,0 +1,194 @@
+<html>
+<head>
+	<title>Mini-XML Programmers Manual, Version 2.9</title>
+	<meta name="copyright" content="Copyright 2003-2014">
+	<meta name="author" content="Michael R. Sweet">
+	<meta name="keywords" content="XML, C, C++, library">
+</head>
+<body>
+
+<h1 align="right"><a name="INTRO"><img src="0.gif" align="right"
+hspace="10" width="100" height="100" alt="0"></a>Introduction</h1>
+
+<p>This programmers manual describes Mini-XML version 2.9, a small
+XML parsing library that you can use to read and write XML data
+files in your C and C++ applications.</p>
+
+<p>Mini-XML was initially developed for the <a
+href="http://gutenprint.sf.net/">Gutenprint</a> project to replace
+the rather large and unwieldy <tt>libxml2</tt> library with
+something substantially smaller and easier-to-use. It all began one
+morning in June of 2003 when Robert posted the following sentence to
+the developer's list:</p>
+
+<blockquote><em>It's bad enough that we require libxml2, but rolling
+our own XML parser is a bit more than we can handle.</em></blockquote>
+
+<p>I then replied with:</p>
+
+<blockquote><em>Given the limited scope of what you use in XML, it
+should be trivial to code a mini-XML API in a few hundred lines of
+code.</em></blockquote>
+
+<p>I took my own challenge and coded furiously for two days to
+produced the initial public release of Mini-XML, total lines of
+code: 696. Robert promptly integrated Mini-XML into Gutenprint
+and removed libxml2.</p>
+
+<p>Thanks to lots of feedback and support from various
+developers, Mini-XML has evolved since then to provide a more
+complete XML implementation and now stands at a whopping 3,792
+lines of code, compared to 140,410 lines of code for libxml2
+version 2.9.1.</p>
+
+<p>Aside from Gutenprint, Mini-XML is used for the
+following projects/software applications:</p>
+
+<ul>
+
+	<li><a href="https://www.cups.org/">CUPS</a></li>
+
+	<li><a
+	href="http://zynaddsubfx.sourceforge.net">ZynAddSubFX</a></li>
+
+</ul>
+
+<p>Please file a bug on msweet.org if you would like your project added or
+removed from this list, or if you have any comments/quotes you would like me to
+publish about your experiences with Mini-XML.</p>
+
+<!-- NEED 1in -->
+<h2>Organization of This Document</h2>
+
+<p>This manual is organized into the following chapters and
+appendices:</p>
+
+<ul>
+
+	<li>Chapter 1, "<a href="#INSTALL">Building,
+	Installing, and Packaging Mini-XML</a>", provides
+	compilation, installation, and packaging instructions for
+	Mini-XML.</li>
+
+	<li>Chapter 2, "<a href="#BASICS">Getting
+	Started with Mini-XML</a>", shows how to use the
+	Mini-XML library in your programs.</li>
+
+	<li>Chapter 3, "<a href="#ADVANCED">More
+	Mini-XML Programming Techniques</a>", shows additional
+	ways to use the Mini-XML library.</li>
+
+	<li>Chapter 4, "<a href="#MXMLDOC">Using the
+	mxmldoc Utility</a>", describes how to use the
+	<tt>mxmldoc(1)</tt> program to generate software
+	documentation.</li>
+
+        <li>Appendix A, "<a href="#LICENSE">Mini-XML License</a>",
+        provides the terms and conditions for using and distributing
+        Mini-XML.</li>
+
+	<li>Appendix B, "<a href="#RELNOTES">Release Notes</a>",
+	lists the changes in each release of Mini-XML.</li>
+
+	<li>Appendix C, "<a href="#REFERENCE">Library
+	Reference</a>", contains a complete reference for
+	Mini-XML, generated by <tt>mxmldoc</tt>.</li>
+
+	<li>Appendix D, "<a href="#SCHEMA">XML Schema</a>", shows
+	the XML schema used for the XML files produced by
+	<tt>mxmldoc</tt>.</li>
+
+</ul>
+
+<!-- NEED 10 -->
+<h2>Notation Conventions</h2>
+
+<p>Various font and syntax conventions are used in this guide.
+Examples and their meanings and uses are explained below:</p>
+
+<dl>
+
+	<dt><code>mxmldoc</code><br>
+	<code>mxmldoc(1)</code></dt>
+
+	<dd>The names of commands; the first mention of a command
+	or function in a chapter is followed by a manual page
+	section number.<br><br></dd>
+
+	<dt><var>/var</var><br>
+	<var>/etc/hosts</var></dt>
+
+	<dd>File and directory names.<br><br></dd>
+
+	<dt><tt>Request ID is Printer-123</tt></dt>
+
+	<dd>Screen output.<br><br></dd>
+
+	<dt><kbd>lp -d printer filename ENTER</kbd></dt>
+
+	<dd>Literal user input; special keys like
+	<kbd>ENTER</kbd> are in ALL CAPS.<br><br></dd>
+
+	<dt>12.3</dt>
+
+	<dd>Numbers in the text are written using the period (.)
+	to indicate the decimal point.<br><br></dd>
+
+</dl>
+
+<!-- NEED 10 -->
+<h2>Abbreviations</h2>
+
+<p>The following abbreviations are used throughout this
+manual:</p>
+
+<dl>
+
+	<dt>Gb</dt>
+	<dd>Gigabytes, or 1073741824 bytes<br><br></dd>
+
+	<dt>kb</dt>
+	<dd>Kilobytes, or 1024 bytes<br><br></dd>
+
+	<dt>Mb</dt>
+	<dd>Megabytes, or 1048576 bytes<br><br></dd>
+
+	<dt>UTF-8, UTF-16</dt>
+	<dd>Unicode Transformation Format, 8-bit or 16-bit<br><br></dd>
+
+	<dt>W3C</dt>
+	<dd>World Wide Web Consortium<br><br></dd>
+
+	<dt>XML</dt>
+	<dd>Extensible Markup Language<br><br></dd>
+
+</dl>
+
+<!-- NEED 12 -->
+<h2>Other References</h2>
+
+<dl>
+
+	<dt>The Unicode Standard, Version 4.0, Addison-Wesley,
+	ISBN 0-321-18578-1</dt>
+
+	<dd>The definition of the Unicode character set which is
+	used for XML.<br><br></dd>
+
+	<dt><a
+	href="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible
+	Markup Language (XML) 1.0 (Third Edition)</a></dt>
+
+	<dd>The XML specification from the World Wide Web
+	Consortium (W3C)<br><br></dd>
+
+</dl>
+
+<!-- NEED 6 -->
+<h2>Legal Stuff</h2>
+
+<p>The Mini-XML library is copyright 2003-2014 by Michael R Sweet. License terms
+are described in <a href="#LICENSE">Appendix A - Mini-XML License</a>.</p>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/intro.man b/src/mxml/mxml-2.9/doc/intro.man
new file mode 100644
index 0000000..55bf45a
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/intro.man
@@ -0,0 +1,173 @@
+.SH INCLUDE FILE
+#include <mxml.h>
+.SH LIBRARY
+\-lmxml
+.SH DESCRIPTION
+Mini-XML is a small XML parsing library that you can use to
+read XML and XML-like data files in your application without
+requiring large non-standard libraries.  Mini-XML only
+requires an ANSI C compatible compiler (GCC works, as do
+most vendors' ANSI C compilers) and a "make" program.
+.PP
+Mini-XML provides the following functionality:
+.IP \(bu 4
+Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and strings.
+.IP \(bu 4
+Data is stored in a linked-list tree structure,
+preserving the XML data hierarchy.
+.IP \(bu 4
+Supports arbitrary element names, attributes, and attribute
+values with no preset limits, just available memory.
+.IP \(bu 4
+Supports integer, real, opaque ("CDATA"), and text data types in
+"leaf" nodes.
+.IP \(bu 4
+Functions for creating, indexing, and managing trees of data.
+.IP \(bu 4
+"Find" and "walk" functions for easily locating and navigating
+trees of data.
+.PP
+Mini-XML doesn't do validation or other types of processing
+on the data based upon schema files or other sources of
+definition information, nor does it support character
+entities other than those required by the XML
+specification.
+.SH USING MINI-XML
+Mini-XML provides a single header file which you include:
+.nf
+
+    #include <mxml.h>
+.fi
+.PP
+Nodes are defined by the "mxml_node_t" structure; the "type"
+member defines the node type (element, integer, opaque,
+real, or text) which determines which value you want to look
+at in the "value" union.  New nodes can be created using the
+"mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()",
+"mxmlNewReal()", and "mxmlNewText()" functions.  Only
+elements can have child nodes, and the top node must be an
+element, usually "?xml".
+.PP
+You load an XML file using the "mxmlLoadFile()" function:
+.nf
+
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "r");
+    tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+    fclose(fp);
+.fi
+.PP
+Similarly, you save an XML file using the "mxmlSaveFile()"
+function:
+.nf
+
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "w");
+    mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+    fclose(fp);
+.fi
+.PP
+The "mxmlLoadString()", "mxmlSaveAllocString()", and
+"mxmlSaveString()" functions load XML node trees from and save
+XML node trees to strings:
+.nf
+
+    char buffer[8192];
+    char *ptr;
+    mxml_node_t *tree;
+
+    ...
+    tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
+
+    ...
+    mxmlSaveString(tree, buffer, sizeof(buffer),
+                   MXML_NO_CALLBACK);
+
+    ...
+    ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+.fi
+.PP
+You can find a named element/node using the "mxmlFindElement()"
+function:
+.nf
+
+    mxml_node_t *node = mxmlFindElement(tree, tree, "name",
+                                        "attr", "value",
+                                        MXML_DESCEND);
+.fi
+.PP
+The "name", "attr", and "value" arguments can be passed as
+NULL to act as wildcards, e.g.:
+.nf
+
+    /* Find the first "a" element */
+    node = mxmlFindElement(tree, tree, "a", NULL, NULL,
+                           MXML_DESCEND);
+
+    /* Find the first "a" element with "href" attribute */
+    node = mxmlFindElement(tree, tree, "a", "href", NULL,
+                           MXML_DESCEND);
+
+    /* Find the first "a" element with "href" to a URL */
+    node = mxmlFindElement(tree, tree, "a", "href",
+                           "http://www.easysw.com/~mike/mxml/",
+                           MXML_DESCEND);
+
+    /* Find the first element with a "src" attribute*/
+    node = mxmlFindElement(tree, tree, NULL, "src", NULL,
+                           MXML_DESCEND);
+
+    /* Find the first element with a "src" = "foo.jpg" */
+    node = mxmlFindElement(tree, tree, NULL, "src",
+                           "foo.jpg", MXML_DESCEND);
+.fi
+.PP
+You can also iterate with the same function:
+.nf
+
+    mxml_node_t *node;
+
+    for (node = mxmlFindElement(tree, tree, "name", NULL,
+                                NULL, MXML_DESCEND);
+         node != NULL;
+         node = mxmlFindElement(node, tree, "name", NULL,
+                                NULL, MXML_DESCEND))
+    {
+      ... do something ...
+    }
+.fi
+.PP
+To find the value of a specific node in the tree, use the "mxmlFindPath()"
+function:
+.nf
+
+    mxml_node_t *value = mxmlFindPath(tree, "path/to/*/foo/bar");
+.fi
+.PP
+The "mxmlGetInteger()", "mxmlGetOpaque()", "mxmlGetReal()", and "mxmlGetText()"
+functions retrieve the value from a node:
+.nf
+
+    mxml_node_t *node;
+
+    int intvalue = mxmlGetInteger(node);
+
+    const char *opaquevalue = mxmlGetOpaque(node);
+
+    double realvalue = mxmlGetReal(node);
+
+    int whitespacevalue;
+    const char *textvalue = mxmlGetText(node, &whitespacevalue);
+.fi
+.PP
+Finally, once you are done with the XML data, use the
+"mxmlDelete()" function to recursively free the memory that
+is used for a particular node or the entire tree:
+.nf
+
+    mxmlDelete(tree);
+.fi
diff --git a/src/mxml/mxml-2.9/doc/license.html b/src/mxml/mxml-2.9/doc/license.html
new file mode 100644
index 0000000..5a8ed3e
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/license.html
@@ -0,0 +1,594 @@
+<html>
+<body>
+
+<h1 align='right'><a name='LICENSE'><img src="A.gif" align="right"
+hspace="10" width="100" height="100" alt="A"></a>Mini-XML
+License</h1>
+
+<p>The Mini-XML library and included programs are provided under
+the terms of the GNU Library General Public License version 2
+(LGPL2) with the following exceptions:</p>
+
+<p><b>1.</b> Static linking of applications to the Mini-XML
+library does not constitute a derivative work and does
+not require the author to provide source code for the
+application, use the shared Mini-XML libraries, or link
+their applications against a user-supplied version of
+Mini-XML.</p>
+
+<p><i>If you link the application to a modified version
+of Mini-XML, then the changes to Mini-XML must be
+provided under the terms of the LGPL2 in sections 1, 2,
+and 4.</i></p>
+
+<p><b>2.</b> You do not have to provide a copy of the Mini-XML
+license with programs that are linked to the Mini-XML
+library, nor do you have to identify the Mini-XML license
+in your program or documentation as required by section 6
+of the LGPL2.</p>
+
+<p> </p>
+
+<p align=center><b>GNU LIBRARY GENERAL PUBLIC LICENSE</b></p>
+<p align='center'>Version 2, June 1991
+<br>Copyright (C) 1991 Free Software Foundation, Inc.
+<br>59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+<br>Everyone is permitted to copy and distribute verbatim copies of
+this license document, but changing it is not allowed.
+<br>[This is the first released version of the library GPL. It is
+numbered 2 because it goes with version 2 of the ordinary GPL.]</p>
+
+<p><b>Preamble</b></p>
+
+<p>The licenses for most software are designed to take away your freedom
+to share and change it. By contrast, the GNU General Public Licenses
+are intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.</p>
+
+<p>This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.</p>
+
+<p>When we speak of free software, we are referring to freedom,
+not price. Our General Public Licenses are designed to make sure
+that you have the freedom to distribute copies of free software
+(and charge for this service if you wish), that you receive
+source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that
+you know you can do these things.</p>
+
+<p>To protect your rights, we need to make restrictions that
+forbid anyone to deny you these rights or to ask you to
+surrender the rights. These restrictions translate to certain
+responsibilities for you if you distribute copies of the
+library, or if you modify it.</p>
+
+<p>For example, if you distribute copies of the library, whether
+gratis or for a fee, you must give the recipients all the rights
+that we gave you. You must make sure that they, too, receive or
+can get the source code. If you link a program with the library,
+you must provide complete object files to the recipients so that
+they can relink them with the library, after making changes to
+the library and recompiling it. And you must show them these
+terms so they know their rights.</p>
+
+<p>Our method of protecting your rights has two steps: (1)
+copyright the library, and (2) offer you this license which
+gives you legal permission to copy, distribute and/or modify the
+library.</p>
+
+<p>Also, for each distributor's protection, we want to make
+certain that everyone understands that there is no warranty for
+this free library. If the library is modified by someone else
+and passed on, we want its recipients to know that what they
+have is not the original version, so that any problems
+introduced by others will not reflect on the original authors'
+reputations.</p>
+
+<p>Finally, any free program is threatened constantly by
+software patents. We wish to avoid the danger that companies
+distributing free software will individually obtain patent
+licenses, thus in effect transforming the program into
+proprietary software. To prevent this, we have made it clear
+that any patent must be licensed for everyone's free use or not
+licensed at all.</p>
+
+<p>Most GNU software, including some libraries, is covered by
+the ordinary GNU General Public License, which was designed for
+utility programs. This license, the GNU Library General Public
+License, applies to certain designated libraries. This license
+is quite different from the ordinary one; be sure to read it in
+full, and don't assume that anything in it is the same as in the
+ordinary license.</p>
+
+<p>The reason we have a separate public license for some
+libraries is that they blur the distinction we usually make
+between modifying or adding to a program and simply using it.
+Linking a program with a library, without changing the library,
+is in some sense simply using the library, and is analogous to
+running a utility program or application program. However, in a
+textual and legal sense, the linked executable is a combined
+work, a derivative of the original library, and the ordinary
+General Public License treats it as such.</p>
+
+<p>Because of this blurred distinction, using the ordinary
+General Public License for libraries did not effectively promote
+software sharing, because most developers did not use the
+libraries. We concluded that weaker conditions might promote
+sharing better.</p>
+
+<p>However, unrestricted linking of non-free programs would
+deprive the users of those programs of all benefit from the free
+status of the libraries themselves. This Library General Public
+License is intended to permit developers of non-free programs to
+use free libraries, while preserving your freedom as a user of
+such programs to change the free libraries that are incorporated
+in them. (We have not seen how to achieve this as regards
+changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is
+that this will lead to faster development of free libraries.</p>
+
+<p>The precise terms and conditions for copying, distribution
+and modification follow. Pay close attention to the difference
+between a "work based on the libary" and a "work
+that uses the library". The former contains code derived
+from the library, while the latter only works together with the
+library.</p>
+
+<p>Note that it is possible for a library to be covered by the
+ordinary General Public License rather than by this special
+one.</p>
+
+<p align='center'><b>TERMS AND CONDITIONS FOR COPYING,
+DISTRIBUTION AND MODIFICATION</b></p>
+
+<p><strong>0.</strong> This License Agreement applies to any
+software library which contains a notice placed by the copyright
+holder or other authorized party saying it may be distributed
+under the terms of this Library General Public License (also
+called "this License"). Each licensee is addressed as
+"you".
+
+<p>A "library" means a collection of software
+functions and/or data prepared so as to be conveniently linked
+with application programs (which use some of those functions and
+data) to form executables.</p>
+
+<p>The "Library", below, refers to any such software
+library or work which has been distributed under these terms. A
+"work based on the Library" means either the Library
+or any derivative work under copyright law: that is to say, a
+work containing the Library or a portion of it, either verbatim
+or with modifications and/or translated straightforwardly into
+another language. (Hereinafter, translation is included without
+limitation in the term "modification".)</p>
+
+<p>"Source code" for a work means the preferred form
+of the work for making modifications to it. For a library,
+complete source code means all the source code for all modules
+it contains, plus any associated interface definition files,
+plus the scripts used to control compilation and installation of
+the library.</p>
+
+<p>Activities other than copying, distribution and modification
+are not covered by this License; they are outside its scope. The
+act of running a program using the Library is not restricted,
+and output from such a program is covered only if its contents
+constitute a work based on the Library (independent of the use
+of the Library in a tool for writing it). Whether that is true
+depends on what the Library does and what the program that uses
+the Library does.</p>
+
+<p><strong>1.</strong> You may copy and distribute verbatim
+copies of the Library's complete source code as you receive it,
+in any medium, provided that you conspicuously and appropriately
+publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer
+to this License and to the absence of any warranty; and
+distribute a copy of this License along with the Library.</p>
+
+<p>You may charge a fee for the physical act of transferring a
+copy, and you may at your option offer warranty protection in
+exchange for a fee.</p>
+
+<p><strong>2.</strong> You may modify your copy or copies of the
+Library or any portion of it, thus forming a work based on the
+Library, and copy and distribute such modifications or work
+under the terms of Section 1 above, provided that you also meet
+all of these conditions:</p>
+
+<ul>
+
+	<p><strong>a)</strong> The modified work must itself be
+	a software library.
+
+	<p><strong>b)</strong> You must cause the files modified
+	to carry prominent notices stating that you changed the
+	files and the date of any change.</p>
+
+	<p><strong>c)</strong> You must cause the whole of the
+	work to be licensed at no charge to all third parties
+	under the terms of this License.</p>
+
+	<p><strong>d)</strong> If a facility in the modified
+	Library refers to a function or a table of data to be
+	supplied by an application program that uses the
+	facility, other than as an argument passed when the
+	facility is invoked, then you must make a good faith
+	effort to ensure that, in the event an application does
+	not supply such function or table, the facility still
+	operates, and performs whatever part of its purpose
+	remains meaningful.</p>
+
+	<p>(For example, a function in a library to compute
+	square roots has a purpose that is entirely well-defined
+	independent of the application. Therefore, Subsection 2d
+	requires that any application-supplied function or table
+	used by this function must be optional: if the
+	application does not supply it, the square root function
+	must still compute square roots.)</p>
+
+</ul>
+
+<p>These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the
+Library, and can be reasonably considered independent and
+separate works in themselves, then this License, and its terms,
+do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as
+part of a whole which is a work based on the Library, the
+distribution of the whole must be on the terms of this License,
+whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote
+it.</p>
+
+<p>Thus, it is not the intent of this section to claim rights or
+contest your rights to work written entirely by you; rather, the
+intent is to exercise the right to control the distribution of
+derivative or collective works based on the Library.</p>
+
+<p>In addition, mere aggregation of another work not based on
+the Library with the Library (or with a work based on the
+Library) on a volume of a storage or distribution medium does
+not bring the other work under the scope of this License.</p>
+
+<p><strong>3.</strong> You may opt to apply the terms of the
+ordinary GNU General Public License instead of this License to a
+given copy of the Library. To do this, you must alter all the
+notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to
+this License. (If a newer version than version 2 of the ordinary
+GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change
+in these notices.</p>
+
+<p>Once this change is made in a given copy, it is irreversible
+for that copy, so the ordinary GNU General Public License
+applies to all subsequent copies and derivative works made from
+that copy.</p>
+
+<p>This option is useful when you wish to copy part of the code
+of the Library into a program that is not a library.</p>
+
+<p><strong>4.</strong> You may copy and distribute the Library
+(or a portion or derivative of it, under Section 2) in object
+code or executable form under the terms of Sections 1 and 2
+above provided that you accompany it with the complete
+corresponding machine-readable source code, which must be
+distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.</p>
+
+<p>If distribution of object code is made by offering access to
+copy from a designated place, then offering equivalent access to
+copy the source code from the same place satisfies the
+requirement to distribute the source code, even though third
+parties are not compelled to copy the source along with the
+object code.</p>
+
+<p><strong>5.</strong> A program that contains no derivative of
+any portion of the Library, but is designed to work with the
+Library by being compiled or linked with it, is called a
+"work that uses the Library". Such a work, in
+isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.</p>
+
+<p>However, linking a "work that uses the Library"
+with the Library creates an executable that is a derivative of
+the Library (because it contains portions of the Library),
+rather than a "work that uses the library". The
+executable is therefore covered by this License. Section 6
+states terms for distribution of such executables.</p>
+
+<p>When a "work that uses the Library" uses material
+from a header file that is part of the Library, the object code
+for the work may be a derivative work of the Library even though
+the source code is not. Whether this is true is especially
+significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true
+is not precisely defined by law.</p>
+
+<p>If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small
+inline functions (ten lines or less in length), then the use of
+the object file is unrestricted, regardless of whether it is
+legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section
+6.)</p>
+
+<p>Otherwise, if the work is a derivative of the Library, you
+may distribute the object code for the work under the terms of
+Section 6. Any executables containing that work also fall under
+Section 6, whether or not they are linked directly with the
+Library itself.</p>
+
+<p><strong>6.</strong> As an exception to the Sections above,
+you may also compile or link a "work that uses the
+Library" with the Library to produce a work containing
+portions of the Library, and distribute that work under terms of
+your choice, provided that the terms permit modification of the
+work for the customer's own use and reverse engineering for
+debugging such modifications.</p>
+
+<p>You must give prominent notice with each copy of the work
+that the Library is used in it and that the Library and its use
+are covered by this License. You must supply a copy of this
+License. If the work during execution displays copyright
+notices, you must include the copyright notice for the Library
+among them, as well as a reference directing the user to the
+copy of this License. Also, you must do one of these things:</p>
+
+<ul>
+
+	<strong>a)</strong> Accompany the work with the complete
+	corresponding machine-readable source code for the
+	Library including whatever changes were used in the work
+	(which must be distributed under Sections 1 and 2
+	above); and, if the work is an executable linked with
+	the Library, with the complete machine-readable
+	"work that uses the Library", as object code
+	and/or source code, so that the user can modify the
+	Library and then relink to produce a modified executable
+	containing the modified Library. (It is understood that
+	the user who changes the contents of definitions files
+	in the Library will not necessarily be able to recompile
+	the application to use the modified definitions.)
+
+	<p><strong>b)</strong> Accompany the work with a written
+	offer, valid for at least three years, to give the same
+	user the materials specified in Subsection 6a, above,
+	for a charge no more than the cost of performing this
+	distribution.</p>
+
+	<p><strong>c)</strong> If distribution of the work is
+	made by offering access to copy from a designated place,
+	offer equivalent access to copy the above specified
+	materials from the same place.</p>
+
+	<p><strong>d)</strong> Verify that the user has already
+	received a copy of these materials or that you have
+	already sent this user a copy.</p>
+
+</ul>
+
+<p>For an executable, the required form of the "work that
+uses the Library" must include any data and utility
+programs needed for reproducing the executable from it. However,
+as a special exception, the source code distributed need not
+include anything that is normally distributed (in either source
+or binary form) with the major components (compiler, kernel, and
+so on) of the operating system on which the executable runs,
+unless that component itself accompanies the executable.</p>
+
+<p>It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you
+cannot use both them and the Library together in an executable
+that you distribute.</p>
+
+<p><strong>7.</strong> You may place library facilities that are
+a work based on the Library side-by-side in a single library
+together with other library facilities not covered by this
+License, and distribute such a combined library, provided that
+the separate distribution of the work based on the Library and
+of the other library facilities is otherwise permitted, and
+provided that you do these two things:</p>
+
+<ul>
+
+	<strong>a)</strong> Accompany the combined library with
+	a copy of the same work based on the Library, uncombined
+	with any other library facilities. This must be
+	distributed under the terms of the Sections above.
+
+	<p><strong>b)</strong> Give prominent notice with the
+	combined library of the fact that part of it is a work
+	based on the Library, and explaining where to find the
+	accompanying uncombined form of the same work.</p>
+
+</ul>
+
+<p><strong>8.</strong> You may not copy, modify, sublicense,
+link with, or distribute the Library except as expressly
+provided under this License. Any attempt otherwise to copy,
+modify, sublicense, link with, or distribute the Library is
+void, and will automatically terminate your rights under this
+License. However, parties who have received copies, or rights,
+from you under this License will not have their licenses
+terminated so long as such parties remain in full
+compliance.</p>
+
+<p><strong>9.</strong> You are not required to accept this
+License, since you have not signed it. However, nothing else
+grants you permission to modify or distribute the Library or its
+derivative works. These actions are prohibited by law if you do
+not accept this License. Therefore, by modifying or distributing
+the Library (or any work based on the Library), you indicate
+your acceptance of this License to do so, and all its terms and
+conditions for copying, distributing or modifying the Library or
+works based on it.</p>
+
+<p><strong>10.</strong> Each time you redistribute the Library
+(or any work based on the Library), the recipient automatically
+receives a license from the original licensor to copy,
+distribute, link with or modify the Library subject to these
+terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted
+herein. You are not responsible for enforcing compliance by
+third parties to this License.</p>
+
+<p><strong>11.</strong> If, as a consequence of a court judgment
+or allegation of patent infringement or for any other reason
+(not limited to patent issues), conditions are imposed on you
+(whether by court order, agreement or otherwise) that contradict
+the conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as to
+satisfy simultaneously your obligations under this License and
+any other pertinent obligations, then as a consequence you may
+not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the
+Library by all those who receive copies directly or indirectly
+through you, then the only way you could satisfy both it and
+this License would be to refrain entirely from distribution of
+the Library.</p>
+
+<p>If any portion of this section is held invalid or
+unenforceable under any particular circumstance, the balance of
+the section is intended to apply, and the section as a whole is
+intended to apply in other circumstances.</p>
+
+<p>It is not the purpose of this section to induce you to
+infringe any patents or other property right claims or to
+contest validity of any such claims; this section has the sole
+purpose of protecting the integrity of the free software
+distribution system which is implemented by public license
+practices. Many people have made generous contributions to the
+wide range of software distributed through that system in
+reliance on consistent application of that system; it is up to
+the author/donor to decide if he or she is willing to distribute
+software through any other system and a licensee cannot impose
+that choice.</p>
+
+<p>This section is intended to make thoroughly clear what is
+believed to be a consequence of the rest of this License.</p>
+
+<p><strong>12.</strong> If the distribution and/or use of the
+Library is restricted in certain countries either by patents or
+by copyrighted interfaces, the original copyright holder who
+places the Library under this License may add an explicit
+geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not
+thus excluded. In such case, this License incorporates the
+limitation as if written in the body of this License.</p>
+
+<p><strong>13.</strong> The Free Software Foundation may publish
+revised and/or new versions of the Library General Public
+License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to
+address new problems or concerns.</p>
+
+<p>Each version is given a distinguishing version number. If the
+Library specifies a version number of this License which applies
+to it and "any later version", you have the option of
+following the terms and conditions either of that version or of
+any later version published by the Free Software Foundation. If
+the Library does not specify a license version number, you may
+choose any version ever published by the Free Software
+Foundation.</p>
+
+<p><strong>14.</strong> If you wish to incorporate parts of the
+Library into other free programs whose distribution conditions
+are incompatible with these, write to the author to ask for
+permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we
+sometimes make exceptions for this. Our decision will be guided
+by the two goals of preserving the free status of all
+derivatives of our free software and of promoting the sharing
+and reuse of software generally.</p>
+
+<p align='center'><b>NO WARRANTY</b></p>
+
+<p><strong>15.</strong> BECAUSE THE LIBRARY IS LICENSED FREE OF
+CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT
+PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN
+WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
+THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU
+ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.</p>
+
+<p><strong>16.</strong> IN NO EVENT UNLESS REQUIRED BY
+APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT
+HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p align='center'><b>END OF TERMS AND CONDITIONS</b></p>
+
+<p><b>How to Apply These Terms to Your New Libraries</b></p>
+
+<p>If you develop a new library, and you want it to be of the
+greatest possible use to the public, we recommend making it free
+software that everyone can redistribute and change.  You can do so
+by permitting redistribution under these terms (or, alternatively,
+under the terms of the ordinary General Public License).
+
+<p>To apply these terms, attach the following notices to the
+library.  It is safest to attach them to the start of each source
+file to most effectively convey the exclusion of warranty; and each
+file should have at least the "copyright" line and a pointer to
+where the full notice is found.
+
+<ul>
+
+<p><var>one line to give the library's name and an idea of what it
+does.</var><br>
+Copyright (C) <var>year</var>  <var>name of author</var>
+
+<p>This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License
+as published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+<p>This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+<p>You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 
+02111-1307  USA
+
+</ul>
+
+<p>Also add information on how to contact you by electronic and paper mail.
+
+<p>You should also get your employer (if you work as a programmer)
+or your school, if any, to sign a "copyright disclaimer" for the
+library, if necessary.  Here is a sample; alter the names:
+
+<ul>
+
+<p>Yoyodyne, Inc., hereby disclaims all copyright interest in the
+library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+<p><var>signature of Ty Coon</var>, 1 April 1990 Ty Coon, President
+of Vice
+
+</ul>
+
+<p>That's all there is to it!
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/logo.gif b/src/mxml/mxml-2.9/doc/logo.gif
new file mode 100644
index 0000000..28731f0
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/logo.gif differ
diff --git a/src/mxml/mxml-2.9/doc/logo.xcf.gz b/src/mxml/mxml-2.9/doc/logo.xcf.gz
new file mode 100644
index 0000000..4fb6eeb
Binary files /dev/null and b/src/mxml/mxml-2.9/doc/logo.xcf.gz differ
diff --git a/src/mxml/mxml-2.9/doc/makedocs.sh b/src/mxml/mxml-2.9/doc/makedocs.sh
new file mode 100755
index 0000000..551b84b
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/makedocs.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# "$Id: makedocs.sh 408 2010-09-19 05:26:46Z mike $"
+#
+# Script to make documentation...
+#
+# Copyright 2003-2010 by Michael R Sweet.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Michael R Sweet and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "COPYING"
+# which should have been included with this file.  If this file is
+# missing or damaged, see the license at:
+#
+#     http://www.minixml.org/
+#
+
+htmldoc --verbose --path "hires;." --batch mxml.book -f mxml.pdf
+
+htmldoc --verbose --batch mxml.book --no-title -f mxml.html
+
+rm -rf mxml.d
+mkdir mxml.d
+htmldoc --verbose --batch mxml.book --no-title -t html -d mxml.d
+
+#
+# End of "$Id: makedocs.sh 408 2010-09-19 05:26:46Z mike $".
+#
diff --git a/src/mxml/mxml-2.9/doc/mxml.book b/src/mxml/mxml-2.9/doc/mxml.book
new file mode 100644
index 0000000..59448ea
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/mxml.book
@@ -0,0 +1,11 @@
+#HTMLDOC 1.8.27.1
+-t pdf14 -f "mxml.pdf" --book --toclevels 3 --no-numbered --toctitle "Table of Contents" --title --titleimage "title.html" --linkstyle plain --size 4.25x6.875in --left 0.750in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=95 --fontsize 9.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Helvetica --headfootsize 8.0 --headfo [...]
+intro.html
+install.html
+basics.html
+advanced.html
+mxmldoc.html
+license.html
+relnotes.html
+reference.html
+schema.html
diff --git a/src/mxml/mxml-2.9/doc/mxml.html b/src/mxml/mxml-2.9/doc/mxml.html
new file mode 100644
index 0000000..551a944
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/mxml.html
@@ -0,0 +1,4239 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+<TITLE>Mini-XML Programmers Manual, Version 2.9</TITLE>
+<META NAME="author" CONTENT="Michael R. Sweet">
+<META NAME="copyright" CONTENT="Copyright 2003-2014">
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
+<STYLE TYPE="text/css"><!--
+BODY { font-family: sans-serif }
+H1 { font-family: sans-serif }
+H2 { font-family: sans-serif }
+H3 { font-family: sans-serif }
+H4 { font-family: sans-serif }
+H5 { font-family: sans-serif }
+H6 { font-family: sans-serif }
+SUB { font-size: smaller }
+SUP { font-size: smaller }
+PRE { font-family: monospace }
+A { text-decoration: none }
+--></STYLE>
+</HEAD>
+<BODY>
+<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
+<BR>
+<BR><B><A HREF="#INTRO">Introduction</A></B>
+<UL>
+<LI><A HREF="#1_1">Organization of This Document</A></LI>
+<LI><A HREF="#1_2">Notation Conventions</A></LI>
+<LI><A HREF="#1_3">Abbreviations</A></LI>
+<LI><A HREF="#1_4">Other References</A></LI>
+<LI><A HREF="#1_5">Legal Stuff</A></LI>
+</UL>
+<B><A HREF="#INSTALL">Building, Installing, and Packaging Mini-XML</A></B>
+<UL>
+<LI><A HREF="#2_1">Compiling Mini-XML</A>
+<UL>
+<LI><A HREF="#2_1_1">Compiling with Visual C++</A></LI>
+<LI><A HREF="#2_1_2">Compiling with Command-Line Tools</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#2_2">Installing Mini-XML</A></LI>
+<LI><A HREF="#2_3">Creating Mini-XML Packages</A></LI>
+</UL>
+<B><A HREF="#BASICS">Getting Started with Mini-XML</A></B>
+<UL>
+<LI><A HREF="#3_1">The Basics</A></LI>
+<LI><A HREF="#3_2">Nodes</A>
+<UL>
+<LI><A HREF="#3_2_1">CDATA Nodes</A></LI>
+<LI><A HREF="#3_2_2">Custom Nodes</A></LI>
+<LI><A HREF="#3_2_3">Comment Nodes</A></LI>
+<LI><A HREF="#3_2_4">Element Nodes</A></LI>
+<LI><A HREF="#3_2_5">Integer Nodes</A></LI>
+<LI><A HREF="#3_2_6">Opaque Nodes</A></LI>
+<LI><A HREF="#3_2_7">Text Nodes</A></LI>
+<LI><A HREF="#3_2_8">Processing Instruction Nodes</A></LI>
+<LI><A HREF="#3_2_9">Real Number Nodes</A></LI>
+<LI><A HREF="#3_2_10">XML Declaration Nodes</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#3_3">Creating XML Documents</A></LI>
+<LI><A HREF="#3_4">Loading XML</A></LI>
+<LI><A HREF="#3_5">Saving XML</A>
+<UL>
+<LI><A HREF="#3_5_1">Controlling Line Wrapping</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#3_6">Memory Management</A></LI>
+<LI><A HREF="#3_7">Finding and Iterating Nodes</A></LI>
+<LI><A HREF="#3_8">Finding Specific Nodes</A></LI>
+</UL>
+<B><A HREF="#ADVANCED">More Mini-XML Programming Techniques</A></B>
+<UL>
+<LI><A HREF="#LOAD_CALLBACKS">Load Callbacks</A></LI>
+<LI><A HREF="#SAVE_CALLBACKS">Save Callbacks</A></LI>
+<LI><A HREF="#4_3">Custom Data Types</A></LI>
+<LI><A HREF="#4_4">Changing Node Values</A></LI>
+<LI><A HREF="#4_5">Formatted Text</A></LI>
+<LI><A HREF="#4_6">Indexing</A></LI>
+<LI><A HREF="#4_7">SAX (Stream) Loading of Documents</A></LI>
+</UL>
+<B><A HREF="#MXMLDOC">Using the mxmldoc Utility</A></B>
+<UL>
+<LI><A HREF="#5_1">The Basics</A>
+<UL>
+<LI><A HREF="#5_1_1">Creating Man Pages</A></LI>
+<LI><A HREF="#5_1_2">Creating Xcode Documentation Sets</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#5_2">Commenting Your Code</A></LI>
+<LI><A HREF="#5_3">Titles, Sections, and Introductions</A></LI>
+</UL>
+<B><A HREF="#LICENSE">Mini-XML License</A></B>
+<BR>
+<BR><B><A HREF="#RELNOTES">Release Notes</A></B>
+<UL></UL>
+<B><A HREF="#REFERENCE">Library Reference</A></B>
+<UL>
+<LI><A HREF="#8_1">Contents</A></LI>
+<LI><A HREF="#FUNCTIONS">Functions</A>
+<UL>
+<LI><A HREF="#mxmlAdd">mxmlAdd</A></LI>
+<LI><A HREF="#mxmlDelete">mxmlDelete</A></LI>
+<LI><A HREF="#8_2_3">mxmlElementDeleteAttr</A></LI>
+<LI><A HREF="#mxmlElementGetAttr">mxmlElementGetAttr</A></LI>
+<LI><A HREF="#mxmlElementSetAttr">mxmlElementSetAttr</A></LI>
+<LI><A HREF="#8_2_6">mxmlElementSetAttrf</A></LI>
+<LI><A HREF="#mxmlEntityAddCallback">mxmlEntityAddCallback</A></LI>
+<LI><A HREF="#mxmlEntityGetName">mxmlEntityGetName</A></LI>
+<LI><A HREF="#mxmlEntityGetValue">mxmlEntityGetValue</A></LI>
+<LI><A HREF="#mxmlEntityRemoveCallback">mxmlEntityRemoveCallback</A></LI>
+<LI><A HREF="#mxmlFindElement">mxmlFindElement</A></LI>
+<LI><A HREF="#8_2_12">mxmlFindPath</A></LI>
+<LI><A HREF="#8_2_13">mxmlGetCDATA</A></LI>
+<LI><A HREF="#8_2_14">mxmlGetCustom</A></LI>
+<LI><A HREF="#8_2_15">mxmlGetElement</A></LI>
+<LI><A HREF="#8_2_16">mxmlGetFirstChild</A></LI>
+<LI><A HREF="#8_2_17">mxmlGetInteger</A></LI>
+<LI><A HREF="#8_2_18">mxmlGetLastChild</A></LI>
+<LI><A HREF="#mxmlGetNextSibling">mxmlGetNextSibling</A></LI>
+<LI><A HREF="#8_2_20">mxmlGetOpaque</A></LI>
+<LI><A HREF="#8_2_21">mxmlGetParent</A></LI>
+<LI><A HREF="#8_2_22">mxmlGetPrevSibling</A></LI>
+<LI><A HREF="#8_2_23">mxmlGetReal</A></LI>
+<LI><A HREF="#8_2_24">mxmlGetRefCount</A></LI>
+<LI><A HREF="#8_2_25">mxmlGetText</A></LI>
+<LI><A HREF="#8_2_26">mxmlGetType</A></LI>
+<LI><A HREF="#8_2_27">mxmlGetUserData</A></LI>
+<LI><A HREF="#mxmlIndexDelete">mxmlIndexDelete</A></LI>
+<LI><A HREF="#mxmlIndexEnum">mxmlIndexEnum</A></LI>
+<LI><A HREF="#mxmlIndexFind">mxmlIndexFind</A></LI>
+<LI><A HREF="#8_2_31">mxmlIndexGetCount</A></LI>
+<LI><A HREF="#mxmlIndexNew">mxmlIndexNew</A></LI>
+<LI><A HREF="#mxmlIndexReset">mxmlIndexReset</A></LI>
+<LI><A HREF="#mxmlLoadFd">mxmlLoadFd</A></LI>
+<LI><A HREF="#mxmlLoadFile">mxmlLoadFile</A></LI>
+<LI><A HREF="#mxmlLoadString">mxmlLoadString</A></LI>
+<LI><A HREF="#8_2_37">mxmlNewCDATA</A></LI>
+<LI><A HREF="#8_2_38">mxmlNewCustom</A></LI>
+<LI><A HREF="#mxmlNewElement">mxmlNewElement</A></LI>
+<LI><A HREF="#mxmlNewInteger">mxmlNewInteger</A></LI>
+<LI><A HREF="#mxmlNewOpaque">mxmlNewOpaque</A></LI>
+<LI><A HREF="#mxmlNewReal">mxmlNewReal</A></LI>
+<LI><A HREF="#mxmlNewText">mxmlNewText</A></LI>
+<LI><A HREF="#mxmlNewTextf">mxmlNewTextf</A></LI>
+<LI><A HREF="#8_2_45">mxmlNewXML</A></LI>
+<LI><A HREF="#8_2_46">mxmlRelease</A></LI>
+<LI><A HREF="#mxmlRemove">mxmlRemove</A></LI>
+<LI><A HREF="#8_2_48">mxmlRetain</A></LI>
+<LI><A HREF="#8_2_49">mxmlSAXLoadFd</A></LI>
+<LI><A HREF="#8_2_50">mxmlSAXLoadFile</A></LI>
+<LI><A HREF="#8_2_51">mxmlSAXLoadString</A></LI>
+<LI><A HREF="#mxmlSaveAllocString">mxmlSaveAllocString</A></LI>
+<LI><A HREF="#mxmlSaveFd">mxmlSaveFd</A></LI>
+<LI><A HREF="#mxmlSaveFile">mxmlSaveFile</A></LI>
+<LI><A HREF="#mxmlSaveString">mxmlSaveString</A></LI>
+<LI><A HREF="#8_2_56">mxmlSetCDATA</A></LI>
+<LI><A HREF="#8_2_57">mxmlSetCustom</A></LI>
+<LI><A HREF="#mxmlSetCustomHandlers">mxmlSetCustomHandlers</A></LI>
+<LI><A HREF="#mxmlSetElement">mxmlSetElement</A></LI>
+<LI><A HREF="#mxmlSetErrorCallback">mxmlSetErrorCallback</A></LI>
+<LI><A HREF="#mxmlSetInteger">mxmlSetInteger</A></LI>
+<LI><A HREF="#mxmlSetOpaque">mxmlSetOpaque</A></LI>
+<LI><A HREF="#mxmlSetReal">mxmlSetReal</A></LI>
+<LI><A HREF="#mxmlSetText">mxmlSetText</A></LI>
+<LI><A HREF="#mxmlSetTextf">mxmlSetTextf</A></LI>
+<LI><A HREF="#8_2_66">mxmlSetUserData</A></LI>
+<LI><A HREF="#8_2_67">mxmlSetWrapMargin</A></LI>
+<LI><A HREF="#mxmlWalkNext">mxmlWalkNext</A></LI>
+<LI><A HREF="#mxmlWalkPrev">mxmlWalkPrev</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#TYPES">Data Types</A>
+<UL>
+<LI><A HREF="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</A></LI>
+<LI><A HREF="#mxml_custom_load_cb_t">mxml_custom_load_cb_t</A></LI>
+<LI><A HREF="#mxml_custom_save_cb_t">mxml_custom_save_cb_t</A></LI>
+<LI><A HREF="#mxml_entity_cb_t">mxml_entity_cb_t</A></LI>
+<LI><A HREF="#mxml_error_cb_t">mxml_error_cb_t</A></LI>
+<LI><A HREF="#mxml_index_t">mxml_index_t</A></LI>
+<LI><A HREF="#mxml_load_cb_t">mxml_load_cb_t</A></LI>
+<LI><A HREF="#mxml_node_t">mxml_node_t</A></LI>
+<LI><A HREF="#mxml_save_cb_t">mxml_save_cb_t</A></LI>
+<LI><A HREF="#mxml_sax_cb_t">mxml_sax_cb_t</A></LI>
+<LI><A HREF="#mxml_sax_event_t">mxml_sax_event_t</A></LI>
+<LI><A HREF="#mxml_type_t">mxml_type_t</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#ENUMERATIONS">Constants</A>
+<UL>
+<LI><A HREF="#mxml_sax_event_e">mxml_sax_event_e</A></LI>
+<LI><A HREF="#mxml_type_e">mxml_type_e</A></LI>
+</UL>
+</LI>
+</UL>
+<B><A HREF="#SCHEMA">XML Schema</A></B>
+<UL></UL>
+<HR NOSHADE>
+<H1 align="right"><A name="INTRO"><IMG align="right" alt="0" height="100"
+hspace="10" src="0.gif" width="100"></A>Introduction</H1>
+<P>This programmers manual describes Mini-XML version 2.9, a small XML
+ parsing library that you can use to read and write XML data files in
+ your C and C++ applications.</P>
+<P>Mini-XML was initially developed for the <A href="http://gutenprint.sf.net/">
+Gutenprint</A> project to replace the rather large and unwieldy <TT>
+libxml2</TT> library with something substantially smaller and
+ easier-to-use. It all began one morning in June of 2003 when Robert
+ posted the following sentence to the developer's list:</P>
+<BLOCKQUOTE><EM>It's bad enough that we require libxml2, but rolling our
+ own XML parser is a bit more than we can handle.</EM></BLOCKQUOTE>
+<P>I then replied with:</P>
+<BLOCKQUOTE><EM>Given the limited scope of what you use in XML, it
+ should be trivial to code a mini-XML API in a few hundred lines of
+ code.</EM></BLOCKQUOTE>
+<P>I took my own challenge and coded furiously for two days to produced
+ the initial public release of Mini-XML, total lines of code: 696.
+ Robert promptly integrated Mini-XML into Gutenprint and removed
+ libxml2.</P>
+<P>Thanks to lots of feedback and support from various developers,
+ Mini-XML has evolved since then to provide a more complete XML
+ implementation and now stands at a whopping 3,792 lines of code,
+ compared to 140,410 lines of code for libxml2 version 2.9.1.</P>
+<P>Aside from Gutenprint, Mini-XML is used for the following
+ projects/software applications:</P>
+<UL>
+<LI><A href="https://www.cups.org/">CUPS</A></LI>
+<LI><A href="http://zynaddsubfx.sourceforge.net">ZynAddSubFX</A></LI>
+</UL>
+<P>Please file a bug on msweet.org if you would like your project added
+ or removed from this list, or if you have any comments/quotes you would
+ like me to publish about your experiences with Mini-XML.</P>
+
+<!-- NEED 1in -->
+<H2><A NAME="1_1">Organization of This Document</A></H2>
+<P>This manual is organized into the following chapters and appendices:</P>
+<UL>
+<LI>Chapter 1, "<A href="#INSTALL">Building, Installing, and Packaging
+ Mini-XML</A>", provides compilation, installation, and packaging
+ instructions for Mini-XML.</LI>
+<LI>Chapter 2, "<A href="#BASICS">Getting Started with Mini-XML</A>",
+ shows how to use the Mini-XML library in your programs.</LI>
+<LI>Chapter 3, "<A href="#ADVANCED">More Mini-XML Programming Techniques</A>
+", shows additional ways to use the Mini-XML library.</LI>
+<LI>Chapter 4, "<A href="#MXMLDOC">Using the mxmldoc Utility</A>",
+ describes how to use the <TT>mxmldoc(1)</TT> program to generate
+ software documentation.</LI>
+<LI>Appendix A, "<A href="#LICENSE">Mini-XML License</A>", provides the
+ terms and conditions for using and distributing Mini-XML.</LI>
+<LI>Appendix B, "<A href="#RELNOTES">Release Notes</A>", lists the
+ changes in each release of Mini-XML.</LI>
+<LI>Appendix C, "<A href="#REFERENCE">Library Reference</A>", contains a
+ complete reference for Mini-XML, generated by <TT>mxmldoc</TT>.</LI>
+<LI>Appendix D, "<A href="#SCHEMA">XML Schema</A>", shows the XML schema
+ used for the XML files produced by <TT>mxmldoc</TT>.</LI>
+</UL>
+
+<!-- NEED 10 -->
+<H2><A NAME="1_2">Notation Conventions</A></H2>
+<P>Various font and syntax conventions are used in this guide. Examples
+ and their meanings and uses are explained below:</P>
+<DL>
+<DT><CODE>mxmldoc</CODE>
+<BR> <CODE>mxmldoc(1)</CODE></DT>
+<DD>The names of commands; the first mention of a command or function in
+ a chapter is followed by a manual page section number.
+<BR>
+<BR></DD>
+<DT><VAR>/var</VAR>
+<BR><VAR> /etc/hosts</VAR></DT>
+<DD>File and directory names.
+<BR>
+<BR></DD>
+<DT><TT>Request ID is Printer-123</TT></DT>
+<DD>Screen output.
+<BR>
+<BR></DD>
+<DT><KBD>lp -d printer filename ENTER</KBD></DT>
+<DD>Literal user input; special keys like <KBD>ENTER</KBD> are in ALL
+ CAPS.
+<BR>
+<BR></DD>
+<DT>12.3</DT>
+<DD>Numbers in the text are written using the period (.) to indicate the
+ decimal point.
+<BR>
+<BR></DD>
+</DL>
+
+<!-- NEED 10 -->
+<H2><A NAME="1_3">Abbreviations</A></H2>
+<P>The following abbreviations are used throughout this manual:</P>
+<DL>
+<DT>Gb</DT>
+<DD>Gigabytes, or 1073741824 bytes
+<BR>
+<BR></DD>
+<DT>kb</DT>
+<DD>Kilobytes, or 1024 bytes
+<BR>
+<BR></DD>
+<DT>Mb</DT>
+<DD>Megabytes, or 1048576 bytes
+<BR>
+<BR></DD>
+<DT>UTF-8, UTF-16</DT>
+<DD>Unicode Transformation Format, 8-bit or 16-bit
+<BR>
+<BR></DD>
+<DT>W3C</DT>
+<DD>World Wide Web Consortium
+<BR>
+<BR></DD>
+<DT>XML</DT>
+<DD>Extensible Markup Language
+<BR>
+<BR></DD>
+</DL>
+
+<!-- NEED 12 -->
+<H2><A NAME="1_4">Other References</A></H2>
+<DL>
+<DT>The Unicode Standard, Version 4.0, Addison-Wesley, ISBN
+ 0-321-18578-1</DT>
+<DD>The definition of the Unicode character set which is used for XML.
+<BR>
+<BR></DD>
+<DT><A href="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible
+ Markup Language (XML) 1.0 (Third Edition)</A></DT>
+<DD>The XML specification from the World Wide Web Consortium (W3C)
+<BR>
+<BR></DD>
+</DL>
+
+<!-- NEED 6 -->
+<H2><A NAME="1_5">Legal Stuff</A></H2>
+<P>The Mini-XML library is copyright 2003-2014 by Michael R Sweet.
+ License terms are described in <A href="#LICENSE">Appendix A - Mini-XML
+ License</A>.</P>
+<HR NOSHADE>
+<H1 align="right"><A name="INSTALL"><IMG align="right" alt="1" height="100"
+hspace="10" src="1.gif" width="100"></A>Building, Installing, and
+ Packaging Mini-XML</H1>
+<P>This chapter describes how to build, install, and package Mini-XML on
+ your system from the source archive. You will need an ANSI/ISO-C
+ compatible compiler to build Mini-XML - GCC works, as do most vendors'
+ C compilers. If you are building Mini-XML on Windows, we recommend
+ using the Visual C++ environment with the supplied solution file. For
+ other operating systems, you'll need a POSIX-compatible shell and <TT>
+make</TT> program in addition to the C compiler.</P>
+<H2><A NAME="2_1">Compiling Mini-XML</A></H2>
+<P>Mini-XML comes with both an autoconf-based configure script and a
+ Visual C++ solution that can be used to compile the library and
+ associated tools.</P>
+<H3><A NAME="2_1_1">Compiling with Visual C++</A></H3>
+<P>Open the<VAR> mxml.sln</VAR> solution in the<VAR> vcnet</VAR> folder.
+ Choose the desired build configuration, "Debug" (the default) or
+ "Release", and then choose<VAR> Build Solution</VAR> from the<VAR>
+ Build</VAR> menu.</P>
+<H3><A NAME="2_1_2">Compiling with Command-Line Tools</A></H3>
+<P>Type the following command to configure the Mini-XML source code for
+ your system:</P>
+<PRE>
+    <KBD>./configure ENTER</KBD>
+</PRE>
+<P>The default install prefix is<VAR> /usr/local</VAR>, which can be
+ overridden using the <KBD>--prefix</KBD> option:</P>
+<PRE>
+    <KBD>./configure --prefix=/foo ENTER</KBD>
+</PRE>
+<P>Other configure options can be found using the <KBD>--help</KBD>
+ option:</P>
+<PRE>
+    <KBD>./configure --help ENTER</KBD>
+</PRE>
+<P>Once you have configured the software, use the <TT>make(1)</TT>
+ program to do the build and run the test program to verify that things
+ are working, as follows:</P>
+<PRE>
+    <KBD>make ENTER</KBD>
+</PRE>
+<H2><A NAME="2_2">Installing Mini-XML</A></H2>
+<P>If you are using Visual C++, copy the<VAR> mxml.lib</VAR> and and<VAR>
+ mxml.h</VAR> files to the Visual C++<VAR> lib</VAR> and<VAR> include<VAR>
+ directories, respectively.</VAR></VAR></P>
+<P>Otherwise, use the <TT>make</TT> command with the <KBD>install</KBD>
+ target to install Mini-XML in the configured directories:</P>
+<PRE>
+    <KBD>make install ENTER</KBD>
+</PRE>
+<H2><A NAME="2_3">Creating Mini-XML Packages</A></H2>
+<P>Mini-XML includes two files that can be used to create binary
+ packages. The first file is<VAR> mxml.spec</VAR> which is used by the <TT>
+rpmbuild(8)</TT> software to create Red Hat Package Manager ("RPM")
+ packages which are commonly used on Linux. Since <TT>rpmbuild</TT>
+ wants to compile the software on its own, you can provide it with the
+ Mini-XML tar file to build the package:</P>
+<PRE>
+    <KBD>rpmbuild -ta mxml-<I>version</I>.tar.gz ENTER</KBD>
+</PRE>
+<P>The second file is<VAR> mxml.list</VAR> which is used by the <TT>
+epm(1)</TT> program to create software packages in a variety of formats.
+ The <TT>epm</TT> program is available from the following URL:</P>
+<PRE>
+    <A href="http://www.epmhome.org/">http://www.epmhome.org/</A>
+</PRE>
+<P>Use the <TT>make</TT> command with the <KBD>epm</KBD> target to
+ create portable and native packages for your system:</P>
+<PRE>
+    <KBD>make epm ENTER</KBD>
+</PRE>
+<P>The packages are stored in a subdirectory named<VAR> dist</VAR> for
+ your convenience. The portable packages utilize scripts and tar files
+ to install the software on the target system. After extracting the
+ package archive, use the<VAR> mxml.install</VAR> script to install the
+ software.</P>
+<P>The native packages will be in the local OS's native format: RPM for
+ Red Hat Linux, DPKG for Debian Linux, PKG for Solaris, and so forth.
+ Use the corresponding commands to install the native packages.</P>
+<HR NOSHADE>
+<H1 align="right"><A name="BASICS"><IMG align="right" alt="2" height="100"
+hspace="10" src="2.gif" width="100"></A>Getting Started with Mini-XML</H1>
+<P>This chapter describes how to write programs that use Mini-XML to
+ access data in an XML file. Mini-XML provides the following
+ functionality:</P>
+<UL>
+<LI>Functions for creating and managing XML documents in memory.</LI>
+<LI>Reading of UTF-8 and UTF-16 encoded XML files and strings.</LI>
+<LI>Writing of UTF-8 encoded XML files and strings.</LI>
+<LI>Support for arbitrary element names, attributes, and attribute
+ values with no preset limits, just available memory.</LI>
+<LI>Support for integer, real, opaque ("CDATA"), and text data types in
+ "leaf" nodes.</LI>
+<LI>"Find", "index", and "walk" functions for easily accessing data in
+ an XML document.</LI>
+</UL>
+<P>Mini-XML doesn't do validation or other types of processing on the
+ data based upon schema files or other sources of definition
+ information, nor does it support character entities other than those
+ required by the XML specification.</P>
+<H2><A NAME="3_1">The Basics</A></H2>
+<P>Mini-XML provides a single header file which you include:</P>
+<PRE>
+    #include <mxml.h>
+</PRE>
+<P>The Mini-XML library is included with your program using the <KBD>
+-lmxml</KBD> option:</P>
+<PRE>
+    <KBD>gcc -o myprogram myprogram.c -lmxml ENTER</KBD>
+</PRE>
+<P>If you have the <TT>pkg-config(1)</TT> software installed, you can
+ use it to determine the proper compiler and linker options for your
+ installation:</P>
+<PRE>
+    <KBD>pkg-config --cflags mxml ENTER</KBD>
+    <KBD>pkg-config --libs mxml ENTER</KBD>
+</PRE>
+<H2><A NAME="3_2">Nodes</A></H2>
+<P>Every piece of information in an XML file is stored in memory in
+ "nodes". Nodes are defined by the <A href="#mxml_node_t"><TT>
+mxml_node_t</TT></A> structure. Each node has a typed value, optional
+ user data, a parent node, sibling nodes (previous and next), and
+ potentially child nodes.</P>
+<P>For example, if you have an XML file like the following:</P>
+<PRE>
+    <?xml version="1.0" encoding="utf-8"?>
+    <data>
+        <node>val1</node>
+        <node>val2</node>
+        <node>val3</node>
+        <group>
+            <node>val4</node>
+            <node>val5</node>
+            <node>val6</node>
+        </group>
+        <node>val7</node>
+        <node>val8</node>
+    </data>
+</PRE>
+<P>the node tree for the file would look like the following in memory:</P>
+<PRE>
+    ?xml version="1.0" encoding="utf-8"?
+      |
+    data
+      |
+    node - node - node - group - node - node
+      |      |      |      |       |      |
+    val1   val2   val3     |     val7   val8
+                           |
+                         node - node - node
+                           |      |      |
+                         val4   val5   val6
+</PRE>
+<P>where "-" is a pointer to the sibling node and "|" is a pointer to
+ the first child or parent node.</P>
+<P>The <A href="#mxmlGetType"><TT>mxmlGetType</TT></A> function gets the
+ type of a node, one of <TT>MXML_CUSTOM</TT>, <TT>MXML_ELEMENT</TT>, <TT>
+MXML_INTEGER</TT>, <TT>MXML_OPAQUE</TT>, <TT>MXML_REAL</TT>, or <TT>
+MXML_TEXT</TT>. The parent and sibling nodes are accessed using the <A href="#mxmlGetParent">
+<TT>mxmlGetParent</TT></A>, <A href="#mxmlGetNext"><TT>mxmlGetNext</TT></A>
+, and <A href="#mxmlGetPrevious"><TT>mxmlGetPrevious</TT></A> functions.
+ The <A href="#mxmlGetUserData"><TT>mxmlGetUserData</TT></A> function
+ gets any user data associated with the node.</P>
+<H3><A NAME="3_2_1">CDATA Nodes</A></H3>
+<P>CDATA (<TT>MXML_ELEMENT</TT>) nodes are created using the <A href="#mxmlNewCDATA">
+<TT>mxmlNewCDATA</TT></A> function. The <A href="#mxmlGetCDATA"><TT>
+mxmlGetCDATA</TT></A> function retrieves the CDATA string pointer for a
+ node.</P>
+<BLOCKQUOTE><B>Note:</B>
+<P>CDATA nodes are currently stored in memory as special elements. This
+ will be changed in a future major release of Mini-XML.</P>
+</BLOCKQUOTE>
+<H3><A NAME="3_2_2">Custom Nodes</A></H3>
+<P>Custom (<TT>MXML_CUSTOM</TT>) nodes are created using the <A href="#mxmlNewCustom">
+<TT>mxmlNewCustom</TT></A> function or using a custom load callback
+ specified using the <A href="#mxmlSetCustomHandlers"><TT>
+mxmlSetCustomHandlers</TT></A> function. The <A href="#mxmlGetCustom"><TT>
+mxmlGetCustom</TT></A> function retrieves the custom value pointer for a
+ node.</P>
+<H3><A NAME="3_2_3">Comment Nodes</A></H3>
+<P>Comment (<TT>MXML_ELEMENT</TT>) nodes are created using the <A href="#mxmlNewElement">
+<TT>mxmlNewElement</TT></A> function. The <A href="#mxmlGetElement"><TT>
+mxmlGetElement</TT></A> function retrieves the comment string pointer
+ for a node, including the surrounding "!--" and "--" characters.</P>
+<BLOCKQUOTE><B>Note:</B>
+<P>Comment nodes are currently stored in memory as special elements.
+ This will be changed in a future major release of Mini-XML.</P>
+</BLOCKQUOTE>
+<H3><A NAME="3_2_4">Element Nodes</A></H3>
+<P>Element (<TT>MXML_ELEMENT</TT>) nodes are created using the <A href="#mxmlNewElement">
+<TT>mxmlNewElement</TT></A> function. The <A href="#mxmlGetElement"><TT>
+mxmlGetElement</TT></A> function retrieves the element name, the <A href="#mxmlElementGetAttr">
+<TT>mxmlElementGetAttr</TT></A> function retrieves the value string for
+ a named attribute associated with the element, and the <A href="#mxmlGetFirstChild">
+<TT>mxmlGetFirstChild</TT></A> and <A href="#mxmlGetLastChild"><TT>
+mxmlGetLastChild</TT></A> functions retrieve the first and last child
+ nodes for the element, respectively.</P>
+<H3><A NAME="3_2_5">Integer Nodes</A></H3>
+<P>Integer (<TT>MXML_INTEGER</TT>) nodes are created using the <A href="#mxmlNewInteger">
+<TT>mxmlNewInteger</TT></A> function. The <A href="#mxmlGetInteger"><TT>
+mxmlGetInteger</TT></A> function retrieves the integer value for a node.</P>
+<H3><A NAME="3_2_6">Opaque Nodes</A></H3>
+<P>Opaque (<TT>MXML_OPAQUE</TT>) nodes are created using the <A href="#mxmlNewOpaque">
+<TT>mxmlNewOpaque</TT></A> function. The <A href="#mxmlGetOpaque"><TT>
+mxmlGetOpaque</TT></A> function retrieves the opaque string pointer for
+ a node. Opaque nodes are like string nodes but preserve all whitespace
+ between nodes.</P>
+<H3><A NAME="3_2_7">Text Nodes</A></H3>
+<P>Text (<TT>MXML_TEXT</TT>) nodes are created using the <A href="#mxmlNewText">
+<TT>mxmlNewText</TT></A> and <A href="#mxmlNewTextf"><TT>mxmlNewTextf</TT>
+</A> functions. Each text node consists of a text string and (leading)
+ whitespace value - the <A href="#mxmlGetText"><TT>mxmlGetText</TT></A>
+ function retrieves the text string pointer and whitespace value for a
+ node.</P>
+
+<!-- NEED 12 -->
+<H3><A NAME="3_2_8">Processing Instruction Nodes</A></H3>
+<P>Processing instruction (<TT>MXML_ELEMENT</TT>) nodes are created
+ using the <A href="#mxmlNewElement"><TT>mxmlNewElement</TT></A>
+ function. The <A href="#mxmlGetElement"><TT>mxmlGetElement</TT></A>
+ function retrieves the processing instruction string for a node,
+ including the surrounding "?" characters.</P>
+<BLOCKQUOTE><B>Note:</B>
+<P>Processing instruction nodes are currently stored in memory as
+ special elements. This will be changed in a future major release of
+ Mini-XML.</P>
+</BLOCKQUOTE>
+<H3><A NAME="3_2_9">Real Number Nodes</A></H3>
+<P>Real number (<TT>MXML_REAL</TT>) nodes are created using the <A href="#mxmlNewReal">
+<TT>mxmlNewReal</TT></A> function. The <A href="#mxmlGetReal"><TT>
+mxmlGetReal</TT></A> function retrieves the CDATA string pointer for a
+ node.</P>
+
+<!-- NEED 15 -->
+<H3><A NAME="3_2_10">XML Declaration Nodes</A></H3>
+<P>XML declaration (<TT>MXML_ELEMENT</TT>) nodes are created using the <A
+href="#mxmlNewXML"><TT>mxmlNewXML</TT></A> function. The <A href="#mxmlGetElement">
+<TT>mxmlGetElement</TT></A> function retrieves the XML declaration
+ string for a node, including the surrounding "?" characters.</P>
+<BLOCKQUOTE><B>Note:</B>
+<P>XML declaration nodes are currently stored in memory as special
+ elements. This will be changed in a future major release of Mini-XML.</P>
+</BLOCKQUOTE>
+<!-- NEW PAGE -->
+<H2><A NAME="3_3">Creating XML Documents</A></H2>
+<P>You can create and update XML documents in memory using the various <TT>
+mxmlNew</TT> functions. The following code will create the XML document
+ described in the previous section:</P>
+<PRE>
+    mxml_node_t *xml;    /* <?xml ... ?> */
+    mxml_node_t *data;   /* <data> */
+    mxml_node_t *node;   /* <node> */
+    mxml_node_t *group;  /* <group> */
+
+    xml = mxmlNewXML("1.0");
+
+    data = mxmlNewElement(xml, "data");
+
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val1");
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val2");
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val3");
+
+        group = mxmlNewElement(data, "group");
+
+            node = mxmlNewElement(group, "node");
+            mxmlNewText(node, 0, "val4");
+            node = mxmlNewElement(group, "node");
+            mxmlNewText(node, 0, "val5");
+            node = mxmlNewElement(group, "node");
+            mxmlNewText(node, 0, "val6");
+
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val7");
+        node = mxmlNewElement(data, "node");
+        mxmlNewText(node, 0, "val8");
+</PRE>
+
+<!-- NEED 6 -->
+<P>We start by creating the declaration node common to all XML files
+ using the <A href="#mxmlNewXML"><TT>mxmlNewXML</TT></A> function:</P>
+<PRE>
+    xml = mxmlNewXML("1.0");
+</PRE>
+<P>We then create the <TT><data></TT> node used for this document using
+ the <A href="#mxmlNewElement"><TT>mxmlNewElement</TT></A> function. The
+ first argument specifies the parent node (<TT>xml</TT>) while the
+ second specifies the element name (<TT>data</TT>):</P>
+<PRE>
+    data = mxmlNewElement(xml, "data");
+</PRE>
+<P>Each <TT><node>...</node></TT> in the file is created using the <TT>
+mxmlNewElement</TT> and <A href="#mxmlNewText"><TT>mxmlNewText</TT></A>
+ functions. The first argument of <TT>mxmlNewText</TT> specifies the
+ parent node (<TT>node</TT>). The second argument specifies whether
+ whitespace appears before the text - 0 or false in this case. The last
+ argument specifies the actual text to add:</P>
+<PRE>
+    node = mxmlNewElement(data, "node");
+    mxmlNewText(node, 0, "val1");
+</PRE>
+<P>The resulting in-memory XML document can then be saved or processed
+ just like one loaded from disk or a string.</P>
+
+<!-- NEED 15 -->
+<H2><A NAME="3_4">Loading XML</A></H2>
+<P>You load an XML file using the <A href="#mxmlLoadFile"><TT>
+mxmlLoadFile</TT></A> function:</P>
+<PRE>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "r");
+    tree = mxmlLoadFile(NULL, fp,
+                        MXML_TEXT_CALLBACK);
+    fclose(fp);
+</PRE>
+<P>The first argument specifies an existing XML parent node, if any.
+ Normally you will pass <TT>NULL</TT> for this argument unless you are
+ combining multiple XML sources. The XML file must contain a complete
+ XML document including the <TT>?xml</TT> element if the parent node is <TT>
+NULL</TT>.</P>
+<P>The second argument specifies the stdio file to read from, as opened
+ by <TT>fopen()</TT> or <TT>popen()</TT>. You can also use <TT>stdin</TT>
+ if you are implementing an XML filter program.</P>
+<P>The third argument specifies a callback function which returns the
+ value type of the immediate children for a new element node: <TT>
+MXML_CUSTOM</TT>, <TT>MXML_IGNORE</TT>, <TT>MXML_INTEGER</TT>, <TT>
+MXML_OPAQUE</TT>, <TT>MXML_REAL</TT>, or <TT>MXML_TEXT</TT>. Load
+ callbacks are described in detail in <A href="#LOAD_CALLBACKS">Chapter
+ 3</A>. The example code uses the <TT>MXML_TEXT_CALLBACK</TT> constant
+ which specifies that all data nodes in the document contain
+ whitespace-separated text values. Other standard callbacks include <TT>
+MXML_IGNORE_CALLBACK</TT>, <TT>MXML_INTEGER_CALLBACK</TT>, <TT>
+MXML_OPAQUE_CALLBACK</TT>, and <TT>MXML_REAL_CALLBACK</TT>.</P>
+<P>The <A href="#mxmlLoadString"><TT>mxmlLoadString</TT></A> function
+ loads XML node trees from a string:</P>
+
+<!-- NEED 10 -->
+<PRE>
+    char buffer[8192];
+    mxml_node_t *tree;
+
+    ...
+    tree = mxmlLoadString(NULL, buffer,
+                          MXML_TEXT_CALLBACK);
+</PRE>
+<P>The first and third arguments are the same as used for <TT>
+mxmlLoadFile()</TT>. The second argument specifies the string or
+ character buffer to load and must be a complete XML document including
+ the <TT>?xml</TT> element if the parent node is <TT>NULL</TT>.</P>
+
+<!-- NEED 15 -->
+<H2><A NAME="3_5">Saving XML</A></H2>
+<P>You save an XML file using the <A href="#mxmlSaveFile"><TT>
+mxmlSaveFile</TT></A> function:</P>
+<PRE>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "w");
+    mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+    fclose(fp);
+</PRE>
+<P>The first argument is the XML node tree to save. It should normally
+ be a pointer to the top-level <TT>?xml</TT> node in your XML document.</P>
+<P>The second argument is the stdio file to write to, as opened by <TT>
+fopen()</TT> or <TT>popen()</TT>. You can also use <TT>stdout</TT> if
+ you are implementing an XML filter program.</P>
+<P>The third argument is the whitespace callback to use when saving the
+ file. Whitespace callbacks are covered in detail in <A href="SAVE_CALLBACKS">
+Chapter 3</A>. The previous example code uses the <TT>MXML_NO_CALLBACK</TT>
+ constant to specify that no special whitespace handling is required.</P>
+<P>The <A href="#mxmlSaveAllocString"><TT>mxmlSaveAllocString</TT></A>,
+ and <A href="#mxmlSaveString"><TT>mxmlSaveString</TT></A> functions
+ save XML node trees to strings:</P>
+<PRE>
+    char buffer[8192];
+    char *ptr;
+    mxml_node_t *tree;
+
+    ...
+    mxmlSaveString(tree, buffer, sizeof(buffer),
+                   MXML_NO_CALLBACK);
+
+    ...
+    ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+</PRE>
+<P>The first and last arguments are the same as used for <TT>
+mxmlSaveFile()</TT>. The <TT>mxmlSaveString</TT> function takes pointer
+ and size arguments for saving the XML document to a fixed-size buffer,
+ while <TT>mxmlSaveAllocString()</TT> returns a string buffer that was
+ allocated using <TT>malloc()</TT>.</P>
+
+<!-- NEED 15 -->
+<H3><A NAME="3_5_1">Controlling Line Wrapping</A></H3>
+<P>When saving XML documents, Mini-XML normally wraps output lines at
+ column 75 so that the text is readable in terminal windows. The <A href="#mxmlSetWrapMargin">
+<TT>mxmlSetWrapMargin</TT></A> function overrides the default wrap
+ margin:</P>
+<PRE>
+    /* Set the margin to 132 columns */
+    mxmlSetWrapMargin(132);
+
+    /* Disable wrapping */
+    mxmlSetWrapMargin(0);
+</PRE>
+<H2><A NAME="3_6">Memory Management</A></H2>
+<P>Once you are done with the XML data, use the <A href="#mxmlDelete"><TT>
+mxmlDelete</TT></A> function to recursively free the memory that is used
+ for a particular node or the entire tree:</P>
+<PRE>
+    mxmlDelete(tree);
+</PRE>
+<P>You can also use reference counting to manage memory usage. The <A href="#mxmlRetain">
+<TT>mxmlRetain</TT></A> and <A href="#mxmlRelease"><TT>mxmlRelease</TT></A>
+ functions increment and decrement a node's use count, respectively.
+ When the use count goes to 0, <TT>mxmlRelease</TT> will automatically
+ call <TT>mxmlDelete</TT> to actually free the memory used by the node
+ tree. New nodes automatically start with a use count of 1.</P>
+
+<!-- NEW PAGE-->
+<H2><A NAME="3_7">Finding and Iterating Nodes</A></H2>
+<P>The <A href="#mxmlWalkPrev"><TT>mxmlWalkPrev</TT></A> and <A href="#mxmlWalkNext">
+<TT>mxmlWalkNext</TT></A>functions can be used to iterate through the
+ XML node tree:</P>
+<PRE>
+    mxml_node_t *node;
+    
+    node = mxmlWalkPrev(current, tree,
+                        MXML_DESCEND);
+
+    node = mxmlWalkNext(current, tree,
+                        MXML_DESCEND);
+</PRE>
+<P>In addition, you can find a named element/node using the <A href="#mxmlFindElement">
+<TT>mxmlFindElement</TT></A> function:</P>
+<PRE>
+    mxml_node_t *node;
+    
+    node = mxmlFindElement(tree, tree, "name",
+                           "attr", "value",
+                           MXML_DESCEND);
+</PRE>
+<P>The <TT>name</TT>, <TT>attr</TT>, and <TT>value</TT> arguments can be
+ passed as <TT>NULL</TT> to act as wildcards, e.g.:</P>
+
+<!-- NEED 4 -->
+<PRE>
+    /* Find the first "a" element */
+    node = mxmlFindElement(tree, tree, "a",
+                           NULL, NULL,
+                           MXML_DESCEND);
+</PRE>
+
+<!-- NEED 5 -->
+<PRE>
+    /* Find the first "a" element with "href"
+       attribute */
+    node = mxmlFindElement(tree, tree, "a",
+                           "href", NULL,
+                           MXML_DESCEND);
+</PRE>
+
+<!-- NEED 6 -->
+<PRE>
+    /* Find the first "a" element with "href"
+       to a URL */
+    node = mxmlFindElement(tree, tree, "a",
+                           "href",
+                           "http://www.easysw.com/",
+                           MXML_DESCEND);
+</PRE>
+
+<!-- NEED 5 -->
+<PRE>
+    /* Find the first element with a "src"
+       attribute */
+    node = mxmlFindElement(tree, tree, NULL,
+                           "src", NULL,
+                           MXML_DESCEND);
+</PRE>
+
+<!-- NEED 5 -->
+<PRE>
+    /* Find the first element with a "src"
+       = "foo.jpg" */
+    node = mxmlFindElement(tree, tree, NULL,
+                           "src", "foo.jpg",
+                           MXML_DESCEND);
+</PRE>
+<P>You can also iterate with the same function:</P>
+<PRE>
+    mxml_node_t *node;
+
+    for (node = mxmlFindElement(tree, tree,
+                                "name",
+                                NULL, NULL,
+                                MXML_DESCEND);
+         node != NULL;
+         node = mxmlFindElement(node, tree,
+                                "name",
+                                NULL, NULL,
+                                MXML_DESCEND))
+    {
+      ... do something ...
+    }
+</PRE>
+
+<!-- NEED 10 -->
+<P>The <TT>MXML_DESCEND</TT> argument can actually be one of three
+ constants:</P>
+<UL>
+<LI><TT>MXML_NO_DESCEND</TT> means to not to look at any child nodes in
+ the element hierarchy, just look at siblings at the same level or
+ parent nodes until the top node or top-of-tree is reached.
+<P>The previous node from "group" would be the "node" element to the
+ left, while the next node from "group" would be the "node" element to
+ the right.
+<BR>
+<BR></P>
+</LI>
+<LI><TT>MXML_DESCEND_FIRST</TT> means that it is OK to descend to the
+ first child of a node, but not to descend further when searching.
+ You'll normally use this when iterating through direct children of a
+ parent node, e.g. all of the "node" and "group" elements under the
+ "?xml" parent node in the example above.
+<P>This mode is only applicable to the search function; the walk
+ functions treat this as <TT>MXML_DESCEND</TT> since every call is a
+ first time.
+<BR>
+<BR></P>
+</LI>
+<LI><TT>MXML_DESCEND</TT> means to keep descending until you hit the
+ bottom of the tree. The previous node from "group" would be the "val3"
+ node and the next node would be the first node element under "group".
+<P>If you were to walk from the root node "?xml" to the end of the tree
+ with <TT>mxmlWalkNext()</TT>, the order would be:</P>
+<P><TT>?xml data node val1 node val2 node val3 group node val4 node val5
+ node val6 node val7 node val8</TT></P>
+<P>If you started at "val8" and walked using <TT>mxmlWalkPrev()</TT>,
+ the order would be reversed, ending at "?xml".</P>
+</LI>
+</UL>
+<H2><A NAME="3_8">Finding Specific Nodes</A></H2>
+<P>You can find specific nodes in the tree using the <A href="#mxmlFindValue">
+<TT>mxmlFindPath</TT></A>, for example:</P>
+<PRE>
+    mxml_node_t *value;
+
+    value = mxmlFindPath(tree, "path/to/*/foo/bar");
+</PRE>
+<P>The second argument is a "path" to the parent node. Each component of
+ the path is separated by a slash (/) and represents a named element in
+ the document tree or a wildcard (*) path representing 0 or more
+ intervening nodes.</P>
+<HR NOSHADE>
+<H1 align="right"><A name="ADVANCED"><IMG align="right" alt="3" height="100"
+hspace="10" src="3.gif" width="100"></A>More Mini-XML Programming
+ Techniques</H1>
+<P>This chapter shows additional ways to use the Mini-XML library in
+ your programs.</P>
+<H2><A name="LOAD_CALLBACKS">Load Callbacks</A></H2>
+<P><A href="#LOAD_XML">Chapter 2</A> introduced the <A href="#mxmlLoadFile">
+<TT>mxmlLoadFile()</TT></A> and <A href="#mxmlLoadString"><TT>
+mxmlLoadString()</TT></A> functions. The last argument to these
+ functions is a callback function which is used to determine the value
+ type of each data node in an XML document.</P>
+<P>Mini-XML defines several standard callbacks for simple XML data
+ files:</P>
+<UL>
+<LI><TT>MXML_INTEGER_CALLBACK</TT> - All data nodes contain
+ whitespace-separated integers.</LI>
+<LI><TT>MXML_OPAQUE_CALLBACK</TT> - All data nodes contain opaque
+ strings ("CDATA").</LI>
+<LI><TT>MXML_REAL_CALLBACK</TT> - All data nodes contain
+ whitespace-separated floating-point numbers.</LI>
+<LI><TT>MXML_TEXT_CALLBACK</TT> - All data nodes contain
+ whitespace-separated strings.</LI>
+</UL>
+<P>You can provide your own callback functions for more complex XML
+ documents. Your callback function will receive a pointer to the current
+ element node and must return the value type of the immediate children
+ for that element node: <TT>MXML_INTEGER</TT>, <TT>MXML_OPAQUE</TT>, <TT>
+MXML_REAL</TT>, or <TT>MXML_TEXT</TT>. The function is called<I> after</I>
+ the element and its attributes have been read, so you can look at the
+ element name, attributes, and attribute values to determine the proper
+ value type to return.</P>
+
+<!-- NEED 2in -->
+<P>The following callback function looks for an attribute named "type"
+ or the element name to determine the value type for its child nodes:</P>
+<PRE>
+    mxml_type_t
+    type_cb(mxml_node_t *node)
+    {
+      const char *type;
+
+     /*
+      * You can lookup attributes and/or use the
+      * element name, hierarchy, etc...
+      */
+
+      type = mxmlElementGetAttr(node, "type");
+      if (type == NULL)
+	type = mxmlGetElement(node);
+
+      if (!strcmp(type, "integer"))
+	return (MXML_INTEGER);
+      else if (!strcmp(type, "opaque"))
+	return (MXML_OPAQUE);
+      else if (!strcmp(type, "real"))
+	return (MXML_REAL);
+      else
+	return (MXML_TEXT);
+    }
+</PRE>
+<P>To use this callback function, simply use the name when you call any
+ of the load functions:</P>
+<PRE>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "r");
+    tree = mxmlLoadFile(NULL, fp, <B>type_cb</B>);
+    fclose(fp);
+</PRE>
+<H2><A name="SAVE_CALLBACKS">Save Callbacks</A></H2>
+<P><A href="#LOAD_XML">Chapter 2</A> also introduced the <A href="#mxmlSaveFile">
+<TT>mxmlSaveFile()</TT></A>, <A href="#mxmlSaveString"><TT>
+mxmlSaveString()</TT></A>, and <A href="#mxmlSaveAllocString"><TT>
+mxmlSaveAllocString()</TT></A> functions. The last argument to these
+ functions is a callback function which is used to automatically insert
+ whitespace in an XML document.</P>
+<P>Your callback function will be called up to four times for each
+ element node with a pointer to the node and a "where" value of <TT>
+MXML_WS_BEFORE_OPEN</TT>, <TT>MXML_WS_AFTER_OPEN</TT>, <TT>
+MXML_WS_BEFORE_CLOSE</TT>, or <TT>MXML_WS_AFTER_CLOSE</TT>. The callback
+ function should return <TT>NULL</TT> if no whitespace should be added
+ and the string to insert (spaces, tabs, carriage returns, and newlines)
+ otherwise.</P>
+<P>The following whitespace callback can be used to add whitespace to
+ XHTML output to make it more readable in a standard text editor:</P>
+<PRE>
+    const char *
+    whitespace_cb(mxml_node_t *node,
+                  int where)
+    {
+      const char *name;
+
+     /*
+      * We can conditionally break to a new line
+      * before or after any element. These are
+      * just common HTML elements...
+      */
+
+      name = mxmlGetElement(node);
+
+      if (!strcmp(name, "html") ||
+          !strcmp(name, "head") ||
+          !strcmp(name, "body") ||
+	  !strcmp(name, "pre") ||
+          !strcmp(name, "p") ||
+	  !strcmp(name, "h1") ||
+          !strcmp(name, "h2") ||
+          !strcmp(name, "h3") ||
+	  !strcmp(name, "h4") ||
+          !strcmp(name, "h5") ||
+          !strcmp(name, "h6"))
+      {
+       /*
+	* Newlines before open and after
+        * close...
+	*/
+
+	if (where == MXML_WS_BEFORE_OPEN ||
+            where == MXML_WS_AFTER_CLOSE)
+	  return ("\n");
+      }
+      else if (!strcmp(name, "dl") ||
+               !strcmp(name, "ol") ||
+               !strcmp(name, "ul"))
+      {
+       /*
+	* Put a newline before and after list
+        * elements...
+	*/
+
+	return ("\n");
+      }
+      else if (!strcmp(name, "dd") ||
+               !strcmp(name, "dt") ||
+               !strcmp(name, "li"))
+      {
+       /*
+	* Put a tab before <li>'s, * <dd>'s,
+        * and <dt>'s, and a newline after them...
+	*/
+
+	if (where == MXML_WS_BEFORE_OPEN)
+	  return ("\t");
+	else if (where == MXML_WS_AFTER_CLOSE)
+	  return ("\n");
+      }
+
+     /*
+      * Return NULL for no added whitespace...
+      */
+
+      return (NULL);
+    }
+</PRE>
+<P>To use this callback function, simply use the name when you call any
+ of the save functions:</P>
+<PRE>
+    FILE *fp;
+    mxml_node_t *tree;
+
+    fp = fopen("filename.xml", "w");
+    mxmlSaveFile(tree, fp, <B>whitespace_cb</B>);
+    fclose(fp);
+</PRE>
+
+<!-- NEED 10 -->
+<H2><A NAME="4_3">Custom Data Types</A></H2>
+<P>Mini-XML supports custom data types via global load and save
+ callbacks. Only a single set of callbacks can be active at any time,
+ however your callbacks can store additional information in order to
+ support multiple custom data types as needed. The <TT>MXML_CUSTOM</TT>
+ node type identifies custom data nodes.</P>
+<P>The load callback receives a pointer to the current data node and a
+ string of opaque character data from the XML source with character
+ entities converted to the corresponding UTF-8 characters. For example,
+ if we wanted to support a custom date/time type whose value is encoded
+ as "yyyy-mm-ddThh:mm:ssZ" (ISO format), the load callback would look
+ like the following:</P>
+<PRE>
+    typedef struct
+    {
+      unsigned      year,    /* Year */
+                    month,   /* Month */
+                    day,     /* Day */
+                    hour,    /* Hour */
+                    minute,  /* Minute */
+                    second;  /* Second */
+      time_t        unix;    /* UNIX time */
+    } iso_date_time_t;
+
+    int
+    load_custom(mxml_node_t *node,
+                const char *data)
+    {
+      iso_date_time_t *dt;
+      struct tm tmdata;
+
+     /*
+      * Allocate data structure...
+      */
+
+      dt = calloc(1, sizeof(iso_date_time_t));
+
+     /*
+      * Try reading 6 unsigned integers from the
+      * data string...
+      */
+
+      if (sscanf(data, "%u-%u-%uT%u:%u:%uZ",
+                 &(dt->year), &(dt->month),
+                 &(dt->day), &(dt->hour),
+                 &(dt->minute),
+                 &(dt->second)) != 6)
+      {
+       /*
+        * Unable to read numbers, free the data
+        * structure and return an error...
+        */
+
+        free(dt);
+
+        return (-1);
+      }
+
+     /*
+      * Range check values...
+      */
+
+      if (dt->month <1 || dt->month > 12 ||
+          dt->day  <1 || dt->day > 31 ||
+          dt->hour  <0 || dt->hour > 23 ||
+          dt->minute  <0 || dt->minute > 59 ||
+          dt->second  <0 || dt->second > 59)
+      {
+       /*
+        * Date information is out of range...
+        */
+
+        free(dt);
+
+        return (-1);
+      }
+
+     /*
+      * Convert ISO time to UNIX time in
+      * seconds...
+      */
+
+      tmdata.tm_year = dt->year - 1900;
+      tmdata.tm_mon  = dt->month - 1;
+      tmdata.tm_day  = dt->day;
+      tmdata.tm_hour = dt->hour;
+      tmdata.tm_min  = dt->minute;
+      tmdata.tm_sec  = dt->second;
+
+      dt->unix = gmtime(&tmdata);
+
+     /*
+      * Assign custom node data and destroy
+      * function pointers...
+      */
+
+      mxmlSetCustom(node, data, destroy);
+
+     /*
+      * Return with no errors...
+      */
+
+      return (0);
+    }
+</PRE>
+<P>The function itself can return 0 on success or -1 if it is unable to
+ decode the custom data or the data contains an error. Custom data nodes
+ contain a <TT>void</TT> pointer to the allocated custom data for the
+ node and a pointer to a destructor function which will free the custom
+ data when the node is deleted.</P>
+
+<!-- NEED 15 -->
+<P>The save callback receives the node pointer and returns an allocated
+ string containing the custom data value. The following save callback
+ could be used for our ISO date/time type:</P>
+<PRE>
+    char *
+    save_custom(mxml_node_t *node)
+    {
+      char data[255];
+      iso_date_time_t *dt;
+
+
+      dt = (iso_date_time_t *)mxmlGetCustom(node);
+
+      snprintf(data, sizeof(data),
+               "%04u-%02u-%02uT%02u:%02u:%02uZ",
+               dt->year, dt->month, dt->day,
+               dt->hour, dt->minute, dt->second);
+
+      return (strdup(data));
+    }
+</PRE>
+<P>You register the callback functions using the <A href="#mxmlSetCustomHandlers">
+<TT>mxmlSetCustomHandlers()</TT></A> function:</P>
+<PRE>
+    mxmlSetCustomHandlers(<B>load_custom</B>,
+                          <B>save_custom</B>);
+</PRE>
+
+<!-- NEED 20 -->
+<H2><A NAME="4_4">Changing Node Values</A></H2>
+<P>All of the examples so far have concentrated on creating and loading
+ new XML data nodes. Many applications, however, need to manipulate or
+ change the nodes during their operation, so Mini-XML provides functions
+ to change node values safely and without leaking memory.</P>
+<P>Existing nodes can be changed using the <A href="#mxmlSetElement"><TT>
+mxmlSetElement()</TT></A>, <A href="#mxmlSetInteger"><TT>
+mxmlSetInteger()</TT></A>, <A href="#mxmlSetOpaque"><TT>mxmlSetOpaque()</TT>
+</A>, <A href="#mxmlSetReal"><TT>mxmlSetReal()</TT></A>, <A href="#mxmlSetText">
+<TT>mxmlSetText()</TT></A>, and <A href="#mxmlSetTextf"><TT>
+mxmlSetTextf()</TT></A> functions. For example, use the following
+ function call to change a text node to contain the text "new" with
+ leading whitespace:</P>
+<PRE>
+    mxml_node_t *node;
+
+    mxmlSetText(node, 1, "new");
+</PRE>
+<H2><A NAME="4_5">Formatted Text</A></H2>
+<P>The <A href="#mxmlNewTextf"><TT>mxmlNewTextf()</TT></A> and <A href="#mxmlSetTextf">
+<TT>mxmlSetTextf()</TT></A> functions create and change text nodes,
+ respectively, using <TT>printf</TT>-style format strings and arguments.
+ For example, use the following function call to create a new text node
+ containing a constructed filename:</P>
+<PRE>
+    mxml_node_t *node;
+
+    node = mxmlNewTextf(node, 1, "%s/%s",
+                        path, filename);
+</PRE>
+<H2><A NAME="4_6">Indexing</A></H2>
+<P>Mini-XML provides functions for managing indices of nodes. The
+ current implementation provides the same functionality as <A href="#mxmlFindElement">
+<TT>mxmlFindElement()</TT></A>. The advantage of using an index is that
+ searching and enumeration of elements is significantly faster. The only
+ disadvantage is that each index is a static snapshot of the XML
+ document, so indices are not well suited to XML data that is updated
+ more often than it is searched. The overhead of creating an index is
+ approximately equal to walking the XML document tree. Nodes in the
+ index are sorted by element name and attribute value.</P>
+<P>Indices are stored in <A href="#mxml_index_t"><TT>mxml_index_t</TT></A>
+ structures. The <A href="#mxmlIndexNew"><TT>mxmlIndexNew()</TT></A>
+ function creates a new index:</P>
+<PRE>
+    mxml_node_t *tree;
+    mxml_index_t *ind;
+
+    ind = mxmlIndexNew(tree, "element",
+                       "attribute");
+</PRE>
+<P>The first argument is the XML node tree to index. Normally this will
+ be a pointer to the <TT>?xml</TT> element.</P>
+<P>The second argument contains the element to index; passing <TT>NULL</TT>
+ indexes all element nodes alphabetically.</P>
+<P>The third argument contains the attribute to index; passing <TT>NULL</TT>
+ causes only the element name to be indexed.</P>
+<P>Once the index is created, the <A href="#mxmlIndexEnum"><TT>
+mxmlIndexEnum()</TT></A>, <A href="#mxmlIndexFind"><TT>mxmlIndexFind()</TT>
+</A>, and <A href="#mxmlIndexReset"><TT>mxmlIndexReset()</TT></A>
+ functions are used to access the nodes in the index. The <A href="#mxmlIndexReset">
+<TT>mxmlIndexReset()</TT></A> function resets the "current" node pointer
+ in the index, allowing you to do new searches and enumerations on the
+ same index. Typically you will call this function prior to your calls
+ to <A href="#mxmlIndexEnum"><TT>mxmlIndexEnum()</TT></A> and <A href="#mxmlIndexFind">
+<TT>mxmlIndexFind()</TT></A>.</P>
+<P>The <A href="#mxmlIndexEnum"><TT>mxmlIndexEnum()</TT></A> function
+ enumerates each of the nodes in the index and can be used in a loop as
+ follows:</P>
+<PRE>
+    mxml_node_t *node;
+
+    mxmlIndexReset(ind);
+
+    while ((node = mxmlIndexEnum(ind)) != NULL)
+    {
+      // do something with node
+    }
+</PRE>
+<P>The <A href="#mxmlIndexFind"><TT>mxmlIndexFind()</TT></A> function
+ locates the next occurrence of the named element and attribute value in
+ the index. It can be used to find all matching elements in an index, as
+ follows:</P>
+<PRE>
+    mxml_node_t *node;
+
+    mxmlIndexReset(ind);
+
+    while ((node = mxmlIndexFind(ind, "element",
+                                 "attr-value"))
+                != NULL)
+    {
+      // do something with node
+    }
+</PRE>
+<P>The second and third arguments represent the element name and
+ attribute value, respectively. A <TT>NULL</TT> pointer is used to
+ return all elements or attributes in the index. Passing <TT>NULL</TT>
+ for both the element name and attribute value is equivalent to calling <TT>
+mxmlIndexEnum</TT>.</P>
+<P>When you are done using the index, delete it using the <A href="#mxmlIndexDelete()">
+<TT>mxmlIndexDelete()</TT></A> function:</P>
+<PRE>
+    mxmlIndexDelete(ind);
+</PRE>
+<H2><A NAME="4_7">SAX (Stream) Loading of Documents</A></H2>
+<P>Mini-XML supports an implementation of the Simple API for XML (SAX)
+ which allows you to load and process an XML document as a stream of
+ nodes. Aside from allowing you to process XML documents of any size,
+ the Mini-XML implementation also allows you to retain portions of the
+ document in memory for later processing.</P>
+<P>The <A href="#mxmlSAXLoad"><TT>mxmlSAXLoadFd</TT></A>, <A href="#mxmlSAXLoadFile">
+<TT>mxmlSAXLoadFile</TT></A>, and <A href="#mxmlSAXLoadString"><TT>
+mxmlSAXLoadString</TT></A> functions provide the SAX loading APIs. Each
+ function works like the corresponding <TT>mxmlLoad</TT> function but
+ uses a callback to process each node as it is read.</P>
+<P>The callback function receives the node, an event code, and a user
+ data pointer you supply:</P>
+<PRE>
+    void
+    sax_cb(mxml_node_t *node,
+           mxml_sax_event_t event,
+           void *data)
+    {
+      ... do something ...
+    }
+</PRE>
+<P>The event will be one of the following:</P>
+<UL>
+<LI><TT>MXML_SAX_CDATA</TT> - CDATA was just read</LI>
+<LI><TT>MXML_SAX_COMMENT</TT> - A comment was just read</LI>
+<LI><TT>MXML_SAX_DATA</TT> - Data (custom, integer, opaque, real, or
+ text) was just read</LI>
+<LI><TT>MXML_SAX_DIRECTIVE</TT> - A processing directive was just read</LI>
+<LI><TT>MXML_SAX_ELEMENT_CLOSE</TT> - A close element was just read (<TT>
+</element></TT>)</LI>
+<LI><TT>MXML_SAX_ELEMENT_OPEN</TT> - An open element was just read (<TT>
+<element></TT>)</LI>
+</UL>
+<P>Elements are<EM> released</EM> after the close element is processed.
+ All other nodes are released after they are processed. The SAX callback
+ can<EM> retain</EM> the node using the <A href="#mxmlRetain"><TT>
+mxmlRetain</TT></A> function. For example, the following SAX callback
+ will retain all nodes, effectively simulating a normal in-memory load:</P>
+<PRE>
+    void
+    sax_cb(mxml_node_t *node,
+           mxml_sax_event_t event,
+           void *data)
+    {
+      if (event != MXML_SAX_ELEMENT_CLOSE)
+        mxmlRetain(node);
+    }
+</PRE>
+<P>More typically the SAX callback will only retain a small portion of
+ the document that is needed for post-processing. For example, the
+ following SAX callback will retain the title and headings in an XHTML
+ file. It also retains the (parent) elements like <TT><html></TT>, <TT>
+<head></TT>, and <TT><body></TT>, and processing directives like <TT>
+<?xml ... ?></TT> and <TT><!DOCTYPE ... ></TT>:</P>
+
+<!-- NEED 10 -->
+<PRE>
+    void
+    sax_cb(mxml_node_t *node,
+           mxml_sax_event_t event,
+           void *data)
+    {
+      if (event == MXML_SAX_ELEMENT_OPEN)
+      {
+       /*
+        * Retain headings and titles...
+        */
+
+        char *name = mxmlGetElement(node);
+
+        if (!strcmp(name, "html") ||
+            !strcmp(name, "head") ||
+            !strcmp(name, "title") ||
+            !strcmp(name, "body") ||
+            !strcmp(name, "h1") ||
+            !strcmp(name, "h2") ||
+            !strcmp(name, "h3") ||
+            !strcmp(name, "h4") ||
+            !strcmp(name, "h5") ||
+            !strcmp(name, "h6"))
+          mxmlRetain(node);
+      }
+      else if (event == MXML_SAX_DIRECTIVE)
+        mxmlRetain(node);
+      else if (event == MXML_SAX_DATA)
+      {
+        if (mxmlGetRefCount(mxmlGetParent(node)) > 1)
+        {
+         /*
+          * If the parent was retained, then retain
+          * this data node as well.
+          */
+
+          mxmlRetain(node);
+        }
+      }
+    }
+</PRE>
+<P>The resulting skeleton document tree can then be searched just like
+ one loaded using the <TT>mxmlLoad</TT> functions. For example, a filter
+ that reads an XHTML document from stdin and then shows the title and
+ headings in the document would look like:</P>
+<PRE>
+    mxml_node_t *doc, *title, *body, *heading;
+
+    doc = mxmlSAXLoadFd(NULL, 0,
+                        MXML_TEXT_CALLBACK,
+                        <B>sax_cb</B>, NULL);
+
+    title = mxmlFindElement(doc, doc, "title",
+                            NULL, NULL,
+                            MXML_DESCEND);
+
+    if (title)
+      print_children(title);
+
+    body = mxmlFindElement(doc, doc, "body",
+                           NULL, NULL,
+                           MXML_DESCEND);
+
+    if (body)
+    {
+      for (heading = mxmlGetFirstChild(body);
+           heading;
+           heading = mxmlGetNextSibling(heading))
+        print_children(heading);
+    }
+</PRE>
+<HR NOSHADE>
+<H1 align="right"><A name="MXMLDOC"><IMG align="right" alt="4" height="100"
+hspace="10" src="4.gif" width="100"></A>Using the mxmldoc Utility</H1>
+<P>This chapter describes how to use <TT>mxmldoc(1)</TT> program to
+ automatically generate documentation from C and C++ source files.</P>
+<H2><A NAME="5_1">The Basics</A></H2>
+<P>Originally developed to generate the Mini-XML and CUPS API
+ documentation, <TT>mxmldoc</TT> is now a general-purpose utility which
+ scans C and C++ source files to produce HTML and man page documentation
+ along with an XML file representing the functions, types, and
+ definitions in those source files. Unlike popular documentation
+ generators like Doxygen or Javadoc, <TT>mxmldoc</TT> uses in-line
+ comments rather than comment headers, allowing for more "natural" code
+ documentation.</P>
+<P>By default, <TT>mxmldoc</TT> produces HTML documentation. For
+ example, the following command will scan all of the C source and header
+ files in the current directory and produce a HTML documentation file
+ called<VAR> filename.html</VAR>:</P>
+<PRE>
+    <KBD>mxmldoc *.h *.c >filename.html ENTER</KBD>
+</PRE>
+<P>You can also specify an XML file to create which contains all of the
+ information from the source files. For example, the following command
+ creates an XML file called<VAR> filename.xml</VAR> in addition to the
+ HTML file:</P>
+<PRE>
+    <KBD>mxmldoc filename.xml *.h *.c >filename.html ENTER</KBD>
+</PRE>
+<P>The <TT>--no-output</TT> option disables the normal HTML output:</P>
+<PRE>
+    <KBD>mxmldoc --no-output filename.xml *.h *.c ENTER</KBD>
+</PRE>
+<P>You can then run <TT>mxmldoc</TT> again with the XML file alone to
+ generate the HTML documentation:</P>
+<PRE>
+    <KBD>mxmldoc filename.xml >filename.html ENTER</KBD>
+</PRE>
+<H3><A NAME="5_1_1">Creating Man Pages</A></H3>
+<P>The <TT>--man filename</TT> option tells <TT>mxmldoc</TT> to create a
+ man page instead of HTML documentation, for example:</P>
+<PRE>
+    <KBD>mxmldoc --man filename filename.xml \
+        >filename.man ENTER</KBD>
+
+    <KBD>mxmldoc --man filename *.h *.c \
+        >filename.man ENTER</KBD>
+</PRE>
+<H3><A NAME="5_1_2">Creating Xcode Documentation Sets</A></H3>
+<P>The <TT>--docset directory.docset</TT> option tells <TT>mxmldoc</TT>
+ to create an Xcode documentation set containing the HTML documentation,
+ for example:</P>
+<PRE>
+    <KBD>mxmldoc --docset foo.docset *.h *.c foo.xml ENTER</KBD>
+</PRE>
+<P>Xcode documentation sets can only be built on Mac OS X with Xcode 3.0
+ or higher installed.</P>
+<H2><A NAME="5_2">Commenting Your Code</A></H2>
+<P>As noted previously, <TT>mxmldoc</TT> looks for in-line comments to
+ describe the functions, types, and constants in your code. <TT>Mxmldoc</TT>
+ will document all public names it finds in your source files - any
+ names starting with the underscore character (_) or names that are
+ documented with the <A HREF="#ATDIRECTIVES">@private@</A> directive are
+ treated as private and are not documented.</P>
+<P>Comments appearing directly before a function or type definition are
+ used to document that function or type. Comments appearing after
+ argument, definition, return type, or variable declarations are used to
+ document that argument, definition, return type, or variable. For
+ example, the following code excerpt defines a key/value structure and a
+ function that creates a new instance of that structure:</P>
+<PRE>
+    /* A key/value pair. This is used with the
+       dictionary structure. */
+
+    struct keyval
+    {
+      char *key; /* Key string */
+      char *val; /* Value string */
+    };
+
+    /* Create a new key/value pair. */
+
+    struct keyval * /* New key/value pair */
+    new_keyval(
+        const char *key, /* Key string */
+	const char *val) /* Value string */
+    {
+      ...
+    }
+</PRE>
+<P><TT>Mxmldoc</TT> also knows to remove extra asterisks (*) from the
+ comment string, so the comment string:</P>
+<PRE>
+    /*
+     * Compute the value of PI.
+     *
+     * The function connects to an Internet server
+     * that streams audio of mathematical monks
+     * chanting the first 100 digits of PI.
+     */
+</PRE>
+<P>will be shown as:</P>
+<PRE>
+    Compute the value of PI.
+
+    The function connects to an Internet server
+    that streams audio of mathematical monks
+    chanting the first 100 digits of PI.
+</PRE>
+<P><A name="ATDIRECTIVES">Comments</A> can also include the following
+ special <TT>@name ...@</TT> directive strings:</P>
+<UL>
+<LI><TT>@deprecated@</TT> - flags the item as deprecated to discourage
+ its use</LI>
+<LI><TT>@private@</TT> - flags the item as private so it will not be
+ included in the documentation</LI>
+<LI><TT>@since ...@</TT> - flags the item as new since a particular
+ release. The text following the <TT>@since</TT> up to the closing <TT>@</TT>
+ is highlighted in the generated documentation, e.g. <TT>@since Mini-XML
+ 2.7@</TT>.</LI>
+</UL>
+
+<!-- NEED 10 -->
+<H2><A NAME="5_3">Titles, Sections, and Introductions</A></H2>
+<P><TT>Mxmldoc</TT> also provides options to set the title, section, and
+ introduction text for the generated documentation. The <TT>--title text</TT>
+ option specifies the title for the documentation. The title string is
+ usually put in quotes:</P>
+<PRE>
+    <KBD>mxmldoc filename.xml \
+        --title "My Famous Documentation" \
+        >filename.html ENTER</KBD>
+</PRE>
+<P>The <TT>--section name</TT> option specifies the section for the
+ documentation. For HTML documentation, the name is placed in a HTML
+ comment such as:</P>
+<PRE>
+    <!-- SECTION: name -->
+</PRE>
+<P>For man pages, the section name is usually just a number ("3"), or a
+ number followed by a vendor name ("3acme"). The section name is used in
+ the <TT>.TH</TT> directive in the man page:</P>
+<PRE>
+    .TH mylibrary 3acme "My Title" ...
+</PRE>
+<P>The default section name for man page output is "3". There is no
+ default section name for HTML output.</P>
+<P>Finally, the <TT>--intro filename</TT> option specifies a file to
+ embed after the title and section but before the generated
+ documentation. For HTML documentation, the file must consist of valid
+ HTML without the usual <TT>DOCTYPE</TT>, <TT>html</TT>, and <TT>body</TT>
+ elements. For man page documentation, the file must consist of valid <TT>
+nroff(1)</TT> text.</P>
+<HR NOSHADE>
+<H1 align="right"><A name="LICENSE"><IMG align="right" alt="A" height="100"
+hspace="10" src="A.gif" width="100"></A>Mini-XML License</H1>
+<P>The Mini-XML library and included programs are provided under the
+ terms of the GNU Library General Public License version 2 (LGPL2) with
+ the following exceptions:</P>
+<P><B>1.</B> Static linking of applications to the Mini-XML library does
+ not constitute a derivative work and does not require the author to
+ provide source code for the application, use the shared Mini-XML
+ libraries, or link their applications against a user-supplied version
+ of Mini-XML.</P>
+<P><I>If you link the application to a modified version of Mini-XML,
+ then the changes to Mini-XML must be provided under the terms of the
+ LGPL2 in sections 1, 2, and 4.</I></P>
+<P><B>2.</B> You do not have to provide a copy of the Mini-XML license
+ with programs that are linked to the Mini-XML library, nor do you have
+ to identify the Mini-XML license in your program or documentation as
+ required by section 6 of the LGPL2.</P>
+<P> </P>
+<P align="center"><B>GNU LIBRARY GENERAL PUBLIC LICENSE</B></P>
+<P align="center">Version 2, June 1991
+<BR> Copyright (C) 1991 Free Software Foundation, Inc.
+<BR> 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+<BR> Everyone is permitted to copy and distribute verbatim copies of
+ this license document, but changing it is not allowed.
+<BR> [This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]</P>
+<P><B>Preamble</B></P>
+<P>The licenses for most software are designed to take away your freedom
+ to share and change it. By contrast, the GNU General Public Licenses
+ are intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users.</P>
+<P>This license, the Library General Public License, applies to some
+ specially designated Free Software Foundation software, and to any
+ other libraries whose authors decide to use it. You can use it for your
+ libraries, too.</P>
+<P>When we speak of free software, we are referring to freedom, not
+ price. Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ this service if you wish), that you receive source code or can get it
+ if you want it, that you can change the software or use pieces of it in
+ new free programs; and that you know you can do these things.</P>
+<P>To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the library, or if you modify it.</P>
+<P>For example, if you distribute copies of the library, whether gratis
+ or for a fee, you must give the recipients all the rights that we gave
+ you. You must make sure that they, too, receive or can get the source
+ code. If you link a program with the library, you must provide complete
+ object files to the recipients so that they can relink them with the
+ library, after making changes to the library and recompiling it. And
+ you must show them these terms so they know their rights.</P>
+<P>Our method of protecting your rights has two steps: (1) copyright the
+ library, and (2) offer you this license which gives you legal
+ permission to copy, distribute and/or modify the library.</P>
+<P>Also, for each distributor's protection, we want to make certain that
+ everyone understands that there is no warranty for this free library.
+ If the library is modified by someone else and passed on, we want its
+ recipients to know that what they have is not the original version, so
+ that any problems introduced by others will not reflect on the original
+ authors' reputations.</P>
+<P>Finally, any free program is threatened constantly by software
+ patents. We wish to avoid the danger that companies distributing free
+ software will individually obtain patent licenses, thus in effect
+ transforming the program into proprietary software. To prevent this, we
+ have made it clear that any patent must be licensed for everyone's free
+ use or not licensed at all.</P>
+<P>Most GNU software, including some libraries, is covered by the
+ ordinary GNU General Public License, which was designed for utility
+ programs. This license, the GNU Library General Public License, applies
+ to certain designated libraries. This license is quite different from
+ the ordinary one; be sure to read it in full, and don't assume that
+ anything in it is the same as in the ordinary license.</P>
+<P>The reason we have a separate public license for some libraries is
+ that they blur the distinction we usually make between modifying or
+ adding to a program and simply using it. Linking a program with a
+ library, without changing the library, is in some sense simply using
+ the library, and is analogous to running a utility program or
+ application program. However, in a textual and legal sense, the linked
+ executable is a combined work, a derivative of the original library,
+ and the ordinary General Public License treats it as such.</P>
+<P>Because of this blurred distinction, using the ordinary General
+ Public License for libraries did not effectively promote software
+ sharing, because most developers did not use the libraries. We
+ concluded that weaker conditions might promote sharing better.</P>
+<P>However, unrestricted linking of non-free programs would deprive the
+ users of those programs of all benefit from the free status of the
+ libraries themselves. This Library General Public License is intended
+ to permit developers of non-free programs to use free libraries, while
+ preserving your freedom as a user of such programs to change the free
+ libraries that are incorporated in them. (We have not seen how to
+ achieve this as regards changes in header files, but we have achieved
+ it as regards changes in the actual functions of the Library.) The hope
+ is that this will lead to faster development of free libraries.</P>
+<P>The precise terms and conditions for copying, distribution and
+ modification follow. Pay close attention to the difference between a
+ "work based on the libary" and a "work that uses the library". The
+ former contains code derived from the library, while the latter only
+ works together with the library.</P>
+<P>Note that it is possible for a library to be covered by the ordinary
+ General Public License rather than by this special one.</P>
+<P align="center"><B>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
+ MODIFICATION</B></P>
+<P><STRONG>0.</STRONG> This License Agreement applies to any software
+ library which contains a notice placed by the copyright holder or other
+ authorized party saying it may be distributed under the terms of this
+ Library General Public License (also called "this License"). Each
+ licensee is addressed as "you".</P>
+<P>A "library" means a collection of software functions and/or data
+ prepared so as to be conveniently linked with application programs
+ (which use some of those functions and data) to form executables.</P>
+<P>The "Library", below, refers to any such software library or work
+ which has been distributed under these terms. A "work based on the
+ Library" means either the Library or any derivative work under
+ copyright law: that is to say, a work containing the Library or a
+ portion of it, either verbatim or with modifications and/or translated
+ straightforwardly into another language. (Hereinafter, translation is
+ included without limitation in the term "modification".)</P>
+<P>"Source code" for a work means the preferred form of the work for
+ making modifications to it. For a library, complete source code means
+ all the source code for all modules it contains, plus any associated
+ interface definition files, plus the scripts used to control
+ compilation and installation of the library.</P>
+<P>Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope. The act of running
+ a program using the Library is not restricted, and output from such a
+ program is covered only if its contents constitute a work based on the
+ Library (independent of the use of the Library in a tool for writing
+ it). Whether that is true depends on what the Library does and what the
+ program that uses the Library does.</P>
+<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of
+ the Library's complete source code as you receive it, in any medium,
+ provided that you conspicuously and appropriately publish on each copy
+ an appropriate copyright notice and disclaimer of warranty; keep intact
+ all the notices that refer to this License and to the absence of any
+ warranty; and distribute a copy of this License along with the Library.</P>
+<P>You may charge a fee for the physical act of transferring a copy, and
+ you may at your option offer warranty protection in exchange for a fee.</P>
+<P><STRONG>2.</STRONG> You may modify your copy or copies of the Library
+ or any portion of it, thus forming a work based on the Library, and
+ copy and distribute such modifications or work under the terms of
+ Section 1 above, provided that you also meet all of these conditions:</P>
+<UL>
+<P><STRONG>a)</STRONG> The modified work must itself be a software
+ library.</P>
+<P><STRONG>b)</STRONG> You must cause the files modified to carry
+ prominent notices stating that you changed the files and the date of
+ any change.</P>
+<P><STRONG>c)</STRONG> You must cause the whole of the work to be
+ licensed at no charge to all third parties under the terms of this
+ License.</P>
+<P><STRONG>d)</STRONG> If a facility in the modified Library refers to a
+ function or a table of data to be supplied by an application program
+ that uses the facility, other than as an argument passed when the
+ facility is invoked, then you must make a good faith effort to ensure
+ that, in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of its
+ purpose remains meaningful.</P>
+<P>(For example, a function in a library to compute square roots has a
+ purpose that is entirely well-defined independent of the application.
+ Therefore, Subsection 2d requires that any application-supplied
+ function or table used by this function must be optional: if the
+ application does not supply it, the square root function must still
+ compute square roots.)</P>
+</UL>
+<P>These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Library,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Library, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote
+ it.</P>
+<P>Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Library.</P>
+<P>In addition, mere aggregation of another work not based on the
+ Library with the Library (or with a work based on the Library) on a
+ volume of a storage or distribution medium does not bring the other
+ work under the scope of this License.</P>
+<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary
+ GNU General Public License instead of this License to a given copy of
+ the Library. To do this, you must alter all the notices that refer to
+ this License, so that they refer to the ordinary GNU General Public
+ License, version 2, instead of to this License. (If a newer version
+ than version 2 of the ordinary GNU General Public License has appeared,
+ then you can specify that version instead if you wish.) Do not make any
+ other change in these notices.</P>
+<P>Once this change is made in a given copy, it is irreversible for that
+ copy, so the ordinary GNU General Public License applies to all
+ subsequent copies and derivative works made from that copy.</P>
+<P>This option is useful when you wish to copy part of the code of the
+ Library into a program that is not a library.</P>
+<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a
+ portion or derivative of it, under Section 2) in object code or
+ executable form under the terms of Sections 1 and 2 above provided that
+ you accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections 1
+ and 2 above on a medium customarily used for software interchange.</P>
+<P>If distribution of object code is made by offering access to copy
+ from a designated place, then offering equivalent access to copy the
+ source code from the same place satisfies the requirement to distribute
+ the source code, even though third parties are not compelled to copy
+ the source along with the object code.</P>
+<P><STRONG>5.</STRONG> A program that contains no derivative of any
+ portion of the Library, but is designed to work with the Library by
+ being compiled or linked with it, is called a "work that uses the
+ Library". Such a work, in isolation, is not a derivative work of the
+ Library, and therefore falls outside the scope of this License.</P>
+<P>However, linking a "work that uses the Library" with the Library
+ creates an executable that is a derivative of the Library (because it
+ contains portions of the Library), rather than a "work that uses the
+ library". The executable is therefore covered by this License. Section
+ 6 states terms for distribution of such executables.</P>
+<P>When a "work that uses the Library" uses material from a header file
+ that is part of the Library, the object code for the work may be a
+ derivative work of the Library even though the source code is not.
+ Whether this is true is especially significant if the work can be
+ linked without the Library, or if the work is itself a library. The
+ threshold for this to be true is not precisely defined by law.</P>
+<P>If such an object file uses only numerical parameters, data structure
+ layouts and accessors, and small macros and small inline functions (ten
+ lines or less in length), then the use of the object file is
+ unrestricted, regardless of whether it is legally a derivative work.
+ (Executables containing this object code plus portions of the Library
+ will still fall under Section 6.)</P>
+<P>Otherwise, if the work is a derivative of the Library, you may
+ distribute the object code for the work under the terms of Section 6.
+ Any executables containing that work also fall under Section 6, whether
+ or not they are linked directly with the Library itself.</P>
+<P><STRONG>6.</STRONG> As an exception to the Sections above, you may
+ also compile or link a "work that uses the Library" with the Library to
+ produce a work containing portions of the Library, and distribute that
+ work under terms of your choice, provided that the terms permit
+ modification of the work for the customer's own use and reverse
+ engineering for debugging such modifications.</P>
+<P>You must give prominent notice with each copy of the work that the
+ Library is used in it and that the Library and its use are covered by
+ this License. You must supply a copy of this License. If the work
+ during execution displays copyright notices, you must include the
+ copyright notice for the Library among them, as well as a reference
+ directing the user to the copy of this License. Also, you must do one
+ of these things:</P>
+<UL><STRONG> a)</STRONG> Accompany the work with the complete
+ corresponding machine-readable source code for the Library including
+ whatever changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked with
+ the Library, with the complete machine-readable "work that uses the
+ Library", as object code and/or source code, so that the user can
+ modify the Library and then relink to produce a modified executable
+ containing the modified Library. (It is understood that the user who
+ changes the contents of definitions files in the Library will not
+ necessarily be able to recompile the application to use the modified
+ definitions.)
+<P><STRONG>b)</STRONG> Accompany the work with a written offer, valid
+ for at least three years, to give the same user the materials specified
+ in Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.</P>
+<P><STRONG>c)</STRONG> If distribution of the work is made by offering
+ access to copy from a designated place, offer equivalent access to copy
+ the above specified materials from the same place.</P>
+<P><STRONG>d)</STRONG> Verify that the user has already received a copy
+ of these materials or that you have already sent this user a copy.</P>
+</UL>
+<P>For an executable, the required form of the "work that uses the
+ Library" must include any data and utility programs needed for
+ reproducing the executable from it. However, as a special exception,
+ the source code distributed need not include anything that is normally
+ distributed (in either source or binary form) with the major components
+ (compiler, kernel, and so on) of the operating system on which the
+ executable runs, unless that component itself accompanies the
+ executable.</P>
+<P>It may happen that this requirement contradicts the license
+ restrictions of other proprietary libraries that do not normally
+ accompany the operating system. Such a contradiction means you cannot
+ use both them and the Library together in an executable that you
+ distribute.</P>
+<P><STRONG>7.</STRONG> You may place library facilities that are a work
+ based on the Library side-by-side in a single library together with
+ other library facilities not covered by this License, and distribute
+ such a combined library, provided that the separate distribution of the
+ work based on the Library and of the other library facilities is
+ otherwise permitted, and provided that you do these two things:</P>
+<UL><STRONG> a)</STRONG> Accompany the combined library with a copy of
+ the same work based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the Sections
+ above.
+<P><STRONG>b)</STRONG> Give prominent notice with the combined library
+ of the fact that part of it is a work based on the Library, and
+ explaining where to find the accompanying uncombined form of the same
+ work.</P>
+</UL>
+<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with,
+ or distribute the Library except as expressly provided under this
+ License. Any attempt otherwise to copy, modify, sublicense, link with,
+ or distribute the Library is void, and will automatically terminate
+ your rights under this License. However, parties who have received
+ copies, or rights, from you under this License will not have their
+ licenses terminated so long as such parties remain in full compliance.</P>
+<P><STRONG>9.</STRONG> You are not required to accept this License,
+ since you have not signed it. However, nothing else grants you
+ permission to modify or distribute the Library or its derivative works.
+ These actions are prohibited by law if you do not accept this License.
+ Therefore, by modifying or distributing the Library (or any work based
+ on the Library), you indicate your acceptance of this License to do so,
+ and all its terms and conditions for copying, distributing or modifying
+ the Library or works based on it.</P>
+<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any
+ work based on the Library), the recipient automatically receives a
+ license from the original licensor to copy, distribute, link with or
+ modify the Library subject to these terms and conditions. You may not
+ impose any further restrictions on the recipients' exercise of the
+ rights granted herein. You are not responsible for enforcing compliance
+ by third parties to this License.</P>
+<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or
+ allegation of patent infringement or for any other reason (not limited
+ to patent issues), conditions are imposed on you (whether by court
+ order, agreement or otherwise) that contradict the conditions of this
+ License, they do not excuse you from the conditions of this License. If
+ you cannot distribute so as to satisfy simultaneously your obligations
+ under this License and any other pertinent obligations, then as a
+ consequence you may not distribute the Library at all. For example, if
+ a patent license would not permit royalty-free redistribution of the
+ Library by all those who receive copies directly or indirectly through
+ you, then the only way you could satisfy both it and this License would
+ be to refrain entirely from distribution of the Library.</P>
+<P>If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply, and the section as a whole is intended to apply in other
+ circumstances.</P>
+<P>It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system which is implemented
+ by public license practices. Many people have made generous
+ contributions to the wide range of software distributed through that
+ system in reliance on consistent application of that system; it is up
+ to the author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose that
+ choice.</P>
+<P>This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.</P>
+<P><STRONG>12.</STRONG> If the distribution and/or use of the Library is
+ restricted in certain countries either by patents or by copyrighted
+ interfaces, the original copyright holder who places the Library under
+ this License may add an explicit geographical distribution limitation
+ excluding those countries, so that distribution is permitted only in or
+ among countries not thus excluded. In such case, this License
+ incorporates the limitation as if written in the body of this License.</P>
+<P><STRONG>13.</STRONG> The Free Software Foundation may publish revised
+ and/or new versions of the Library General Public License from time to
+ time. Such new versions will be similar in spirit to the present
+ version, but may differ in detail to address new problems or concerns.</P>
+<P>Each version is given a distinguishing version number. If the Library
+ specifies a version number of this License which applies to it and "any
+ later version", you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Library does not specify a license
+ version number, you may choose any version ever published by the Free
+ Software Foundation.</P>
+<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library
+ into other free programs whose distribution conditions are incompatible
+ with these, write to the author to ask for permission. For software
+ which is copyrighted by the Free Software Foundation, write to the Free
+ Software Foundation; we sometimes make exceptions for this. Our
+ decision will be guided by the two goals of preserving the free status
+ of all derivatives of our free software and of promoting the sharing
+ and reuse of software generally.</P>
+<P align="center"><B>NO WARRANTY</B></P>
+<P><STRONG>15.</STRONG> BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE,
+ THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT
+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+ OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU
+ ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</P>
+<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
+ AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO
+ MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
+ LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL
+ OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+ LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+ RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGES.</P>
+<P align="center"><B>END OF TERMS AND CONDITIONS</B></P>
+<P><B>How to Apply These Terms to Your New Libraries</B></P>
+<P>If you develop a new library, and you want it to be of the greatest
+ possible use to the public, we recommend making it free software that
+ everyone can redistribute and change. You can do so by permitting
+ redistribution under these terms (or, alternatively, under the terms of
+ the ordinary General Public License).</P>
+<P>To apply these terms, attach the following notices to the library. It
+ is safest to attach them to the start of each source file to most
+ effectively convey the exclusion of warranty; and each file should have
+ at least the "copyright" line and a pointer to where the full notice is
+ found.</P>
+<UL>
+<P><VAR>one line to give the library's name and an idea of what it does.</VAR>
+<BR> Copyright (C)<VAR> year</VAR><VAR> name of author</VAR></P>
+<P>This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.</P>
+<P>This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+ General Public License for more details.</P>
+<P>You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</P>
+</UL>
+<P>Also add information on how to contact you by electronic and paper
+ mail.</P>
+<P>You should also get your employer (if you work as a programmer) or
+ your school, if any, to sign a "copyright disclaimer" for the library,
+ if necessary. Here is a sample; alter the names:</P>
+<UL>
+<P>Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random
+ Hacker.</P>
+<P><VAR>signature of Ty Coon</VAR>, 1 April 1990 Ty Coon, President of
+ Vice</P>
+</UL>
+<P>That's all there is to it!</P>
+<HR NOSHADE>
+<H1 align="right"><A name="RELNOTES"><IMG align="right" alt="B" height="100"
+hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
+<H2><A NAME="7_1">Changes in Mini-XML 2.9</A></H2>
+<UL>
+<LI>mxmlLoad* did not correctly load value nodes with MXML_NO_CALLBACK
+ or MXML_TEXT_CALLBACK (Bug #502)</LI>
+</UL>
+<H2><A NAME="7_2">Changes in Mini-XML 2.8</A></H2>
+<UL>
+<LI>Now call docsetutil using xcrun on OS X (Bug #458)</LI>
+<LI>mxmldoc did not escape special HTML characters inside @code foo@
+ comments.</LI>
+<LI>Fixed a memory leak in mxmlElementDeleteAttr (Bug #452)</LI>
+<LI>Added MXML_MAJOR/MINOR_VERSION definitions to mxml.h (Bug $461)</LI>
+<LI>Fixed a bug reading UTF-16 characters from a file (Bug #454)</LI>
+<LI>Fixed a memory leak when loading invalid XML (Bug #496)</LI>
+<LI>Fixed an XML fragment loading problem (Bug #494)</LI>
+</UL>
+<H2><A NAME="7_3">Changes in Mini-XML 2.7</A></H2>
+<UL>
+<LI>Added 64-bit configurations to the VC++ project files (STR #129)</LI>
+<LI>Fixed conformance of mxmldoc's HTML and CSS output.</LI>
+<LI>Added data accessor ("get") functions and made the mxml_node_t and
+ mxml_index_t structures private but still available in the Mini-XML
+ header to preserve source compatibility (STR #118)</LI>
+<LI>Updated the source headers to reference the Mini-XML license and its
+ exceptions to the LGPL2 (STR #108)</LI>
+<LI>Added a new mxmlFindPath() function to find the value node of a
+ named element (STR #110)</LI>
+<LI>Building a static version of the library did not work on Windows
+ (STR #112)</LI>
+<LI>The shared library did not include a destructor for the thread-
+ specific data key on UNIX-based operating systems (STR #103)</LI>
+<LI>mxmlLoad* did not error out on XML with multiple root nodes (STR
+ #101)</LI>
+<LI>Fixed an issue with the _mxml_vstrdupf function (STR #107)</LI>
+<LI>mxmlSave* no longer write all siblings of the passed node, just that
+ node and its children (STR #109)</LI>
+</UL>
+<H2><A NAME="7_4">Changes in Mini-XML 2.6</A></H2>
+<UL>
+<LI>Documentation fixes (STR #91, STR #92)</LI>
+<LI>The mxmldoc program did not handle typedef comments properly (STR
+ #72)</LI>
+<LI>Added support for "long long" printf formats.</LI>
+<LI>The XML parser now ignores BOMs in UTF-8 XML files (STR #89)</LI>
+<LI>The mxmldoc program now supports generating Xcode documentation
+ sets.</LI>
+<LI>mxmlSave*() did not output UTF-8 correctly on some platforms.</LI>
+<LI>mxmlNewXML() now adds encoding="utf-8" in the ?xml directive to
+ avoid problems with non-conformant XML parsers that assume something
+ other than UTF-8 as the default encoding.</LI>
+<LI>Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and
+ "<?xml ... ?>" was always followed by a newline (STR #76)</LI>
+<LI>The mxml.pc.in file was broken (STR #79)</LI>
+<LI>The mxmldoc program now handles "typedef enum name {} name"
+ correctly (STR #72)</LI>
+</UL>
+<H2><A NAME="7_5">Changes in Mini-XML 2.5</A></H2>
+<UL>
+<LI>The mxmldoc program now makes greater use of CSS and supports a
+ --css option to embed an alternate stylesheet.</LI>
+<LI>The mxmldoc program now supports --header and --footer options to
+ insert documentation content before and after the generated content.</LI>
+<LI>The mxmldoc program now supports a --framed option to generate
+ framed HTML output.</LI>
+<LI>The mxmldoc program now creates a table of contents including any
+ headings in the --intro file when generating HTML output.</LI>
+<LI>The man pages and man page output from mxmldoc did not use "\-" for
+ dashes (STR #68)</LI>
+<LI>The debug version of the Mini-XML DLL could not be built (STR #65)</LI>
+<LI>Processing instructions and directives did not work when not at the
+ top level of a document (STR #67)</LI>
+<LI>Spaces around the "=" in attributes were not supported (STR #67)</LI>
+</UL>
+<H2><A NAME="7_6">Changes in Mini-XML 2.4</A></H2>
+<UL>
+<LI>Fixed shared library build problems on HP-UX and Mac OS X.</LI>
+<LI>The mxmldoc program did not output argument descriptions for
+ functions properly.</LI>
+<LI>All global settings (custom, error, and entity callbacks and the
+ wrap margin) are now managed separately for each thread.</LI>
+<LI>Added mxmlElementDeleteAttr() function (STR #59)</LI>
+<LI>mxmlElementSetAttrf() did not work (STR #57)</LI>
+<LI>mxmlLoad*() incorrectly treated declarations as parent elements (STR
+ #56)</LI>
+<LI>mxmlLoad*() incorrectly allowed attributes without values (STR #47)</LI>
+<LI>Fixed Visual C++ build problems (STR #49)</LI>
+<LI>mxmlLoad*() did not return NULL when an element contained an error
+ (STR #46)</LI>
+<LI>Added support for the apos character entity (STR #54)</LI>
+<LI>Fixed whitespace detection with Unicode characters (STR #48)</LI>
+<LI>mxmlWalkNext() and mxmlWalkPrev() did not work correctly when called
+ with a node with no children as the top node (STR #53)</LI>
+</UL>
+<H2><A NAME="7_7">Changes in Mini-XML 2.3</A></H2>
+<UL>
+<LI>Added two exceptions to the LGPL to support static linking of
+ applications against Mini-XML</LI>
+<LI>The mxmldoc utility can now generate man pages, too.</LI>
+<LI>Added a mxmlNewXML() function</LI>
+<LI>Added a mxmlElementSetAttrf() function (STR #43)</LI>
+<LI>Added a snprintf() emulation function for the test program (STR #32)</LI>
+<LI>Added the _CRT_SECURE_NO_DEPRECATE definition when building on VC++
+ 2005 (STR #36)</LI>
+<LI>mxmlLoad*() did not detect missing > characters in elements (STR
+ #41)</LI>
+<LI>mxmlLoad*() did not detect missing close tags at the end of an XML
+ document (STR #45)</LI>
+<LI>Added user_data and ref_count members to mxml_node_t structure</LI>
+<LI>Added mxmlReleaseNode() and mxmlRetainNode() APIs for
+ reference-counted nodes</LI>
+<LI>Added mxmlSetWrapMargin() to control the wrapping of XML output</LI>
+<LI>Added conditional check for EINTR error code for certain Windows
+ compilers that do not define it (STR #33)</LI>
+<LI>The mxmldoc program now generates correct HTML 4.0 output -
+ previously it generated invalid XHTML</LI>
+<LI>The mxmldoc program now supports "@deprecated@, "@private@", and
+ "@since version@" comments</LI>
+<LI>Fixed function and enumeration type bugs in mxmldoc</LI>
+<LI>Fixed the XML schema for mxmldoc</LI>
+<LI>The mxmldoc program now supports --intro, --section, and --title
+ options</LI>
+<LI>The mxmlLoad*() functions could leak a node on an error (STR #27)</LI>
+<LI>The mxml_vsnprintf() function could get in an infinite loop on a
+ buffer overflow (STR #25)</LI>
+<LI>Added new mxmlNewCDATA() and mxmlSetCDATA() functions to create and
+ set CDATA nodes, which are really just special element nodes</LI>
+<LI>Added new MXML_IGNORE type and MXML_IGNORE_CB callback to ignore
+ non-element nodes, e.g. whitespace</LI>
+<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
+ characters would be lost</LI>
+</UL>
+<H2><A NAME="7_8">Changes in Mini-XML 2.2.2</A></H2>
+<UL>
+<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
+ characters would be lost.</LI>
+</UL>
+<H2><A NAME="7_9">Changes in Mini-XML 2.2.1</A></H2>
+<UL>
+<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
+ return NULL on error (STR #21)</LI>
+<LI>mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(), mxmlNewText(), and
+ mxmlNewTextf() incorrectly required a parent node (STR #22)</LI>
+<LI>Fixed an XML output bug in mxmldoc.</LI>
+<LI>The "make install" target now uses the install command to set the
+ proper permissions on UNIX/Linux/OSX.</LI>
+<LI>Fixed a MingW/Cygwin compilation problem (STR #18)</LI>
+</UL>
+<H2><A NAME="7_10">Changes in Mini-XML 2.2</A></H2>
+<UL>
+<LI>Added shared library support (STR #17)</LI>
+<LI>mxmlLoad*() now returns an error when an XML stream contains illegal
+ control characters (STR #10)</LI>
+<LI>mxmlLoad*() now returns an error when an element contains two
+ attributes with the same name in conformance with the XML spec (STR
+ #16)</LI>
+<LI>Added support for CDATA (STR #14, STR #15)</LI>
+<LI>Updated comment and processing instruction handling - no entity
+ support per XML specification.</LI>
+<LI>Added checking for invalid comment termination ("--->" is not
+ allowed)</LI>
+</UL>
+<H2><A NAME="7_11">Changes in Mini-XML 2.1</A></H2>
+<UL>
+<LI>Added support for custom data nodes (STR #6)</LI>
+<LI>Now treat UTF-8 sequences which are longer than necessary as an
+ error (STR #4)</LI>
+<LI>Fixed entity number support (STR #8)</LI>
+<LI>Fixed mxmlLoadString() bug with UTF-8 (STR #7)</LI>
+<LI>Fixed entity lookup bug (STR #5)</LI>
+<LI>Added mxmlLoadFd() and mxmlSaveFd() functions.</LI>
+<LI>Fixed multi-word UTF-16 handling.</LI>
+</UL>
+<H2><A NAME="7_12">Changes in Mini-XML 2.0</A></H2>
+<UL>
+<LI>New programmers manual.</LI>
+<LI>Added Visual C++ project files for Microsoft Windows users.</LI>
+<LI>Added optimizations to mxmldoc, mxmlSaveFile(), and mxmlIndexNew()
+ (STR #2)</LI>
+<LI>mxmlEntityAddCallback() now returns an integer status (STR #2)</LI>
+<LI>Added UTF-16 support (input only; all output is UTF-8)</LI>
+<LI>Added index functions to build a searchable index of XML nodes.</LI>
+<LI>Added character entity callback interface to support additional
+ character entities beyond those defined in the XHTML specification.</LI>
+<LI>Added support for XHTML character entities.</LI>
+<LI>The mxmldoc utility now produces XML output which conforms to an
+ updated XML schema, described in the file "doc/mxmldoc.xsd".</LI>
+<LI>Changed the whitespace callback interface to return strings instead
+ of a single character, allowing for greater control over the formatting
+ of XML files written using Mini-XML. THIS CHANGE WILL REQUIRE CHANGES
+ TO YOUR 1.x CODE IF YOU USE WHITESPACE CALLBACKS.</LI>
+<LI>The mxmldoc utility now produces XML output which conforms to an
+ updated XML schema, described in the file "doc/mxmldoc.xsd".</LI>
+<LI>Changed the whitespace callback interface to return strings instead
+ of a single character, allowing for greater control over the formatting
+ of XML files written using Mini-XML. THIS CHANGE WILL REQUIRE CHANGES
+ TO YOUR 1.x CODE IF YOU USE WHITESPACE CALLBACKS.</LI>
+<LI>The mxmldoc utility is now capable of documenting C++ classes,
+ functions, and structures, and correctly handles C++ comments.</LI>
+<LI>Added new modular tests for mxmldoc.</LI>
+<LI>Updated the mxmldoc output to be more compatible with embedding in
+ manuals produced with HTMLDOC.</LI>
+<LI>The makefile incorrectly included a "/" separator between the
+ destination path and install path. This caused problems when building
+ and installing with MingW.</LI>
+</UL>
+<H2><A NAME="7_13">Changes in Mini-XML 1.3</A></H2>
+<UL>
+<LI>Fixes for mxmldoc.</LI>
+<LI>Added support for reading standard HTML entity names.</LI>
+<LI>mxmlLoadString/File() did not decode character entities in element
+ names, attribute names, or attribute values.</LI>
+<LI>mxmlLoadString/File() would crash when loading non- conformant XML
+ data under an existing parent (top) node.</LI>
+<LI>Fixed several bugs in the mxmldoc utility.</LI>
+<LI>Added new error callback function to catch a variety of errors and
+ log them to someplace other than stderr.</LI>
+<LI>The mxmlElementSetAttr() function now allows for NULL attribute
+ values.</LI>
+<LI>The load and save functions now properly handle quoted element and
+ attribute name strings properly, e.g. for !DOCTYPE declarations.</LI>
+</UL>
+<H2><A NAME="7_14">Changes in Mini-XML 1.2</A></H2>
+<UL>
+<LI>Added new "set" methods to set the value of a node.</LI>
+<LI>Added new formatted text methods mxmlNewTextf() and mxmlSetTextf()
+ to create/set a text node value using printf-style formats.</LI>
+<LI>Added new standard callbacks for use with the mxmlLoad functions.</LI>
+<LI>Updated the HTML documentation to include examples of the walk and
+ load function output.</LI>
+<LI>Added --with/without-ansi configure option to control the strdup()
+ function check.</LI>
+<LI>Added --with/without-snprintf configure option to control the
+ snprintf() and vsnprintf() function checks.</LI>
+</UL>
+<H2><A NAME="7_15">Changes in Mini-XML 1.1.2</A></H2>
+<UL>
+<LI>The mxml(3) man page wasn't updated for the string functions.</LI>
+<LI>mxmlSaveString() returned the wrong number of characters.</LI>
+<LI>mxml_add_char() updated the buffer pointer in the wrong place.</LI>
+</UL>
+<H2><A NAME="7_16">Changes in Mini-XML 1.1.1</A></H2>
+<UL>
+<LI>The private mxml_add_ch() function did not update the
+ start-of-buffer pointer which could cause a crash when using
+ mxmlSaveString().</LI>
+<LI>The private mxml_write_ws() function called putc() instead of using
+ the proper callback which could cause a crash when using
+ mxmlSaveString().</LI>
+<LI>Added a mxmlSaveAllocString() convenience function for saving an XML
+ node tree to an allocated string.</LI>
+</UL>
+<H2><A NAME="7_17">Changes in Mini-XML 1.1</A></H2>
+<UL>
+<LI>The mxmlLoadFile() function now uses dynamically allocated string
+ buffers for element names, attribute names, and attribute values.
+ Previously they were capped at 16383, 255, and 255 bytes, respectively.</LI>
+<LI>Added a new mxmlLoadString() function for loading an XML node tree
+ from a string.</LI>
+<LI>Added a new mxmlSaveString() function for saving an XML node tree to
+ a string.</LI>
+<LI>Add emulation of strdup() if the local platform does not provide the
+ function.</LI>
+</UL>
+<H2><A NAME="7_18">Changes in Mini-XML 1.0</A></H2>
+<UL>
+<LI>The mxmldoc program now handles function arguments, structures,
+ unions, enumerations, classes, and typedefs properly.</LI>
+<LI>Documentation provided via mxmldoc and more in-line comments in the
+ code.</LI>
+<LI>Added man pages and packaging files.</LI>
+</UL>
+<H2><A NAME="7_19">Changes in Mini-XML 0.93</A></H2>
+<UL>
+<LI>New mxmldoc example program that is also used to create and update
+ code documentation using XML and produce HTML reference pages.</LI>
+<LI>Added mxmlAdd() and mxmlRemove() functions to add and remove nodes
+ from a tree. This provides more flexibility over where the nodes are
+ inserted and allows nodes to be moved within the tree as needed.</LI>
+<LI>mxmlLoadFile() now correctly handles comments.</LI>
+<LI>mxmlLoadFile() now supports the required "gt", "quot", and "nbsp"
+ character entities.</LI>
+<LI>mxmlSaveFile() now uses newlines as whitespace when valid to do so.</LI>
+<LI>mxmlFindElement() now also takes attribute name and attribute value
+ string arguments to limit the search to specific elements with
+ attributes and/or values.</LI>
+ NULL pointers can be used as "wildcards".
+<LI>Added uninstall target to makefile, and auto-reconfig if Makefile.in
+ or configure.in are changed.</LI>
+<LI>mxmlFindElement(), mxmlWalkNext(), and mxmlWalkPrev() now all
+ provide "descend" arguments to control whether they descend into child
+ nodes in the tree.</LI>
+<LI>Fixed some whitespace issues in mxmlLoadFile().</LI>
+<LI>Fixed Unicode output and whitespace issues in mxmlSaveFile().</LI>
+<LI>mxmlSaveFile() now supports a whitespace callback to provide more
+ human-readable XML output under program control.</LI>
+</UL>
+<H2><A NAME="7_20">Changes in Mini-XML 0.92</A></H2>
+<UL>
+<LI>mxmlSaveFile() didn't return a value on success.</LI>
+</UL>
+<H2><A NAME="7_21">Changes in Mini-XML 0.91</A></H2>
+<UL>
+<LI>mxmlWalkNext() would go into an infinite loop.</LI>
+</UL>
+<H2><A NAME="7_22">Changes in Mini-XML 0.9</A></H2>
+<UL>
+<LI>Initial public release.</LI>
+</UL>
+<HR NOSHADE>
+<DIV class="body">
+<H1 align="right"><A name="REFERENCE"><IMG align="right" alt="C" height="100"
+hspace="10" src="C.gif" width="100"></A>Library Reference</H1>
+<H2 class="title"><A NAME="8_1">Contents</A></H2>
+<UL class="contents">
+<LI><A href="#FUNCTIONS">Functions</A>
+<UL class="code">
+<LI><A href="#mxmlAdd" title="Add a node to a tree.">mxmlAdd</A></LI>
+<LI><A href="#mxmlDelete" title="Delete a node and all of its children.">
+mxmlDelete</A></LI>
+<LI><A href="#mxmlElementDeleteAttr" title="Delete an attribute.">
+mxmlElementDeleteAttr</A></LI>
+<LI><A href="#mxmlElementGetAttr" title="Get an attribute.">
+mxmlElementGetAttr</A></LI>
+<LI><A href="#mxmlElementSetAttr" title="Set an attribute.">
+mxmlElementSetAttr</A></LI>
+<LI><A href="#mxmlElementSetAttrf" title="Set an attribute with a formatted value.">
+mxmlElementSetAttrf</A></LI>
+<LI><A href="#mxmlEntityAddCallback" title="Add a callback to convert entities to Unicode.">
+mxmlEntityAddCallback</A></LI>
+<LI><A href="#mxmlEntityGetName" title="Get the name that corresponds to the character value.">
+mxmlEntityGetName</A></LI>
+<LI><A href="#mxmlEntityGetValue" title="Get the character corresponding to a named entity.">
+mxmlEntityGetValue</A></LI>
+<LI><A href="#mxmlEntityRemoveCallback" title="Remove a callback.">
+mxmlEntityRemoveCallback</A></LI>
+<LI><A href="#mxmlFindElement" title="Find the named element.">
+mxmlFindElement</A></LI>
+<LI><A href="#mxmlFindPath" title="Find a node with the given path.">
+mxmlFindPath</A></LI>
+<LI><A href="#mxmlGetCDATA" title="Get the value for a CDATA node.">
+mxmlGetCDATA</A></LI>
+<LI><A href="#mxmlGetCustom" title="Get the value for a custom node.">
+mxmlGetCustom</A></LI>
+<LI><A href="#mxmlGetElement" title="Get the name for an element node.">
+mxmlGetElement</A></LI>
+<LI><A href="#mxmlGetFirstChild" title="Get the first child of an element node.">
+mxmlGetFirstChild</A></LI>
+<LI><A href="#mxmlGetInteger" title="Get the integer value from the specified node or its first child.">
+mxmlGetInteger</A></LI>
+<LI><A href="#mxmlGetLastChild" title="Get the last child of an element node.">
+mxmlGetLastChild</A></LI>
+<LI><A href="#mxmlGetNextSibling" title="Return the node type...">
+mxmlGetNextSibling</A></LI>
+<LI><A href="#mxmlGetOpaque" title="Get an opaque string value for a node or its first child.">
+mxmlGetOpaque</A></LI>
+<LI><A href="#mxmlGetParent" title="Get the parent node.">mxmlGetParent</A>
+</LI>
+<LI><A href="#mxmlGetPrevSibling" title="Get the previous node for the current parent.">
+mxmlGetPrevSibling</A></LI>
+<LI><A href="#mxmlGetReal" title="Get the real value for a node or its first child.">
+mxmlGetReal</A></LI>
+<LI><A href="#mxmlGetRefCount" title="Get the current reference (use) count for a node.">
+mxmlGetRefCount</A></LI>
+<LI><A href="#mxmlGetText" title="Get the text value for a node or its first child.">
+mxmlGetText</A></LI>
+<LI><A href="#mxmlGetType" title="Get the node type.">mxmlGetType</A></LI>
+<LI><A href="#mxmlGetUserData" title="Get the user data pointer for a node.">
+mxmlGetUserData</A></LI>
+<LI><A href="#mxmlIndexDelete" title="Delete an index.">mxmlIndexDelete</A>
+</LI>
+<LI><A href="#mxmlIndexEnum" title="Return the next node in the index.">
+mxmlIndexEnum</A></LI>
+<LI><A href="#mxmlIndexFind" title="Find the next matching node.">
+mxmlIndexFind</A></LI>
+<LI><A href="#mxmlIndexGetCount" title="Get the number of nodes in an index.">
+mxmlIndexGetCount</A></LI>
+<LI><A href="#mxmlIndexNew" title="Create a new index.">mxmlIndexNew</A></LI>
+<LI><A href="#mxmlIndexReset" title="Reset the enumeration/find pointer in the index and return the first node in the index.">
+mxmlIndexReset</A></LI>
+<LI><A href="#mxmlLoadFd" title="Load a file descriptor into an XML node tree.">
+mxmlLoadFd</A></LI>
+<LI><A href="#mxmlLoadFile" title="Load a file into an XML node tree.">
+mxmlLoadFile</A></LI>
+<LI><A href="#mxmlLoadString" title="Load a string into an XML node tree.">
+mxmlLoadString</A></LI>
+<LI><A href="#mxmlNewCDATA" title="Create a new CDATA node.">
+mxmlNewCDATA</A></LI>
+<LI><A href="#mxmlNewCustom" title="Create a new custom data node.">
+mxmlNewCustom</A></LI>
+<LI><A href="#mxmlNewElement" title="Create a new element node.">
+mxmlNewElement</A></LI>
+<LI><A href="#mxmlNewInteger" title="Create a new integer node.">
+mxmlNewInteger</A></LI>
+<LI><A href="#mxmlNewOpaque" title="Create a new opaque string.">
+mxmlNewOpaque</A></LI>
+<LI><A href="#mxmlNewReal" title="Create a new real number node.">
+mxmlNewReal</A></LI>
+<LI><A href="#mxmlNewText" title="Create a new text fragment node.">
+mxmlNewText</A></LI>
+<LI><A href="#mxmlNewTextf" title="Create a new formatted text fragment node.">
+mxmlNewTextf</A></LI>
+<LI><A href="#mxmlNewXML" title="Create a new XML document tree.">
+mxmlNewXML</A></LI>
+<LI><A href="#mxmlRelease" title="Release a node.">mxmlRelease</A></LI>
+<LI><A href="#mxmlRemove" title="Remove a node from its parent.">
+mxmlRemove</A></LI>
+<LI><A href="#mxmlRetain" title="Retain a node.">mxmlRetain</A></LI>
+<LI><A href="#mxmlSAXLoadFd" title="Load a file descriptor into an XML node tree using a SAX callback.">
+mxmlSAXLoadFd</A></LI>
+<LI><A href="#mxmlSAXLoadFile" title="Load a file into an XML node tree using a SAX callback.">
+mxmlSAXLoadFile</A></LI>
+<LI><A href="#mxmlSAXLoadString" title="Load a string into an XML node tree using a SAX callback.">
+mxmlSAXLoadString</A></LI>
+<LI><A href="#mxmlSaveAllocString" title="Save an XML tree to an allocated string.">
+mxmlSaveAllocString</A></LI>
+<LI><A href="#mxmlSaveFd" title="Save an XML tree to a file descriptor.">
+mxmlSaveFd</A></LI>
+<LI><A href="#mxmlSaveFile" title="Save an XML tree to a file.">
+mxmlSaveFile</A></LI>
+<LI><A href="#mxmlSaveString" title="Save an XML node tree to a string.">
+mxmlSaveString</A></LI>
+<LI><A href="#mxmlSetCDATA" title="Set the element name of a CDATA node.">
+mxmlSetCDATA</A></LI>
+<LI><A href="#mxmlSetCustom" title="Set the data and destructor of a custom data node.">
+mxmlSetCustom</A></LI>
+<LI><A href="#mxmlSetCustomHandlers" title="Set the handling functions for custom data.">
+mxmlSetCustomHandlers</A></LI>
+<LI><A href="#mxmlSetElement" title="Set the name of an element node.">
+mxmlSetElement</A></LI>
+<LI><A href="#mxmlSetErrorCallback" title="Set the error message callback.">
+mxmlSetErrorCallback</A></LI>
+<LI><A href="#mxmlSetInteger" title="Set the value of an integer node.">
+mxmlSetInteger</A></LI>
+<LI><A href="#mxmlSetOpaque" title="Set the value of an opaque node.">
+mxmlSetOpaque</A></LI>
+<LI><A href="#mxmlSetReal" title="Set the value of a real number node.">
+mxmlSetReal</A></LI>
+<LI><A href="#mxmlSetText" title="Set the value of a text node.">
+mxmlSetText</A></LI>
+<LI><A href="#mxmlSetTextf" title="Set the value of a text node to a formatted string.">
+mxmlSetTextf</A></LI>
+<LI><A href="#mxmlSetUserData" title="Set the user data pointer for a node.">
+mxmlSetUserData</A></LI>
+<LI><A href="#mxmlSetWrapMargin" title="Set the wrap margin when saving XML data.">
+mxmlSetWrapMargin</A></LI>
+<LI><A href="#mxmlWalkNext" title="Walk to the next logical node in the tree.">
+mxmlWalkNext</A></LI>
+<LI><A href="#mxmlWalkPrev" title="Walk to the previous logical node in the tree.">
+mxmlWalkPrev</A></LI>
+</UL>
+</LI>
+<LI><A href="#TYPES">Data Types</A>
+<UL class="code">
+<LI><A href="#mxml_custom_destroy_cb_t" title="Custom data destructor">
+mxml_custom_destroy_cb_t</A></LI>
+<LI><A href="#mxml_custom_load_cb_t" title="Custom data load callback function">
+mxml_custom_load_cb_t</A></LI>
+<LI><A href="#mxml_custom_save_cb_t" title="Custom data save callback function">
+mxml_custom_save_cb_t</A></LI>
+<LI><A href="#mxml_entity_cb_t" title="Entity callback function">
+mxml_entity_cb_t</A></LI>
+<LI><A href="#mxml_error_cb_t" title="Error callback function">
+mxml_error_cb_t</A></LI>
+<LI><A href="#mxml_index_t" title="An XML node index.">mxml_index_t</A></LI>
+<LI><A href="#mxml_load_cb_t" title="Load callback function">
+mxml_load_cb_t</A></LI>
+<LI><A href="#mxml_node_t" title="An XML node.">mxml_node_t</A></LI>
+<LI><A href="#mxml_save_cb_t" title="Save callback function">
+mxml_save_cb_t</A></LI>
+<LI><A href="#mxml_sax_cb_t" title="SAX callback function">mxml_sax_cb_t</A>
+</LI>
+<LI><A href="#mxml_sax_event_t" title="SAX event type.">mxml_sax_event_t</A>
+</LI>
+<LI><A href="#mxml_type_t" title="The XML node type.">mxml_type_t</A></LI>
+</UL>
+</LI>
+<LI><A href="#ENUMERATIONS">Constants</A>
+<UL class="code">
+<LI><A href="#mxml_sax_event_e" title="SAX event type.">mxml_sax_event_e</A>
+</LI>
+<LI><A href="#mxml_type_e" title="The XML node type.">mxml_type_e</A></LI>
+</UL>
+</LI>
+</UL>
+<H2 class="title"><A name="FUNCTIONS">Functions</A></H2>
+<H3 class="function"><A name="mxmlAdd">mxmlAdd</A></H3>
+<P class="description">Add a node to a tree.</P>
+<P class="code"> void mxmlAdd (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     int where,
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *child,
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node</DD>
+<DT>where</DT>
+<DD class="description">Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER</DD>
+<DT>child</DT>
+<DD class="description">Child node for where or MXML_ADD_TO_PARENT</DD>
+<DT>node</DT>
+<DD class="description">Node to add</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">Adds the specified node to the parent. If the
+ child argument is not NULL, puts the new node before or after the
+ specified child depending on the value of the where argument. If the
+ child argument is NULL, puts the new node at the beginning of the child
+ list (MXML_ADD_BEFORE) or at the end of the child list
+ (MXML_ADD_AFTER). The constant MXML_ADD_TO_PARENT can be used to
+ specify a NULL child pointer.</P>
+<H3 class="function"><A name="mxmlDelete">mxmlDelete</A></H3>
+<P class="description">Delete a node and all of its children.</P>
+<P class="code"> void mxmlDelete (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to delete</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">If the specified node has a parent, this function
+ first removes the node from its parent using the mxmlRemove() function.</P>
+<H3 class="function"><A NAME="8_2_3">
+<!--span class="info"-->
+ Mini-XML 2.4 <A name="mxmlElementDeleteAttr">mxmlElementDeleteAttr</A></A>
+</H3>
+<P class="description">Delete an attribute.</P>
+<P class="code"> void mxmlElementDeleteAttr (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *name
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Element</DD>
+<DT>name</DT>
+<DD class="description">Attribute name</DD>
+</DL>
+<H3 class="function"><A name="mxmlElementGetAttr">mxmlElementGetAttr</A></H3>
+<P class="description">Get an attribute.</P>
+<P class="code"> const char *mxmlElementGetAttr (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *name
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Element node</DD>
+<DT>name</DT>
+<DD class="description">Name of attribute</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Attribute value or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">This function returns NULL if the node is not an
+ element or the named attribute does not exist.</P>
+<H3 class="function"><A name="mxmlElementSetAttr">mxmlElementSetAttr</A></H3>
+<P class="description">Set an attribute.</P>
+<P class="code"> void mxmlElementSetAttr (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *name,
+<BR>     const char *value
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Element node</DD>
+<DT>name</DT>
+<DD class="description">Name of attribute</DD>
+<DT>value</DT>
+<DD class="description">Attribute value</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">If the named attribute already exists, the value
+ of the attribute is replaced by the new string value. The string value
+ is copied into the element node. This function does nothing if the node
+ is not an element.</P>
+<H3 class="function"><A NAME="8_2_6">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlElementSetAttrf">mxmlElementSetAttrf</A></A></H3>
+<P class="description">Set an attribute with a formatted value.</P>
+<P class="code"> void mxmlElementSetAttrf (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *name,
+<BR>     const char *format,
+<BR>     ...
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Element node</DD>
+<DT>name</DT>
+<DD class="description">Name of attribute</DD>
+<DT>format</DT>
+<DD class="description">Printf-style attribute value</DD>
+<DT>...</DT>
+<DD class="description">Additional arguments as needed</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">If the named attribute already exists, the value
+ of the attribute is replaced by the new formatted string. The formatted
+ string value is copied into the element node. This function does
+ nothing if the node is not an element.</P>
+<H3 class="function"><A name="mxmlEntityAddCallback">
+mxmlEntityAddCallback</A></H3>
+<P class="description">Add a callback to convert entities to Unicode.</P>
+<P class="code"> int mxmlEntityAddCallback (
+<BR>     <A href="#mxml_entity_cb_t">mxml_entity_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>cb</DT>
+<DD class="description">Callback function to add</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H3 class="function"><A name="mxmlEntityGetName">mxmlEntityGetName</A></H3>
+<P class="description">Get the name that corresponds to the character
+ value.</P>
+<P class="code"> const char *mxmlEntityGetName (
+<BR>     int val
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>val</DT>
+<DD class="description">Character value</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Entity name or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">If val does not need to be represented by a named
+ entity, NULL is returned.</P>
+<H3 class="function"><A name="mxmlEntityGetValue">mxmlEntityGetValue</A></H3>
+<P class="description">Get the character corresponding to a named
+ entity.</P>
+<P class="code"> int mxmlEntityGetValue (
+<BR>     const char *name
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>name</DT>
+<DD class="description">Entity name</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Character value or -1 on error</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The entity name can also be a numeric constant. -1
+ is returned if the name is not known.</P>
+<H3 class="function"><A name="mxmlEntityRemoveCallback">
+mxmlEntityRemoveCallback</A></H3>
+<P class="description">Remove a callback.</P>
+<P class="code"> void mxmlEntityRemoveCallback (
+<BR>     <A href="#mxml_entity_cb_t">mxml_entity_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>cb</DT>
+<DD class="description">Callback function to remove</DD>
+</DL>
+<H3 class="function"><A name="mxmlFindElement">mxmlFindElement</A></H3>
+<P class="description">Find the named element.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlFindElement
+ (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     const char *name,
+<BR>     const char *attr,
+<BR>     const char *value,
+<BR>     int descend
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Current node</DD>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>name</DT>
+<DD class="description">Element name or NULL for any</DD>
+<DT>attr</DT>
+<DD class="description">Attribute name, or NULL for none</DD>
+<DT>value</DT>
+<DD class="description">Attribute value, or NULL for any</DD>
+<DT>descend</DT>
+<DD class="description">Descend into tree - MXML_DESCEND,
+ MXML_NO_DESCEND, or MXML_DESCEND_FIRST</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Element node or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The search is constrained by the name, attribute
+ name, and value; any NULL names or values are treated as wildcards, so
+ different kinds of searches can be implemented by looking for all
+ elements of a given name or all elements with a specific attribute. The
+ descend argument determines whether the search descends into child
+ nodes; normally you will use MXML_DESCEND_FIRST for the initial search
+ and MXML_NO_DESCEND to find additional direct descendents of the node.
+ The top node argument constrains the search to a particular node's
+ children.</P>
+<H3 class="function"><A NAME="8_2_12">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlFindPath">mxmlFindPath</A></A></H3>
+<P class="description">Find a node with the given path.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlFindPath (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     const char *path
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>path</DT>
+<DD class="description">Path to element</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Found node or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The "path" is a slash-separated list of element
+ names. The name "*" is considered a wildcard for one or more levels of
+ elements. For example, "foo/one/two", "bar/two/one", "*/one", and so
+ forth.
+<BR>
+<BR> The first child node of the found node is returned if the given
+ node has children and the first child is a value node.</P>
+<H3 class="function"><A NAME="8_2_13">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetCDATA">mxmlGetCDATA</A></A></H3>
+<P class="description">Get the value for a CDATA node.</P>
+<P class="code"> const char *mxmlGetCDATA (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">CDATA value or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node is not a
+ CDATA element.</P>
+<H3 class="function"><A NAME="8_2_14">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetCustom">mxmlGetCustom</A></A></H3>
+<P class="description">Get the value for a custom node.</P>
+<P class="code"> const void *mxmlGetCustom (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Custom value or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node (or its
+ first child) is not a custom value node.</P>
+<H3 class="function"><A NAME="8_2_15">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetElement">mxmlGetElement</A></A></H3>
+<P class="description">Get the name for an element node.</P>
+<P class="code"> const char *mxmlGetElement (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Element name or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node is not
+ an element node.</P>
+<H3 class="function"><A NAME="8_2_16">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetFirstChild">mxmlGetFirstChild</A></A></H3>
+<P class="description">Get the first child of an element node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A>
+ *mxmlGetFirstChild (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First child or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node is not
+ an element node or if the node has no children.</P>
+<H3 class="function"><A NAME="8_2_17">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetInteger">mxmlGetInteger</A></A></H3>
+<P class="description">Get the integer value from the specified node or
+ its first child.</P>
+<P class="code"> int mxmlGetInteger (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Integer value or 0</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">0 is returned if the node (or its first child) is
+ not an integer value node.</P>
+<H3 class="function"><A NAME="8_2_18">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetLastChild">mxmlGetLastChild</A></A></H3>
+<P class="description">Get the last child of an element node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A>
+ *mxmlGetLastChild (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Last child or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node is not
+ an element node or if the node has no children.</P>
+<H3 class="function"><A name="mxmlGetNextSibling">mxmlGetNextSibling</A></H3>
+<P class="description">Return the node type...</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A>
+ *mxmlGetNextSibling (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Get the next node for the current parent.</P>
+<P class="discussion"><CODE>NULL</CODE> is returned if this is the last
+ child for the current parent.</P>
+<H3 class="function"><A NAME="8_2_20">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetOpaque">mxmlGetOpaque</A></A></H3>
+<P class="description">Get an opaque string value for a node or its
+ first child.</P>
+<P class="code"> const char *mxmlGetOpaque (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Opaque string or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node (or its
+ first child) is not an opaque value node.</P>
+<H3 class="function"><A NAME="8_2_21">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetParent">mxmlGetParent</A></A></H3>
+<P class="description">Get the parent node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlGetParent (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Parent node or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned for a root node.</P>
+<H3 class="function"><A NAME="8_2_22">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetPrevSibling">mxmlGetPrevSibling</A></A></H3>
+<P class="description">Get the previous node for the current parent.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A>
+ *mxmlGetPrevSibling (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Previous node or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if this is the first
+ child for the current parent.</P>
+<H3 class="function"><A NAME="8_2_23">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetReal">mxmlGetReal</A></A></H3>
+<P class="description">Get the real value for a node or its first child.</P>
+<P class="code"> double mxmlGetReal (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Real value or 0.0</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">0.0 is returned if the node (or its first child)
+ is not a real value node.</P>
+<H3 class="function"><A NAME="8_2_24">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetRefCount">mxmlGetRefCount</A></A></H3>
+<P class="description">Get the current reference (use) count for a node.</P>
+<P class="code"> int mxmlGetRefCount (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Reference count</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The initial reference count of new nodes is 1. Use
+ the <A href="#mxmlRetain"><CODE>mxmlRetain</CODE></A> and <A href="#mxmlRelease">
+<CODE>mxmlRelease</CODE></A> functions to increment and decrement a
+ node's reference count. .</P>
+<H3 class="function"><A NAME="8_2_25">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetText">mxmlGetText</A></A></H3>
+<P class="description">Get the text value for a node or its first child.</P>
+<P class="code"> const char *mxmlGetText (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     int *whitespace
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+<DT>whitespace</DT>
+<DD class="description">1 if string is preceded by whitespace, 0
+ otherwise</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Text string or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>NULL</CODE> is returned if the node (or its
+ first child) is not a text node. The "whitespace" argument can be NULL.</P>
+<H3 class="function"><A NAME="8_2_26">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetType">mxmlGetType</A></A></H3>
+<P class="description">Get the node type.</P>
+<P class="code"> <A href="#mxml_type_t">mxml_type_t</A> mxmlGetType (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Type of node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion"><CODE>MXML_IGNORE</CODE> is returned if "node" is <CODE>
+NULL</CODE>.</P>
+<H3 class="function"><A NAME="8_2_27">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlGetUserData">mxmlGetUserData</A></A></H3>
+<P class="description">Get the user data pointer for a node.</P>
+<P class="code"> void *mxmlGetUserData (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to get</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">User data pointer</P>
+<H3 class="function"><A name="mxmlIndexDelete">mxmlIndexDelete</A></H3>
+<P class="description">Delete an index.</P>
+<P class="code"> void mxmlIndexDelete (
+<BR>     <A href="#mxml_index_t">mxml_index_t</A> *ind
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>ind</DT>
+<DD class="description">Index to delete</DD>
+</DL>
+<H3 class="function"><A name="mxmlIndexEnum">mxmlIndexEnum</A></H3>
+<P class="description">Return the next node in the index.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlIndexEnum (
+<BR>     <A href="#mxml_index_t">mxml_index_t</A> *ind
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>ind</DT>
+<DD class="description">Index to enumerate</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Next node or NULL if there is none</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">Nodes are returned in the sorted order of the
+ index.</P>
+<H3 class="function"><A name="mxmlIndexFind">mxmlIndexFind</A></H3>
+<P class="description">Find the next matching node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlIndexFind (
+<BR>     <A href="#mxml_index_t">mxml_index_t</A> *ind,
+<BR>     const char *element,
+<BR>     const char *value
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>ind</DT>
+<DD class="description">Index to search</DD>
+<DT>element</DT>
+<DD class="description">Element name to find, if any</DD>
+<DT>value</DT>
+<DD class="description">Attribute value, if any</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Node or NULL if none found</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">You should call mxmlIndexReset() prior to using
+ this function for the first time with a particular set of "element" and
+ "value" strings. Passing NULL for both "element" and "value" is
+ equivalent to calling mxmlIndexEnum().</P>
+<H3 class="function"><A NAME="8_2_31">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlIndexGetCount">mxmlIndexGetCount</A></A></H3>
+<P class="description">Get the number of nodes in an index.</P>
+<P class="code"> int mxmlIndexGetCount (
+<BR>     <A href="#mxml_index_t">mxml_index_t</A> *ind
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>ind</DT>
+<DD class="description">Index of nodes</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Number of nodes in index</P>
+<H3 class="function"><A name="mxmlIndexNew">mxmlIndexNew</A></H3>
+<P class="description">Create a new index.</P>
+<P class="code"> <A href="#mxml_index_t">mxml_index_t</A> *mxmlIndexNew
+ (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *element,
+<BR>     const char *attr
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">XML node tree</DD>
+<DT>element</DT>
+<DD class="description">Element to index or NULL for all</DD>
+<DT>attr</DT>
+<DD class="description">Attribute to index or NULL for none</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New index</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The index will contain all nodes that contain the
+ named element and/or attribute. If both "element" and "attr" are NULL,
+ then the index will contain a sorted list of the elements in the node
+ tree. Nodes are sorted by element name and optionally by attribute
+ value if the "attr" argument is not NULL.</P>
+<H3 class="function"><A name="mxmlIndexReset">mxmlIndexReset</A></H3>
+<P class="description">Reset the enumeration/find pointer in the index
+ and return the first node in the index.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlIndexReset
+ (
+<BR>     <A href="#mxml_index_t">mxml_index_t</A> *ind
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>ind</DT>
+<DD class="description">Index to reset</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if there is none</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">This function should be called prior to using
+ mxmlIndexEnum() or mxmlIndexFind() for the first time.</P>
+<H3 class="function"><A name="mxmlLoadFd">mxmlLoadFd</A></H3>
+<P class="description">Load a file descriptor into an XML node tree.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlLoadFd (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     int fd,
+<BR>     <A href="#mxml_load_cb_t">mxml_load_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>fd</DT>
+<DD class="description">File descriptor to read from</DD>
+<DT>cb</DT>
+<DD class="description">Callback function or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if the file could not be read.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The nodes in the specified file are added to the
+ specified top node. If no top node is provided, the XML file MUST be
+ well-formed with a single parent node like <?xml> for the entire file.
+ The callback function returns the value type that should be used for
+ child nodes. If MXML_NO_CALLBACK is specified then all child nodes will
+ be either MXML_ELEMENT or MXML_TEXT nodes.
+<BR>
+<BR> The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ child nodes of the specified type.</P>
+<H3 class="function"><A name="mxmlLoadFile">mxmlLoadFile</A></H3>
+<P class="description">Load a file into an XML node tree.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlLoadFile (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     FILE *fp,
+<BR>     <A href="#mxml_load_cb_t">mxml_load_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>fp</DT>
+<DD class="description">File to read from</DD>
+<DT>cb</DT>
+<DD class="description">Callback function or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if the file could not be read.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The nodes in the specified file are added to the
+ specified top node. If no top node is provided, the XML file MUST be
+ well-formed with a single parent node like <?xml> for the entire file.
+ The callback function returns the value type that should be used for
+ child nodes. If MXML_NO_CALLBACK is specified then all child nodes will
+ be either MXML_ELEMENT or MXML_TEXT nodes.
+<BR>
+<BR> The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ child nodes of the specified type.</P>
+<H3 class="function"><A name="mxmlLoadString">mxmlLoadString</A></H3>
+<P class="description">Load a string into an XML node tree.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlLoadString
+ (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     const char *s,
+<BR>     <A href="#mxml_load_cb_t">mxml_load_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>s</DT>
+<DD class="description">String to load</DD>
+<DT>cb</DT>
+<DD class="description">Callback function or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if the string has errors.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The nodes in the specified string are added to the
+ specified top node. If no top node is provided, the XML string MUST be
+ well-formed with a single parent node like <?xml> for the entire
+ string. The callback function returns the value type that should be
+ used for child nodes. If MXML_NO_CALLBACK is specified then all child
+ nodes will be either MXML_ELEMENT or MXML_TEXT nodes.
+<BR>
+<BR> The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ child nodes of the specified type.</P>
+<H3 class="function"><A NAME="8_2_37">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlNewCDATA">mxmlNewCDATA</A></A></H3>
+<P class="description">Create a new CDATA node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewCDATA (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     const char *data
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>data</DT>
+<DD class="description">Data string</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new CDATA node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new CDATA node has no parent. The data string must
+ be nul-terminated and is copied into the new node. CDATA nodes use the
+ MXML_ELEMENT type.</P>
+<H3 class="function"><A NAME="8_2_38">
+<!--span class="info"-->
+ Mini-XML 2.1 <A name="mxmlNewCustom">mxmlNewCustom</A></A></H3>
+<P class="description">Create a new custom data node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewCustom (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     void *data,
+<BR>     <A href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</A>
+ destroy
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>data</DT>
+<DD class="description">Pointer to data</DD>
+<DT>destroy</DT>
+<DD class="description">Function to destroy data</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new custom node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new element node has no parent. NULL can be passed
+ when the data in the node is not dynamically allocated or is separately
+ managed.</P>
+<H3 class="function"><A name="mxmlNewElement">mxmlNewElement</A></H3>
+<P class="description">Create a new element node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewElement
+ (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     const char *name
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>name</DT>
+<DD class="description">Name of element</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new element node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new element node has no parent.</P>
+<H3 class="function"><A name="mxmlNewInteger">mxmlNewInteger</A></H3>
+<P class="description">Create a new integer node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewInteger
+ (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     int integer
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>integer</DT>
+<DD class="description">Integer value</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new integer node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new integer node has no parent.</P>
+<H3 class="function"><A name="mxmlNewOpaque">mxmlNewOpaque</A></H3>
+<P class="description">Create a new opaque string.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewOpaque (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     const char *opaque
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>opaque</DT>
+<DD class="description">Opaque string</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new opaque node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new opaque node has no parent. The opaque string
+ must be nul-terminated and is copied into the new node.</P>
+<H3 class="function"><A name="mxmlNewReal">mxmlNewReal</A></H3>
+<P class="description">Create a new real number node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewReal (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     double real
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>real</DT>
+<DD class="description">Real number value</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new real number node is added to the end of
+ the specified parent's child list. The constant MXML_NO_PARENT can be
+ used to specify that the new real number node has no parent.</P>
+<H3 class="function"><A name="mxmlNewText">mxmlNewText</A></H3>
+<P class="description">Create a new text fragment node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewText (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     int whitespace,
+<BR>     const char *string
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>whitespace</DT>
+<DD class="description">1 = leading whitespace, 0 = no whitespace</DD>
+<DT>string</DT>
+<DD class="description">String</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new text node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new text node has no parent. The whitespace
+ parameter is used to specify whether leading whitespace is present
+ before the node. The text string must be nul-terminated and is copied
+ into the new node.</P>
+<H3 class="function"><A name="mxmlNewTextf">mxmlNewTextf</A></H3>
+<P class="description">Create a new formatted text fragment node.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewTextf (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *parent,
+<BR>     int whitespace,
+<BR>     const char *format,
+<BR>     ...
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>parent</DT>
+<DD class="description">Parent node or MXML_NO_PARENT</DD>
+<DT>whitespace</DT>
+<DD class="description">1 = leading whitespace, 0 = no whitespace</DD>
+<DT>format</DT>
+<DD class="description">Printf-style frmat string</DD>
+<DT>...</DT>
+<DD class="description">Additional args as needed</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The new text node is added to the end of the
+ specified parent's child list. The constant MXML_NO_PARENT can be used
+ to specify that the new text node has no parent. The whitespace
+ parameter is used to specify whether leading whitespace is present
+ before the node. The format string must be nul-terminated and is
+ formatted into the new node.</P>
+<H3 class="function"><A NAME="8_2_45">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlNewXML">mxmlNewXML</A></A></H3>
+<P class="description">Create a new XML document tree.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlNewXML (
+<BR>     const char *version
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>version</DT>
+<DD class="description">Version number to use</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New ?xml node</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The "version" argument specifies the version
+ number to put in the ?xml element node. If NULL, version 1.0 is
+ assumed.</P>
+<H3 class="function"><A NAME="8_2_46">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlRelease">mxmlRelease</A></A></H3>
+<P class="description">Release a node.</P>
+<P class="code"> int mxmlRelease (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New reference count</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">When the reference count reaches zero, the node
+ (and any children) is deleted via mxmlDelete().</P>
+<H3 class="function"><A name="mxmlRemove">mxmlRemove</A></H3>
+<P class="description">Remove a node from its parent.</P>
+<P class="code"> void mxmlRemove (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to remove</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">Does not free memory used by the node - use
+ mxmlDelete() for that. This function does nothing if the node has no
+ parent.</P>
+<H3 class="function"><A NAME="8_2_48">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlRetain">mxmlRetain</A></A></H3>
+<P class="description">Retain a node.</P>
+<P class="code"> int mxmlRetain (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">New reference count</P>
+<H3 class="function"><A NAME="8_2_49">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlSAXLoadFd">mxmlSAXLoadFd</A></A></H3>
+<P class="description">Load a file descriptor into an XML node tree
+ using a SAX callback.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlSAXLoadFd (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     int fd,
+<BR>     <A href="#mxml_load_cb_t">mxml_load_cb_t</A> cb,
+<BR>     <A href="#mxml_sax_cb_t">mxml_sax_cb_t</A> sax_cb,
+<BR>     void *sax_data
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>fd</DT>
+<DD class="description">File descriptor to read from</DD>
+<DT>cb</DT>
+<DD class="description">Callback function or MXML_NO_CALLBACK</DD>
+<DT>sax_cb</DT>
+<DD class="description">SAX callback or MXML_NO_CALLBACK</DD>
+<DT>sax_data</DT>
+<DD class="description">SAX user data</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if the file could not be read.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The nodes in the specified file are added to the
+ specified top node. If no top node is provided, the XML file MUST be
+ well-formed with a single parent node like <?xml> for the entire file.
+ The callback function returns the value type that should be used for
+ child nodes. If MXML_NO_CALLBACK is specified then all child nodes will
+ be either MXML_ELEMENT or MXML_TEXT nodes.
+<BR>
+<BR> The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ child nodes of the specified type.
+<BR>
+<BR> The SAX callback must call mxmlRetain() for any nodes that need to
+ be kept for later use. Otherwise, nodes are deleted when the parent
+ node is closed or after each data, comment, CDATA, or directive node.</P>
+<H3 class="function"><A NAME="8_2_50">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlSAXLoadFile">mxmlSAXLoadFile</A></A></H3>
+<P class="description">Load a file into an XML node tree using a SAX
+ callback.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlSAXLoadFile
+ (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     FILE *fp,
+<BR>     <A href="#mxml_load_cb_t">mxml_load_cb_t</A> cb,
+<BR>     <A href="#mxml_sax_cb_t">mxml_sax_cb_t</A> sax_cb,
+<BR>     void *sax_data
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>fp</DT>
+<DD class="description">File to read from</DD>
+<DT>cb</DT>
+<DD class="description">Callback function or MXML_NO_CALLBACK</DD>
+<DT>sax_cb</DT>
+<DD class="description">SAX callback or MXML_NO_CALLBACK</DD>
+<DT>sax_data</DT>
+<DD class="description">SAX user data</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if the file could not be read.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The nodes in the specified file are added to the
+ specified top node. If no top node is provided, the XML file MUST be
+ well-formed with a single parent node like <?xml> for the entire file.
+ The callback function returns the value type that should be used for
+ child nodes. If MXML_NO_CALLBACK is specified then all child nodes will
+ be either MXML_ELEMENT or MXML_TEXT nodes.
+<BR>
+<BR> The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ child nodes of the specified type.
+<BR>
+<BR> The SAX callback must call mxmlRetain() for any nodes that need to
+ be kept for later use. Otherwise, nodes are deleted when the parent
+ node is closed or after each data, comment, CDATA, or directive node.</P>
+<H3 class="function"><A NAME="8_2_51">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlSAXLoadString">mxmlSAXLoadString</A></A></H3>
+<P class="description">Load a string into an XML node tree using a SAX
+ callback.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A>
+ *mxmlSAXLoadString (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     const char *s,
+<BR>     <A href="#mxml_load_cb_t">mxml_load_cb_t</A> cb,
+<BR>     <A href="#mxml_sax_cb_t">mxml_sax_cb_t</A> sax_cb,
+<BR>     void *sax_data
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>s</DT>
+<DD class="description">String to load</DD>
+<DT>cb</DT>
+<DD class="description">Callback function or MXML_NO_CALLBACK</DD>
+<DT>sax_cb</DT>
+<DD class="description">SAX callback or MXML_NO_CALLBACK</DD>
+<DT>sax_data</DT>
+<DD class="description">SAX user data</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">First node or NULL if the string has errors.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The nodes in the specified string are added to the
+ specified top node. If no top node is provided, the XML string MUST be
+ well-formed with a single parent node like <?xml> for the entire
+ string. The callback function returns the value type that should be
+ used for child nodes. If MXML_NO_CALLBACK is specified then all child
+ nodes will be either MXML_ELEMENT or MXML_TEXT nodes.
+<BR>
+<BR> The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ child nodes of the specified type.
+<BR>
+<BR> The SAX callback must call mxmlRetain() for any nodes that need to
+ be kept for later use. Otherwise, nodes are deleted when the parent
+ node is closed or after each data, comment, CDATA, or directive node.</P>
+<H3 class="function"><A name="mxmlSaveAllocString">mxmlSaveAllocString</A>
+</H3>
+<P class="description">Save an XML tree to an allocated string.</P>
+<P class="code"> char *mxmlSaveAllocString (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     <A href="#mxml_save_cb_t">mxml_save_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to write</DD>
+<DT>cb</DT>
+<DD class="description">Whitespace callback or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Allocated string or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">This function returns a pointer to a string
+ containing the textual representation of the XML node tree. The string
+ should be freed using the free() function when you are done with it.
+ NULL is returned if the node would produce an empty string or if the
+ string cannot be allocated.
+<BR>
+<BR> The callback argument specifies a function that returns a
+ whitespace string or NULL before and after each element. If
+ MXML_NO_CALLBACK is specified, whitespace will only be added before
+ MXML_TEXT nodes with leading whitespace and before attribute names
+ inside opening element tags.</P>
+<H3 class="function"><A name="mxmlSaveFd">mxmlSaveFd</A></H3>
+<P class="description">Save an XML tree to a file descriptor.</P>
+<P class="code"> int mxmlSaveFd (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     int fd,
+<BR>     <A href="#mxml_save_cb_t">mxml_save_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to write</DD>
+<DT>fd</DT>
+<DD class="description">File descriptor to write to</DD>
+<DT>cb</DT>
+<DD class="description">Whitespace callback or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on error.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The callback argument specifies a function that
+ returns a whitespace string or NULL before and after each element. If
+ MXML_NO_CALLBACK is specified, whitespace will only be added before
+ MXML_TEXT nodes with leading whitespace and before attribute names
+ inside opening element tags.</P>
+<H3 class="function"><A name="mxmlSaveFile">mxmlSaveFile</A></H3>
+<P class="description">Save an XML tree to a file.</P>
+<P class="code"> int mxmlSaveFile (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     FILE *fp,
+<BR>     <A href="#mxml_save_cb_t">mxml_save_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to write</DD>
+<DT>fp</DT>
+<DD class="description">File to write to</DD>
+<DT>cb</DT>
+<DD class="description">Whitespace callback or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on error.</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The callback argument specifies a function that
+ returns a whitespace string or NULL before and after each element. If
+ MXML_NO_CALLBACK is specified, whitespace will only be added before
+ MXML_TEXT nodes with leading whitespace and before attribute names
+ inside opening element tags.</P>
+<H3 class="function"><A name="mxmlSaveString">mxmlSaveString</A></H3>
+<P class="description">Save an XML node tree to a string.</P>
+<P class="code"> int mxmlSaveString (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     char *buffer,
+<BR>     int bufsize,
+<BR>     <A href="#mxml_save_cb_t">mxml_save_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to write</DD>
+<DT>buffer</DT>
+<DD class="description">String buffer</DD>
+<DT>bufsize</DT>
+<DD class="description">Size of string buffer</DD>
+<DT>cb</DT>
+<DD class="description">Whitespace callback or MXML_NO_CALLBACK</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Size of string</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">This function returns the total number of bytes
+ that would be required for the string but only copies (bufsize - 1)
+ characters into the specified buffer.
+<BR>
+<BR> The callback argument specifies a function that returns a
+ whitespace string or NULL before and after each element. If
+ MXML_NO_CALLBACK is specified, whitespace will only be added before
+ MXML_TEXT nodes with leading whitespace and before attribute names
+ inside opening element tags.</P>
+<H3 class="function"><A NAME="8_2_56">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlSetCDATA">mxmlSetCDATA</A></A></H3>
+<P class="description">Set the element name of a CDATA node.</P>
+<P class="code"> int mxmlSetCDATA (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *data
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>data</DT>
+<DD class="description">New data string</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not a CDATA element node.</P>
+<H3 class="function"><A NAME="8_2_57">
+<!--span class="info"-->
+ Mini-XML 2.1 <A name="mxmlSetCustom">mxmlSetCustom</A></A></H3>
+<P class="description">Set the data and destructor of a custom data
+ node.</P>
+<P class="code"> int mxmlSetCustom (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     void *data,
+<BR>     <A href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</A>
+ destroy
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>data</DT>
+<DD class="description">New data pointer</DD>
+<DT>destroy</DT>
+<DD class="description">New destructor function</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not a custom node.</P>
+<H3 class="function"><A name="mxmlSetCustomHandlers">
+mxmlSetCustomHandlers</A></H3>
+<P class="description">Set the handling functions for custom data.</P>
+<P class="code"> void mxmlSetCustomHandlers (
+<BR>     <A href="#mxml_custom_load_cb_t">mxml_custom_load_cb_t</A>
+ load,
+<BR>     <A href="#mxml_custom_save_cb_t">mxml_custom_save_cb_t</A> save
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>load</DT>
+<DD class="description">Load function</DD>
+<DT>save</DT>
+<DD class="description">Save function</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The load function accepts a node pointer and a
+ data string and must return 0 on success and non-zero on error.
+<BR>
+<BR> The save function accepts a node pointer and must return a malloc'd
+ string on success and NULL on error.</P>
+<H3 class="function"><A name="mxmlSetElement">mxmlSetElement</A></H3>
+<P class="description">Set the name of an element node.</P>
+<P class="code"> int mxmlSetElement (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *name
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>name</DT>
+<DD class="description">New name string</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it is not an element
+ node.</P>
+<H3 class="function"><A name="mxmlSetErrorCallback">mxmlSetErrorCallback</A>
+</H3>
+<P class="description">Set the error message callback.</P>
+<P class="code"> void mxmlSetErrorCallback (
+<BR>     <A href="#mxml_error_cb_t">mxml_error_cb_t</A> cb
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>cb</DT>
+<DD class="description">Error callback function</DD>
+</DL>
+<H3 class="function"><A name="mxmlSetInteger">mxmlSetInteger</A></H3>
+<P class="description">Set the value of an integer node.</P>
+<P class="code"> int mxmlSetInteger (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     int integer
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>integer</DT>
+<DD class="description">Integer value</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not an integer node.</P>
+<H3 class="function"><A name="mxmlSetOpaque">mxmlSetOpaque</A></H3>
+<P class="description">Set the value of an opaque node.</P>
+<P class="code"> int mxmlSetOpaque (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     const char *opaque
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>opaque</DT>
+<DD class="description">Opaque string</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not an opaque node.</P>
+<H3 class="function"><A name="mxmlSetReal">mxmlSetReal</A></H3>
+<P class="description">Set the value of a real number node.</P>
+<P class="code"> int mxmlSetReal (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     double real
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>real</DT>
+<DD class="description">Real number value</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not a real number node.</P>
+<H3 class="function"><A name="mxmlSetText">mxmlSetText</A></H3>
+<P class="description">Set the value of a text node.</P>
+<P class="code"> int mxmlSetText (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     int whitespace,
+<BR>     const char *string
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>whitespace</DT>
+<DD class="description">1 = leading whitespace, 0 = no whitespace</DD>
+<DT>string</DT>
+<DD class="description">String</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not a text node.</P>
+<H3 class="function"><A name="mxmlSetTextf">mxmlSetTextf</A></H3>
+<P class="description">Set the value of a text node to a formatted
+ string.</P>
+<P class="code"> int mxmlSetTextf (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     int whitespace,
+<BR>     const char *format,
+<BR>     ...
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>whitespace</DT>
+<DD class="description">1 = leading whitespace, 0 = no whitespace</DD>
+<DT>format</DT>
+<DD class="description">Printf-style format string</DD>
+<DT>...</DT>
+<DD class="description">Additional arguments as needed</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The node is not changed if it (or its first child)
+ is not a text node.</P>
+<H3 class="function"><A NAME="8_2_66">
+<!--span class="info"-->
+ Mini-XML 2.7 <A name="mxmlSetUserData">mxmlSetUserData</A></A></H3>
+<P class="description">Set the user data pointer for a node.</P>
+<P class="code"> int mxmlSetUserData (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     void *data
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Node to set</DD>
+<DT>data</DT>
+<DD class="description">User data pointer</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">0 on success, -1 on failure</P>
+<H3 class="function"><A NAME="8_2_67">
+<!--span class="info"-->
+ Mini-XML 2.3 <A name="mxmlSetWrapMargin">mxmlSetWrapMargin</A></A></H3>
+<P class="description">Set the wrap margin when saving XML data.</P>
+<P class="code"> void mxmlSetWrapMargin (
+<BR>     int column
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>column</DT>
+<DD class="description">Column for wrapping, 0 to disable wrapping</DD>
+</DL>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">Wrapping is disabled when "column" is 0.</P>
+<H3 class="function"><A name="mxmlWalkNext">mxmlWalkNext</A></H3>
+<P class="description">Walk to the next logical node in the tree.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlWalkNext (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     int descend
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Current node</DD>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>descend</DT>
+<DD class="description">Descend into tree - MXML_DESCEND,
+ MXML_NO_DESCEND, or MXML_DESCEND_FIRST</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Next node or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The descend argument controls whether the first
+ child is considered to be the next node. The top node argument
+ constrains the walk to the node's children.</P>
+<H3 class="function"><A name="mxmlWalkPrev">mxmlWalkPrev</A></H3>
+<P class="description">Walk to the previous logical node in the tree.</P>
+<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlWalkPrev (
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *node,
+<BR>     <A href="#mxml_node_t">mxml_node_t</A> *top,
+<BR>     int descend
+<BR> );</P>
+<H4 class="parameters">Parameters</H4>
+<DL>
+<DT>node</DT>
+<DD class="description">Current node</DD>
+<DT>top</DT>
+<DD class="description">Top node</DD>
+<DT>descend</DT>
+<DD class="description">Descend into tree - MXML_DESCEND,
+ MXML_NO_DESCEND, or MXML_DESCEND_FIRST</DD>
+</DL>
+<H4 class="returnvalue">Return Value</H4>
+<P class="description">Previous node or NULL</P>
+<H4 class="discussion">Discussion</H4>
+<P class="discussion">The descend argument controls whether the previous
+ node's last child is considered to be the previous node. The top node
+ argument constrains the walk to the node's children.</P>
+<H2 class="title"><A name="TYPES">Data Types</A></H2>
+<H3 class="typedef"><A name="mxml_custom_destroy_cb_t">
+mxml_custom_destroy_cb_t</A></H3>
+<P class="description">Custom data destructor</P>
+<P class="code"> typedef void (*mxml_custom_destroy_cb_t)(void *);</P>
+<H3 class="typedef"><A name="mxml_custom_load_cb_t">
+mxml_custom_load_cb_t</A></H3>
+<P class="description">Custom data load callback function</P>
+<P class="code"> typedef int (*mxml_custom_load_cb_t)(<A href="#mxml_node_t">
+mxml_node_t</A> *, const char *);</P>
+<H3 class="typedef"><A name="mxml_custom_save_cb_t">
+mxml_custom_save_cb_t</A></H3>
+<P class="description">Custom data save callback function</P>
+<P class="code"> typedef char *(*mxml_custom_save_cb_t)(<A href="#mxml_node_t">
+mxml_node_t</A> *);</P>
+<H3 class="typedef"><A name="mxml_entity_cb_t">mxml_entity_cb_t</A></H3>
+<P class="description">Entity callback function</P>
+<P class="code"> typedef int (*mxml_entity_cb_t)(const char *);</P>
+<H3 class="typedef"><A name="mxml_error_cb_t">mxml_error_cb_t</A></H3>
+<P class="description">Error callback function</P>
+<P class="code"> typedef void (*mxml_error_cb_t)(const char *);</P>
+<H3 class="typedef"><A name="mxml_index_t">mxml_index_t</A></H3>
+<P class="description">An XML node index.</P>
+<P class="code"> typedef struct <A href="#mxml_index_s">mxml_index_s</A>
+ mxml_index_t;</P>
+<H3 class="typedef"><A name="mxml_load_cb_t">mxml_load_cb_t</A></H3>
+<P class="description">Load callback function</P>
+<P class="code"> typedef <A href="#mxml_type_t">mxml_type_t</A>
+ (*mxml_load_cb_t)(<A href="#mxml_node_t">mxml_node_t</A> *);</P>
+<H3 class="typedef"><A name="mxml_node_t">mxml_node_t</A></H3>
+<P class="description">An XML node.</P>
+<P class="code"> typedef struct <A href="#mxml_node_s">mxml_node_s</A>
+ mxml_node_t;</P>
+<H3 class="typedef"><A name="mxml_save_cb_t">mxml_save_cb_t</A></H3>
+<P class="description">Save callback function</P>
+<P class="code"> typedef const char *(*mxml_save_cb_t)(<A href="#mxml_node_t">
+mxml_node_t</A> *, int);</P>
+<H3 class="typedef"><A name="mxml_sax_cb_t">mxml_sax_cb_t</A></H3>
+<P class="description">SAX callback function</P>
+<P class="code"> typedef void (*mxml_sax_cb_t)(<A href="#mxml_node_t">
+mxml_node_t</A> *, mxml_sax_event_t, void *);</P>
+<H3 class="typedef"><A name="mxml_sax_event_t">mxml_sax_event_t</A></H3>
+<P class="description">SAX event type.</P>
+<P class="code"> typedef enum <A href="#mxml_sax_event_e">
+mxml_sax_event_e</A> mxml_sax_event_t;</P>
+<H3 class="typedef"><A name="mxml_type_t">mxml_type_t</A></H3>
+<P class="description">The XML node type.</P>
+<P class="code"> typedef enum <A href="#mxml_type_e">mxml_type_e</A>
+ mxml_type_t;</P>
+<H2 class="title"><A name="ENUMERATIONS">Constants</A></H2>
+<H3 class="enumeration"><A name="mxml_sax_event_e">mxml_sax_event_e</A></H3>
+<P class="description">SAX event type.</P>
+<H4 class="constants">Constants</H4>
+<DL>
+<DT>MXML_SAX_CDATA</DT>
+<DD class="description">CDATA node</DD>
+<DT>MXML_SAX_COMMENT</DT>
+<DD class="description">Comment node</DD>
+<DT>MXML_SAX_DATA</DT>
+<DD class="description">Data node</DD>
+<DT>MXML_SAX_DIRECTIVE</DT>
+<DD class="description">Processing directive node</DD>
+<DT>MXML_SAX_ELEMENT_CLOSE</DT>
+<DD class="description">Element closed</DD>
+<DT>MXML_SAX_ELEMENT_OPEN</DT>
+<DD class="description">Element opened</DD>
+</DL>
+<H3 class="enumeration"><A name="mxml_type_e">mxml_type_e</A></H3>
+<P class="description">The XML node type.</P>
+<H4 class="constants">Constants</H4>
+<DL>
+<DT>MXML_CUSTOM
+<!--span class="info"-->
+  Mini-XML 2.1 </DT>
+<DD class="description">Custom data</DD>
+<DT>MXML_ELEMENT</DT>
+<DD class="description">XML element with attributes</DD>
+<DT>MXML_IGNORE
+<!--span class="info"-->
+  Mini-XML 2.3 </DT>
+<DD class="description">Ignore/throw away node</DD>
+<DT>MXML_INTEGER</DT>
+<DD class="description">Integer value</DD>
+<DT>MXML_OPAQUE</DT>
+<DD class="description">Opaque string</DD>
+<DT>MXML_REAL</DT>
+<DD class="description">Real value</DD>
+<DT>MXML_TEXT</DT>
+<DD class="description">Text fragment</DD>
+</DL>
+</DIV><HR NOSHADE>
+<H1 align="right"><A name="SCHEMA"><IMG align="right" alt="D" height="100"
+hspace="10" src="D.gif" width="100"></A>XML Schema</H1>
+<P>This appendix provides the XML schema that is used for the XML files
+ produced by <TT>mxmldoc</TT>. This schema is available on-line at:</P>
+<PRE>
+    http://www.msweet.org/schema/mxmldoc.xsd
+</PRE>
+<H2><A NAME="9_1">mxmldoc.xsd</A></H2>
+<PRE><SMALL>
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:annotation>
+    <xsd:documentation xml:lang="en">
+      Mini-XML 2.9 documentation schema for mxmldoc output.
+      Copyright 2003-2014 by Michael Sweet.
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <!-- basic element definitions -->
+  <xsd:element name="argument" type="argumentType"/>
+  <xsd:element name="class" type="classType"/>
+  <xsd:element name="constant" type="constantType"/>
+  <xsd:element name="description" type="xsd:string"/>
+  <xsd:element name="enumeration" type="enumerationType"/>
+  <xsd:element name="function" type="functionType"/>
+  <xsd:element name="mxmldoc" type="mxmldocType"/>
+  <xsd:element name="namespace" type="namespaceType"/>
+  <xsd:element name="returnvalue" type="returnvalueType"/>
+  <xsd:element name="seealso" type="identifierList"/>
+  <xsd:element name="struct" type="structType"/>
+  <xsd:element name="typedef" type="typedefType"/>
+  <xsd:element name="type" type="xsd:string"/>
+  <xsd:element name="union" type="unionType"/>
+  <xsd:element name="variable" type="variableType"/>
+
+  <!-- descriptions of complex elements -->
+  <xsd:complexType name="argumentType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="default" type="xsd:string" use="optional"/>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="direction" type="direction" use="optional"
+     default="I"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="classType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="class"/>
+	<xsd:element ref="enumeration"/>
+	<xsd:element ref="function"/>
+	<xsd:element ref="struct"/>
+	<xsd:element ref="typedef"/>
+	<xsd:element ref="union"/>
+	<xsd:element ref="variable"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="parent" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="constantType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="enumerationType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="constant" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="functionType">
+    <xsd:sequence>
+      <xsd:element ref="returnvalue" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="argument" minOccurs="1" maxOccurs="unbounded"/>
+      <xsd:element ref="seealso" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="scope" type="scope" use="optional"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="mxmldocType">
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="class"/>
+      <xsd:element ref="enumeration"/>
+      <xsd:element ref="function"/>
+      <xsd:element ref="namespace"/>
+      <xsd:element ref="struct"/>
+      <xsd:element ref="typedef"/>
+      <xsd:element ref="union"/>
+      <xsd:element ref="variable"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:complexType name="namespaceType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="class"/>
+	<xsd:element ref="enumeration"/>
+	<xsd:element ref="function"/>
+	<xsd:element ref="struct"/>
+	<xsd:element ref="typedef"/>
+	<xsd:element ref="union"/>
+	<xsd:element ref="variable"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="returnvalueType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="structType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="variable"/>
+	<xsd:element ref="function"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="typedefType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="unionType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="variableType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <!-- data types -->
+  <xsd:simpleType name="direction">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="I"/>
+      <xsd:enumeration value="O"/>
+      <xsd:enumeration value="IO"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="identifier">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[a-zA-Z_(.]([a-zA-Z_(.,)* 0-9])*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="identifierList">
+    <xsd:list itemType="identifier"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="scope">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value=""/>
+      <xsd:enumeration value="private"/>
+      <xsd:enumeration value="protected"/>
+      <xsd:enumeration value="public"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+</xsd:schema>
+</SMALL></PRE>
+</BODY>
+</HTML>
diff --git a/src/mxml/mxml-2.9/doc/mxmldoc.html b/src/mxml/mxml-2.9/doc/mxmldoc.html
new file mode 100644
index 0000000..89e1cf3
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/mxmldoc.html
@@ -0,0 +1,204 @@
+<html>
+<body>
+
+<h1 align='right'><a name='MXMLDOC'><img src="4.gif" align="right"
+hspace="10" width="100" height="100" alt="4"></a>Using the mxmldoc
+Utility</h1>
+
+<p>This chapter describes how to use <tt>mxmldoc(1)</tt> program to
+automatically generate documentation from C and C++ source
+files.</p>
+
+
+<h2>The Basics</h2>
+
+<p>Originally developed to generate the Mini-XML and CUPS API
+documentation, <tt>mxmldoc</tt> is now a general-purpose utility
+which scans C and C++ source files to produce HTML and man page
+documentation along with an XML file representing the functions,
+types, and definitions in those source files. Unlike popular
+documentation generators like Doxygen or Javadoc, <tt>mxmldoc</tt>
+uses in-line comments rather than comment headers, allowing for more
+"natural" code documentation.</p>
+
+<p>By default, <tt>mxmldoc</tt> produces HTML documentation. For
+example, the following command will scan all of the C source and
+header files in the current directory and produce a HTML
+documentation file called <var>filename.html</var>:</p>
+
+<pre>
+    <kbd>mxmldoc *.h *.c >filename.html ENTER</kbd>
+</pre>
+
+<p>You can also specify an XML file to create which contains all of
+the information from the source files. For example, the following
+command creates an XML file called <var>filename.xml</var> in
+addition to the HTML file:</p>
+
+<pre>
+    <kbd>mxmldoc filename.xml *.h *.c >filename.html ENTER</kbd>
+</pre>
+
+<p>The <tt>--no-output</tt> option disables the normal HTML
+output:</p>
+
+<pre>
+    <kbd>mxmldoc --no-output filename.xml *.h *.c ENTER</kbd>
+</pre>
+
+<p>You can then run <tt>mxmldoc</tt> again with the XML file alone
+to generate the HTML documentation:</p>
+
+<pre>
+    <kbd>mxmldoc filename.xml >filename.html ENTER</kbd>
+</pre>
+
+<h3>Creating Man Pages</h3>
+
+<p>The <tt>--man filename</tt> option tells <tt>mxmldoc</tt> to
+create a man page instead of HTML documentation, for example:</p>
+
+<pre>
+    <kbd>mxmldoc --man filename filename.xml \
+        >filename.man ENTER</kbd>
+
+    <kbd>mxmldoc --man filename *.h *.c \
+        >filename.man ENTER</kbd>
+</pre>
+
+<h3>Creating Xcode Documentation Sets</h3>
+
+<p>The <tt>--docset directory.docset</tt> option tells <tt>mxmldoc</tt> to
+create an Xcode documentation set containing the HTML documentation, for
+example:</p>
+
+<pre>
+    <kbd>mxmldoc --docset foo.docset *.h *.c foo.xml ENTER</kbd>
+</pre>
+
+<p>Xcode documentation sets can only be built on Mac OS X with Xcode 3.0 or
+higher installed.</p>
+
+
+<h2>Commenting Your Code</h2>
+
+<p>As noted previously, <tt>mxmldoc</tt> looks for in-line comments
+to describe the functions, types, and constants in your code.
+<tt>Mxmldoc</tt> will document all public names it finds in your
+source files - any names starting with the underscore character (_) 
+or names that are documented with the <A
+HREF="#ATDIRECTIVES">@private@</A> directive are treated as private
+and are not documented.</p>
+
+<p>Comments appearing directly before a function or type definition
+are used to document that function or type. Comments appearing after
+argument, definition, return type, or variable declarations are used
+to document that argument, definition, return type, or variable. For
+example, the following code excerpt defines a key/value structure
+and a function that creates a new instance of that structure:</p> 
+
+<pre>
+    /* A key/value pair. This is used with the
+       dictionary structure. */
+
+    struct keyval
+    {
+      char *key; /* Key string */
+      char *val; /* Value string */
+    };
+
+    /* Create a new key/value pair. */
+
+    struct keyval * /* New key/value pair */
+    new_keyval(
+        const char *key, /* Key string */
+	const char *val) /* Value string */
+    {
+      ...
+    }
+</pre>
+
+<p><tt>Mxmldoc</tt> also knows to remove extra asterisks (*) from
+the comment string, so the comment string:</p>
+
+<pre>
+    /*
+     * Compute the value of PI.
+     *
+     * The function connects to an Internet server
+     * that streams audio of mathematical monks
+     * chanting the first 100 digits of PI.
+     */
+</pre>
+
+<p>will be shown as:</p>
+
+<pre>
+    Compute the value of PI.
+
+    The function connects to an Internet server
+    that streams audio of mathematical monks
+    chanting the first 100 digits of PI.
+</pre>
+
+<p><a name="ATDIRECTIVES">Comments</a> can also include the
+following special <tt>@name ...@</tt> directive strings:</p>
+
+<ul>
+
+	<li><tt>@deprecated@</tt> - flags the item as deprecated to
+	discourage its use</li>
+
+	<li><tt>@private@</tt> - flags the item as private so it
+	will not be included in the documentation</li>
+
+	<li><tt>@since ...@</tt> - flags the item as new since a
+	particular release. The text following the <tt>@since</tt>
+	up to the closing <tt>@</tt> is highlighted in the generated
+	documentation, e.g. <tt>@since Mini-XML 2.7@</tt>.</li>
+
+</ul>
+
+
+<!-- NEED 10 -->
+<h2>Titles, Sections, and Introductions</h2>
+
+<p><tt>Mxmldoc</tt> also provides options to set the title, section,
+and introduction text for the generated documentation. The
+<tt>--title text</tt> option specifies the title for the
+documentation. The title string is usually put in quotes:</p>
+
+<pre>
+    <kbd>mxmldoc filename.xml \
+        --title "My Famous Documentation" \
+        >filename.html ENTER</kbd>
+</pre>
+
+<p>The <tt>--section name</tt> option specifies the section for
+the documentation. For HTML documentation, the name is placed in
+a HTML comment such as:</p>
+
+<pre>
+    <!-- SECTION: name -->
+</pre>
+
+<p>For man pages, the section name is usually just a number ("3"),
+or a number followed by a vendor name ("3acme"). The section name is
+used in the <tt>.TH</tt> directive in the man page:</p>
+
+<pre>
+    .TH mylibrary 3acme "My Title" ...
+</pre>
+
+<p>The default section name for man page output is "3". There is no
+default section name for HTML output.</p>
+
+<p>Finally, the <tt>--intro filename</tt> option specifies a file to
+embed after the title and section but before the generated
+documentation. For HTML documentation, the file must consist of
+valid HTML without the usual <tt>DOCTYPE</tt>, <tt>html</tt>, and
+<tt>body</tt> elements. For man page documentation, the file must
+consist of valid <tt>nroff(1)</tt> text.</p>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/mxmldoc.man b/src/mxml/mxml-2.9/doc/mxmldoc.man
new file mode 100644
index 0000000..8f20eda
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/mxmldoc.man
@@ -0,0 +1,198 @@
+.\"
+.\" "$Id: mxmldoc.man 390 2009-05-05 13:38:00Z mike $"
+.\"
+.\" mxmldoc man page for mini-XML, a small XML-like file parsing library.
+.\"
+.\" Copyright 2003-2009 by Michael Sweet.
+.\"
+.\" This program is free software; you can redistribute it and/or
+.\" modify it under the terms of the GNU Library General Public
+.\" License as published by the Free Software Foundation; either
+.\" version 2, or (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.TH mxmldoc 1 "Mini-XML" "4 May 2009" "Michael Sweet"
+.SH NAME
+mxmldoc \- mini-xml documentation generator
+.SH SYNOPSIS
+.B mxmldoc
+\-\-no-output [
+.I filename.xml
+]
+.I source file(s)
+]
+.br
+.B mxmldoc
+[ \-\-footer
+.I footerfile
+] [ \-\-header
+.I headerfile
+] [ \-\-intro
+.I introfile
+] [ \-\-section
+.I section
+] [ \-\-title
+.I title
+] [
+.I filename.xml
+] [
+.I source file(s)
+] >
+.I filename.html
+.br
+.B mxmldoc
+\-\-docset
+.I directory.docset
+[ \-\-docversion
+.I version
+] [ \-\-feedname
+.I name
+] [ \-\-feedurl
+.I url
+] [ \-\-footer
+.I footerfile
+] [ \-\-header
+.I headerfile
+] [ \-\-intro
+.I introfile
+] [ \-\-section
+.I section
+] [ \-\-title
+.I title
+] [
+.I filename.xml
+] [
+.I source file(s)
+]
+.br
+.B mxmldoc
+\-\-tokens
+.I path
+[
+.I filename.xml
+] [
+.I source file(s)
+] > tokens.xml
+.br
+.B mxmldoc
+\-\-framed
+.I basename
+[ \-\-footer
+.I footerfile
+] [ \-\-header
+.I headerfile
+] [ \-\-intro
+.I introfile
+] [ \-\-section
+.I section
+] [ \-\-title
+.I title
+] [
+.I filename.xml
+] [
+.I source file(s)
+]
+.br
+.B mxmldoc
+[ \-\-footer
+.I footerfile
+] [ \-\-header
+.I headerfile
+] [ \-\-intro
+.I introfile
+] \-\-man
+.I manpage
+[ \-\-section
+.I section
+] [ \-\-title
+.I title
+] [
+.I filename.xml
+] [
+.I source file(s)
+] >
+.I filename.man
+.SH DESCRIPTION
+\fImxmldoc\fR scans the specified C and C++ source files to produce
+an XML representation of globally accessible classes, constants,
+enumerations, functions, structures, typedefs, unions, and variables
+- the XML file is updated as necessary. By default, a HTML
+representation of the XML file is written to the standard output.
+Use the \fI\-\-no-output\fR option to disable the HTML output.
+.PP
+Man page source can be generated using the \fI\-\-man\fR option.
+.PP
+If no source files are specified then the current XML file is
+converted to the standard output.
+.PP
+In general, any C or C++ source code is handled by \fImxmldoc\fR,
+however it was specifically written to handle code with
+documentation that is formatted according to the CUPS Developer
+Guide which is available at "http://www.cups.org/documentation.php".
+.SH OPTIONS
+.TP 5
+\-\-docset directory.docset
+.br
+Creates an Xcode documentation set in the specified directory.
+.TP 5
+\-\-docversion version
+.br
+Specifies the version number for the Xcode documentation set.
+.TP 5
+\-\-feedname name
+.br
+Specifies the Xcode documentation set feed name, typically the project or
+company name.
+.TP 5
+\-\-feedurl url
+.br
+Specifies the Xcode documentation set feed URL which must point to an ATOM file
+linking to updates.
+.TP 5
+\-\-footer footerfile
+.br
+Inserts the specified file at the bottom of the output documentation.
+.TP 5
+\-\-framed basename
+.br
+Creates HTML documentation using frames - one for the table-of-contents and
+one for the body.
+.TP 5
+\-\-header headerfile
+.br
+Inserts the specified file at the top of the output documentation.
+.TP 5
+\-\-intro introfile
+.br
+Inserts the specified file before the table of contents.
+.TP 5
+\-\-man manpage
+.br
+Generated a man page instead of HTML documentation.
+.TP 5
+\-\-no-output
+.br
+Disables generation of documentation on the standard output.
+.TP 5
+\-\-section section
+.br
+Sets the section/keywords in the output documentation.
+.TP 5
+\-\-title title
+.br
+Sets the title of the output documentation.
+.TP 5
+\-\-tokens
+.br
+Generates a Tokens.xml file for use with the Xcode documentation tools.
+.SH SEE ALSO
+mxml(3), Mini-XML Programmers Manual, http://www.minixml.org/
+.SH COPYRIGHT
+Copyright 2003-2009 by Michael Sweet.
+.\"
+.\" End of "$Id: mxmldoc.man 390 2009-05-05 13:38:00Z mike $".
+.\"
diff --git a/src/mxml/mxml-2.9/doc/mxmldoc.xsd b/src/mxml/mxml-2.9/doc/mxmldoc.xsd
new file mode 100644
index 0000000..f1a04bc
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/mxmldoc.xsd
@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:annotation>
+    <xsd:documentation xml:lang="en">
+      Mini-XML 2.9 documentation schema for mxmldoc output.
+      Copyright 2003-2014 by Michael Sweet.
+
+      This program is free software; you can redistribute it and/or
+      modify it under the terms of the GNU Library General Public
+      License as published by the Free Software Foundation; either
+      version 2, or (at your option) any later version.
+
+      This program is distributed in the hope that it will be useful,
+      but WITHOUT ANY WARRANTY; without even the implied warranty of
+      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      GNU General Public License for more details.
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <!-- basic element definitions -->
+  <xsd:element name="argument" type="argumentType"/>
+  <xsd:element name="class" type="classType"/>
+  <xsd:element name="constant" type="constantType"/>
+  <xsd:element name="description" type="xsd:string"/>
+  <xsd:element name="enumeration" type="enumerationType"/>
+  <xsd:element name="function" type="functionType"/>
+  <xsd:element name="mxmldoc" type="mxmldocType"/>
+  <xsd:element name="namespace" type="namespaceType"/>
+  <xsd:element name="returnvalue" type="returnvalueType"/>
+  <xsd:element name="seealso" type="identifierList"/>
+  <xsd:element name="struct" type="structType"/>
+  <xsd:element name="typedef" type="typedefType"/>
+  <xsd:element name="type" type="xsd:string"/>
+  <xsd:element name="union" type="unionType"/>
+  <xsd:element name="variable" type="variableType"/>
+
+  <!-- descriptions of complex elements -->
+  <xsd:complexType name="argumentType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="default" type="xsd:string" use="optional"/>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="direction" type="direction" use="optional" default="I"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="classType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="class"/>
+	<xsd:element ref="enumeration"/>
+	<xsd:element ref="function"/>
+	<xsd:element ref="struct"/>
+	<xsd:element ref="typedef"/>
+	<xsd:element ref="union"/>
+	<xsd:element ref="variable"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="parent" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="constantType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="enumerationType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="constant" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="functionType">
+    <xsd:sequence>
+      <xsd:element ref="returnvalue" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="argument" minOccurs="1" maxOccurs="unbounded"/>
+      <xsd:element ref="seealso" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="scope" type="scope" use="optional"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="mxmldocType">
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="class"/>
+      <xsd:element ref="enumeration"/>
+      <xsd:element ref="function"/>
+      <xsd:element ref="namespace"/>
+      <xsd:element ref="struct"/>
+      <xsd:element ref="typedef"/>
+      <xsd:element ref="union"/>
+      <xsd:element ref="variable"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:complexType name="namespaceType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="class"/>
+	<xsd:element ref="enumeration"/>
+	<xsd:element ref="function"/>
+	<xsd:element ref="struct"/>
+	<xsd:element ref="typedef"/>
+	<xsd:element ref="union"/>
+	<xsd:element ref="variable"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="returnvalueType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="structType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="variable"/>
+	<xsd:element ref="function"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="typedefType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="unionType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="variableType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <!-- data types -->
+  <xsd:simpleType name="direction">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="I"/>
+      <xsd:enumeration value="O"/>
+      <xsd:enumeration value="IO"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="identifier">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[a-zA-Z_(.]([a-zA-Z_(.,)* 0-9])*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="identifierList">
+    <xsd:list itemType="identifier"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="scope">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value=""/>
+      <xsd:enumeration value="private"/>
+      <xsd:enumeration value="protected"/>
+      <xsd:enumeration value="public"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+</xsd:schema>
diff --git a/src/mxml/mxml-2.9/doc/reference.heading b/src/mxml/mxml-2.9/doc/reference.heading
new file mode 100644
index 0000000..eee4a4c
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/reference.heading
@@ -0,0 +1,4 @@
+<h1 align='right'><a name='REFERENCE'><img src="C.gif" align="right"
+hspace="10" width="100" height="100" alt="C"></a>Library
+Reference</h1>
+
diff --git a/src/mxml/mxml-2.9/doc/reference.html b/src/mxml/mxml-2.9/doc/reference.html
new file mode 100644
index 0000000..206ba48
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/reference.html
@@ -0,0 +1,1792 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+	<title>Documentation	</title>
+	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+	<meta name="creator" content="Mini-XML v2.9">
+<style type="text/css"><!--
+body, p, h1, h2, h3, h4 {
+  font-family: "lucida grande", geneva, helvetica, arial, sans-serif;
+}
+div.body h1 {
+  font-size: 250%;
+  font-weight: bold;
+  margin: 0;
+}
+div.body h2 {
+  font-size: 250%;
+  margin-top: 1.5em;
+}
+div.body h3 {
+  font-size: 150%;
+  margin-bottom: 0.5em;
+  margin-top: 1.5em;
+}
+div.body h4 {
+  font-size: 110%;
+  margin-bottom: 0.5em;
+  margin-top: 1.5em;
+}
+div.body h5 {
+  font-size: 100%;
+  margin-bottom: 0.5em;
+  margin-top: 1.5em;
+}
+div.contents {
+  background: #e8e8e8;
+  border: solid thin black;
+  padding: 10px;
+}
+div.contents h1 {
+  font-size: 110%;
+}
+div.contents h2 {
+  font-size: 100%;
+}
+div.contents ul.contents {
+  font-size: 80%;
+}
+.class {
+  border-bottom: solid 2px gray;
+}
+.constants {
+}
+.description {
+  margin-top: 0.5em;
+}
+.discussion {
+}
+.enumeration {
+  border-bottom: solid 2px gray;
+}
+.function {
+  border-bottom: solid 2px gray;
+  margin-bottom: 0;
+}
+.members {
+}
+.method {
+}
+.parameters {
+}
+.returnvalue {
+}
+.struct {
+  border-bottom: solid 2px gray;
+}
+.typedef {
+  border-bottom: solid 2px gray;
+}
+.union {
+  border-bottom: solid 2px gray;
+}
+.variable {
+}
+code, p.code, pre, ul.code li {
+  font-family: monaco, courier, monospace;
+  font-size: 90%;
+}
+a:link, a:visited {
+  text-decoration: none;
+}
+span.info {
+  background: black;
+  border: solid thin black;
+  color: white;
+  font-size: 80%;
+  font-style: italic;
+  font-weight: bold;
+  white-space: nowrap;
+}
+h3 span.info, h4 span.info {
+  float: right;
+  font-size: 100%;
+}
+ul.code, ul.contents, ul.subcontents {
+  list-style-type: none;
+  margin: 0;
+  padding-left: 0;
+}
+ul.code li {
+  margin: 0;
+}
+ul.contents > li {
+  margin-top: 1em;
+}
+ul.contents li ul.code, ul.contents li ul.subcontents {
+  padding-left: 2em;
+}
+div.body dl {
+  margin-top: 0;
+}
+div.body dt {
+  font-style: italic;
+  margin-top: 0;
+}
+div.body dd {
+  margin-bottom: 0.5em;
+}
+h1.title {
+}
+h2.title {
+  border-bottom: solid 2px black;
+}
+h3.title {
+  border-bottom: solid 2px black;
+}
+--></style>
+</head>
+<body>
+<div class='body'>
+<h1 align='right'><a name='REFERENCE'><img src="C.gif" align="right"
+hspace="10" width="100" height="100" alt="C"></a>Library
+Reference</h1>
+
+<h2 class="title">Contents</h2>
+<ul class="contents">
+<li><a href="#FUNCTIONS">Functions</a><ul class="code">
+	<li><a href="#mxmlAdd" title="Add a node to a tree.">mxmlAdd</a></li>
+	<li><a href="#mxmlDelete" title="Delete a node and all of its children.">mxmlDelete</a></li>
+	<li><a href="#mxmlElementDeleteAttr" title="Delete an attribute.">mxmlElementDeleteAttr</a></li>
+	<li><a href="#mxmlElementGetAttr" title="Get an attribute.">mxmlElementGetAttr</a></li>
+	<li><a href="#mxmlElementSetAttr" title="Set an attribute.">mxmlElementSetAttr</a></li>
+	<li><a href="#mxmlElementSetAttrf" title="Set an attribute with a formatted value.">mxmlElementSetAttrf</a></li>
+	<li><a href="#mxmlEntityAddCallback" title="Add a callback to convert entities to Unicode.">mxmlEntityAddCallback</a></li>
+	<li><a href="#mxmlEntityGetName" title="Get the name that corresponds to the character value.">mxmlEntityGetName</a></li>
+	<li><a href="#mxmlEntityGetValue" title="Get the character corresponding to a named entity.">mxmlEntityGetValue</a></li>
+	<li><a href="#mxmlEntityRemoveCallback" title="Remove a callback.">mxmlEntityRemoveCallback</a></li>
+	<li><a href="#mxmlFindElement" title="Find the named element.">mxmlFindElement</a></li>
+	<li><a href="#mxmlFindPath" title="Find a node with the given path.">mxmlFindPath</a></li>
+	<li><a href="#mxmlGetCDATA" title="Get the value for a CDATA node.">mxmlGetCDATA</a></li>
+	<li><a href="#mxmlGetCustom" title="Get the value for a custom node.">mxmlGetCustom</a></li>
+	<li><a href="#mxmlGetElement" title="Get the name for an element node.">mxmlGetElement</a></li>
+	<li><a href="#mxmlGetFirstChild" title="Get the first child of an element node.">mxmlGetFirstChild</a></li>
+	<li><a href="#mxmlGetInteger" title="Get the integer value from the specified node or its
+first child.">mxmlGetInteger</a></li>
+	<li><a href="#mxmlGetLastChild" title="Get the last child of an element node.">mxmlGetLastChild</a></li>
+	<li><a href="#mxmlGetNextSibling" title="Return the node type...">mxmlGetNextSibling</a></li>
+	<li><a href="#mxmlGetOpaque" title="Get an opaque string value for a node or its first child.">mxmlGetOpaque</a></li>
+	<li><a href="#mxmlGetParent" title="Get the parent node.">mxmlGetParent</a></li>
+	<li><a href="#mxmlGetPrevSibling" title="Get the previous node for the current parent.">mxmlGetPrevSibling</a></li>
+	<li><a href="#mxmlGetReal" title="Get the real value for a node or its first child.">mxmlGetReal</a></li>
+	<li><a href="#mxmlGetRefCount" title="Get the current reference (use) count for a node.">mxmlGetRefCount</a></li>
+	<li><a href="#mxmlGetText" title="Get the text value for a node or its first child.">mxmlGetText</a></li>
+	<li><a href="#mxmlGetType" title="Get the node type.">mxmlGetType</a></li>
+	<li><a href="#mxmlGetUserData" title="Get the user data pointer for a node.">mxmlGetUserData</a></li>
+	<li><a href="#mxmlIndexDelete" title="Delete an index.">mxmlIndexDelete</a></li>
+	<li><a href="#mxmlIndexEnum" title="Return the next node in the index.">mxmlIndexEnum</a></li>
+	<li><a href="#mxmlIndexFind" title="Find the next matching node.">mxmlIndexFind</a></li>
+	<li><a href="#mxmlIndexGetCount" title="Get the number of nodes in an index.">mxmlIndexGetCount</a></li>
+	<li><a href="#mxmlIndexNew" title="Create a new index.">mxmlIndexNew</a></li>
+	<li><a href="#mxmlIndexReset" title="Reset the enumeration/find pointer in the index and
+return the first node in the index.">mxmlIndexReset</a></li>
+	<li><a href="#mxmlLoadFd" title="Load a file descriptor into an XML node tree.">mxmlLoadFd</a></li>
+	<li><a href="#mxmlLoadFile" title="Load a file into an XML node tree.">mxmlLoadFile</a></li>
+	<li><a href="#mxmlLoadString" title="Load a string into an XML node tree.">mxmlLoadString</a></li>
+	<li><a href="#mxmlNewCDATA" title="Create a new CDATA node.">mxmlNewCDATA</a></li>
+	<li><a href="#mxmlNewCustom" title="Create a new custom data node.">mxmlNewCustom</a></li>
+	<li><a href="#mxmlNewElement" title="Create a new element node.">mxmlNewElement</a></li>
+	<li><a href="#mxmlNewInteger" title="Create a new integer node.">mxmlNewInteger</a></li>
+	<li><a href="#mxmlNewOpaque" title="Create a new opaque string.">mxmlNewOpaque</a></li>
+	<li><a href="#mxmlNewReal" title="Create a new real number node.">mxmlNewReal</a></li>
+	<li><a href="#mxmlNewText" title="Create a new text fragment node.">mxmlNewText</a></li>
+	<li><a href="#mxmlNewTextf" title="Create a new formatted text fragment node.">mxmlNewTextf</a></li>
+	<li><a href="#mxmlNewXML" title="Create a new XML document tree.">mxmlNewXML</a></li>
+	<li><a href="#mxmlRelease" title="Release a node.">mxmlRelease</a></li>
+	<li><a href="#mxmlRemove" title="Remove a node from its parent.">mxmlRemove</a></li>
+	<li><a href="#mxmlRetain" title="Retain a node.">mxmlRetain</a></li>
+	<li><a href="#mxmlSAXLoadFd" title="Load a file descriptor into an XML node tree
+using a SAX callback.">mxmlSAXLoadFd</a></li>
+	<li><a href="#mxmlSAXLoadFile" title="Load a file into an XML node tree
+using a SAX callback.">mxmlSAXLoadFile</a></li>
+	<li><a href="#mxmlSAXLoadString" title="Load a string into an XML node tree
+using a SAX callback.">mxmlSAXLoadString</a></li>
+	<li><a href="#mxmlSaveAllocString" title="Save an XML tree to an allocated string.">mxmlSaveAllocString</a></li>
+	<li><a href="#mxmlSaveFd" title="Save an XML tree to a file descriptor.">mxmlSaveFd</a></li>
+	<li><a href="#mxmlSaveFile" title="Save an XML tree to a file.">mxmlSaveFile</a></li>
+	<li><a href="#mxmlSaveString" title="Save an XML node tree to a string.">mxmlSaveString</a></li>
+	<li><a href="#mxmlSetCDATA" title="Set the element name of a CDATA node.">mxmlSetCDATA</a></li>
+	<li><a href="#mxmlSetCustom" title="Set the data and destructor of a custom data node.">mxmlSetCustom</a></li>
+	<li><a href="#mxmlSetCustomHandlers" title="Set the handling functions for custom data.">mxmlSetCustomHandlers</a></li>
+	<li><a href="#mxmlSetElement" title="Set the name of an element node.">mxmlSetElement</a></li>
+	<li><a href="#mxmlSetErrorCallback" title="Set the error message callback.">mxmlSetErrorCallback</a></li>
+	<li><a href="#mxmlSetInteger" title="Set the value of an integer node.">mxmlSetInteger</a></li>
+	<li><a href="#mxmlSetOpaque" title="Set the value of an opaque node.">mxmlSetOpaque</a></li>
+	<li><a href="#mxmlSetReal" title="Set the value of a real number node.">mxmlSetReal</a></li>
+	<li><a href="#mxmlSetText" title="Set the value of a text node.">mxmlSetText</a></li>
+	<li><a href="#mxmlSetTextf" title="Set the value of a text node to a formatted string.">mxmlSetTextf</a></li>
+	<li><a href="#mxmlSetUserData" title="Set the user data pointer for a node.">mxmlSetUserData</a></li>
+	<li><a href="#mxmlSetWrapMargin" title="Set the wrap margin when saving XML data.">mxmlSetWrapMargin</a></li>
+	<li><a href="#mxmlWalkNext" title="Walk to the next logical node in the tree.">mxmlWalkNext</a></li>
+	<li><a href="#mxmlWalkPrev" title="Walk to the previous logical node in the tree.">mxmlWalkPrev</a></li>
+</ul></li>
+<li><a href="#TYPES">Data Types</a><ul class="code">
+	<li><a href="#mxml_custom_destroy_cb_t" title="Custom data destructor">mxml_custom_destroy_cb_t</a></li>
+	<li><a href="#mxml_custom_load_cb_t" title="Custom data load callback function">mxml_custom_load_cb_t</a></li>
+	<li><a href="#mxml_custom_save_cb_t" title="Custom data save callback function">mxml_custom_save_cb_t</a></li>
+	<li><a href="#mxml_entity_cb_t" title="Entity callback function">mxml_entity_cb_t</a></li>
+	<li><a href="#mxml_error_cb_t" title="Error callback function">mxml_error_cb_t</a></li>
+	<li><a href="#mxml_index_t" title="An XML node index.">mxml_index_t</a></li>
+	<li><a href="#mxml_load_cb_t" title="Load callback function">mxml_load_cb_t</a></li>
+	<li><a href="#mxml_node_t" title="An XML node.">mxml_node_t</a></li>
+	<li><a href="#mxml_save_cb_t" title="Save callback function">mxml_save_cb_t</a></li>
+	<li><a href="#mxml_sax_cb_t" title="SAX callback function">mxml_sax_cb_t</a></li>
+	<li><a href="#mxml_sax_event_t" title="SAX event type.">mxml_sax_event_t</a></li>
+	<li><a href="#mxml_type_t" title="The XML node type.">mxml_type_t</a></li>
+</ul></li>
+<li><a href="#ENUMERATIONS">Constants</a><ul class="code">
+	<li><a href="#mxml_sax_event_e" title="SAX event type.">mxml_sax_event_e</a></li>
+	<li><a href="#mxml_type_e" title="The XML node type.">mxml_type_e</a></li>
+</ul></li>
+</ul>
+<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
+<h3 class="function"><a name="mxmlAdd">mxmlAdd</a></h3>
+<p class="description">Add a node to a tree.</p>
+<p class="code">
+void mxmlAdd (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    int where,<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *child,<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node</dd>
+<dt>where</dt>
+<dd class="description">Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER</dd>
+<dt>child</dt>
+<dd class="description">Child node for where or MXML_ADD_TO_PARENT</dd>
+<dt>node</dt>
+<dd class="description">Node to add</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Adds the specified node to the parent. If the child argument is not
+NULL, puts the new node before or after the specified child depending
+on the value of the where argument. If the child argument is NULL,
+puts the new node at the beginning of the child list (MXML_ADD_BEFORE)
+or at the end of the child list (MXML_ADD_AFTER). The constant
+MXML_ADD_TO_PARENT can be used to specify a NULL child pointer.</p>
+<h3 class="function"><a name="mxmlDelete">mxmlDelete</a></h3>
+<p class="description">Delete a node and all of its children.</p>
+<p class="code">
+void mxmlDelete (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to delete</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">If the specified node has a parent, this function first removes the
+node from its parent using the mxmlRemove() function.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.4 </span><a name="mxmlElementDeleteAttr">mxmlElementDeleteAttr</a></h3>
+<p class="description">Delete an attribute.</p>
+<p class="code">
+void mxmlElementDeleteAttr (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Element</dd>
+<dt>name</dt>
+<dd class="description">Attribute name</dd>
+</dl>
+<h3 class="function"><a name="mxmlElementGetAttr">mxmlElementGetAttr</a></h3>
+<p class="description">Get an attribute.</p>
+<p class="code">
+const char *mxmlElementGetAttr (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Element node</dd>
+<dt>name</dt>
+<dd class="description">Name of attribute</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Attribute value or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns NULL if the node is not an element or the
+named attribute does not exist.</p>
+<h3 class="function"><a name="mxmlElementSetAttr">mxmlElementSetAttr</a></h3>
+<p class="description">Set an attribute.</p>
+<p class="code">
+void mxmlElementSetAttr (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *name,<br>
+    const char *value<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Element node</dd>
+<dt>name</dt>
+<dd class="description">Name of attribute</dd>
+<dt>value</dt>
+<dd class="description">Attribute value</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">If the named attribute already exists, the value of the attribute
+is replaced by the new string value. The string value is copied
+into the element node. This function does nothing if the node is
+not an element.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlElementSetAttrf">mxmlElementSetAttrf</a></h3>
+<p class="description">Set an attribute with a formatted value.</p>
+<p class="code">
+void mxmlElementSetAttrf (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *name,<br>
+    const char *format,<br>
+    ...<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Element node</dd>
+<dt>name</dt>
+<dd class="description">Name of attribute</dd>
+<dt>format</dt>
+<dd class="description">Printf-style attribute value</dd>
+<dt>...</dt>
+<dd class="description">Additional arguments as needed</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">If the named attribute already exists, the value of the attribute
+is replaced by the new formatted string. The formatted string value is
+copied into the element node. This function does nothing if the node
+is not an element.
+
+</p>
+<h3 class="function"><a name="mxmlEntityAddCallback">mxmlEntityAddCallback</a></h3>
+<p class="description">Add a callback to convert entities to Unicode.</p>
+<p class="code">
+int mxmlEntityAddCallback (<br>
+    <a href="#mxml_entity_cb_t">mxml_entity_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>cb</dt>
+<dd class="description">Callback function to add</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h3 class="function"><a name="mxmlEntityGetName">mxmlEntityGetName</a></h3>
+<p class="description">Get the name that corresponds to the character value.</p>
+<p class="code">
+const char *mxmlEntityGetName (<br>
+    int val<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>val</dt>
+<dd class="description">Character value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Entity name or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">If val does not need to be represented by a named entity, NULL is returned.</p>
+<h3 class="function"><a name="mxmlEntityGetValue">mxmlEntityGetValue</a></h3>
+<p class="description">Get the character corresponding to a named entity.</p>
+<p class="code">
+int mxmlEntityGetValue (<br>
+    const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">Entity name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Character value or -1 on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The entity name can also be a numeric constant. -1 is returned if the
+name is not known.</p>
+<h3 class="function"><a name="mxmlEntityRemoveCallback">mxmlEntityRemoveCallback</a></h3>
+<p class="description">Remove a callback.</p>
+<p class="code">
+void mxmlEntityRemoveCallback (<br>
+    <a href="#mxml_entity_cb_t">mxml_entity_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>cb</dt>
+<dd class="description">Callback function to remove</dd>
+</dl>
+<h3 class="function"><a name="mxmlFindElement">mxmlFindElement</a></h3>
+<p class="description">Find the named element.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlFindElement (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    const char *name,<br>
+    const char *attr,<br>
+    const char *value,<br>
+    int descend<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Current node</dd>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>name</dt>
+<dd class="description">Element name or NULL for any</dd>
+<dt>attr</dt>
+<dd class="description">Attribute name, or NULL for none</dd>
+<dt>value</dt>
+<dd class="description">Attribute value, or NULL for any</dd>
+<dt>descend</dt>
+<dd class="description">Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Element node or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The search is constrained by the name, attribute name, and value; any
+NULL names or values are treated as wildcards, so different kinds of
+searches can be implemented by looking for all elements of a given name
+or all elements with a specific attribute. The descend argument determines
+whether the search descends into child nodes; normally you will use
+MXML_DESCEND_FIRST for the initial search and MXML_NO_DESCEND to find
+additional direct descendents of the node. The top node argument
+constrains the search to a particular node's children.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlFindPath">mxmlFindPath</a></h3>
+<p class="description">Find a node with the given path.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlFindPath (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    const char *path<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>path</dt>
+<dd class="description">Path to element</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Found node or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The "path" is a slash-separated list of element names. The name "*" is
+considered a wildcard for one or more levels of elements.  For example,
+"foo/one/two", "bar/two/one", "*/one", and so forth.<br>
+<br>
+The first child node of the found node is returned if the given node has
+children and the first child is a value node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetCDATA">mxmlGetCDATA</a></h3>
+<p class="description">Get the value for a CDATA node.</p>
+<p class="code">
+const char *mxmlGetCDATA (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">CDATA value or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node is not a CDATA element.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetCustom">mxmlGetCustom</a></h3>
+<p class="description">Get the value for a custom node.</p>
+<p class="code">
+const void *mxmlGetCustom (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Custom value or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node (or its first child) is not a custom
+value node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetElement">mxmlGetElement</a></h3>
+<p class="description">Get the name for an element node.</p>
+<p class="code">
+const char *mxmlGetElement (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Element name or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node is not an element node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetFirstChild">mxmlGetFirstChild</a></h3>
+<p class="description">Get the first child of an element node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetFirstChild (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First child or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node is not an element node or if the node
+has no children.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetInteger">mxmlGetInteger</a></h3>
+<p class="description">Get the integer value from the specified node or its
+first child.</p>
+<p class="code">
+int mxmlGetInteger (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Integer value or 0</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">0 is returned if the node (or its first child) is not an integer value node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetLastChild">mxmlGetLastChild</a></h3>
+<p class="description">Get the last child of an element node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetLastChild (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Last child or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node is not an element node or if the node
+has no children.
+
+</p>
+<h3 class="function"><a name="mxmlGetNextSibling">mxmlGetNextSibling</a></h3>
+<p class="description">Return the node type...</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetNextSibling (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Get the next node for the current parent.</p>
+<p class="discussion"><code>NULL</code> is returned if this is the last child for the current parent.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetOpaque">mxmlGetOpaque</a></h3>
+<p class="description">Get an opaque string value for a node or its first child.</p>
+<p class="code">
+const char *mxmlGetOpaque (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Opaque string or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node (or its first child) is not an opaque
+value node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetParent">mxmlGetParent</a></h3>
+<p class="description">Get the parent node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetParent (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Parent node or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned for a root node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetPrevSibling">mxmlGetPrevSibling</a></h3>
+<p class="description">Get the previous node for the current parent.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetPrevSibling (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Previous node or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if this is the first child for the current parent.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetReal">mxmlGetReal</a></h3>
+<p class="description">Get the real value for a node or its first child.</p>
+<p class="code">
+double mxmlGetReal (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Real value or 0.0</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">0.0 is returned if the node (or its first child) is not a real value node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetRefCount">mxmlGetRefCount</a></h3>
+<p class="description">Get the current reference (use) count for a node.</p>
+<p class="code">
+int mxmlGetRefCount (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Reference count</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The initial reference count of new nodes is 1. Use the <a href="#mxmlRetain"><code>mxmlRetain</code></a>
+and <a href="#mxmlRelease"><code>mxmlRelease</code></a> functions to increment and decrement a node's
+reference count.
+
+.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetText">mxmlGetText</a></h3>
+<p class="description">Get the text value for a node or its first child.</p>
+<p class="code">
+const char *mxmlGetText (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    int *whitespace<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+<dt>whitespace</dt>
+<dd class="description">1 if string is preceded by whitespace, 0 otherwise</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Text string or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>NULL</code> is returned if the node (or its first child) is not a text node.
+The "whitespace" argument can be NULL.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetType">mxmlGetType</a></h3>
+<p class="description">Get the node type.</p>
+<p class="code">
+<a href="#mxml_type_t">mxml_type_t</a> mxmlGetType (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Type of node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion"><code>MXML_IGNORE</code> is returned if "node" is <code>NULL</code>.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlGetUserData">mxmlGetUserData</a></h3>
+<p class="description">Get the user data pointer for a node.</p>
+<p class="code">
+void *mxmlGetUserData (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to get</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">User data pointer</p>
+<h3 class="function"><a name="mxmlIndexDelete">mxmlIndexDelete</a></h3>
+<p class="description">Delete an index.</p>
+<p class="code">
+void mxmlIndexDelete (<br>
+    <a href="#mxml_index_t">mxml_index_t</a> *ind<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ind</dt>
+<dd class="description">Index to delete</dd>
+</dl>
+<h3 class="function"><a name="mxmlIndexEnum">mxmlIndexEnum</a></h3>
+<p class="description">Return the next node in the index.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexEnum (<br>
+    <a href="#mxml_index_t">mxml_index_t</a> *ind<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ind</dt>
+<dd class="description">Index to enumerate</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Next node or NULL if there is none</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Nodes are returned in the sorted order of the index.</p>
+<h3 class="function"><a name="mxmlIndexFind">mxmlIndexFind</a></h3>
+<p class="description">Find the next matching node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexFind (<br>
+    <a href="#mxml_index_t">mxml_index_t</a> *ind,<br>
+    const char *element,<br>
+    const char *value<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ind</dt>
+<dd class="description">Index to search</dd>
+<dt>element</dt>
+<dd class="description">Element name to find, if any</dd>
+<dt>value</dt>
+<dd class="description">Attribute value, if any</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Node or NULL if none found</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">You should call mxmlIndexReset() prior to using this function for
+the first time with a particular set of "element" and "value"
+strings. Passing NULL for both "element" and "value" is equivalent
+to calling mxmlIndexEnum().</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlIndexGetCount">mxmlIndexGetCount</a></h3>
+<p class="description">Get the number of nodes in an index.</p>
+<p class="code">
+int mxmlIndexGetCount (<br>
+    <a href="#mxml_index_t">mxml_index_t</a> *ind<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ind</dt>
+<dd class="description">Index of nodes</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of nodes in index</p>
+<h3 class="function"><a name="mxmlIndexNew">mxmlIndexNew</a></h3>
+<p class="description">Create a new index.</p>
+<p class="code">
+<a href="#mxml_index_t">mxml_index_t</a> *mxmlIndexNew (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *element,<br>
+    const char *attr<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">XML node tree</dd>
+<dt>element</dt>
+<dd class="description">Element to index or NULL for all</dd>
+<dt>attr</dt>
+<dd class="description">Attribute to index or NULL for none</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New index</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The index will contain all nodes that contain the named element and/or
+attribute. If both "element" and "attr" are NULL, then the index will
+contain a sorted list of the elements in the node tree.  Nodes are
+sorted by element name and optionally by attribute value if the "attr"
+argument is not NULL.</p>
+<h3 class="function"><a name="mxmlIndexReset">mxmlIndexReset</a></h3>
+<p class="description">Reset the enumeration/find pointer in the index and
+return the first node in the index.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexReset (<br>
+    <a href="#mxml_index_t">mxml_index_t</a> *ind<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>ind</dt>
+<dd class="description">Index to reset</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if there is none</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function should be called prior to using mxmlIndexEnum() or
+mxmlIndexFind() for the first time.</p>
+<h3 class="function"><a name="mxmlLoadFd">mxmlLoadFd</a></h3>
+<p class="description">Load a file descriptor into an XML node tree.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadFd (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    int fd,<br>
+    <a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>fd</dt>
+<dd class="description">File descriptor to read from</dd>
+<dt>cb</dt>
+<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if the file could not be read.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.<br>
+<br>
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.</p>
+<h3 class="function"><a name="mxmlLoadFile">mxmlLoadFile</a></h3>
+<p class="description">Load a file into an XML node tree.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadFile (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    FILE *fp,<br>
+    <a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>fp</dt>
+<dd class="description">File to read from</dd>
+<dt>cb</dt>
+<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if the file could not be read.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.<br>
+<br>
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.</p>
+<h3 class="function"><a name="mxmlLoadString">mxmlLoadString</a></h3>
+<p class="description">Load a string into an XML node tree.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadString (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    const char *s,<br>
+    <a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>s</dt>
+<dd class="description">String to load</dd>
+<dt>cb</dt>
+<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if the string has errors.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The nodes in the specified string are added to the specified top node.
+If no top node is provided, the XML string MUST be well-formed with a
+single parent node like <?xml> for the entire string. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.<br>
+<br>
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlNewCDATA">mxmlNewCDATA</a></h3>
+<p class="description">Create a new CDATA node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewCDATA (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    const char *data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>data</dt>
+<dd class="description">Data string</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new CDATA node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+CDATA node has no parent. The data string must be nul-terminated and
+is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.1 </span><a name="mxmlNewCustom">mxmlNewCustom</a></h3>
+<p class="description">Create a new custom data node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewCustom (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    void *data,<br>
+    <a href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a> destroy<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>data</dt>
+<dd class="description">Pointer to data</dd>
+<dt>destroy</dt>
+<dd class="description">Function to destroy data</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new custom node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+element node has no parent. NULL can be passed when the data in the
+node is not dynamically allocated or is separately managed.
+
+</p>
+<h3 class="function"><a name="mxmlNewElement">mxmlNewElement</a></h3>
+<p class="description">Create a new element node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewElement (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>name</dt>
+<dd class="description">Name of element</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new element node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+element node has no parent.</p>
+<h3 class="function"><a name="mxmlNewInteger">mxmlNewInteger</a></h3>
+<p class="description">Create a new integer node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewInteger (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    int integer<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>integer</dt>
+<dd class="description">Integer value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new integer node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+integer node has no parent.</p>
+<h3 class="function"><a name="mxmlNewOpaque">mxmlNewOpaque</a></h3>
+<p class="description">Create a new opaque string.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewOpaque (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    const char *opaque<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>opaque</dt>
+<dd class="description">Opaque string</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new opaque node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+opaque node has no parent. The opaque string must be nul-terminated and
+is copied into the new node.</p>
+<h3 class="function"><a name="mxmlNewReal">mxmlNewReal</a></h3>
+<p class="description">Create a new real number node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewReal (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    double real<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>real</dt>
+<dd class="description">Real number value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new real number node is added to the end of the specified parent's
+child list. The constant MXML_NO_PARENT can be used to specify that
+the new real number node has no parent.</p>
+<h3 class="function"><a name="mxmlNewText">mxmlNewText</a></h3>
+<p class="description">Create a new text fragment node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewText (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    int whitespace,<br>
+    const char *string<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>whitespace</dt>
+<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
+<dt>string</dt>
+<dd class="description">String</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new text node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+text node has no parent. The whitespace parameter is used to specify
+whether leading whitespace is present before the node. The text
+string must be nul-terminated and is copied into the new node.</p>
+<h3 class="function"><a name="mxmlNewTextf">mxmlNewTextf</a></h3>
+<p class="description">Create a new formatted text fragment node.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewTextf (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
+    int whitespace,<br>
+    const char *format,<br>
+    ...<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>parent</dt>
+<dd class="description">Parent node or MXML_NO_PARENT</dd>
+<dt>whitespace</dt>
+<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
+<dt>format</dt>
+<dd class="description">Printf-style frmat string</dd>
+<dt>...</dt>
+<dd class="description">Additional args as needed</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The new text node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+text node has no parent. The whitespace parameter is used to specify
+whether leading whitespace is present before the node. The format
+string must be nul-terminated and is formatted into the new node.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlNewXML">mxmlNewXML</a></h3>
+<p class="description">Create a new XML document tree.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewXML (<br>
+    const char *version<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>version</dt>
+<dd class="description">Version number to use</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New ?xml node</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The "version" argument specifies the version number to put in the
+?xml element node. If NULL, version 1.0 is assumed.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlRelease">mxmlRelease</a></h3>
+<p class="description">Release a node.</p>
+<p class="code">
+int mxmlRelease (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New reference count</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">When the reference count reaches zero, the node (and any children)
+is deleted via mxmlDelete().
+
+</p>
+<h3 class="function"><a name="mxmlRemove">mxmlRemove</a></h3>
+<p class="description">Remove a node from its parent.</p>
+<p class="code">
+void mxmlRemove (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to remove</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Does not free memory used by the node - use mxmlDelete() for that.
+This function does nothing if the node has no parent.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlRetain">mxmlRetain</a></h3>
+<p class="description">Retain a node.</p>
+<p class="code">
+int mxmlRetain (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New reference count</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlSAXLoadFd">mxmlSAXLoadFd</a></h3>
+<p class="description">Load a file descriptor into an XML node tree
+using a SAX callback.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlSAXLoadFd (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    int fd,<br>
+    <a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb,<br>
+    <a href="#mxml_sax_cb_t">mxml_sax_cb_t</a> sax_cb,<br>
+    void *sax_data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>fd</dt>
+<dd class="description">File descriptor to read from</dd>
+<dt>cb</dt>
+<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
+<dt>sax_cb</dt>
+<dd class="description">SAX callback or MXML_NO_CALLBACK</dd>
+<dt>sax_data</dt>
+<dd class="description">SAX user data</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if the file could not be read.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.<br>
+<br>
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.<br>
+<br>
+The SAX callback must call mxmlRetain() for any nodes that need to
+be kept for later use. Otherwise, nodes are deleted when the parent
+node is closed or after each data, comment, CDATA, or directive node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlSAXLoadFile">mxmlSAXLoadFile</a></h3>
+<p class="description">Load a file into an XML node tree
+using a SAX callback.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlSAXLoadFile (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    FILE *fp,<br>
+    <a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb,<br>
+    <a href="#mxml_sax_cb_t">mxml_sax_cb_t</a> sax_cb,<br>
+    void *sax_data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>fp</dt>
+<dd class="description">File to read from</dd>
+<dt>cb</dt>
+<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
+<dt>sax_cb</dt>
+<dd class="description">SAX callback or MXML_NO_CALLBACK</dd>
+<dt>sax_data</dt>
+<dd class="description">SAX user data</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if the file could not be read.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.<br>
+<br>
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.<br>
+<br>
+The SAX callback must call mxmlRetain() for any nodes that need to
+be kept for later use. Otherwise, nodes are deleted when the parent
+node is closed or after each data, comment, CDATA, or directive node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlSAXLoadString">mxmlSAXLoadString</a></h3>
+<p class="description">Load a string into an XML node tree
+using a SAX callback.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlSAXLoadString (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    const char *s,<br>
+    <a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb,<br>
+    <a href="#mxml_sax_cb_t">mxml_sax_cb_t</a> sax_cb,<br>
+    void *sax_data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>s</dt>
+<dd class="description">String to load</dd>
+<dt>cb</dt>
+<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
+<dt>sax_cb</dt>
+<dd class="description">SAX callback or MXML_NO_CALLBACK</dd>
+<dt>sax_data</dt>
+<dd class="description">SAX user data</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">First node or NULL if the string has errors.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The nodes in the specified string are added to the specified top node.
+If no top node is provided, the XML string MUST be well-formed with a
+single parent node like <?xml> for the entire string. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.<br>
+<br>
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.<br>
+<br>
+The SAX callback must call mxmlRetain() for any nodes that need to
+be kept for later use. Otherwise, nodes are deleted when the parent
+node is closed or after each data, comment, CDATA, or directive node.
+
+</p>
+<h3 class="function"><a name="mxmlSaveAllocString">mxmlSaveAllocString</a></h3>
+<p class="description">Save an XML tree to an allocated string.</p>
+<p class="code">
+char *mxmlSaveAllocString (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    <a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to write</dd>
+<dt>cb</dt>
+<dd class="description">Whitespace callback or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Allocated string or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns a pointer to a string containing the textual
+representation of the XML node tree.  The string should be freed
+using the free() function when you are done with it.  NULL is returned
+if the node would produce an empty string or if the string cannot be
+allocated.<br>
+<br>
+The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</p>
+<h3 class="function"><a name="mxmlSaveFd">mxmlSaveFd</a></h3>
+<p class="description">Save an XML tree to a file descriptor.</p>
+<p class="code">
+int mxmlSaveFd (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    int fd,<br>
+    <a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to write</dd>
+<dt>fd</dt>
+<dd class="description">File descriptor to write to</dd>
+<dt>cb</dt>
+<dd class="description">Whitespace callback or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on error.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</p>
+<h3 class="function"><a name="mxmlSaveFile">mxmlSaveFile</a></h3>
+<p class="description">Save an XML tree to a file.</p>
+<p class="code">
+int mxmlSaveFile (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    FILE *fp,<br>
+    <a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to write</dd>
+<dt>fp</dt>
+<dd class="description">File to write to</dd>
+<dt>cb</dt>
+<dd class="description">Whitespace callback or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on error.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</p>
+<h3 class="function"><a name="mxmlSaveString">mxmlSaveString</a></h3>
+<p class="description">Save an XML node tree to a string.</p>
+<p class="code">
+int mxmlSaveString (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    char *buffer,<br>
+    int bufsize,<br>
+    <a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to write</dd>
+<dt>buffer</dt>
+<dd class="description">String buffer</dd>
+<dt>bufsize</dt>
+<dd class="description">Size of string buffer</dd>
+<dt>cb</dt>
+<dd class="description">Whitespace callback or MXML_NO_CALLBACK</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Size of string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the total number of bytes that would be
+required for the string but only copies (bufsize - 1) characters
+into the specified buffer.<br>
+<br>
+The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlSetCDATA">mxmlSetCDATA</a></h3>
+<p class="description">Set the element name of a CDATA node.</p>
+<p class="code">
+int mxmlSetCDATA (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>data</dt>
+<dd class="description">New data string</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not a CDATA element node.
+
+</p>
+<h3 class="function"><span class="info"> Mini-XML 2.1 </span><a name="mxmlSetCustom">mxmlSetCustom</a></h3>
+<p class="description">Set the data and destructor of a custom data node.</p>
+<p class="code">
+int mxmlSetCustom (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    void *data,<br>
+    <a href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a> destroy<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>data</dt>
+<dd class="description">New data pointer</dd>
+<dt>destroy</dt>
+<dd class="description">New destructor function</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not a custom node.
+
+</p>
+<h3 class="function"><a name="mxmlSetCustomHandlers">mxmlSetCustomHandlers</a></h3>
+<p class="description">Set the handling functions for custom data.</p>
+<p class="code">
+void mxmlSetCustomHandlers (<br>
+    <a href="#mxml_custom_load_cb_t">mxml_custom_load_cb_t</a> load,<br>
+    <a href="#mxml_custom_save_cb_t">mxml_custom_save_cb_t</a> save<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>load</dt>
+<dd class="description">Load function</dd>
+<dt>save</dt>
+<dd class="description">Save function</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The load function accepts a node pointer and a data string and must
+return 0 on success and non-zero on error.<br>
+<br>
+The save function accepts a node pointer and must return a malloc'd
+string on success and NULL on error.</p>
+<h3 class="function"><a name="mxmlSetElement">mxmlSetElement</a></h3>
+<p class="description">Set the name of an element node.</p>
+<p class="code">
+int mxmlSetElement (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>name</dt>
+<dd class="description">New name string</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it is not an element node.</p>
+<h3 class="function"><a name="mxmlSetErrorCallback">mxmlSetErrorCallback</a></h3>
+<p class="description">Set the error message callback.</p>
+<p class="code">
+void mxmlSetErrorCallback (<br>
+    <a href="#mxml_error_cb_t">mxml_error_cb_t</a> cb<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>cb</dt>
+<dd class="description">Error callback function</dd>
+</dl>
+<h3 class="function"><a name="mxmlSetInteger">mxmlSetInteger</a></h3>
+<p class="description">Set the value of an integer node.</p>
+<p class="code">
+int mxmlSetInteger (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    int integer<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>integer</dt>
+<dd class="description">Integer value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not an integer node.</p>
+<h3 class="function"><a name="mxmlSetOpaque">mxmlSetOpaque</a></h3>
+<p class="description">Set the value of an opaque node.</p>
+<p class="code">
+int mxmlSetOpaque (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    const char *opaque<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>opaque</dt>
+<dd class="description">Opaque string</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not an opaque node.</p>
+<h3 class="function"><a name="mxmlSetReal">mxmlSetReal</a></h3>
+<p class="description">Set the value of a real number node.</p>
+<p class="code">
+int mxmlSetReal (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    double real<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>real</dt>
+<dd class="description">Real number value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not a real number node.</p>
+<h3 class="function"><a name="mxmlSetText">mxmlSetText</a></h3>
+<p class="description">Set the value of a text node.</p>
+<p class="code">
+int mxmlSetText (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    int whitespace,<br>
+    const char *string<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>whitespace</dt>
+<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
+<dt>string</dt>
+<dd class="description">String</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not a text node.</p>
+<h3 class="function"><a name="mxmlSetTextf">mxmlSetTextf</a></h3>
+<p class="description">Set the value of a text node to a formatted string.</p>
+<p class="code">
+int mxmlSetTextf (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    int whitespace,<br>
+    const char *format,<br>
+    ...<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>whitespace</dt>
+<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
+<dt>format</dt>
+<dd class="description">Printf-style format string</dd>
+<dt>...</dt>
+<dd class="description">Additional arguments as needed</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The node is not changed if it (or its first child) is not a text node.</p>
+<h3 class="function"><span class="info"> Mini-XML 2.7 </span><a name="mxmlSetUserData">mxmlSetUserData</a></h3>
+<p class="description">Set the user data pointer for a node.</p>
+<p class="code">
+int mxmlSetUserData (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    void *data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Node to set</dd>
+<dt>data</dt>
+<dd class="description">User data pointer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h3 class="function"><span class="info"> Mini-XML 2.3 </span><a name="mxmlSetWrapMargin">mxmlSetWrapMargin</a></h3>
+<p class="description">Set the wrap margin when saving XML data.</p>
+<p class="code">
+void mxmlSetWrapMargin (<br>
+    int column<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>column</dt>
+<dd class="description">Column for wrapping, 0 to disable wrapping</dd>
+</dl>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Wrapping is disabled when "column" is 0.
+
+</p>
+<h3 class="function"><a name="mxmlWalkNext">mxmlWalkNext</a></h3>
+<p class="description">Walk to the next logical node in the tree.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlWalkNext (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    int descend<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Current node</dd>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>descend</dt>
+<dd class="description">Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Next node or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The descend argument controls whether the first child is considered
+to be the next node. The top node argument constrains the walk to
+the node's children.</p>
+<h3 class="function"><a name="mxmlWalkPrev">mxmlWalkPrev</a></h3>
+<p class="description">Walk to the previous logical node in the tree.</p>
+<p class="code">
+<a href="#mxml_node_t">mxml_node_t</a> *mxmlWalkPrev (<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *node,<br>
+    <a href="#mxml_node_t">mxml_node_t</a> *top,<br>
+    int descend<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>node</dt>
+<dd class="description">Current node</dd>
+<dt>top</dt>
+<dd class="description">Top node</dd>
+<dt>descend</dt>
+<dd class="description">Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Previous node or NULL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The descend argument controls whether the previous node's last child
+is considered to be the previous node. The top node argument constrains
+the walk to the node's children.</p>
+<h2 class="title"><a name="TYPES">Data Types</a></h2>
+<h3 class="typedef"><a name="mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a></h3>
+<p class="description">Custom data destructor</p>
+<p class="code">
+typedef void (*mxml_custom_destroy_cb_t)(void *);
+</p>
+<h3 class="typedef"><a name="mxml_custom_load_cb_t">mxml_custom_load_cb_t</a></h3>
+<p class="description">Custom data load callback function</p>
+<p class="code">
+typedef int (*mxml_custom_load_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *, const char *);
+</p>
+<h3 class="typedef"><a name="mxml_custom_save_cb_t">mxml_custom_save_cb_t</a></h3>
+<p class="description">Custom data save callback function</p>
+<p class="code">
+typedef char *(*mxml_custom_save_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *);
+</p>
+<h3 class="typedef"><a name="mxml_entity_cb_t">mxml_entity_cb_t</a></h3>
+<p class="description">Entity callback function</p>
+<p class="code">
+typedef int (*mxml_entity_cb_t)(const char *);
+</p>
+<h3 class="typedef"><a name="mxml_error_cb_t">mxml_error_cb_t</a></h3>
+<p class="description">Error callback function</p>
+<p class="code">
+typedef void (*mxml_error_cb_t)(const char *);
+</p>
+<h3 class="typedef"><a name="mxml_index_t">mxml_index_t</a></h3>
+<p class="description">An XML node index.</p>
+<p class="code">
+typedef struct <a href="#mxml_index_s">mxml_index_s</a> mxml_index_t;
+</p>
+<h3 class="typedef"><a name="mxml_load_cb_t">mxml_load_cb_t</a></h3>
+<p class="description">Load callback function</p>
+<p class="code">
+typedef <a href="#mxml_type_t">mxml_type_t</a> (*mxml_load_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *);
+</p>
+<h3 class="typedef"><a name="mxml_node_t">mxml_node_t</a></h3>
+<p class="description">An XML node.</p>
+<p class="code">
+typedef struct <a href="#mxml_node_s">mxml_node_s</a> mxml_node_t;
+</p>
+<h3 class="typedef"><a name="mxml_save_cb_t">mxml_save_cb_t</a></h3>
+<p class="description">Save callback function</p>
+<p class="code">
+typedef const char *(*mxml_save_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *, int);
+</p>
+<h3 class="typedef"><a name="mxml_sax_cb_t">mxml_sax_cb_t</a></h3>
+<p class="description">SAX callback function</p>
+<p class="code">
+typedef void (*mxml_sax_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *, mxml_sax_event_t, void *);
+</p>
+<h3 class="typedef"><a name="mxml_sax_event_t">mxml_sax_event_t</a></h3>
+<p class="description">SAX event type.</p>
+<p class="code">
+typedef enum <a href="#mxml_sax_event_e">mxml_sax_event_e</a> mxml_sax_event_t;
+</p>
+<h3 class="typedef"><a name="mxml_type_t">mxml_type_t</a></h3>
+<p class="description">The XML node type.</p>
+<p class="code">
+typedef enum <a href="#mxml_type_e">mxml_type_e</a> mxml_type_t;
+</p>
+<h2 class="title"><a name="ENUMERATIONS">Constants</a></h2>
+<h3 class="enumeration"><a name="mxml_sax_event_e">mxml_sax_event_e</a></h3>
+<p class="description">SAX event type.</p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>MXML_SAX_CDATA </dt>
+<dd class="description">CDATA node</dd>
+<dt>MXML_SAX_COMMENT </dt>
+<dd class="description">Comment node</dd>
+<dt>MXML_SAX_DATA </dt>
+<dd class="description">Data node</dd>
+<dt>MXML_SAX_DIRECTIVE </dt>
+<dd class="description">Processing directive node</dd>
+<dt>MXML_SAX_ELEMENT_CLOSE </dt>
+<dd class="description">Element closed</dd>
+<dt>MXML_SAX_ELEMENT_OPEN </dt>
+<dd class="description">Element opened</dd>
+</dl>
+<h3 class="enumeration"><a name="mxml_type_e">mxml_type_e</a></h3>
+<p class="description">The XML node type.</p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>MXML_CUSTOM <span class="info"> Mini-XML 2.1 </span></dt>
+<dd class="description">Custom data </dd>
+<dt>MXML_ELEMENT </dt>
+<dd class="description">XML element with attributes</dd>
+<dt>MXML_IGNORE <span class="info"> Mini-XML 2.3 </span></dt>
+<dd class="description">Ignore/throw away node </dd>
+<dt>MXML_INTEGER </dt>
+<dd class="description">Integer value</dd>
+<dt>MXML_OPAQUE </dt>
+<dd class="description">Opaque string</dd>
+<dt>MXML_REAL </dt>
+<dd class="description">Real value</dd>
+<dt>MXML_TEXT </dt>
+<dd class="description">Text fragment</dd>
+</dl>
+</div>
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/relnotes.html b/src/mxml/mxml-2.9/doc/relnotes.html
new file mode 100644
index 0000000..6ac2ab4
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/relnotes.html
@@ -0,0 +1,583 @@
+<html>
+<body>
+
+<h1 align='right'><a name='RELNOTES'><img src="B.gif" align="right"
+hspace="10" width="100" height="100" alt="B"></a>Release Notes</h1>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.9</h2>
+
+<ul>
+
+	<li>mxmlLoad* did not correctly load value nodes with MXML_NO_CALLBACK or MXML_TEXT_CALLBACK (Bug #502)</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.8</h2>
+
+<ul>
+
+	<li>Now call docsetutil using xcrun on OS X (Bug #458)</li>
+
+	<li>mxmldoc did not escape special HTML characters inside @code foo@
+	comments.</li>
+
+	<li>Fixed a memory leak in mxmlElementDeleteAttr (Bug #452)</li>
+
+	<li>Added MXML_MAJOR/MINOR_VERSION definitions to mxml.h (Bug $461)</li>
+
+	<li>Fixed a bug reading UTF-16 characters from a file (Bug #454)</li>
+
+	<li>Fixed a memory leak when loading invalid XML (Bug #496)</li>
+
+	<li>Fixed an XML fragment loading problem (Bug #494)</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.7</h2>
+
+<ul>
+
+	<li>Added 64-bit configurations to the VC++ project files (STR #129)</li>
+
+	<li>Fixed conformance of mxmldoc's HTML and CSS output.</li>
+
+	<li>Added data accessor ("get") functions and made the mxml_node_t and
+        mxml_index_t structures private but still available in the Mini-XML
+	header to preserve source compatibility (STR #118)</li>
+
+	<li>Updated the source headers to reference the Mini-XML license and its
+	exceptions to the LGPL2 (STR #108)</li>
+
+      	<li>Added a new mxmlFindPath() function to find the value node of a
+      	named element (STR #110)</li>
+
+	<li>Building a static version of the library did not work on Windows
+	(STR #112)</li>
+
+	<li>The shared library did not include a destructor for the thread-
+	specific data key on UNIX-based operating systems (STR #103)</li>
+
+	<li>mxmlLoad* did not error out on XML with multiple root nodes (STR
+	#101)</li>
+
+	<li>Fixed an issue with the _mxml_vstrdupf function (STR #107)</li>
+
+	<li>mxmlSave* no longer write all siblings of the passed node, just that
+	node and its children (STR #109)</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.6</h2>
+
+<ul>
+
+	<li>Documentation fixes (STR #91, STR #92)</li>
+
+	<li>The mxmldoc program did not handle typedef comments properly (STR
+	#72)</li>
+
+	<li>Added support for "long long" printf formats.</li>
+
+	<li>The XML parser now ignores BOMs in UTF-8 XML files (STR #89)</li>
+
+	<li>The mxmldoc program now supports generating Xcode documentation
+	sets.</li>
+
+	<li>mxmlSave*() did not output UTF-8 correctly on some platforms.</li>
+
+	<li>mxmlNewXML() now adds encoding="utf-8" in the ?xml
+	directive to avoid problems with non-conformant XML parsers that assume
+	something other than UTF-8 as the default encoding.</li>
+
+	<li>Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and
+	"<?xml ... ?>" was always followed by a newline
+	(STR #76)</li>
+
+	<li>The mxml.pc.in file was broken (STR #79)</li>
+
+	<li>The mxmldoc program now handles "typedef enum name {}
+	name" correctly (STR #72)</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.5</h2>
+
+<ul>
+
+	<li>The mxmldoc program now makes greater use of CSS and
+	supports a --css option to embed an alternate stylesheet.</li>
+
+	<li>The mxmldoc program now supports --header and --footer
+	options to insert documentation content before and
+	after the generated content.</li>
+
+	<li>The mxmldoc program now supports a --framed option to
+	generate framed HTML output.</li>
+
+	<li>The mxmldoc program now creates a table of contents
+	including any headings in the --intro file when
+	generating HTML output.</li>
+
+	<li>The man pages and man page output from mxmldoc did
+	not use "\-" for dashes (STR #68)</li>
+
+	<li>The debug version of the Mini-XML DLL could not be
+	built (STR #65)</li>
+
+	<li>Processing instructions and directives did not work
+	when not at the top level of a document (STR #67)</li>
+
+	<li>Spaces around the "=" in attributes were not supported
+	(STR #67)</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.4</h2>
+
+<ul>
+
+	<li>Fixed shared library build problems on HP-UX and Mac OS X.</li>
+
+	<li>The mxmldoc program did not output argument descriptions
+	for functions properly.</li>
+
+	<li>All global settings (custom, error, and entity callbacks
+	and the wrap margin) are now managed separately for each
+	thread.</li>
+
+	<li>Added mxmlElementDeleteAttr() function (STR #59)</li>
+
+	<li>mxmlElementSetAttrf() did not work (STR #57)</li>
+
+	<li>mxmlLoad*() incorrectly treated declarations as parent
+	elements (STR #56)</li>
+
+	<li>mxmlLoad*() incorrectly allowed attributes without
+	values (STR #47)</li>
+
+	<li>Fixed Visual C++ build problems (STR #49)</li>
+
+	<li>mxmlLoad*() did not return NULL when an element
+	contained an error (STR #46)</li>
+
+	<li>Added support for the apos character entity (STR
+	#54)</li> <li>Fixed whitespace detection with Unicode
+	characters (STR #48)</li>
+
+	<li>mxmlWalkNext() and mxmlWalkPrev() did not work correctly
+	when called with a node with no children as the top node
+	(STR #53)</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.3</h2>
+
+<ul>
+
+	<li>Added two exceptions to the LGPL to support static
+	linking of applications against Mini-XML</li>
+
+	<li>The mxmldoc utility can now generate man pages,
+	too.</li>
+
+	<li>Added a mxmlNewXML() function</li>
+
+	<li>Added a mxmlElementSetAttrf() function (STR #43)</li>
+
+	<li>Added a snprintf() emulation function for the test
+	program (STR #32)</li>
+
+	<li>Added the _CRT_SECURE_NO_DEPRECATE definition when
+	building on VC++ 2005 (STR #36)</li>
+
+	<li>mxmlLoad*() did not detect missing > characters in
+	elements (STR #41)</li>
+
+	<li>mxmlLoad*() did not detect missing close tags at the
+	end of an XML document (STR #45)</li>
+
+	<li>Added user_data and ref_count members to mxml_node_t
+	structure</li>
+
+	<li>Added mxmlReleaseNode() and mxmlRetainNode() APIs for
+	reference-counted nodes</li>
+
+	<li>Added mxmlSetWrapMargin() to control the wrapping of
+	XML output</li>
+
+	<li>Added conditional check for EINTR error code for
+	certain Windows compilers that do not define it (STR
+	#33)</li>
+
+	<li>The mxmldoc program now generates correct HTML 4.0
+	output - previously it generated invalid XHTML</li>
+
+	<li>The mxmldoc program now supports "@deprecated@,
+	"@private@", and "@since version@" comments</li>
+
+	<li>Fixed function and enumeration type bugs in
+	mxmldoc</li>
+
+	<li>Fixed the XML schema for mxmldoc</li>
+
+	<li>The mxmldoc program now supports --intro, --section,
+	and --title options</li>
+
+	<li>The mxmlLoad*() functions could leak a node on an
+	error (STR #27)</li>
+
+	<li>The mxml_vsnprintf() function could get in an
+	infinite loop on a buffer overflow (STR #25)</li>
+
+	<li>Added new mxmlNewCDATA() and mxmlSetCDATA() functions
+	to create and set CDATA nodes, which are really just
+	special element nodes</li>
+
+	<li>Added new MXML_IGNORE type and MXML_IGNORE_CB
+	callback to ignore non-element nodes, e.g.
+	whitespace</li>
+
+	<li>mxmlLoad*() did not treat custom data as opaque, so
+	whitespace characters would be lost</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.2.2</h2>
+
+<ul>
+
+	<li>mxmlLoad*() did not treat custom data as opaque, so
+	whitespace characters would be lost.</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.2.1</h2>
+
+<ul>
+
+	<li>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString()
+	now correctly return NULL on error (STR #21)</li>
+
+	<li>mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(),
+	mxmlNewText(), and mxmlNewTextf() incorrectly required a
+	parent node (STR #22)</li>
+
+	<li>Fixed an XML output bug in mxmldoc.</li>
+
+	<li>The "make install" target now uses the install
+	command to set the proper permissions on
+	UNIX/Linux/OSX.</li>
+
+	<li>Fixed a MingW/Cygwin compilation problem (STR
+	#18)</li>
+
+</ul>
+
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.2</h2>
+
+<ul>
+
+	<li>Added shared library support (STR #17)</li>
+
+	<li>mxmlLoad*() now returns an error when an XML stream
+	contains illegal control characters (STR #10)</li>
+
+	<li>mxmlLoad*() now returns an error when an element
+	contains two attributes with the same name in
+	conformance with the XML spec (STR #16)</li>
+
+	<li>Added support for CDATA (STR #14, STR #15)</li>
+
+	<li>Updated comment and processing instruction handling -
+	no entity support per XML specification.</li>
+
+	<li>Added checking for invalid comment termination ("--->"
+	is not allowed)</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.1</h2>
+
+<ul>
+
+	<li>Added support for custom data nodes (STR #6)</li>
+
+	<li>Now treat UTF-8 sequences which are longer than
+	necessary as an error (STR #4)</li>
+
+	<li>Fixed entity number support (STR #8)</li>
+
+	<li>Fixed mxmlLoadString() bug with UTF-8 (STR #7)</li>
+
+	<li>Fixed entity lookup bug (STR #5)</li>
+
+	<li>Added mxmlLoadFd() and mxmlSaveFd() functions.</li>
+
+	<li>Fixed multi-word UTF-16 handling.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 2.0</h2>
+
+<ul>
+
+	<li>New programmers manual.</li>
+
+	<li>Added Visual C++ project files for Microsoft Windows
+	users.</li>
+
+	<li>Added optimizations to mxmldoc, mxmlSaveFile(), and
+	mxmlIndexNew() (STR #2)</li>
+
+	<li>mxmlEntityAddCallback() now returns an integer
+	status (STR #2)</li>
+
+	<li>Added UTF-16 support (input only; all output is
+	UTF-8)</li>
+
+	<li>Added index functions to build a searchable index of
+	XML nodes.</li>
+
+	<li>Added character entity callback interface to support
+	additional character entities beyond those defined in
+	the XHTML specification.</li>
+
+	<li>Added support for XHTML character entities.</li>
+
+	<li>The mxmldoc utility now produces XML output which
+	conforms to an updated XML schema, described in the file
+	"doc/mxmldoc.xsd".</li>
+
+	<li>Changed the whitespace callback interface to return
+	strings instead of a single character, allowing for
+	greater control over the formatting of XML files written
+	using Mini-XML.  THIS CHANGE WILL REQUIRE CHANGES TO
+	YOUR 1.x CODE IF YOU USE WHITESPACE CALLBACKS.</li>
+
+	<li>The mxmldoc utility now produces XML output which
+	conforms to an updated XML schema, described in the file
+	"doc/mxmldoc.xsd".</li>
+
+	<li>Changed the whitespace callback interface to return
+	strings instead of a single character, allowing for
+	greater control over the formatting of XML files written
+	using Mini-XML.  THIS CHANGE WILL REQUIRE CHANGES TO
+	YOUR 1.x CODE IF YOU USE WHITESPACE CALLBACKS.</li>
+
+	<li>The mxmldoc utility is now capable of documenting C++
+	classes, functions, and structures, and correctly
+	handles C++ comments.</li>
+
+	<li>Added new modular tests for mxmldoc.</li>
+
+	<li>Updated the mxmldoc output to be more compatible with
+	embedding in manuals produced with HTMLDOC.</li>
+
+	<li>The makefile incorrectly included a "/" separator
+	between the destination path and install path.  This
+	caused problems when building and installing with
+	MingW.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 1.3</h2>
+
+<ul>
+
+	<li>Fixes for mxmldoc.</li>
+
+	<li>Added support for reading standard HTML entity names.</li>
+
+	<li>mxmlLoadString/File() did not decode character
+	entities in element names, attribute names, or
+	attribute values.</li>
+
+	<li>mxmlLoadString/File() would crash when loading non-
+	conformant XML data under an existing parent (top)
+	node.</li>
+
+	<li>Fixed several bugs in the mxmldoc utility.</li>
+
+	<li>Added new error callback function to catch a variety
+	of errors and log them to someplace other than stderr.</li>
+
+	<li>The mxmlElementSetAttr() function now allows for NULL
+	attribute values.</li>
+
+	<li>The load and save functions now properly handle quoted
+	element and attribute name strings properly, e.g. for
+	!DOCTYPE declarations.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 1.2</h2>
+
+<ul>
+
+	<li>Added new "set" methods to set the value of a node.</li>
+
+	<li>Added new formatted text methods mxmlNewTextf() and
+	mxmlSetTextf() to create/set a text node value using
+	printf-style formats.</li>
+
+	<li>Added new standard callbacks for use with the mxmlLoad
+	functions.</li>
+
+	<li>Updated the HTML documentation to include examples of
+	the walk and load function output.</li>
+
+	<li>Added --with/without-ansi configure option to control
+	the strdup() function check.</li>
+
+	<li>Added --with/without-snprintf configure option to
+	control the snprintf() and vsnprintf() function
+	checks.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 1.1.2</h2>
+
+<ul>
+
+	<li>The mxml(3) man page wasn't updated for the string
+	functions.</li>
+
+	<li>mxmlSaveString() returned the wrong number of
+	characters.</li>
+
+	<li>mxml_add_char() updated the buffer pointer in the
+	wrong place.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 1.1.1</h2>
+
+<ul>
+
+	<li>The private mxml_add_ch() function did not update the
+	start-of-buffer pointer which could cause a crash when
+	using mxmlSaveString().</li>
+
+	<li>The private mxml_write_ws() function called putc()
+	instead of using the proper callback which could cause
+	a crash when using mxmlSaveString().</li>
+
+	<li>Added a mxmlSaveAllocString() convenience function for
+	saving an XML node tree to an allocated string.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 1.1</h2>
+
+<ul>
+
+	<li>The mxmlLoadFile() function now uses dynamically
+	allocated string buffers for element names, attribute
+	names, and attribute values.  Previously they were
+	capped at 16383, 255, and 255 bytes, respectively.</li>
+
+	<li>Added a new mxmlLoadString() function for loading an
+	XML node tree from a string.</li>
+
+	<li>Added a new mxmlSaveString() function for saving an
+	XML node tree to a string.</li>
+
+	<li>Add emulation of strdup() if the local platform does
+	not provide the function.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 1.0</h2>
+
+<ul>
+
+	<li>The mxmldoc program now handles function arguments,
+	structures, unions, enumerations, classes, and
+	typedefs properly.</li>
+
+	<li>Documentation provided via mxmldoc and more in-line
+	comments in the code.</li>
+
+	<li>Added man pages and packaging files.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 0.93</h2>
+
+<ul>
+
+	<li>New mxmldoc example program that is also used to
+	create and update code documentation using XML and
+	produce HTML reference pages.</li>
+
+	<li>Added mxmlAdd() and mxmlRemove() functions to add and
+	remove nodes from a tree.  This provides more
+	flexibility over where the nodes are inserted and
+	allows nodes to be moved within the tree as needed.</li>
+
+	<li>mxmlLoadFile() now correctly handles comments.</li>
+
+	<li>mxmlLoadFile() now supports the required "gt", "quot",
+	and "nbsp" character entities.</li>
+
+	<li>mxmlSaveFile() now uses newlines as whitespace
+	when valid to do so.</li>
+
+	<li>mxmlFindElement() now also takes attribute name and
+	attribute value string arguments to limit the search
+	to specific elements with attributes and/or values.</li>
+	NULL pointers can be used as "wildcards".</li>
+
+	<li>Added uninstall target to makefile, and auto-reconfig
+	if Makefile.in or configure.in are changed.</li>
+
+	<li>mxmlFindElement(), mxmlWalkNext(), and mxmlWalkPrev()
+	now all provide "descend" arguments to control whether
+	they descend into child nodes in the tree.</li>
+
+	<li>Fixed some whitespace issues in mxmlLoadFile().</li>
+
+	<li>Fixed Unicode output and whitespace issues in
+	mxmlSaveFile().</li>
+
+	<li>mxmlSaveFile() now supports a whitespace callback to
+	provide more human-readable XML output under program
+	control.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 0.92</h2>
+
+<ul>
+
+	<li>mxmlSaveFile() didn't return a value on success.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 0.91</h2>
+
+<ul>
+
+	<li>mxmlWalkNext() would go into an infinite loop.</li>
+
+</ul>
+
+<h2 _hd_omit_toc>Changes in Mini-XML 0.9</h2>
+
+<ul>
+
+	<li>Initial public release.</li>
+
+</ul>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/schema.html b/src/mxml/mxml-2.9/doc/schema.html
new file mode 100644
index 0000000..b70c8f6
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/schema.html
@@ -0,0 +1,201 @@
+<html>
+<body>
+
+<h1 align='right'><a name='SCHEMA'><img src="D.gif" align="right"
+hspace="10" width="100" height="100" alt="D"></a>XML Schema</h1>
+
+<p>This appendix provides the XML schema that is used for the XML
+files produced by <tt>mxmldoc</tt>. This schema is available on-line
+at:</p>
+
+<pre>
+    http://www.msweet.org/schema/mxmldoc.xsd
+</pre>
+
+<h2 _hd_omit_toc>mxmldoc.xsd</h2>
+
+<pre><small>
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:annotation>
+    <xsd:documentation xml:lang="en">
+      Mini-XML 2.9 documentation schema for mxmldoc output.
+      Copyright 2003-2014 by Michael Sweet.
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <!-- basic element definitions -->
+  <xsd:element name="argument" type="argumentType"/>
+  <xsd:element name="class" type="classType"/>
+  <xsd:element name="constant" type="constantType"/>
+  <xsd:element name="description" type="xsd:string"/>
+  <xsd:element name="enumeration" type="enumerationType"/>
+  <xsd:element name="function" type="functionType"/>
+  <xsd:element name="mxmldoc" type="mxmldocType"/>
+  <xsd:element name="namespace" type="namespaceType"/>
+  <xsd:element name="returnvalue" type="returnvalueType"/>
+  <xsd:element name="seealso" type="identifierList"/>
+  <xsd:element name="struct" type="structType"/>
+  <xsd:element name="typedef" type="typedefType"/>
+  <xsd:element name="type" type="xsd:string"/>
+  <xsd:element name="union" type="unionType"/>
+  <xsd:element name="variable" type="variableType"/>
+
+  <!-- descriptions of complex elements -->
+  <xsd:complexType name="argumentType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="default" type="xsd:string" use="optional"/>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="direction" type="direction" use="optional"
+     default="I"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="classType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="class"/>
+	<xsd:element ref="enumeration"/>
+	<xsd:element ref="function"/>
+	<xsd:element ref="struct"/>
+	<xsd:element ref="typedef"/>
+	<xsd:element ref="union"/>
+	<xsd:element ref="variable"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="parent" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="constantType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="enumerationType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="constant" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="functionType">
+    <xsd:sequence>
+      <xsd:element ref="returnvalue" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="argument" minOccurs="1" maxOccurs="unbounded"/>
+      <xsd:element ref="seealso" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+    <xsd:attribute name="scope" type="scope" use="optional"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="mxmldocType">
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="class"/>
+      <xsd:element ref="enumeration"/>
+      <xsd:element ref="function"/>
+      <xsd:element ref="namespace"/>
+      <xsd:element ref="struct"/>
+      <xsd:element ref="typedef"/>
+      <xsd:element ref="union"/>
+      <xsd:element ref="variable"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:complexType name="namespaceType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="class"/>
+	<xsd:element ref="enumeration"/>
+	<xsd:element ref="function"/>
+	<xsd:element ref="struct"/>
+	<xsd:element ref="typedef"/>
+	<xsd:element ref="union"/>
+	<xsd:element ref="variable"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="returnvalueType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="structType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+	<xsd:element ref="variable"/>
+	<xsd:element ref="function"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="typedefType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="unionType">
+    <xsd:sequence>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="variableType">
+    <xsd:sequence>
+      <xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
+      <xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="identifier" use="required"/>
+  </xsd:complexType>
+
+  <!-- data types -->
+  <xsd:simpleType name="direction">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="I"/>
+      <xsd:enumeration value="O"/>
+      <xsd:enumeration value="IO"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="identifier">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[a-zA-Z_(.]([a-zA-Z_(.,)* 0-9])*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="identifierList">
+    <xsd:list itemType="identifier"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="scope">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value=""/>
+      <xsd:enumeration value="private"/>
+      <xsd:enumeration value="protected"/>
+      <xsd:enumeration value="public"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+</xsd:schema>
+</small></pre>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/doc/title.html b/src/mxml/mxml-2.9/doc/title.html
new file mode 100644
index 0000000..62b7f85
--- /dev/null
+++ b/src/mxml/mxml-2.9/doc/title.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+	<title>Mini-XML Programmers Manual</title>
+	<meta name="author" content="Michael R Sweet">
+	<meta name="copyright" content="Copyright 2003-2014">
+</head>
+<body>
+
+<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" summary="">
+<tr><td height="100%">
+
+<H1 ALIGN="CENTER"><FONT SIZE="-1">Mini-XML Programmers Manual<br>
+Version 2.9</H1>
+
+<P ALIGN="CENTER">MICHAEL R. SWEET</P>
+
+</td></tr>
+</table>
+
+<!-- NEW PAGE -->
+<P><FONT SIZE="+1"><B>Mini-XML Programmers Manual, Version 2.9</B></FONT></P>
+
+<P><B>Copyright © 2003-2014 by Michael R. Sweet</B></P>
+
+<P><SMALL>Permission is granted to copy, distribute and/or modify
+this document under the terms of the GNU Library General Public
+License, Version 2. A copy of this license is included in <A
+HREF="#LICENSE">Appendix A - Mini-XML License</A>.</SMALL></P>
+
+</body>
+</html>
diff --git a/src/mxml/mxml-2.9/install-sh b/src/mxml/mxml-2.9/install-sh
new file mode 100755
index 0000000..398a88e
--- /dev/null
+++ b/src/mxml/mxml-2.9/install-sh
@@ -0,0 +1,251 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	:
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=$mkdirprog
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		:
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		:
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		:
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+	'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		:
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		:
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
diff --git a/src/mxml/mxml-2.9/mxml-attr.c b/src/mxml/mxml-2.9/mxml-attr.c
new file mode 100644
index 0000000..8e89cc1
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-attr.c
@@ -0,0 +1,314 @@
+/*
+ * "$Id: mxml-attr.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Attribute support code for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * Local functions...
+ */
+
+static int	mxml_set_attr(mxml_node_t *node, const char *name,
+		              char *value);
+
+
+/*
+ * 'mxmlElementDeleteAttr()' - Delete an attribute.
+ *
+ * @since Mini-XML 2.4@
+ */
+
+void
+mxmlElementDeleteAttr(mxml_node_t *node,/* I - Element */
+                      const char  *name)/* I - Attribute name */
+{
+  int		i;			/* Looping var */
+  mxml_attr_t	*attr;			/* Cirrent attribute */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlElementDeleteAttr(node=%p, name=\"%s\")\n",
+          node, name ? name : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT || !name)
+    return;
+
+ /*
+  * Look for the attribute...
+  */
+
+  for (i = node->value.element.num_attrs, attr = node->value.element.attrs;
+       i > 0;
+       i --, attr ++)
+  {
+#ifdef DEBUG
+    printf("    %s=\"%s\"\n", attr->name, attr->value);
+#endif /* DEBUG */
+
+    if (!strcmp(attr->name, name))
+    {
+     /*
+      * Delete this attribute...
+      */
+
+      free(attr->name);
+      free(attr->value);
+
+      i --;
+      if (i > 0)
+        memmove(attr, attr + 1, i * sizeof(mxml_attr_t));
+
+      node->value.element.num_attrs --;
+
+      if (node->value.element.num_attrs == 0)
+        free(node->value.element.attrs);
+      return;
+    }
+  }
+}
+
+
+/*
+ * 'mxmlElementGetAttr()' - Get an attribute.
+ *
+ * This function returns NULL if the node is not an element or the
+ * named attribute does not exist.
+ */
+
+const char *				/* O - Attribute value or NULL */
+mxmlElementGetAttr(mxml_node_t *node,	/* I - Element node */
+                   const char  *name)	/* I - Name of attribute */
+{
+  int		i;			/* Looping var */
+  mxml_attr_t	*attr;			/* Cirrent attribute */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlElementGetAttr(node=%p, name=\"%s\")\n",
+          node, name ? name : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT || !name)
+    return (NULL);
+
+ /*
+  * Look for the attribute...
+  */
+
+  for (i = node->value.element.num_attrs, attr = node->value.element.attrs;
+       i > 0;
+       i --, attr ++)
+  {
+#ifdef DEBUG
+    printf("    %s=\"%s\"\n", attr->name, attr->value);
+#endif /* DEBUG */
+
+    if (!strcmp(attr->name, name))
+    {
+#ifdef DEBUG
+      printf("    Returning \"%s\"!\n", attr->value);
+#endif /* DEBUG */
+      return (attr->value);
+    }
+  }
+
+ /*
+  * Didn't find attribute, so return NULL...
+  */
+
+#ifdef DEBUG
+  puts("    Returning NULL!\n");
+#endif /* DEBUG */
+
+  return (NULL);
+}
+
+
+/*
+ * 'mxmlElementSetAttr()' - Set an attribute.
+ *
+ * If the named attribute already exists, the value of the attribute
+ * is replaced by the new string value. The string value is copied
+ * into the element node. This function does nothing if the node is
+ * not an element.
+ */
+
+void
+mxmlElementSetAttr(mxml_node_t *node,	/* I - Element node */
+                   const char  *name,	/* I - Name of attribute */
+                   const char  *value)	/* I - Attribute value */
+{
+  char	*valuec;			/* Copy of value */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlElementSetAttr(node=%p, name=\"%s\", value=\"%s\")\n",
+          node, name ? name : "(null)", value ? value : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT || !name)
+    return;
+
+  if (value)
+    valuec = strdup(value);
+  else
+    valuec = NULL;
+
+  if (mxml_set_attr(node, name, valuec))
+    free(valuec);
+}
+
+
+/*
+ * 'mxmlElementSetAttrf()' - Set an attribute with a formatted value.
+ *
+ * If the named attribute already exists, the value of the attribute
+ * is replaced by the new formatted string. The formatted string value is
+ * copied into the element node. This function does nothing if the node
+ * is not an element.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+void
+mxmlElementSetAttrf(mxml_node_t *node,	/* I - Element node */
+                    const char  *name,	/* I - Name of attribute */
+                    const char  *format,/* I - Printf-style attribute value */
+		    ...)		/* I - Additional arguments as needed */
+{
+  va_list	ap;			/* Argument pointer */
+  char		*value;			/* Value */
+
+
+#ifdef DEBUG
+  fprintf(stderr,
+          "mxmlElementSetAttrf(node=%p, name=\"%s\", format=\"%s\", ...)\n",
+          node, name ? name : "(null)", format ? format : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT || !name || !format)
+    return;
+
+ /*
+  * Format the value...
+  */
+
+  va_start(ap, format);
+  value = _mxml_vstrdupf(format, ap);
+  va_end(ap);
+
+  if (!value)
+    mxml_error("Unable to allocate memory for attribute '%s' in element %s!",
+               name, node->value.element.name);
+  else if (mxml_set_attr(node, name, value))
+    free(value);
+}
+
+
+/*
+ * 'mxml_set_attr()' - Set or add an attribute name/value pair.
+ */
+
+static int				/* O - 0 on success, -1 on failure */
+mxml_set_attr(mxml_node_t *node,	/* I - Element node */
+              const char  *name,	/* I - Attribute name */
+              char        *value)	/* I - Attribute value */
+{
+  int		i;			/* Looping var */
+  mxml_attr_t	*attr;			/* New attribute */
+
+
+ /*
+  * Look for the attribute...
+  */
+
+  for (i = node->value.element.num_attrs, attr = node->value.element.attrs;
+       i > 0;
+       i --, attr ++)
+    if (!strcmp(attr->name, name))
+    {
+     /*
+      * Free the old value as needed...
+      */
+
+      if (attr->value)
+        free(attr->value);
+
+      attr->value = value;
+
+      return (0);
+    }
+
+ /*
+  * Add a new attribute...
+  */
+
+  if (node->value.element.num_attrs == 0)
+    attr = malloc(sizeof(mxml_attr_t));
+  else
+    attr = realloc(node->value.element.attrs,
+                   (node->value.element.num_attrs + 1) * sizeof(mxml_attr_t));
+
+  if (!attr)
+  {
+    mxml_error("Unable to allocate memory for attribute '%s' in element %s!",
+               name, node->value.element.name);
+    return (-1);
+  }
+
+  node->value.element.attrs = attr;
+  attr += node->value.element.num_attrs;
+
+  if ((attr->name = strdup(name)) == NULL)
+  {
+    mxml_error("Unable to allocate memory for attribute '%s' in element %s!",
+               name, node->value.element.name);
+    return (-1);
+  }
+
+  attr->value = value;
+
+  node->value.element.num_attrs ++;
+
+  return (0);
+}
+
+
+/*
+ * End of "$Id: mxml-attr.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-entity.c b/src/mxml/mxml-2.9/mxml-entity.c
new file mode 100644
index 0000000..0d11df6
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-entity.c
@@ -0,0 +1,449 @@
+/*
+ * "$Id: mxml-entity.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Character entity support code for Mini-XML, a small XML-like
+ * file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "mxml-private.h"
+
+
+/*
+ * 'mxmlEntityAddCallback()' - Add a callback to convert entities to Unicode.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlEntityAddCallback(
+    mxml_entity_cb_t cb)		/* I - Callback function to add */
+{
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+  if (global->num_entity_cbs < (int)(sizeof(global->entity_cbs) / sizeof(global->entity_cbs[0])))
+  {
+    global->entity_cbs[global->num_entity_cbs] = cb;
+    global->num_entity_cbs ++;
+
+    return (0);
+  }
+  else
+  {
+    mxml_error("Unable to add entity callback!");
+
+    return (-1);
+  }
+}
+
+
+/*
+ * 'mxmlEntityGetName()' - Get the name that corresponds to the character value.
+ *
+ * If val does not need to be represented by a named entity, NULL is returned.
+ */
+
+const char *				/* O - Entity name or NULL */
+mxmlEntityGetName(int val)		/* I - Character value */
+{
+  switch (val)
+  {
+    case '&' :
+        return ("amp");
+
+    case '<' :
+        return ("lt");
+
+    case '>' :
+        return ("gt");
+
+    case '\"' :
+        return ("quot");
+
+    default :
+        return (NULL);
+  }
+}
+
+
+/*
+ * 'mxmlEntityGetValue()' - Get the character corresponding to a named entity.
+ *
+ * The entity name can also be a numeric constant. -1 is returned if the
+ * name is not known.
+ */
+
+int					/* O - Character value or -1 on error */
+mxmlEntityGetValue(const char *name)	/* I - Entity name */
+{
+  int		i;			/* Looping var */
+  int		ch;			/* Character value */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+  for (i = 0; i < global->num_entity_cbs; i ++)
+    if ((ch = (global->entity_cbs[i])(name)) >= 0)
+      return (ch);
+
+  return (-1);
+}
+
+
+/*
+ * 'mxmlEntityRemoveCallback()' - Remove a callback.
+ */
+
+void
+mxmlEntityRemoveCallback(
+    mxml_entity_cb_t cb)		/* I - Callback function to remove */
+{
+  int		i;			/* Looping var */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+  for (i = 0; i < global->num_entity_cbs; i ++)
+    if (cb == global->entity_cbs[i])
+    {
+     /*
+      * Remove the callback...
+      */
+
+      global->num_entity_cbs --;
+
+      if (i < global->num_entity_cbs)
+        memmove(global->entity_cbs + i, global->entity_cbs + i + 1,
+	        (global->num_entity_cbs - i) * sizeof(global->entity_cbs[0]));
+
+      return;
+    }
+}
+
+
+/*
+ * '_mxml_entity_cb()' - Lookup standard (X)HTML entities.
+ */
+
+int					/* O - Unicode value or -1 */
+_mxml_entity_cb(const char *name)	/* I - Entity name */
+{
+  int	diff,				/* Difference between names */
+	current,			/* Current entity in search */
+	first,				/* First entity in search */
+	last;				/* Last entity in search */
+  static const struct
+  {
+    const char	*name;			/* Entity name */
+    int		val;			/* Character value */
+  }	entities[] =
+  {
+    { "AElig",		198 },
+    { "Aacute",		193 },
+    { "Acirc",		194 },
+    { "Agrave",		192 },
+    { "Alpha",		913 },
+    { "Aring",		197 },
+    { "Atilde",		195 },
+    { "Auml",		196 },
+    { "Beta",		914 },
+    { "Ccedil",		199 },
+    { "Chi",		935 },
+    { "Dagger",		8225 },
+    { "Delta",		916 },
+    { "Dstrok",		208 },
+    { "ETH",		208 },
+    { "Eacute",		201 },
+    { "Ecirc",		202 },
+    { "Egrave",		200 },
+    { "Epsilon",	917 },
+    { "Eta",		919 },
+    { "Euml",		203 },
+    { "Gamma",		915 },
+    { "Iacute",		205 },
+    { "Icirc",		206 },
+    { "Igrave",		204 },
+    { "Iota",		921 },
+    { "Iuml",		207 },
+    { "Kappa",		922 },
+    { "Lambda",		923 },
+    { "Mu",		924 },
+    { "Ntilde",		209 },
+    { "Nu",		925 },
+    { "OElig",		338 },
+    { "Oacute",		211 },
+    { "Ocirc",		212 },
+    { "Ograve",		210 },
+    { "Omega",		937 },
+    { "Omicron",	927 },
+    { "Oslash",		216 },
+    { "Otilde",		213 },
+    { "Ouml",		214 },
+    { "Phi",		934 },
+    { "Pi",		928 },
+    { "Prime",		8243 },
+    { "Psi",		936 },
+    { "Rho",		929 },
+    { "Scaron",		352 },
+    { "Sigma",		931 },
+    { "THORN",		222 },
+    { "Tau",		932 },
+    { "Theta",		920 },
+    { "Uacute",		218 },
+    { "Ucirc",		219 },
+    { "Ugrave",		217 },
+    { "Upsilon",	933 },
+    { "Uuml",		220 },
+    { "Xi",		926 },
+    { "Yacute",		221 },
+    { "Yuml",		376 },
+    { "Zeta",		918 },
+    { "aacute",		225 },
+    { "acirc",		226 },
+    { "acute",		180 },
+    { "aelig",		230 },
+    { "agrave",		224 },
+    { "alefsym",	8501 },
+    { "alpha",		945 },
+    { "amp",		'&' },
+    { "and",		8743 },
+    { "ang",		8736 },
+    { "apos",           '\'' },
+    { "aring",		229 },
+    { "asymp",		8776 },
+    { "atilde",		227 },
+    { "auml",		228 },
+    { "bdquo",		8222 },
+    { "beta",		946 },
+    { "brkbar",		166 },
+    { "brvbar",		166 },
+    { "bull",		8226 },
+    { "cap",		8745 },
+    { "ccedil",		231 },
+    { "cedil",		184 },
+    { "cent",		162 },
+    { "chi",		967 },
+    { "circ",		710 },
+    { "clubs",		9827 },
+    { "cong",		8773 },
+    { "copy",		169 },
+    { "crarr",		8629 },
+    { "cup",		8746 },
+    { "curren",		164 },
+    { "dArr",		8659 },
+    { "dagger",		8224 },
+    { "darr",		8595 },
+    { "deg",		176 },
+    { "delta",		948 },
+    { "diams",		9830 },
+    { "die",		168 },
+    { "divide",		247 },
+    { "eacute",		233 },
+    { "ecirc",		234 },
+    { "egrave",		232 },
+    { "empty",		8709 },
+    { "emsp",		8195 },
+    { "ensp",		8194 },
+    { "epsilon",	949 },
+    { "equiv",		8801 },
+    { "eta",		951 },
+    { "eth",		240 },
+    { "euml",		235 },
+    { "euro",		8364 },
+    { "exist",		8707 },
+    { "fnof",		402 },
+    { "forall",		8704 },
+    { "frac12",		189 },
+    { "frac14",		188 },
+    { "frac34",		190 },
+    { "frasl",		8260 },
+    { "gamma",		947 },
+    { "ge",		8805 },
+    { "gt",		'>' },
+    { "hArr",		8660 },
+    { "harr",		8596 },
+    { "hearts",		9829 },
+    { "hellip",		8230 },
+    { "hibar",		175 },
+    { "iacute",		237 },
+    { "icirc",		238 },
+    { "iexcl",		161 },
+    { "igrave",		236 },
+    { "image",		8465 },
+    { "infin",		8734 },
+    { "int",		8747 },
+    { "iota",		953 },
+    { "iquest",		191 },
+    { "isin",		8712 },
+    { "iuml",		239 },
+    { "kappa",		954 },
+    { "lArr",		8656 },
+    { "lambda",		955 },
+    { "lang",		9001 },
+    { "laquo",		171 },
+    { "larr",		8592 },
+    { "lceil",		8968 },
+    { "ldquo",		8220 },
+    { "le",		8804 },
+    { "lfloor",		8970 },
+    { "lowast",		8727 },
+    { "loz",		9674 },
+    { "lrm",		8206 },
+    { "lsaquo",		8249 },
+    { "lsquo",		8216 },
+    { "lt",		'<' },
+    { "macr",		175 },
+    { "mdash",		8212 },
+    { "micro",		181 },
+    { "middot",		183 },
+    { "minus",		8722 },
+    { "mu",		956 },
+    { "nabla",		8711 },
+    { "nbsp",		160 },
+    { "ndash",		8211 },
+    { "ne",		8800 },
+    { "ni",		8715 },
+    { "not",		172 },
+    { "notin",		8713 },
+    { "nsub",		8836 },
+    { "ntilde",		241 },
+    { "nu",		957 },
+    { "oacute",		243 },
+    { "ocirc",		244 },
+    { "oelig",		339 },
+    { "ograve",		242 },
+    { "oline",		8254 },
+    { "omega",		969 },
+    { "omicron",	959 },
+    { "oplus",		8853 },
+    { "or",		8744 },
+    { "ordf",		170 },
+    { "ordm",		186 },
+    { "oslash",		248 },
+    { "otilde",		245 },
+    { "otimes",		8855 },
+    { "ouml",		246 },
+    { "para",		182 },
+    { "part",		8706 },
+    { "permil",		8240 },
+    { "perp",		8869 },
+    { "phi",		966 },
+    { "pi",		960 },
+    { "piv",		982 },
+    { "plusmn",		177 },
+    { "pound",		163 },
+    { "prime",		8242 },
+    { "prod",		8719 },
+    { "prop",		8733 },
+    { "psi",		968 },
+    { "quot",		'\"' },
+    { "rArr",		8658 },
+    { "radic",		8730 },
+    { "rang",		9002 },
+    { "raquo",		187 },
+    { "rarr",		8594 },
+    { "rceil",		8969 },
+    { "rdquo",		8221 },
+    { "real",		8476 },
+    { "reg",		174 },
+    { "rfloor",		8971 },
+    { "rho",		961 },
+    { "rlm",		8207 },
+    { "rsaquo",		8250 },
+    { "rsquo",		8217 },
+    { "sbquo",		8218 },
+    { "scaron",		353 },
+    { "sdot",		8901 },
+    { "sect",		167 },
+    { "shy",		173 },
+    { "sigma",		963 },
+    { "sigmaf",		962 },
+    { "sim",		8764 },
+    { "spades",		9824 },
+    { "sub",		8834 },
+    { "sube",		8838 },
+    { "sum",		8721 },
+    { "sup",		8835 },
+    { "sup1",		185 },
+    { "sup2",		178 },
+    { "sup3",		179 },
+    { "supe",		8839 },
+    { "szlig",		223 },
+    { "tau",		964 },
+    { "there4",		8756 },
+    { "theta",		952 },
+    { "thetasym",	977 },
+    { "thinsp",		8201 },
+    { "thorn",		254 },
+    { "tilde",		732 },
+    { "times",		215 },
+    { "trade",		8482 },
+    { "uArr",		8657 },
+    { "uacute",		250 },
+    { "uarr",		8593 },
+    { "ucirc",		251 },
+    { "ugrave",		249 },
+    { "uml",		168 },
+    { "upsih",		978 },
+    { "upsilon",	965 },
+    { "uuml",		252 },
+    { "weierp",		8472 },
+    { "xi",		958 },
+    { "yacute",		253 },
+    { "yen",		165 },
+    { "yuml",		255 },
+    { "zeta",		950 },
+    { "zwj",		8205 },
+    { "zwnj",		8204 }
+  };
+
+
+ /*
+  * Do a binary search for the named entity...
+  */
+
+  first = 0;
+  last  = (int)(sizeof(entities) / sizeof(entities[0]) - 1);
+
+  while ((last - first) > 1)
+  {
+    current = (first + last) / 2;
+
+    if ((diff = strcmp(name, entities[current].name)) == 0)
+      return (entities[current].val);
+    else if (diff < 0)
+      last = current;
+    else
+      first = current;
+  }
+
+ /*
+  * If we get here, there is a small chance that there is still
+  * a match; check first and last...
+  */
+
+  if (!strcmp(name, entities[first].name))
+    return (entities[first].val);
+  else if (!strcmp(name, entities[last].name))
+    return (entities[last].val);
+  else
+    return (-1);
+}
+
+
+/*
+ * End of "$Id: mxml-entity.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-file.c b/src/mxml/mxml-2.9/mxml-file.c
new file mode 100644
index 0000000..55add80
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-file.c
@@ -0,0 +1,3053 @@
+/*
+ * "$Id: mxml-file.c 459 2014-10-19 17:21:48Z msweet $"
+ *
+ * File loading code for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#ifndef WIN32
+#  include <unistd.h>
+#endif /* !WIN32 */
+#include "mxml-private.h"
+
+
+/*
+ * Character encoding...
+ */
+
+#define ENCODE_UTF8	0		/* UTF-8 */
+#define ENCODE_UTF16BE	1		/* UTF-16 Big-Endian */
+#define ENCODE_UTF16LE	2		/* UTF-16 Little-Endian */
+
+
+/*
+ * Macro to test for a bad XML character...
+ */
+
+#define mxml_bad_char(ch) ((ch) < ' ' && (ch) != '\n' && (ch) != '\r' && (ch) != '\t')
+
+
+/*
+ * Types and structures...
+ */
+
+typedef int (*_mxml_getc_cb_t)(void *, int *);
+typedef int (*_mxml_putc_cb_t)(int, void *);
+
+typedef struct _mxml_fdbuf_s		/**** File descriptor buffer ****/
+{
+  int		fd;			/* File descriptor */
+  unsigned char	*current,		/* Current position in buffer */
+		*end,			/* End of buffer */
+		buffer[8192];		/* Character buffer */
+} _mxml_fdbuf_t;
+
+
+/*
+ * Local functions...
+ */
+
+static int		mxml_add_char(int ch, char **ptr, char **buffer,
+			              int *bufsize);
+static int		mxml_fd_getc(void *p, int *encoding);
+static int		mxml_fd_putc(int ch, void *p);
+static int		mxml_fd_read(_mxml_fdbuf_t *buf);
+static int		mxml_fd_write(_mxml_fdbuf_t *buf);
+static int		mxml_file_getc(void *p, int *encoding);
+static int		mxml_file_putc(int ch, void *p);
+static int		mxml_get_entity(mxml_node_t *parent, void *p,
+			                int *encoding,
+					_mxml_getc_cb_t getc_cb);
+static inline int	mxml_isspace(int ch)
+			{
+			  return (ch == ' ' || ch == '\t' || ch == '\r' ||
+			          ch == '\n');
+			}
+static mxml_node_t	*mxml_load_data(mxml_node_t *top, void *p,
+			                mxml_load_cb_t cb,
+			                _mxml_getc_cb_t getc_cb,
+                                        mxml_sax_cb_t sax_cb, void *sax_data);
+static int		mxml_parse_element(mxml_node_t *node, void *p,
+			                   int *encoding,
+					   _mxml_getc_cb_t getc_cb);
+static int		mxml_string_getc(void *p, int *encoding);
+static int		mxml_string_putc(int ch, void *p);
+static int		mxml_write_name(const char *s, void *p,
+					_mxml_putc_cb_t putc_cb);
+static int		mxml_write_node(mxml_node_t *node, void *p,
+			                mxml_save_cb_t cb, int col,
+					_mxml_putc_cb_t putc_cb,
+					_mxml_global_t *global);
+static int		mxml_write_string(const char *s, void *p,
+					  _mxml_putc_cb_t putc_cb);
+static int		mxml_write_ws(mxml_node_t *node, void *p,
+			              mxml_save_cb_t cb, int ws,
+				      int col, _mxml_putc_cb_t putc_cb);
+
+
+/*
+ * 'mxmlLoadFd()' - Load a file descriptor into an XML node tree.
+ *
+ * The nodes in the specified file are added to the specified top node.
+ * If no top node is provided, the XML file MUST be well-formed with a
+ * single parent node like <?xml> for the entire file. The callback
+ * function returns the value type that should be used for child nodes.
+ * If MXML_NO_CALLBACK is specified then all child nodes will be either
+ * MXML_ELEMENT or MXML_TEXT nodes.
+ *
+ * The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ * MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ * child nodes of the specified type.
+ */
+
+mxml_node_t *				/* O - First node or NULL if the file could not be read. */
+mxmlLoadFd(mxml_node_t    *top,		/* I - Top node */
+           int            fd,		/* I - File descriptor to read from */
+           mxml_load_cb_t cb)		/* I - Callback function or MXML_NO_CALLBACK */
+{
+  _mxml_fdbuf_t	buf;			/* File descriptor buffer */
+
+
+ /*
+  * Initialize the file descriptor buffer...
+  */
+
+  buf.fd      = fd;
+  buf.current = buf.buffer;
+  buf.end     = buf.buffer;
+
+ /*
+  * Read the XML data...
+  */
+
+  return (mxml_load_data(top, &buf, cb, mxml_fd_getc, MXML_NO_CALLBACK, NULL));
+}
+
+
+/*
+ * 'mxmlLoadFile()' - Load a file into an XML node tree.
+ *
+ * The nodes in the specified file are added to the specified top node.
+ * If no top node is provided, the XML file MUST be well-formed with a
+ * single parent node like <?xml> for the entire file. The callback
+ * function returns the value type that should be used for child nodes.
+ * If MXML_NO_CALLBACK is specified then all child nodes will be either
+ * MXML_ELEMENT or MXML_TEXT nodes.
+ *
+ * The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ * MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ * child nodes of the specified type.
+ */
+
+mxml_node_t *				/* O - First node or NULL if the file could not be read. */
+mxmlLoadFile(mxml_node_t    *top,	/* I - Top node */
+             FILE           *fp,	/* I - File to read from */
+             mxml_load_cb_t cb)		/* I - Callback function or MXML_NO_CALLBACK */
+{
+ /*
+  * Read the XML data...
+  */
+
+  return (mxml_load_data(top, fp, cb, mxml_file_getc, MXML_NO_CALLBACK, NULL));
+}
+
+
+/*
+ * 'mxmlLoadString()' - Load a string into an XML node tree.
+ *
+ * The nodes in the specified string are added to the specified top node.
+ * If no top node is provided, the XML string MUST be well-formed with a
+ * single parent node like <?xml> for the entire string. The callback
+ * function returns the value type that should be used for child nodes.
+ * If MXML_NO_CALLBACK is specified then all child nodes will be either
+ * MXML_ELEMENT or MXML_TEXT nodes.
+ *
+ * The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ * MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ * child nodes of the specified type.
+ */
+
+mxml_node_t *				/* O - First node or NULL if the string has errors. */
+mxmlLoadString(mxml_node_t    *top,	/* I - Top node */
+               const char     *s,	/* I - String to load */
+               mxml_load_cb_t cb)	/* I - Callback function or MXML_NO_CALLBACK */
+{
+ /*
+  * Read the XML data...
+  */
+
+  return (mxml_load_data(top, (void *)&s, cb, mxml_string_getc, MXML_NO_CALLBACK,
+                         NULL));
+}
+
+
+/*
+ * 'mxmlSaveAllocString()' - Save an XML tree to an allocated string.
+ *
+ * This function returns a pointer to a string containing the textual
+ * representation of the XML node tree.  The string should be freed
+ * using the free() function when you are done with it.  NULL is returned
+ * if the node would produce an empty string or if the string cannot be
+ * allocated.
+ *
+ * The callback argument specifies a function that returns a whitespace
+ * string or NULL before and after each element. If MXML_NO_CALLBACK
+ * is specified, whitespace will only be added before MXML_TEXT nodes
+ * with leading whitespace and before attribute names inside opening
+ * element tags.
+ */
+
+char *					/* O - Allocated string or NULL */
+mxmlSaveAllocString(
+    mxml_node_t    *node,		/* I - Node to write */
+    mxml_save_cb_t cb)			/* I - Whitespace callback or MXML_NO_CALLBACK */
+{
+  int	bytes;				/* Required bytes */
+  char	buffer[8192];			/* Temporary buffer */
+  char	*s;				/* Allocated string */
+
+
+ /*
+  * Write the node to the temporary buffer...
+  */
+
+  bytes = mxmlSaveString(node, buffer, sizeof(buffer), cb);
+
+  if (bytes <= 0)
+    return (NULL);
+
+  if (bytes < (int)(sizeof(buffer) - 1))
+  {
+   /*
+    * Node fit inside the buffer, so just duplicate that string and
+    * return...
+    */
+
+    return (strdup(buffer));
+  }
+
+ /*
+  * Allocate a buffer of the required size and save the node to the
+  * new buffer...
+  */
+
+  if ((s = malloc(bytes + 1)) == NULL)
+    return (NULL);
+
+  mxmlSaveString(node, s, bytes + 1, cb);
+
+ /*
+  * Return the allocated string...
+  */
+
+  return (s);
+}
+
+
+/*
+ * 'mxmlSaveFd()' - Save an XML tree to a file descriptor.
+ *
+ * The callback argument specifies a function that returns a whitespace
+ * string or NULL before and after each element. If MXML_NO_CALLBACK
+ * is specified, whitespace will only be added before MXML_TEXT nodes
+ * with leading whitespace and before attribute names inside opening
+ * element tags.
+ */
+
+int					/* O - 0 on success, -1 on error. */
+mxmlSaveFd(mxml_node_t    *node,	/* I - Node to write */
+           int            fd,		/* I - File descriptor to write to */
+	   mxml_save_cb_t cb)		/* I - Whitespace callback or MXML_NO_CALLBACK */
+{
+  int		col;			/* Final column */
+  _mxml_fdbuf_t	buf;			/* File descriptor buffer */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+ /*
+  * Initialize the file descriptor buffer...
+  */
+
+  buf.fd      = fd;
+  buf.current = buf.buffer;
+  buf.end     = buf.buffer + sizeof(buf.buffer);
+
+ /*
+  * Write the node...
+  */
+
+  if ((col = mxml_write_node(node, &buf, cb, 0, mxml_fd_putc, global)) < 0)
+    return (-1);
+
+  if (col > 0)
+    if (mxml_fd_putc('\n', &buf) < 0)
+      return (-1);
+
+ /*
+  * Flush and return...
+  */
+
+  return (mxml_fd_write(&buf));
+}
+
+
+/*
+ * 'mxmlSaveFile()' - Save an XML tree to a file.
+ *
+ * The callback argument specifies a function that returns a whitespace
+ * string or NULL before and after each element. If MXML_NO_CALLBACK
+ * is specified, whitespace will only be added before MXML_TEXT nodes
+ * with leading whitespace and before attribute names inside opening
+ * element tags.
+ */
+
+int					/* O - 0 on success, -1 on error. */
+mxmlSaveFile(mxml_node_t    *node,	/* I - Node to write */
+             FILE           *fp,	/* I - File to write to */
+	     mxml_save_cb_t cb)		/* I - Whitespace callback or MXML_NO_CALLBACK */
+{
+  int	col;				/* Final column */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+ /*
+  * Write the node...
+  */
+
+  if ((col = mxml_write_node(node, fp, cb, 0, mxml_file_putc, global)) < 0)
+    return (-1);
+
+  if (col > 0)
+    if (putc('\n', fp) < 0)
+      return (-1);
+
+ /*
+  * Return 0 (success)...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSaveString()' - Save an XML node tree to a string.
+ *
+ * This function returns the total number of bytes that would be
+ * required for the string but only copies (bufsize - 1) characters
+ * into the specified buffer.
+ *
+ * The callback argument specifies a function that returns a whitespace
+ * string or NULL before and after each element. If MXML_NO_CALLBACK
+ * is specified, whitespace will only be added before MXML_TEXT nodes
+ * with leading whitespace and before attribute names inside opening
+ * element tags.
+ */
+
+int					/* O - Size of string */
+mxmlSaveString(mxml_node_t    *node,	/* I - Node to write */
+               char           *buffer,	/* I - String buffer */
+               int            bufsize,	/* I - Size of string buffer */
+               mxml_save_cb_t cb)	/* I - Whitespace callback or MXML_NO_CALLBACK */
+{
+  int	col;				/* Final column */
+  char	*ptr[2];			/* Pointers for putc_cb */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+ /*
+  * Write the node...
+  */
+
+  ptr[0] = buffer;
+  ptr[1] = buffer + bufsize;
+
+  if ((col = mxml_write_node(node, ptr, cb, 0, mxml_string_putc, global)) < 0)
+    return (-1);
+
+  if (col > 0)
+    mxml_string_putc('\n', ptr);
+
+ /*
+  * Nul-terminate the buffer...
+  */
+
+  if (ptr[0] >= ptr[1])
+    buffer[bufsize - 1] = '\0';
+  else
+    ptr[0][0] = '\0';
+
+ /*
+  * Return the number of characters...
+  */
+
+  return (ptr[0] - buffer);
+}
+
+
+/*
+ * 'mxmlSAXLoadFd()' - Load a file descriptor into an XML node tree
+ *                     using a SAX callback.
+ *
+ * The nodes in the specified file are added to the specified top node.
+ * If no top node is provided, the XML file MUST be well-formed with a
+ * single parent node like <?xml> for the entire file. The callback
+ * function returns the value type that should be used for child nodes.
+ * If MXML_NO_CALLBACK is specified then all child nodes will be either
+ * MXML_ELEMENT or MXML_TEXT nodes.
+ *
+ * The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ * MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ * child nodes of the specified type.
+ *
+ * The SAX callback must call mxmlRetain() for any nodes that need to
+ * be kept for later use. Otherwise, nodes are deleted when the parent
+ * node is closed or after each data, comment, CDATA, or directive node.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+mxml_node_t *				/* O - First node or NULL if the file could not be read. */
+mxmlSAXLoadFd(mxml_node_t    *top,	/* I - Top node */
+              int            fd,	/* I - File descriptor to read from */
+              mxml_load_cb_t cb,	/* I - Callback function or MXML_NO_CALLBACK */
+              mxml_sax_cb_t  sax_cb,	/* I - SAX callback or MXML_NO_CALLBACK */
+              void           *sax_data)	/* I - SAX user data */
+{
+  _mxml_fdbuf_t	buf;			/* File descriptor buffer */
+
+
+ /*
+  * Initialize the file descriptor buffer...
+  */
+
+  buf.fd      = fd;
+  buf.current = buf.buffer;
+  buf.end     = buf.buffer;
+
+ /*
+  * Read the XML data...
+  */
+
+  return (mxml_load_data(top, &buf, cb, mxml_fd_getc, sax_cb, sax_data));
+}
+
+
+/*
+ * 'mxmlSAXLoadFile()' - Load a file into an XML node tree
+ *                       using a SAX callback.
+ *
+ * The nodes in the specified file are added to the specified top node.
+ * If no top node is provided, the XML file MUST be well-formed with a
+ * single parent node like <?xml> for the entire file. The callback
+ * function returns the value type that should be used for child nodes.
+ * If MXML_NO_CALLBACK is specified then all child nodes will be either
+ * MXML_ELEMENT or MXML_TEXT nodes.
+ *
+ * The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ * MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ * child nodes of the specified type.
+ *
+ * The SAX callback must call mxmlRetain() for any nodes that need to
+ * be kept for later use. Otherwise, nodes are deleted when the parent
+ * node is closed or after each data, comment, CDATA, or directive node.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+mxml_node_t *				/* O - First node or NULL if the file could not be read. */
+mxmlSAXLoadFile(
+    mxml_node_t    *top,		/* I - Top node */
+    FILE           *fp,			/* I - File to read from */
+    mxml_load_cb_t cb,			/* I - Callback function or MXML_NO_CALLBACK */
+    mxml_sax_cb_t  sax_cb,		/* I - SAX callback or MXML_NO_CALLBACK */
+    void           *sax_data)		/* I - SAX user data */
+{
+ /*
+  * Read the XML data...
+  */
+
+  return (mxml_load_data(top, fp, cb, mxml_file_getc, sax_cb, sax_data));
+}
+
+
+/*
+ * 'mxmlSAXLoadString()' - Load a string into an XML node tree
+ *                         using a SAX callback.
+ *
+ * The nodes in the specified string are added to the specified top node.
+ * If no top node is provided, the XML string MUST be well-formed with a
+ * single parent node like <?xml> for the entire string. The callback
+ * function returns the value type that should be used for child nodes.
+ * If MXML_NO_CALLBACK is specified then all child nodes will be either
+ * MXML_ELEMENT or MXML_TEXT nodes.
+ *
+ * The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+ * MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+ * child nodes of the specified type.
+ *
+ * The SAX callback must call mxmlRetain() for any nodes that need to
+ * be kept for later use. Otherwise, nodes are deleted when the parent
+ * node is closed or after each data, comment, CDATA, or directive node.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+mxml_node_t *				/* O - First node or NULL if the string has errors. */
+mxmlSAXLoadString(
+    mxml_node_t    *top,		/* I - Top node */
+    const char     *s,			/* I - String to load */
+    mxml_load_cb_t cb,			/* I - Callback function or MXML_NO_CALLBACK */
+    mxml_sax_cb_t  sax_cb,		/* I - SAX callback or MXML_NO_CALLBACK */
+    void           *sax_data)		/* I - SAX user data */
+{
+ /*
+  * Read the XML data...
+  */
+
+  return (mxml_load_data(top, (void *)&s, cb, mxml_string_getc, sax_cb, sax_data));
+}
+
+
+/*
+ * 'mxmlSetCustomHandlers()' - Set the handling functions for custom data.
+ *
+ * The load function accepts a node pointer and a data string and must
+ * return 0 on success and non-zero on error.
+ *
+ * The save function accepts a node pointer and must return a malloc'd
+ * string on success and NULL on error.
+ *
+ */
+
+void
+mxmlSetCustomHandlers(
+    mxml_custom_load_cb_t load,		/* I - Load function */
+    mxml_custom_save_cb_t save)		/* I - Save function */
+{
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+  global->custom_load_cb = load;
+  global->custom_save_cb = save;
+}
+
+
+/*
+ * 'mxmlSetErrorCallback()' - Set the error message callback.
+ */
+
+void
+mxmlSetErrorCallback(mxml_error_cb_t cb)/* I - Error callback function */
+{
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+  global->error_cb = cb;
+}
+
+
+/*
+ * 'mxmlSetWrapMargin()' - Set the wrap margin when saving XML data.
+ *
+ * Wrapping is disabled when "column" is 0.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+void
+mxmlSetWrapMargin(int column)		/* I - Column for wrapping, 0 to disable wrapping */
+{
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+  global->wrap = column;
+}
+
+
+/*
+ * 'mxml_add_char()' - Add a character to a buffer, expanding as needed.
+ */
+
+static int				/* O  - 0 on success, -1 on error */
+mxml_add_char(int  ch,			/* I  - Character to add */
+              char **bufptr,		/* IO - Current position in buffer */
+	      char **buffer,		/* IO - Current buffer */
+	      int  *bufsize)		/* IO - Current buffer size */
+{
+  char	*newbuffer;			/* New buffer value */
+
+
+  if (*bufptr >= (*buffer + *bufsize - 4))
+  {
+   /*
+    * Increase the size of the buffer...
+    */
+
+    if (*bufsize < 1024)
+      (*bufsize) *= 2;
+    else
+      (*bufsize) += 1024;
+
+    if ((newbuffer = realloc(*buffer, *bufsize)) == NULL)
+    {
+      free(*buffer);
+
+      mxml_error("Unable to expand string buffer to %d bytes!", *bufsize);
+
+      return (-1);
+    }
+
+    *bufptr = newbuffer + (*bufptr - *buffer);
+    *buffer = newbuffer;
+  }
+
+  if (ch < 0x80)
+  {
+   /*
+    * Single byte ASCII...
+    */
+
+    *(*bufptr)++ = ch;
+  }
+  else if (ch < 0x800)
+  {
+   /*
+    * Two-byte UTF-8...
+    */
+
+    *(*bufptr)++ = 0xc0 | (ch >> 6);
+    *(*bufptr)++ = 0x80 | (ch & 0x3f);
+  }
+  else if (ch < 0x10000)
+  {
+   /*
+    * Three-byte UTF-8...
+    */
+
+    *(*bufptr)++ = 0xe0 | (ch >> 12);
+    *(*bufptr)++ = 0x80 | ((ch >> 6) & 0x3f);
+    *(*bufptr)++ = 0x80 | (ch & 0x3f);
+  }
+  else
+  {
+   /*
+    * Four-byte UTF-8...
+    */
+
+    *(*bufptr)++ = 0xf0 | (ch >> 18);
+    *(*bufptr)++ = 0x80 | ((ch >> 12) & 0x3f);
+    *(*bufptr)++ = 0x80 | ((ch >> 6) & 0x3f);
+    *(*bufptr)++ = 0x80 | (ch & 0x3f);
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_fd_getc()' - Read a character from a file descriptor.
+ */
+
+static int				/* O  - Character or EOF */
+mxml_fd_getc(void *p,			/* I  - File descriptor buffer */
+             int  *encoding)		/* IO - Encoding */
+{
+  _mxml_fdbuf_t	*buf;			/* File descriptor buffer */
+  int		ch,			/* Current character */
+		temp;			/* Temporary character */
+
+
+ /*
+  * Grab the next character in the buffer...
+  */
+
+  buf = (_mxml_fdbuf_t *)p;
+
+  if (buf->current >= buf->end)
+    if (mxml_fd_read(buf) < 0)
+      return (EOF);
+
+  ch = *(buf->current)++;
+
+  switch (*encoding)
+  {
+    case ENCODE_UTF8 :
+       /*
+	* Got a UTF-8 character; convert UTF-8 to Unicode and return...
+	*/
+
+	if (!(ch & 0x80))
+	{
+#if DEBUG > 1
+          printf("mxml_fd_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	  if (mxml_bad_char(ch))
+	  {
+	    mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	       ch);
+	    return (EOF);
+	  }
+
+	  return (ch);
+        }
+	else if (ch == 0xfe)
+	{
+	 /*
+	  * UTF-16 big-endian BOM?
+	  */
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  ch = *(buf->current)++;
+
+	  if (ch != 0xff)
+	    return (EOF);
+
+	  *encoding = ENCODE_UTF16BE;
+
+	  return (mxml_fd_getc(p, encoding));
+	}
+	else if (ch == 0xff)
+	{
+	 /*
+	  * UTF-16 little-endian BOM?
+	  */
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  ch = *(buf->current)++;
+
+	  if (ch != 0xfe)
+	    return (EOF);
+
+	  *encoding = ENCODE_UTF16LE;
+
+	  return (mxml_fd_getc(p, encoding));
+	}
+	else if ((ch & 0xe0) == 0xc0)
+	{
+	 /*
+	  * Two-byte value...
+	  */
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  if ((temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = ((ch & 0x1f) << 6) | (temp & 0x3f);
+
+	  if (ch < 0x80)
+	  {
+	    mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	    return (EOF);
+	  }
+	}
+	else if ((ch & 0xf0) == 0xe0)
+	{
+	 /*
+	  * Three-byte value...
+	  */
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  if ((temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = ((ch & 0x0f) << 6) | (temp & 0x3f);
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  if ((temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = (ch << 6) | (temp & 0x3f);
+
+	  if (ch < 0x800)
+	  {
+	    mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	    return (EOF);
+	  }
+
+         /*
+	  * Ignore (strip) Byte Order Mark (BOM)...
+	  */
+
+	  if (ch == 0xfeff)
+	    return (mxml_fd_getc(p, encoding));
+	}
+	else if ((ch & 0xf8) == 0xf0)
+	{
+	 /*
+	  * Four-byte value...
+	  */
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  if ((temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = ((ch & 0x07) << 6) | (temp & 0x3f);
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  if ((temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = (ch << 6) | (temp & 0x3f);
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  if ((temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = (ch << 6) | (temp & 0x3f);
+
+	  if (ch < 0x10000)
+	  {
+	    mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	    return (EOF);
+	  }
+	}
+	else
+	  return (EOF);
+	break;
+
+    case ENCODE_UTF16BE :
+       /*
+        * Read UTF-16 big-endian char...
+	*/
+
+	if (buf->current >= buf->end)
+	  if (mxml_fd_read(buf) < 0)
+	    return (EOF);
+
+	temp = *(buf->current)++;
+
+	ch = (ch << 8) | temp;
+
+	if (mxml_bad_char(ch))
+	{
+	  mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	     ch);
+	  return (EOF);
+	}
+        else if (ch >= 0xd800 && ch <= 0xdbff)
+	{
+	 /*
+	  * Multi-word UTF-16 char...
+	  */
+
+          int lch;
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  lch = *(buf->current)++;
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  lch = (lch << 8) | temp;
+
+          if (lch < 0xdc00 || lch >= 0xdfff)
+	    return (EOF);
+
+          ch = (((ch & 0x3ff) << 10) | (lch & 0x3ff)) + 0x10000;
+	}
+	break;
+
+    case ENCODE_UTF16LE :
+       /*
+        * Read UTF-16 little-endian char...
+	*/
+
+	if (buf->current >= buf->end)
+	  if (mxml_fd_read(buf) < 0)
+	    return (EOF);
+
+	temp = *(buf->current)++;
+
+	ch |= (temp << 8);
+
+        if (mxml_bad_char(ch))
+	{
+	  mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	     ch);
+	  return (EOF);
+	}
+        else if (ch >= 0xd800 && ch <= 0xdbff)
+	{
+	 /*
+	  * Multi-word UTF-16 char...
+	  */
+
+          int lch;
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  lch = *(buf->current)++;
+
+	  if (buf->current >= buf->end)
+	    if (mxml_fd_read(buf) < 0)
+	      return (EOF);
+
+	  temp = *(buf->current)++;
+
+	  lch |= (temp << 8);
+
+          if (lch < 0xdc00 || lch >= 0xdfff)
+	    return (EOF);
+
+          ch = (((ch & 0x3ff) << 10) | (lch & 0x3ff)) + 0x10000;
+	}
+	break;
+  }
+
+#if DEBUG > 1
+  printf("mxml_fd_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+  return (ch);
+}
+
+
+/*
+ * 'mxml_fd_putc()' - Write a character to a file descriptor.
+ */
+
+static int				/* O - 0 on success, -1 on error */
+mxml_fd_putc(int  ch,			/* I - Character */
+             void *p)			/* I - File descriptor buffer */
+{
+  _mxml_fdbuf_t	*buf;			/* File descriptor buffer */
+
+
+ /*
+  * Flush the write buffer as needed...
+  */
+
+  buf = (_mxml_fdbuf_t *)p;
+
+  if (buf->current >= buf->end)
+    if (mxml_fd_write(buf) < 0)
+      return (-1);
+
+  *(buf->current)++ = ch;
+
+ /*
+  * Return successfully...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_fd_read()' - Read a buffer of data from a file descriptor.
+ */
+
+static int				/* O - 0 on success, -1 on error */
+mxml_fd_read(_mxml_fdbuf_t *buf)		/* I - File descriptor buffer */
+{
+  int	bytes;				/* Bytes read... */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!buf)
+    return (-1);
+
+ /*
+  * Read from the file descriptor...
+  */
+
+  while ((bytes = read(buf->fd, buf->buffer, sizeof(buf->buffer))) < 0)
+#ifdef EINTR
+    if (errno != EAGAIN && errno != EINTR)
+#else
+    if (errno != EAGAIN)
+#endif /* EINTR */
+      return (-1);
+
+  if (bytes == 0)
+    return (-1);
+
+ /*
+  * Update the pointers and return success...
+  */
+
+  buf->current = buf->buffer;
+  buf->end     = buf->buffer + bytes;
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_fd_write()' - Write a buffer of data to a file descriptor.
+ */
+
+static int				/* O - 0 on success, -1 on error */
+mxml_fd_write(_mxml_fdbuf_t *buf)	/* I - File descriptor buffer */
+{
+  int		bytes;			/* Bytes written */
+  unsigned char	*ptr;			/* Pointer into buffer */
+
+
+ /*
+  * Range check...
+  */
+
+  if (!buf)
+    return (-1);
+
+ /*
+  * Return 0 if there is nothing to write...
+  */
+
+  if (buf->current == buf->buffer)
+    return (0);
+
+ /*
+  * Loop until we have written everything...
+  */
+
+  for (ptr = buf->buffer; ptr < buf->current; ptr += bytes)
+    if ((bytes = write(buf->fd, ptr, buf->current - ptr)) < 0)
+      return (-1);
+
+ /*
+  * All done, reset pointers and return success...
+  */
+
+  buf->current = buf->buffer;
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_file_getc()' - Get a character from a file.
+ */
+
+static int				/* O  - Character or EOF */
+mxml_file_getc(void *p,			/* I  - Pointer to file */
+               int  *encoding)		/* IO - Encoding */
+{
+  int	ch,				/* Character from file */
+	temp;				/* Temporary character */
+  FILE	*fp;				/* Pointer to file */
+
+
+ /*
+  * Read a character from the file and see if it is EOF or ASCII...
+  */
+
+  fp = (FILE *)p;
+  ch = getc(fp);
+
+  if (ch == EOF)
+    return (EOF);
+
+  switch (*encoding)
+  {
+    case ENCODE_UTF8 :
+       /*
+	* Got a UTF-8 character; convert UTF-8 to Unicode and return...
+	*/
+
+	if (!(ch & 0x80))
+	{
+	  if (mxml_bad_char(ch))
+	  {
+	    mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	       ch);
+	    return (EOF);
+	  }
+
+#if DEBUG > 1
+          printf("mxml_file_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	  return (ch);
+        }
+	else if (ch == 0xfe)
+	{
+	 /*
+	  * UTF-16 big-endian BOM?
+	  */
+
+          ch = getc(fp);
+	  if (ch != 0xff)
+	    return (EOF);
+
+	  *encoding = ENCODE_UTF16BE;
+
+	  return (mxml_file_getc(p, encoding));
+	}
+	else if (ch == 0xff)
+	{
+	 /*
+	  * UTF-16 little-endian BOM?
+	  */
+
+          ch = getc(fp);
+	  if (ch != 0xfe)
+	    return (EOF);
+
+	  *encoding = ENCODE_UTF16LE;
+
+	  return (mxml_file_getc(p, encoding));
+	}
+	else if ((ch & 0xe0) == 0xc0)
+	{
+	 /*
+	  * Two-byte value...
+	  */
+
+	  if ((temp = getc(fp)) == EOF || (temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = ((ch & 0x1f) << 6) | (temp & 0x3f);
+
+	  if (ch < 0x80)
+	  {
+	    mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	    return (EOF);
+	  }
+	}
+	else if ((ch & 0xf0) == 0xe0)
+	{
+	 /*
+	  * Three-byte value...
+	  */
+
+	  if ((temp = getc(fp)) == EOF || (temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = ((ch & 0x0f) << 6) | (temp & 0x3f);
+
+	  if ((temp = getc(fp)) == EOF || (temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = (ch << 6) | (temp & 0x3f);
+
+	  if (ch < 0x800)
+	  {
+	    mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	    return (EOF);
+	  }
+
+         /*
+	  * Ignore (strip) Byte Order Mark (BOM)...
+	  */
+
+	  if (ch == 0xfeff)
+	    return (mxml_file_getc(p, encoding));
+	}
+	else if ((ch & 0xf8) == 0xf0)
+	{
+	 /*
+	  * Four-byte value...
+	  */
+
+	  if ((temp = getc(fp)) == EOF || (temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = ((ch & 0x07) << 6) | (temp & 0x3f);
+
+	  if ((temp = getc(fp)) == EOF || (temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = (ch << 6) | (temp & 0x3f);
+
+	  if ((temp = getc(fp)) == EOF || (temp & 0xc0) != 0x80)
+	    return (EOF);
+
+	  ch = (ch << 6) | (temp & 0x3f);
+
+	  if (ch < 0x10000)
+	  {
+	    mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	    return (EOF);
+	  }
+	}
+	else
+	  return (EOF);
+	break;
+
+    case ENCODE_UTF16BE :
+       /*
+        * Read UTF-16 big-endian char...
+	*/
+
+	ch = (ch << 8) | getc(fp);
+
+	if (mxml_bad_char(ch))
+	{
+	  mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	     ch);
+	  return (EOF);
+	}
+        else if (ch >= 0xd800 && ch <= 0xdbff)
+	{
+	 /*
+	  * Multi-word UTF-16 char...
+	  */
+
+          int lch = getc(fp);
+          lch = (lch << 8) | getc(fp);
+
+          if (lch < 0xdc00 || lch >= 0xdfff)
+	    return (EOF);
+
+          ch = (((ch & 0x3ff) << 10) | (lch & 0x3ff)) + 0x10000;
+	}
+	break;
+
+    case ENCODE_UTF16LE :
+       /*
+        * Read UTF-16 little-endian char...
+	*/
+
+	ch |= (getc(fp) << 8);
+
+        if (mxml_bad_char(ch))
+	{
+	  mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	     ch);
+	  return (EOF);
+	}
+        else if (ch >= 0xd800 && ch <= 0xdbff)
+	{
+	 /*
+	  * Multi-word UTF-16 char...
+	  */
+
+          int lch = getc(fp);
+          lch |= (getc(fp) << 8);
+
+          if (lch < 0xdc00 || lch >= 0xdfff)
+	    return (EOF);
+
+          ch = (((ch & 0x3ff) << 10) | (lch & 0x3ff)) + 0x10000;
+	}
+	break;
+  }
+
+#if DEBUG > 1
+  printf("mxml_file_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+  return (ch);
+}
+
+
+/*
+ * 'mxml_file_putc()' - Write a character to a file.
+ */
+
+static int				/* O - 0 on success, -1 on failure */
+mxml_file_putc(int  ch,			/* I - Character to write */
+               void *p)			/* I - Pointer to file */
+{
+  return (putc(ch, (FILE *)p) == EOF ? -1 : 0);
+}
+
+
+/*
+ * 'mxml_get_entity()' - Get the character corresponding to an entity...
+ */
+
+static int				/* O  - Character value or EOF on error */
+mxml_get_entity(mxml_node_t *parent,	/* I  - Parent node */
+		void        *p,		/* I  - Pointer to source */
+		int         *encoding,	/* IO - Character encoding */
+                int         (*getc_cb)(void *, int *))
+					/* I  - Get character function */
+{
+  int	ch;				/* Current character */
+  char	entity[64],			/* Entity string */
+	*entptr;			/* Pointer into entity */
+
+
+  entptr = entity;
+
+  while ((ch = (*getc_cb)(p, encoding)) != EOF)
+    if (ch > 126 || (!isalnum(ch) && ch != '#'))
+      break;
+    else if (entptr < (entity + sizeof(entity) - 1))
+      *entptr++ = ch;
+    else
+    {
+      mxml_error("Entity name too long under parent <%s>!",
+	         parent ? parent->value.element.name : "null");
+      break;
+    }
+
+  *entptr = '\0';
+
+  if (ch != ';')
+  {
+    mxml_error("Character entity \"%s\" not terminated under parent <%s>!",
+	       entity, parent ? parent->value.element.name : "null");
+    return (EOF);
+  }
+
+  if (entity[0] == '#')
+  {
+    if (entity[1] == 'x')
+      ch = strtol(entity + 2, NULL, 16);
+    else
+      ch = strtol(entity + 1, NULL, 10);
+  }
+  else if ((ch = mxmlEntityGetValue(entity)) < 0)
+    mxml_error("Entity name \"%s;\" not supported under parent <%s>!",
+	       entity, parent ? parent->value.element.name : "null");
+
+  if (mxml_bad_char(ch))
+  {
+    mxml_error("Bad control character 0x%02x under parent <%s> not allowed by XML standard!",
+               ch, parent ? parent->value.element.name : "null");
+    return (EOF);
+  }
+
+  return (ch);
+}
+
+
+/*
+ * 'mxml_load_data()' - Load data into an XML node tree.
+ */
+
+static mxml_node_t *			/* O - First node or NULL if the file could not be read. */
+mxml_load_data(
+    mxml_node_t     *top,		/* I - Top node */
+    void            *p,			/* I - Pointer to data */
+    mxml_load_cb_t  cb,			/* I - Callback function or MXML_NO_CALLBACK */
+    _mxml_getc_cb_t getc_cb,		/* I - Read function */
+    mxml_sax_cb_t   sax_cb,		/* I - SAX callback or MXML_NO_CALLBACK */
+    void            *sax_data)		/* I - SAX user data */
+{
+  mxml_node_t	*node,			/* Current node */
+		*first,			/* First node added */
+		*parent;		/* Current parent node */
+  int		ch,			/* Character from file */
+		whitespace;		/* Non-zero if whitespace seen */
+  char		*buffer,		/* String buffer */
+		*bufptr;		/* Pointer into buffer */
+  int		bufsize;		/* Size of buffer */
+  mxml_type_t	type;			/* Current node type */
+  int		encoding;		/* Character encoding */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+  static const char * const types[] =	/* Type strings... */
+		{
+		  "MXML_ELEMENT",	/* XML element with attributes */
+		  "MXML_INTEGER",	/* Integer value */
+		  "MXML_OPAQUE",	/* Opaque string */
+		  "MXML_REAL",		/* Real value */
+		  "MXML_TEXT",		/* Text fragment */
+		  "MXML_CUSTOM"		/* Custom data */
+		};
+
+
+ /*
+  * Read elements and other nodes from the file...
+  */
+
+  if ((buffer = malloc(64)) == NULL)
+  {
+    mxml_error("Unable to allocate string buffer!");
+    return (NULL);
+  }
+
+  bufsize    = 64;
+  bufptr     = buffer;
+  parent     = top;
+  first      = NULL;
+  whitespace = 0;
+  encoding   = ENCODE_UTF8;
+
+  if (cb && parent)
+    type = (*cb)(parent);
+  else if (parent)
+    type = MXML_TEXT;
+  else
+    type = MXML_IGNORE;
+
+  while ((ch = (*getc_cb)(p, &encoding)) != EOF)
+  {
+    if ((ch == '<' ||
+         (mxml_isspace(ch) && type != MXML_OPAQUE && type != MXML_CUSTOM)) &&
+        bufptr > buffer)
+    {
+     /*
+      * Add a new value node...
+      */
+
+      *bufptr = '\0';
+
+      switch (type)
+      {
+	case MXML_INTEGER :
+            node = mxmlNewInteger(parent, strtol(buffer, &bufptr, 0));
+	    break;
+
+	case MXML_OPAQUE :
+            node = mxmlNewOpaque(parent, buffer);
+	    break;
+
+	case MXML_REAL :
+            node = mxmlNewReal(parent, strtod(buffer, &bufptr));
+	    break;
+
+	case MXML_TEXT :
+            node = mxmlNewText(parent, whitespace, buffer);
+	    break;
+
+	case MXML_CUSTOM :
+	    if (global->custom_load_cb)
+	    {
+	     /*
+	      * Use the callback to fill in the custom data...
+	      */
+
+              node = mxmlNewCustom(parent, NULL, NULL);
+
+	      if ((*global->custom_load_cb)(node, buffer))
+	      {
+	        mxml_error("Bad custom value '%s' in parent <%s>!",
+		           buffer, parent ? parent->value.element.name : "null");
+		mxmlDelete(node);
+		node = NULL;
+	      }
+	      break;
+	    }
+
+        default : /* Ignore... */
+	    node = NULL;
+	    break;
+      }
+
+      if (*bufptr)
+      {
+       /*
+        * Bad integer/real number value...
+	*/
+
+        mxml_error("Bad %s value '%s' in parent <%s>!",
+	           type == MXML_INTEGER ? "integer" : "real", buffer,
+		   parent ? parent->value.element.name : "null");
+	break;
+      }
+
+      bufptr     = buffer;
+      whitespace = mxml_isspace(ch) && type == MXML_TEXT;
+
+      if (!node && type != MXML_IGNORE)
+      {
+       /*
+	* Print error and return...
+	*/
+
+	mxml_error("Unable to add value node of type %s to parent <%s>!",
+	           types[type], parent ? parent->value.element.name : "null");
+	goto error;
+      }
+
+      if (sax_cb)
+      {
+        (*sax_cb)(node, MXML_SAX_DATA, sax_data);
+
+        if (!mxmlRelease(node))
+          node = NULL;
+      }
+
+      if (!first && node)
+        first = node;
+    }
+    else if (mxml_isspace(ch) && type == MXML_TEXT)
+      whitespace = 1;
+
+   /*
+    * Add lone whitespace node if we have an element and existing
+    * whitespace...
+    */
+
+    if (ch == '<' && whitespace && type == MXML_TEXT)
+    {
+      if (parent)
+      {
+	node = mxmlNewText(parent, whitespace, "");
+
+	if (sax_cb)
+	{
+	  (*sax_cb)(node, MXML_SAX_DATA, sax_data);
+
+	  if (!mxmlRelease(node))
+	    node = NULL;
+	}
+
+	if (!first && node)
+	  first = node;
+      }
+
+      whitespace = 0;
+    }
+
+    if (ch == '<')
+    {
+     /*
+      * Start of open/close tag...
+      */
+
+      bufptr = buffer;
+
+      while ((ch = (*getc_cb)(p, &encoding)) != EOF)
+        if (mxml_isspace(ch) || ch == '>' || (ch == '/' && bufptr > buffer))
+	  break;
+	else if (ch == '<')
+	{
+	  mxml_error("Bare < in element!");
+	  goto error;
+	}
+	else if (ch == '&')
+	{
+	  if ((ch = mxml_get_entity(parent, p, &encoding, getc_cb)) == EOF)
+	    goto error;
+
+	  if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	    goto error;
+	}
+	else if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	  goto error;
+	else if (((bufptr - buffer) == 1 && buffer[0] == '?') ||
+	         ((bufptr - buffer) == 3 && !strncmp(buffer, "!--", 3)) ||
+	         ((bufptr - buffer) == 8 && !strncmp(buffer, "![CDATA[", 8)))
+	  break;
+
+      *bufptr = '\0';
+
+      if (!strcmp(buffer, "!--"))
+      {
+       /*
+        * Gather rest of comment...
+	*/
+
+	while ((ch = (*getc_cb)(p, &encoding)) != EOF)
+	{
+	  if (ch == '>' && bufptr > (buffer + 4) &&
+	      bufptr[-3] != '-' && bufptr[-2] == '-' && bufptr[-1] == '-')
+	    break;
+	  else if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	    goto error;
+	}
+
+       /*
+        * Error out if we didn't get the whole comment...
+	*/
+
+        if (ch != '>')
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Early EOF in comment node!");
+	  goto error;
+	}
+
+
+       /*
+        * Otherwise add this as an element under the current parent...
+	*/
+
+	*bufptr = '\0';
+
+        if (!parent && first)
+	{
+	 /*
+	  * There can only be one root element!
+	  */
+
+	  mxml_error("<%s> cannot be a second root node after <%s>",
+	             buffer, first->value.element.name);
+          goto error;
+	}
+
+	if ((node = mxmlNewElement(parent, buffer)) == NULL)
+	{
+	 /*
+	  * Just print error for now...
+	  */
+
+	  mxml_error("Unable to add comment node to parent <%s>!",
+	             parent ? parent->value.element.name : "null");
+	  break;
+	}
+
+        if (sax_cb)
+        {
+          (*sax_cb)(node, MXML_SAX_COMMENT, sax_data);
+
+          if (!mxmlRelease(node))
+            node = NULL;
+        }
+
+	if (node && !first)
+	  first = node;
+      }
+      else if (!strcmp(buffer, "![CDATA["))
+      {
+       /*
+        * Gather CDATA section...
+	*/
+
+	while ((ch = (*getc_cb)(p, &encoding)) != EOF)
+	{
+	  if (ch == '>' && !strncmp(bufptr - 2, "]]", 2))
+	    break;
+	  else if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	    goto error;
+	}
+
+       /*
+        * Error out if we didn't get the whole comment...
+	*/
+
+        if (ch != '>')
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Early EOF in CDATA node!");
+	  goto error;
+	}
+
+
+       /*
+        * Otherwise add this as an element under the current parent...
+	*/
+
+	*bufptr = '\0';
+
+        if (!parent && first)
+	{
+	 /*
+	  * There can only be one root element!
+	  */
+
+	  mxml_error("<%s> cannot be a second root node after <%s>",
+	             buffer, first->value.element.name);
+          goto error;
+	}
+
+	if ((node = mxmlNewElement(parent, buffer)) == NULL)
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Unable to add CDATA node to parent <%s>!",
+	             parent ? parent->value.element.name : "null");
+	  goto error;
+	}
+
+        if (sax_cb)
+        {
+          (*sax_cb)(node, MXML_SAX_CDATA, sax_data);
+
+          if (!mxmlRelease(node))
+            node = NULL;
+        }
+
+	if (node && !first)
+	  first = node;
+      }
+      else if (buffer[0] == '?')
+      {
+       /*
+        * Gather rest of processing instruction...
+	*/
+
+	while ((ch = (*getc_cb)(p, &encoding)) != EOF)
+	{
+	  if (ch == '>' && bufptr > buffer && bufptr[-1] == '?')
+	    break;
+	  else if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	    goto error;
+	}
+
+       /*
+        * Error out if we didn't get the whole processing instruction...
+	*/
+
+        if (ch != '>')
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Early EOF in processing instruction node!");
+	  goto error;
+	}
+
+       /*
+        * Otherwise add this as an element under the current parent...
+	*/
+
+	*bufptr = '\0';
+
+        if (!parent && first)
+	{
+	 /*
+	  * There can only be one root element!
+	  */
+
+	  mxml_error("<%s> cannot be a second root node after <%s>",
+	             buffer, first->value.element.name);
+          goto error;
+	}
+
+	if ((node = mxmlNewElement(parent, buffer)) == NULL)
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Unable to add processing instruction node to parent <%s>!",
+	             parent ? parent->value.element.name : "null");
+	  goto error;
+	}
+
+        if (sax_cb)
+        {
+          (*sax_cb)(node, MXML_SAX_DIRECTIVE, sax_data);
+
+          if (!mxmlRelease(node))
+            node = NULL;
+        }
+
+        if (node)
+	{
+	  if (!first)
+            first = node;
+
+	  if (!parent)
+	  {
+	    parent = node;
+
+	    if (cb)
+	      type = (*cb)(parent);
+	    else
+	      type = MXML_TEXT;
+	  }
+	}
+      }
+      else if (buffer[0] == '!')
+      {
+       /*
+        * Gather rest of declaration...
+	*/
+
+	do
+	{
+	  if (ch == '>')
+	    break;
+	  else
+	  {
+            if (ch == '&')
+	      if ((ch = mxml_get_entity(parent, p, &encoding, getc_cb)) == EOF)
+		goto error;
+
+	    if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	      goto error;
+	  }
+	}
+        while ((ch = (*getc_cb)(p, &encoding)) != EOF);
+
+       /*
+        * Error out if we didn't get the whole declaration...
+	*/
+
+        if (ch != '>')
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Early EOF in declaration node!");
+	  goto error;
+	}
+
+       /*
+        * Otherwise add this as an element under the current parent...
+	*/
+
+	*bufptr = '\0';
+
+        if (!parent && first)
+	{
+	 /*
+	  * There can only be one root element!
+	  */
+
+	  mxml_error("<%s> cannot be a second root node after <%s>",
+	             buffer, first->value.element.name);
+          goto error;
+	}
+
+	if ((node = mxmlNewElement(parent, buffer)) == NULL)
+	{
+	 /*
+	  * Print error and return...
+	  */
+
+	  mxml_error("Unable to add declaration node to parent <%s>!",
+	             parent ? parent->value.element.name : "null");
+	  goto error;
+	}
+
+        if (sax_cb)
+        {
+          (*sax_cb)(node, MXML_SAX_DIRECTIVE, sax_data);
+
+          if (!mxmlRelease(node))
+            node = NULL;
+        }
+
+        if (node)
+	{
+	  if (!first)
+            first = node;
+
+	  if (!parent)
+	  {
+	    parent = node;
+
+	    if (cb)
+	      type = (*cb)(parent);
+	    else
+	      type = MXML_TEXT;
+	  }
+	}
+      }
+      else if (buffer[0] == '/')
+      {
+       /*
+        * Handle close tag...
+	*/
+
+        if (!parent || strcmp(buffer + 1, parent->value.element.name))
+	{
+	 /*
+	  * Close tag doesn't match tree; print an error for now...
+	  */
+
+	  mxml_error("Mismatched close tag <%s> under parent <%s>!",
+	             buffer, parent ? parent->value.element.name : "(null)");
+          goto error;
+	}
+
+       /*
+        * Keep reading until we see >...
+	*/
+
+        while (ch != '>' && ch != EOF)
+	  ch = (*getc_cb)(p, &encoding);
+
+        node   = parent;
+        parent = parent->parent;
+
+        if (sax_cb)
+        {
+          (*sax_cb)(node, MXML_SAX_ELEMENT_CLOSE, sax_data);
+
+          if (!mxmlRelease(node) && first == node)
+	    first = NULL;
+        }
+
+       /*
+	* Ascend into the parent and set the value type as needed...
+	*/
+
+	if (cb && parent)
+	  type = (*cb)(parent);
+      }
+      else
+      {
+       /*
+        * Handle open tag...
+	*/
+
+        if (!parent && first)
+	{
+	 /*
+	  * There can only be one root element!
+	  */
+
+	  mxml_error("<%s> cannot be a second root node after <%s>",
+	             buffer, first->value.element.name);
+          goto error;
+	}
+
+        if ((node = mxmlNewElement(parent, buffer)) == NULL)
+	{
+	 /*
+	  * Just print error for now...
+	  */
+
+	  mxml_error("Unable to add element node to parent <%s>!",
+	             parent ? parent->value.element.name : "null");
+	  goto error;
+	}
+
+        if (mxml_isspace(ch))
+        {
+	  if ((ch = mxml_parse_element(node, p, &encoding, getc_cb)) == EOF)
+	    goto error;
+        }
+        else if (ch == '/')
+	{
+	  if ((ch = (*getc_cb)(p, &encoding)) != '>')
+	  {
+	    mxml_error("Expected > but got '%c' instead for element <%s/>!",
+	               ch, buffer);
+            mxmlDelete(node);
+            goto error;
+	  }
+
+	  ch = '/';
+	}
+
+        if (sax_cb)
+          (*sax_cb)(node, MXML_SAX_ELEMENT_OPEN, sax_data);
+
+        if (!first)
+	  first = node;
+
+	if (ch == EOF)
+	  break;
+
+        if (ch != '/')
+	{
+	 /*
+	  * Descend into this node, setting the value type as needed...
+	  */
+
+	  parent = node;
+
+	  if (cb && parent)
+	    type = (*cb)(parent);
+	}
+        else if (sax_cb)
+        {
+          (*sax_cb)(node, MXML_SAX_ELEMENT_CLOSE, sax_data);
+
+          if (!mxmlRelease(node) && first == node)
+            first = NULL;
+        }
+      }
+
+      bufptr  = buffer;
+    }
+    else if (ch == '&')
+    {
+     /*
+      * Add character entity to current buffer...
+      */
+
+      if ((ch = mxml_get_entity(parent, p, &encoding, getc_cb)) == EOF)
+	goto error;
+
+      if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	goto error;
+    }
+    else if (type == MXML_OPAQUE || type == MXML_CUSTOM || !mxml_isspace(ch))
+    {
+     /*
+      * Add character to current buffer...
+      */
+
+      if (mxml_add_char(ch, &bufptr, &buffer, &bufsize))
+	goto error;
+    }
+  }
+
+ /*
+  * Free the string buffer - we don't need it anymore...
+  */
+
+  free(buffer);
+
+ /*
+  * Find the top element and return it...
+  */
+
+  if (parent)
+  {
+    node = parent;
+
+    while (parent != top && parent->parent)
+      parent = parent->parent;
+
+    if (node != parent)
+    {
+      mxml_error("Missing close tag </%s> under parent <%s>!",
+	         node->value.element.name,
+		 node->parent ? node->parent->value.element.name : "(null)");
+
+      mxmlDelete(first);
+
+      return (NULL);
+    }
+  }
+
+  if (parent)
+    return (parent);
+  else
+    return (first);
+
+ /*
+  * Common error return...
+  */
+
+error:
+
+  mxmlDelete(first);
+
+  free(buffer);
+
+  return (NULL);
+}
+
+
+/*
+ * 'mxml_parse_element()' - Parse an element for any attributes...
+ */
+
+static int				/* O  - Terminating character */
+mxml_parse_element(
+    mxml_node_t     *node,		/* I  - Element node */
+    void            *p,			/* I  - Data to read from */
+    int             *encoding,		/* IO - Encoding */
+    _mxml_getc_cb_t getc_cb)		/* I  - Data callback */
+{
+  int	ch,				/* Current character in file */
+	quote;				/* Quoting character */
+  char	*name,				/* Attribute name */
+	*value,				/* Attribute value */
+	*ptr;				/* Pointer into name/value */
+  int	namesize,			/* Size of name string */
+	valsize;			/* Size of value string */
+
+
+ /*
+  * Initialize the name and value buffers...
+  */
+
+  if ((name = malloc(64)) == NULL)
+  {
+    mxml_error("Unable to allocate memory for name!");
+    return (EOF);
+  }
+
+  namesize = 64;
+
+  if ((value = malloc(64)) == NULL)
+  {
+    free(name);
+    mxml_error("Unable to allocate memory for value!");
+    return (EOF);
+  }
+
+  valsize = 64;
+
+ /*
+  * Loop until we hit a >, /, ?, or EOF...
+  */
+
+  while ((ch = (*getc_cb)(p, encoding)) != EOF)
+  {
+#if DEBUG > 1
+    fprintf(stderr, "parse_element: ch='%c'\n", ch);
+#endif /* DEBUG > 1 */
+
+   /*
+    * Skip leading whitespace...
+    */
+
+    if (mxml_isspace(ch))
+      continue;
+
+   /*
+    * Stop at /, ?, or >...
+    */
+
+    if (ch == '/' || ch == '?')
+    {
+     /*
+      * Grab the > character and print an error if it isn't there...
+      */
+
+      quote = (*getc_cb)(p, encoding);
+
+      if (quote != '>')
+      {
+        mxml_error("Expected '>' after '%c' for element %s, but got '%c'!",
+	           ch, node->value.element.name, quote);
+        goto error;
+      }
+
+      break;
+    }
+    else if (ch == '<')
+    {
+      mxml_error("Bare < in element %s!", node->value.element.name);
+      goto error;
+    }
+    else if (ch == '>')
+      break;
+
+   /*
+    * Read the attribute name...
+    */
+
+    name[0] = ch;
+    ptr     = name + 1;
+
+    if (ch == '\"' || ch == '\'')
+    {
+     /*
+      * Name is in quotes, so get a quoted string...
+      */
+
+      quote = ch;
+
+      while ((ch = (*getc_cb)(p, encoding)) != EOF)
+      {
+        if (ch == '&')
+	  if ((ch = mxml_get_entity(node, p, encoding, getc_cb)) == EOF)
+	    goto error;
+
+	if (mxml_add_char(ch, &ptr, &name, &namesize))
+	  goto error;
+
+	if (ch == quote)
+          break;
+      }
+    }
+    else
+    {
+     /*
+      * Grab an normal, non-quoted name...
+      */
+
+      while ((ch = (*getc_cb)(p, encoding)) != EOF)
+	if (mxml_isspace(ch) || ch == '=' || ch == '/' || ch == '>' ||
+	    ch == '?')
+          break;
+	else
+	{
+          if (ch == '&')
+	    if ((ch = mxml_get_entity(node, p, encoding, getc_cb)) == EOF)
+	      goto error;
+
+	  if (mxml_add_char(ch, &ptr, &name, &namesize))
+	    goto error;
+	}
+    }
+
+    *ptr = '\0';
+
+    if (mxmlElementGetAttr(node, name))
+      goto error;
+
+    while (ch != EOF && mxml_isspace(ch))
+      ch = (*getc_cb)(p, encoding);
+
+    if (ch == '=')
+    {
+     /*
+      * Read the attribute value...
+      */
+
+      while ((ch = (*getc_cb)(p, encoding)) != EOF && mxml_isspace(ch));
+
+      if (ch == EOF)
+      {
+        mxml_error("Missing value for attribute '%s' in element %s!",
+	           name, node->value.element.name);
+        goto error;
+      }
+
+      if (ch == '\'' || ch == '\"')
+      {
+       /*
+        * Read quoted value...
+	*/
+
+        quote = ch;
+	ptr   = value;
+
+        while ((ch = (*getc_cb)(p, encoding)) != EOF)
+	  if (ch == quote)
+	    break;
+	  else
+	  {
+	    if (ch == '&')
+	      if ((ch = mxml_get_entity(node, p, encoding, getc_cb)) == EOF)
+	        goto error;
+
+	    if (mxml_add_char(ch, &ptr, &value, &valsize))
+	      goto error;
+	  }
+
+        *ptr = '\0';
+      }
+      else
+      {
+       /*
+        * Read unquoted value...
+	*/
+
+	value[0] = ch;
+	ptr      = value + 1;
+
+	while ((ch = (*getc_cb)(p, encoding)) != EOF)
+	  if (mxml_isspace(ch) || ch == '=' || ch == '/' || ch == '>')
+            break;
+	  else
+	  {
+	    if (ch == '&')
+	      if ((ch = mxml_get_entity(node, p, encoding, getc_cb)) == EOF)
+	        goto error;
+
+	    if (mxml_add_char(ch, &ptr, &value, &valsize))
+	      goto error;
+	  }
+
+        *ptr = '\0';
+      }
+
+     /*
+      * Set the attribute with the given string value...
+      */
+
+      mxmlElementSetAttr(node, name, value);
+    }
+    else
+    {
+      mxml_error("Missing value for attribute '%s' in element %s!",
+	         name, node->value.element.name);
+      goto error;
+    }
+
+   /*
+    * Check the end character...
+    */
+
+    if (ch == '/' || ch == '?')
+    {
+     /*
+      * Grab the > character and print an error if it isn't there...
+      */
+
+      quote = (*getc_cb)(p, encoding);
+
+      if (quote != '>')
+      {
+        mxml_error("Expected '>' after '%c' for element %s, but got '%c'!",
+	           ch, node->value.element.name, quote);
+        ch = EOF;
+      }
+
+      break;
+    }
+    else if (ch == '>')
+      break;
+  }
+
+ /*
+  * Free the name and value buffers and return...
+  */
+
+  free(name);
+  free(value);
+
+  return (ch);
+
+ /*
+  * Common error return point...
+  */
+
+error:
+
+  free(name);
+  free(value);
+
+  return (EOF);
+}
+
+
+/*
+ * 'mxml_string_getc()' - Get a character from a string.
+ */
+
+static int				/* O  - Character or EOF */
+mxml_string_getc(void *p,		/* I  - Pointer to file */
+                 int  *encoding)	/* IO - Encoding */
+{
+  int		ch;			/* Character */
+  const char	**s;			/* Pointer to string pointer */
+
+
+  s = (const char **)p;
+
+  if ((ch = (*s)[0] & 255) != 0 || *encoding == ENCODE_UTF16LE)
+  {
+   /*
+    * Got character; convert UTF-8 to integer and return...
+    */
+
+    (*s)++;
+
+    switch (*encoding)
+    {
+      case ENCODE_UTF8 :
+	  if (!(ch & 0x80))
+	  {
+#if DEBUG > 1
+            printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	    if (mxml_bad_char(ch))
+	    {
+	      mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        		 ch);
+	      return (EOF);
+	    }
+
+	    return (ch);
+          }
+	  else if (ch == 0xfe)
+	  {
+	   /*
+	    * UTF-16 big-endian BOM?
+	    */
+
+            if (((*s)[0] & 255) != 0xff)
+	      return (EOF);
+
+	    *encoding = ENCODE_UTF16BE;
+	    (*s)++;
+
+	    return (mxml_string_getc(p, encoding));
+	  }
+	  else if (ch == 0xff)
+	  {
+	   /*
+	    * UTF-16 little-endian BOM?
+	    */
+
+            if (((*s)[0] & 255) != 0xfe)
+	      return (EOF);
+
+	    *encoding = ENCODE_UTF16LE;
+	    (*s)++;
+
+	    return (mxml_string_getc(p, encoding));
+	  }
+	  else if ((ch & 0xe0) == 0xc0)
+	  {
+	   /*
+	    * Two-byte value...
+	    */
+
+	    if (((*s)[0] & 0xc0) != 0x80)
+              return (EOF);
+
+	    ch = ((ch & 0x1f) << 6) | ((*s)[0] & 0x3f);
+
+	    (*s)++;
+
+	    if (ch < 0x80)
+	    {
+	      mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	      return (EOF);
+	    }
+
+#if DEBUG > 1
+            printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	    return (ch);
+	  }
+	  else if ((ch & 0xf0) == 0xe0)
+	  {
+	   /*
+	    * Three-byte value...
+	    */
+
+	    if (((*s)[0] & 0xc0) != 0x80 ||
+        	((*s)[1] & 0xc0) != 0x80)
+              return (EOF);
+
+	    ch = ((((ch & 0x0f) << 6) | ((*s)[0] & 0x3f)) << 6) | ((*s)[1] & 0x3f);
+
+	    (*s) += 2;
+
+	    if (ch < 0x800)
+	    {
+	      mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	      return (EOF);
+	    }
+
+	   /*
+	    * Ignore (strip) Byte Order Mark (BOM)...
+	    */
+
+	    if (ch == 0xfeff)
+	      return (mxml_string_getc(p, encoding));
+
+#if DEBUG > 1
+            printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	    return (ch);
+	  }
+	  else if ((ch & 0xf8) == 0xf0)
+	  {
+	   /*
+	    * Four-byte value...
+	    */
+
+	    if (((*s)[0] & 0xc0) != 0x80 ||
+        	((*s)[1] & 0xc0) != 0x80 ||
+        	((*s)[2] & 0xc0) != 0x80)
+              return (EOF);
+
+	    ch = ((((((ch & 0x07) << 6) | ((*s)[0] & 0x3f)) << 6) |
+        	   ((*s)[1] & 0x3f)) << 6) | ((*s)[2] & 0x3f);
+
+	    (*s) += 3;
+
+	    if (ch < 0x10000)
+	    {
+	      mxml_error("Invalid UTF-8 sequence for character 0x%04x!", ch);
+	      return (EOF);
+	    }
+
+#if DEBUG > 1
+            printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	    return (ch);
+	  }
+	  else
+	    return (EOF);
+
+      case ENCODE_UTF16BE :
+	 /*
+          * Read UTF-16 big-endian char...
+	  */
+
+	  ch = (ch << 8) | ((*s)[0] & 255);
+	  (*s) ++;
+
+          if (mxml_bad_char(ch))
+	  {
+	    mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	       ch);
+	    return (EOF);
+	  }
+          else if (ch >= 0xd800 && ch <= 0xdbff)
+	  {
+	   /*
+	    * Multi-word UTF-16 char...
+	    */
+
+            int lch;			/* Lower word */
+
+
+            if (!(*s)[0])
+	      return (EOF);
+
+            lch = (((*s)[0] & 255) << 8) | ((*s)[1] & 255);
+	    (*s) += 2;
+
+            if (lch < 0xdc00 || lch >= 0xdfff)
+	      return (EOF);
+
+            ch = (((ch & 0x3ff) << 10) | (lch & 0x3ff)) + 0x10000;
+	  }
+
+#if DEBUG > 1
+          printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	  return (ch);
+
+      case ENCODE_UTF16LE :
+	 /*
+          * Read UTF-16 little-endian char...
+	  */
+
+	  ch = ch | (((*s)[0] & 255) << 8);
+
+	  if (!ch)
+	  {
+	    (*s) --;
+	    return (EOF);
+	  }
+
+	  (*s) ++;
+
+          if (mxml_bad_char(ch))
+	  {
+	    mxml_error("Bad control character 0x%02x not allowed by XML standard!",
+        	       ch);
+	    return (EOF);
+	  }
+          else if (ch >= 0xd800 && ch <= 0xdbff)
+	  {
+	   /*
+	    * Multi-word UTF-16 char...
+	    */
+
+            int lch;			/* Lower word */
+
+
+            if (!(*s)[1])
+	      return (EOF);
+
+            lch = (((*s)[1] & 255) << 8) | ((*s)[0] & 255);
+	    (*s) += 2;
+
+            if (lch < 0xdc00 || lch >= 0xdfff)
+	      return (EOF);
+
+            ch = (((ch & 0x3ff) << 10) | (lch & 0x3ff)) + 0x10000;
+	  }
+
+#if DEBUG > 1
+          printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);
+#endif /* DEBUG > 1 */
+
+	  return (ch);
+    }
+  }
+
+  return (EOF);
+}
+
+
+/*
+ * 'mxml_string_putc()' - Write a character to a string.
+ */
+
+static int				/* O - 0 on success, -1 on failure */
+mxml_string_putc(int  ch,		/* I - Character to write */
+                 void *p)		/* I - Pointer to string pointers */
+{
+  char	**pp;				/* Pointer to string pointers */
+
+
+  pp = (char **)p;
+
+  if (pp[0] < pp[1])
+    pp[0][0] = ch;
+
+  pp[0] ++;
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_write_name()' - Write a name string.
+ */
+
+static int				/* O - 0 on success, -1 on failure */
+mxml_write_name(const char *s,		/* I - Name to write */
+                void       *p,		/* I - Write pointer */
+		int        (*putc_cb)(int, void *))
+					/* I - Write callback */
+{
+  char		quote;			/* Quote character */
+  const char	*name;			/* Entity name */
+
+
+  if (*s == '\"' || *s == '\'')
+  {
+   /*
+    * Write a quoted name string...
+    */
+
+    if ((*putc_cb)(*s, p) < 0)
+      return (-1);
+
+    quote = *s++;
+
+    while (*s && *s != quote)
+    {
+      if ((name = mxmlEntityGetName(*s)) != NULL)
+      {
+	if ((*putc_cb)('&', p) < 0)
+          return (-1);
+
+        while (*name)
+	{
+	  if ((*putc_cb)(*name, p) < 0)
+            return (-1);
+
+          name ++;
+	}
+
+	if ((*putc_cb)(';', p) < 0)
+          return (-1);
+      }
+      else if ((*putc_cb)(*s, p) < 0)
+	return (-1);
+
+      s ++;
+    }
+
+   /*
+    * Write the end quote...
+    */
+
+    if ((*putc_cb)(quote, p) < 0)
+      return (-1);
+  }
+  else
+  {
+   /*
+    * Write a non-quoted name string...
+    */
+
+    while (*s)
+    {
+      if ((*putc_cb)(*s, p) < 0)
+	return (-1);
+
+      s ++;
+    }
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_write_node()' - Save an XML node to a file.
+ */
+
+static int				/* O - Column or -1 on error */
+mxml_write_node(mxml_node_t     *node,	/* I - Node to write */
+                void            *p,	/* I - File to write to */
+	        mxml_save_cb_t  cb,	/* I - Whitespace callback */
+		int             col,	/* I - Current column */
+		_mxml_putc_cb_t putc_cb,/* I - Output callback */
+		_mxml_global_t  *global)/* I - Global data */
+{
+  int		i,			/* Looping var */
+		width;			/* Width of attr + value */
+  mxml_attr_t	*attr;			/* Current attribute */
+  char		s[255];			/* Temporary string */
+
+
+ /*
+  * Print the node value...
+  */
+
+  switch (node->type)
+  {
+    case MXML_ELEMENT :
+	col = mxml_write_ws(node, p, cb, MXML_WS_BEFORE_OPEN, col, putc_cb);
+
+	if ((*putc_cb)('<', p) < 0)
+	  return (-1);
+	if (node->value.element.name[0] == '?' ||
+	    !strncmp(node->value.element.name, "!--", 3) ||
+	    !strncmp(node->value.element.name, "![CDATA[", 8))
+	{
+	 /*
+	  * Comments, CDATA, and processing instructions do not
+	  * use character entities.
+	  */
+
+	  const char	*ptr;		/* Pointer into name */
+
+
+	  for (ptr = node->value.element.name; *ptr; ptr ++)
+	    if ((*putc_cb)(*ptr, p) < 0)
+	      return (-1);
+	}
+	else if (mxml_write_name(node->value.element.name, p, putc_cb) < 0)
+	  return (-1);
+
+	col += strlen(node->value.element.name) + 1;
+
+	for (i = node->value.element.num_attrs, attr = node->value.element.attrs;
+	     i > 0;
+	     i --, attr ++)
+	{
+	  width = strlen(attr->name);
+
+	  if (attr->value)
+	    width += strlen(attr->value) + 3;
+
+	  if (global->wrap > 0 && (col + width) > global->wrap)
+	  {
+	    if ((*putc_cb)('\n', p) < 0)
+	      return (-1);
+
+	    col = 0;
+	  }
+	  else
+	  {
+	    if ((*putc_cb)(' ', p) < 0)
+	      return (-1);
+
+	    col ++;
+	  }
+
+	  if (mxml_write_name(attr->name, p, putc_cb) < 0)
+	    return (-1);
+
+	  if (attr->value)
+	  {
+	    if ((*putc_cb)('=', p) < 0)
+	      return (-1);
+	    if ((*putc_cb)('\"', p) < 0)
+	      return (-1);
+	    if (mxml_write_string(attr->value, p, putc_cb) < 0)
+	      return (-1);
+	    if ((*putc_cb)('\"', p) < 0)
+	      return (-1);
+	  }
+
+	  col += width;
+	}
+
+	if (node->child)
+	{
+	 /*
+	  * Write children...
+	  */
+
+	  mxml_node_t *child;		/* Current child */
+
+
+	  if ((*putc_cb)('>', p) < 0)
+	    return (-1);
+	  else
+	    col ++;
+
+	  col = mxml_write_ws(node, p, cb, MXML_WS_AFTER_OPEN, col, putc_cb);
+
+          for (child = node->child; child; child = child->next)
+	  {
+	    if ((col = mxml_write_node(child, p, cb, col, putc_cb, global)) < 0)
+	      return (-1);
+	  }
+
+	 /*
+	  * The ? and ! elements are special-cases and have no end tags...
+	  */
+
+	  if (node->value.element.name[0] != '!' &&
+	      node->value.element.name[0] != '?')
+	  {
+	    col = mxml_write_ws(node, p, cb, MXML_WS_BEFORE_CLOSE, col, putc_cb);
+
+	    if ((*putc_cb)('<', p) < 0)
+	      return (-1);
+	    if ((*putc_cb)('/', p) < 0)
+	      return (-1);
+	    if (mxml_write_string(node->value.element.name, p, putc_cb) < 0)
+	      return (-1);
+	    if ((*putc_cb)('>', p) < 0)
+	      return (-1);
+
+	    col += strlen(node->value.element.name) + 3;
+
+	    col = mxml_write_ws(node, p, cb, MXML_WS_AFTER_CLOSE, col, putc_cb);
+	  }
+	}
+	else if (node->value.element.name[0] == '!' ||
+		 node->value.element.name[0] == '?')
+	{
+	 /*
+	  * The ? and ! elements are special-cases...
+	  */
+
+	  if ((*putc_cb)('>', p) < 0)
+	    return (-1);
+	  else
+	    col ++;
+
+	  col = mxml_write_ws(node, p, cb, MXML_WS_AFTER_OPEN, col, putc_cb);
+	}
+	else
+	{
+	  if ((*putc_cb)(' ', p) < 0)
+	    return (-1);
+	  if ((*putc_cb)('/', p) < 0)
+	    return (-1);
+	  if ((*putc_cb)('>', p) < 0)
+	    return (-1);
+
+	  col += 3;
+
+	  col = mxml_write_ws(node, p, cb, MXML_WS_AFTER_OPEN, col, putc_cb);
+	}
+	break;
+
+    case MXML_INTEGER :
+	if (node->prev)
+	{
+	  if (global->wrap > 0 && col > global->wrap)
+	  {
+	    if ((*putc_cb)('\n', p) < 0)
+	      return (-1);
+
+	    col = 0;
+	  }
+	  else if ((*putc_cb)(' ', p) < 0)
+	    return (-1);
+	  else
+	    col ++;
+	}
+
+	sprintf(s, "%d", node->value.integer);
+	if (mxml_write_string(s, p, putc_cb) < 0)
+	  return (-1);
+
+	col += strlen(s);
+	break;
+
+    case MXML_OPAQUE :
+	if (mxml_write_string(node->value.opaque, p, putc_cb) < 0)
+	  return (-1);
+
+	col += strlen(node->value.opaque);
+	break;
+
+    case MXML_REAL :
+	if (node->prev)
+	{
+	  if (global->wrap > 0 && col > global->wrap)
+	  {
+	    if ((*putc_cb)('\n', p) < 0)
+	      return (-1);
+
+	    col = 0;
+	  }
+	  else if ((*putc_cb)(' ', p) < 0)
+	    return (-1);
+	  else
+	    col ++;
+	}
+
+	sprintf(s, "%f", node->value.real);
+	if (mxml_write_string(s, p, putc_cb) < 0)
+	  return (-1);
+
+	col += strlen(s);
+	break;
+
+    case MXML_TEXT :
+	if (node->value.text.whitespace && col > 0)
+	{
+	  if (global->wrap > 0 && col > global->wrap)
+	  {
+	    if ((*putc_cb)('\n', p) < 0)
+	      return (-1);
+
+	    col = 0;
+	  }
+	  else if ((*putc_cb)(' ', p) < 0)
+	    return (-1);
+	  else
+	    col ++;
+	}
+
+	if (mxml_write_string(node->value.text.string, p, putc_cb) < 0)
+	  return (-1);
+
+	col += strlen(node->value.text.string);
+	break;
+
+    case MXML_CUSTOM :
+	if (global->custom_save_cb)
+	{
+	  char	*data;		/* Custom data string */
+	  const char	*newline;	/* Last newline in string */
+
+
+	  if ((data = (*global->custom_save_cb)(node)) == NULL)
+	    return (-1);
+
+	  if (mxml_write_string(data, p, putc_cb) < 0)
+	    return (-1);
+
+	  if ((newline = strrchr(data, '\n')) == NULL)
+	    col += strlen(data);
+	  else
+	    col = strlen(newline);
+
+	  free(data);
+	  break;
+	}
+
+    default : /* Should never happen */
+	return (-1);
+  }
+
+  return (col);
+}
+
+
+/*
+ * 'mxml_write_string()' - Write a string, escaping & and < as needed.
+ */
+
+static int				/* O - 0 on success, -1 on failure */
+mxml_write_string(
+    const char      *s,			/* I - String to write */
+    void            *p,			/* I - Write pointer */
+    _mxml_putc_cb_t putc_cb)		/* I - Write callback */
+{
+  const char	*name;			/* Entity name, if any */
+
+
+  while (*s)
+  {
+    if ((name = mxmlEntityGetName(*s)) != NULL)
+    {
+      if ((*putc_cb)('&', p) < 0)
+        return (-1);
+
+      while (*name)
+      {
+	if ((*putc_cb)(*name, p) < 0)
+          return (-1);
+        name ++;
+      }
+
+      if ((*putc_cb)(';', p) < 0)
+        return (-1);
+    }
+    else if ((*putc_cb)(*s, p) < 0)
+      return (-1);
+
+    s ++;
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'mxml_write_ws()' - Do whitespace callback...
+ */
+
+static int				/* O - New column */
+mxml_write_ws(mxml_node_t     *node,	/* I - Current node */
+              void            *p,	/* I - Write pointer */
+              mxml_save_cb_t  cb,	/* I - Callback function */
+	      int             ws,	/* I - Where value */
+	      int             col,	/* I - Current column */
+              _mxml_putc_cb_t putc_cb)	/* I - Write callback */
+{
+  const char	*s;			/* Whitespace string */
+
+
+  if (cb && (s = (*cb)(node, ws)) != NULL)
+  {
+    while (*s)
+    {
+      if ((*putc_cb)(*s, p) < 0)
+	return (-1);
+      else if (*s == '\n')
+	col = 0;
+      else if (*s == '\t')
+      {
+	col += MXML_TAB;
+	col = col - (col % MXML_TAB);
+      }
+      else
+	col ++;
+
+      s ++;
+    }
+  }
+
+  return (col);
+}
+
+
+/*
+ * End of "$Id: mxml-file.c 459 2014-10-19 17:21:48Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-get.c b/src/mxml/mxml-2.9/mxml-get.c
new file mode 100644
index 0000000..40ed3d0
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-get.c
@@ -0,0 +1,452 @@
+/*
+ * "$Id: mxml-get.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Node get functions for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * 'mxmlGetCDATA()' - Get the value for a CDATA node.
+ *
+ * @code NULL@ is returned if the node is not a CDATA element.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+const char *				/* O - CDATA value or NULL */
+mxmlGetCDATA(mxml_node_t *node)		/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT ||
+      strncmp(node->value.element.name, "![CDATA[", 8))
+    return (NULL);
+
+ /*
+  * Return the text following the CDATA declaration...
+  */
+
+  return (node->value.element.name + 8);
+}
+
+
+/*
+ * 'mxmlGetCustom()' - Get the value for a custom node.
+ *
+ * @code NULL@ is returned if the node (or its first child) is not a custom
+ * value node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+const void *				/* O - Custom value or NULL */
+mxmlGetCustom(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Return the integer value...
+  */
+
+  if (node->type == MXML_CUSTOM)
+    return (node->value.custom.data);
+  else if (node->type == MXML_ELEMENT &&
+           node->child &&
+	   node->child->type == MXML_CUSTOM)
+    return (node->child->value.custom.data);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'mxmlGetElement()' - Get the name for an element node.
+ *
+ * @code NULL@ is returned if the node is not an element node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+const char *				/* O - Element name or NULL */
+mxmlGetElement(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT)
+    return (NULL);
+
+ /*
+  * Return the element name...
+  */
+
+  return (node->value.element.name);
+}
+
+
+/*
+ * 'mxmlGetFirstChild()' - Get the first child of an element node.
+ *
+ * @code NULL@ is returned if the node is not an element node or if the node
+ * has no children.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_node_t *				/* O - First child or NULL */
+mxmlGetFirstChild(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT)
+    return (NULL);
+
+ /*
+  * Return the first child node...
+  */
+
+  return (node->child);
+}
+
+
+/*
+ * 'mxmlGetInteger()' - Get the integer value from the specified node or its
+ *                      first child.
+ *
+ * 0 is returned if the node (or its first child) is not an integer value node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+int					/* O - Integer value or 0 */
+mxmlGetInteger(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (0);
+
+ /*
+  * Return the integer value...
+  */
+
+  if (node->type == MXML_INTEGER)
+    return (node->value.integer);
+  else if (node->type == MXML_ELEMENT &&
+           node->child &&
+	   node->child->type == MXML_INTEGER)
+    return (node->child->value.integer);
+  else
+    return (0);
+}
+
+
+/*
+ * 'mxmlGetLastChild()' - Get the last child of an element node.
+ *
+ * @code NULL@ is returned if the node is not an element node or if the node
+ * has no children.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_node_t *				/* O - Last child or NULL */
+mxmlGetLastChild(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT)
+    return (NULL);
+
+ /*
+  * Return the node type...
+  */
+
+  return (node->last_child);
+}
+
+
+/*
+ * 'mxmlGetNextSibling()' - Get the next node for the current parent.
+ *
+ * @code NULL@ is returned if this is the last child for the current parent.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_node_t *
+mxmlGetNextSibling(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Return the node type...
+  */
+
+  return (node->next);
+}
+
+
+/*
+ * 'mxmlGetOpaque()' - Get an opaque string value for a node or its first child.
+ *
+ * @code NULL@ is returned if the node (or its first child) is not an opaque
+ * value node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+const char *				/* O - Opaque string or NULL */
+mxmlGetOpaque(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Return the integer value...
+  */
+
+  if (node->type == MXML_OPAQUE)
+    return (node->value.opaque);
+  else if (node->type == MXML_ELEMENT &&
+           node->child &&
+	   node->child->type == MXML_OPAQUE)
+    return (node->child->value.opaque);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'mxmlGetParent()' - Get the parent node.
+ *
+ * @code NULL@ is returned for a root node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_node_t *				/* O - Parent node or NULL */
+mxmlGetParent(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Return the node type...
+  */
+
+  return (node->parent);
+}
+
+
+/*
+ * 'mxmlGetPrevSibling()' - Get the previous node for the current parent.
+ *
+ * @code NULL@ is returned if this is the first child for the current parent.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_node_t *				/* O - Previous node or NULL */
+mxmlGetPrevSibling(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Return the node type...
+  */
+
+  return (node->prev);
+}
+
+
+/*
+ * 'mxmlGetReal()' - Get the real value for a node or its first child.
+ *
+ * 0.0 is returned if the node (or its first child) is not a real value node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+double					/* O - Real value or 0.0 */
+mxmlGetReal(mxml_node_t *node)		/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (0.0);
+
+ /*
+  * Return the integer value...
+  */
+
+  if (node->type == MXML_REAL)
+    return (node->value.real);
+  else if (node->type == MXML_ELEMENT &&
+           node->child &&
+	   node->child->type == MXML_REAL)
+    return (node->child->value.real);
+  else
+    return (0.0);
+}
+
+
+/*
+ * 'mxmlGetText()' - Get the text value for a node or its first child.
+ *
+ * @code NULL@ is returned if the node (or its first child) is not a text node.
+ * The "whitespace" argument can be NULL.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+const char *				/* O - Text string or NULL */
+mxmlGetText(mxml_node_t *node,		/* I - Node to get */
+            int         *whitespace)	/* O - 1 if string is preceded by whitespace, 0 otherwise */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+  {
+    if (whitespace)
+      *whitespace = 0;
+
+    return (NULL);
+  }
+
+ /*
+  * Return the integer value...
+  */
+
+  if (node->type == MXML_TEXT)
+  {
+    if (whitespace)
+      *whitespace = node->value.text.whitespace;
+
+    return (node->value.text.string);
+  }
+  else if (node->type == MXML_ELEMENT &&
+           node->child &&
+	   node->child->type == MXML_TEXT)
+  {
+    if (whitespace)
+      *whitespace = node->child->value.text.whitespace;
+
+    return (node->child->value.text.string);
+  }
+  else
+  {
+    if (whitespace)
+      *whitespace = 0;
+
+    return (NULL);
+  }
+}
+
+
+/*
+ * 'mxmlGetType()' - Get the node type.
+ *
+ * @code MXML_IGNORE@ is returned if "node" is @code NULL at .
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_type_t				/* O - Type of node */
+mxmlGetType(mxml_node_t *node)		/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (MXML_IGNORE);
+
+ /*
+  * Return the node type...
+  */
+
+  return (node->type);
+}
+
+
+/*
+ * 'mxmlGetUserData()' - Get the user data pointer for a node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+void *					/* O - User data pointer */
+mxmlGetUserData(mxml_node_t *node)	/* I - Node to get */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Return the user data pointer...
+  */
+
+  return (node->user_data);
+}
+
+
+/*
+ * End of "$Id: mxml-get.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-index.c b/src/mxml/mxml-2.9/mxml-index.c
new file mode 100644
index 0000000..1081439
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-index.c
@@ -0,0 +1,659 @@
+/*
+ * "$Id: mxml-index.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Index support code for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * Sort functions...
+ */
+
+static int	index_compare(mxml_index_t *ind, mxml_node_t *first,
+		              mxml_node_t *second);
+static int	index_find(mxml_index_t *ind, const char *element,
+		           const char *value, mxml_node_t *node);
+static void	index_sort(mxml_index_t *ind, int left, int right);
+
+
+/*
+ * 'mxmlIndexDelete()' - Delete an index.
+ */
+
+void
+mxmlIndexDelete(mxml_index_t *ind)	/* I - Index to delete */
+{
+ /*
+  * Range check input..
+  */
+
+  if (!ind)
+    return;
+
+ /*
+  * Free memory...
+  */
+
+  if (ind->attr)
+    free(ind->attr);
+
+  if (ind->alloc_nodes)
+    free(ind->nodes);
+
+  free(ind);
+}
+
+
+/*
+ * 'mxmlIndexEnum()' - Return the next node in the index.
+ *
+ * Nodes are returned in the sorted order of the index.
+ */
+
+mxml_node_t *				/* O - Next node or NULL if there is none */
+mxmlIndexEnum(mxml_index_t *ind)	/* I - Index to enumerate */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!ind)
+    return (NULL);
+
+ /*
+  * Return the next node...
+  */
+
+  if (ind->cur_node < ind->num_nodes)
+    return (ind->nodes[ind->cur_node ++]);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'mxmlIndexFind()' - Find the next matching node.
+ *
+ * You should call mxmlIndexReset() prior to using this function for
+ * the first time with a particular set of "element" and "value"
+ * strings. Passing NULL for both "element" and "value" is equivalent
+ * to calling mxmlIndexEnum().
+ */
+
+mxml_node_t *				/* O - Node or NULL if none found */
+mxmlIndexFind(mxml_index_t *ind,	/* I - Index to search */
+              const char   *element,	/* I - Element name to find, if any */
+	      const char   *value)	/* I - Attribute value, if any */
+{
+  int		diff,			/* Difference between names */
+		current,		/* Current entity in search */
+		first,			/* First entity in search */
+		last;			/* Last entity in search */
+
+
+#ifdef DEBUG
+  printf("mxmlIndexFind(ind=%p, element=\"%s\", value=\"%s\")\n",
+         ind, element ? element : "(null)", value ? value : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!ind || (!ind->attr && value))
+  {
+#ifdef DEBUG
+    puts("    returning NULL...");
+    printf("    ind->attr=\"%s\"\n", ind->attr ? ind->attr : "(null)");
+#endif /* DEBUG */
+
+    return (NULL);
+  }
+
+ /*
+  * If both element and value are NULL, just enumerate the nodes in the
+  * index...
+  */
+
+  if (!element && !value)
+    return (mxmlIndexEnum(ind));
+
+ /*
+  * If there are no nodes in the index, return NULL...
+  */
+
+  if (!ind->num_nodes)
+  {
+#ifdef DEBUG
+    puts("    returning NULL...");
+    puts("    no nodes!");
+#endif /* DEBUG */
+
+    return (NULL);
+  }
+
+ /*
+  * If cur_node == 0, then find the first matching node...
+  */
+
+  if (ind->cur_node == 0)
+  {
+   /*
+    * Find the first node using a modified binary search algorithm...
+    */
+
+    first = 0;
+    last  = ind->num_nodes - 1;
+
+#ifdef DEBUG
+    printf("    find first time, num_nodes=%d...\n", ind->num_nodes);
+#endif /* DEBUG */
+
+    while ((last - first) > 1)
+    {
+      current = (first + last) / 2;
+
+#ifdef DEBUG
+      printf("    first=%d, last=%d, current=%d\n", first, last, current);
+#endif /* DEBUG */
+
+      if ((diff = index_find(ind, element, value, ind->nodes[current])) == 0)
+      {
+       /*
+        * Found a match, move back to find the first...
+	*/
+
+#ifdef DEBUG
+        puts("    match!");
+#endif /* DEBUG */
+
+        while (current > 0 &&
+	       !index_find(ind, element, value, ind->nodes[current - 1]))
+	  current --;
+
+#ifdef DEBUG
+        printf("    returning first match=%d\n", current);
+#endif /* DEBUG */
+
+       /*
+        * Return the first match and save the index to the next...
+	*/
+
+        ind->cur_node = current + 1;
+
+	return (ind->nodes[current]);
+      }
+      else if (diff < 0)
+	last = current;
+      else
+	first = current;
+
+#ifdef DEBUG
+      printf("    diff=%d\n", diff);
+#endif /* DEBUG */
+    }
+
+   /*
+    * If we get this far, then we found exactly 0 or 1 matches...
+    */
+
+    for (current = first; current <= last; current ++)
+      if (!index_find(ind, element, value, ind->nodes[current]))
+      {
+       /*
+	* Found exactly one (or possibly two) match...
+	*/
+
+#ifdef DEBUG
+	printf("    returning only match %d...\n", current);
+#endif /* DEBUG */
+
+	ind->cur_node = current + 1;
+
+	return (ind->nodes[current]);
+      }
+
+   /*
+    * No matches...
+    */
+
+    ind->cur_node = ind->num_nodes;
+
+#ifdef DEBUG
+    puts("    returning NULL...");
+#endif /* DEBUG */
+
+    return (NULL);
+  }
+  else if (ind->cur_node < ind->num_nodes &&
+           !index_find(ind, element, value, ind->nodes[ind->cur_node]))
+  {
+   /*
+    * Return the next matching node...
+    */
+
+#ifdef DEBUG
+    printf("    returning next match %d...\n", ind->cur_node);
+#endif /* DEBUG */
+
+    return (ind->nodes[ind->cur_node ++]);
+  }
+
+ /*
+  * If we get this far, then we have no matches...
+  */
+
+  ind->cur_node = ind->num_nodes;
+
+#ifdef DEBUG
+  puts("    returning NULL...");
+#endif /* DEBUG */
+
+  return (NULL);
+}
+
+
+/*
+ * 'mxmlIndexGetCount()' - Get the number of nodes in an index.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+int					/* I - Number of nodes in index */
+mxmlIndexGetCount(mxml_index_t *ind)	/* I - Index of nodes */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!ind)
+    return (0);
+
+ /*
+  * Return the number of nodes in the index...
+  */
+
+  return (ind->num_nodes);
+}
+
+
+/*
+ * 'mxmlIndexNew()' - Create a new index.
+ *
+ * The index will contain all nodes that contain the named element and/or
+ * attribute. If both "element" and "attr" are NULL, then the index will
+ * contain a sorted list of the elements in the node tree.  Nodes are
+ * sorted by element name and optionally by attribute value if the "attr"
+ * argument is not NULL.
+ */
+
+mxml_index_t *				/* O - New index */
+mxmlIndexNew(mxml_node_t *node,		/* I - XML node tree */
+             const char  *element,	/* I - Element to index or NULL for all */
+             const char  *attr)		/* I - Attribute to index or NULL for none */
+{
+  mxml_index_t	*ind;			/* New index */
+  mxml_node_t	*current,		/* Current node in index */
+  		**temp;			/* Temporary node pointer array */
+
+
+ /*
+  * Range check input...
+  */
+
+#ifdef DEBUG
+  printf("mxmlIndexNew(node=%p, element=\"%s\", attr=\"%s\")\n",
+         node, element ? element : "(null)", attr ? attr : "(null)");
+#endif /* DEBUG */
+
+  if (!node)
+    return (NULL);
+
+ /*
+  * Create a new index...
+  */
+
+  if ((ind = calloc(1, sizeof(mxml_index_t))) == NULL)
+  {
+    mxml_error("Unable to allocate %d bytes for index - %s",
+               sizeof(mxml_index_t), strerror(errno));
+    return (NULL);
+  }
+
+  if (attr)
+    ind->attr = strdup(attr);
+
+  if (!element && !attr)
+    current = node;
+  else
+    current = mxmlFindElement(node, node, element, attr, NULL, MXML_DESCEND);
+
+  while (current)
+  {
+    if (ind->num_nodes >= ind->alloc_nodes)
+    {
+      if (!ind->alloc_nodes)
+        temp = malloc(64 * sizeof(mxml_node_t *));
+      else
+        temp = realloc(ind->nodes, (ind->alloc_nodes + 64) * sizeof(mxml_node_t *));
+
+      if (!temp)
+      {
+       /*
+        * Unable to allocate memory for the index, so abort...
+	*/
+
+        mxml_error("Unable to allocate %d bytes for index: %s",
+	           (ind->alloc_nodes + 64) * sizeof(mxml_node_t *),
+		   strerror(errno));
+
+        mxmlIndexDelete(ind);
+	return (NULL);
+      }
+
+      ind->nodes       = temp;
+      ind->alloc_nodes += 64;
+    }
+
+    ind->nodes[ind->num_nodes ++] = current;
+
+    current = mxmlFindElement(current, node, element, attr, NULL, MXML_DESCEND);
+  }
+
+ /*
+  * Sort nodes based upon the search criteria...
+  */
+
+#ifdef DEBUG
+  {
+    int i;				/* Looping var */
+
+
+    printf("%d node(s) in index.\n\n", ind->num_nodes);
+
+    if (attr)
+    {
+      printf("Node      Address   Element         %s\n", attr);
+      puts("--------  --------  --------------  ------------------------------");
+
+      for (i = 0; i < ind->num_nodes; i ++)
+	printf("%8d  %-8p  %-14.14s  %s\n", i, ind->nodes[i],
+	       ind->nodes[i]->value.element.name,
+	       mxmlElementGetAttr(ind->nodes[i], attr));
+    }
+    else
+    {
+      puts("Node      Address   Element");
+      puts("--------  --------  --------------");
+
+      for (i = 0; i < ind->num_nodes; i ++)
+	printf("%8d  %-8p  %s\n", i, ind->nodes[i],
+	       ind->nodes[i]->value.element.name);
+    }
+
+    putchar('\n');
+  }
+#endif /* DEBUG */
+
+  if (ind->num_nodes > 1)
+    index_sort(ind, 0, ind->num_nodes - 1);
+
+#ifdef DEBUG
+  {
+    int i;				/* Looping var */
+
+
+    puts("After sorting:\n");
+
+    if (attr)
+    {
+      printf("Node      Address   Element         %s\n", attr);
+      puts("--------  --------  --------------  ------------------------------");
+
+      for (i = 0; i < ind->num_nodes; i ++)
+	printf("%8d  %-8p  %-14.14s  %s\n", i, ind->nodes[i],
+	       ind->nodes[i]->value.element.name,
+	       mxmlElementGetAttr(ind->nodes[i], attr));
+    }
+    else
+    {
+      puts("Node      Address   Element");
+      puts("--------  --------  --------------");
+
+      for (i = 0; i < ind->num_nodes; i ++)
+	printf("%8d  %-8p  %s\n", i, ind->nodes[i],
+	       ind->nodes[i]->value.element.name);
+    }
+
+    putchar('\n');
+  }
+#endif /* DEBUG */
+
+ /*
+  * Return the new index...
+  */
+
+  return (ind);
+}
+
+
+/*
+ * 'mxmlIndexReset()' - Reset the enumeration/find pointer in the index and
+ *                      return the first node in the index.
+ *
+ * This function should be called prior to using mxmlIndexEnum() or
+ * mxmlIndexFind() for the first time.
+ */
+
+mxml_node_t *				/* O - First node or NULL if there is none */
+mxmlIndexReset(mxml_index_t *ind)	/* I - Index to reset */
+{
+#ifdef DEBUG
+  printf("mxmlIndexReset(ind=%p)\n", ind);
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!ind)
+    return (NULL);
+
+ /*
+  * Set the index to the first element...
+  */
+
+  ind->cur_node = 0;
+
+ /*
+  * Return the first node...
+  */
+
+  if (ind->num_nodes)
+    return (ind->nodes[0]);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'index_compare()' - Compare two nodes.
+ */
+
+static int				/* O - Result of comparison */
+index_compare(mxml_index_t *ind,	/* I - Index */
+              mxml_node_t  *first,	/* I - First node */
+              mxml_node_t  *second)	/* I - Second node */
+{
+  int	diff;				/* Difference */
+
+
+ /*
+  * Check the element name...
+  */
+
+  if ((diff = strcmp(first->value.element.name,
+                     second->value.element.name)) != 0)
+    return (diff);
+
+ /*
+  * Check the attribute value...
+  */
+
+  if (ind->attr)
+  {
+    if ((diff = strcmp(mxmlElementGetAttr(first, ind->attr),
+                       mxmlElementGetAttr(second, ind->attr))) != 0)
+      return (diff);
+  }
+
+ /*
+  * No difference, return 0...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'index_find()' - Compare a node with index values.
+ */
+
+static int				/* O - Result of comparison */
+index_find(mxml_index_t *ind,		/* I - Index */
+           const char   *element,	/* I - Element name or NULL */
+	   const char   *value,		/* I - Attribute value or NULL */
+           mxml_node_t  *node)		/* I - Node */
+{
+  int	diff;				/* Difference */
+
+
+ /*
+  * Check the element name...
+  */
+
+  if (element)
+  {
+    if ((diff = strcmp(element, node->value.element.name)) != 0)
+      return (diff);
+  }
+
+ /*
+  * Check the attribute value...
+  */
+
+  if (value)
+  {
+    if ((diff = strcmp(value, mxmlElementGetAttr(node, ind->attr))) != 0)
+      return (diff);
+  }
+
+ /*
+  * No difference, return 0...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'index_sort()' - Sort the nodes in the index...
+ *
+ * This function implements the classic quicksort algorithm...
+ */
+
+static void
+index_sort(mxml_index_t *ind,		/* I - Index to sort */
+           int          left,		/* I - Left node in partition */
+	   int          right)		/* I - Right node in partition */
+{
+  mxml_node_t	*pivot,			/* Pivot node */
+		*temp;			/* Swap node */
+  int		templ,			/* Temporary left node */
+		tempr;			/* Temporary right node */
+
+
+ /*
+  * Loop until we have sorted all the way to the right...
+  */
+
+  do
+  {
+   /*
+    * Sort the pivot in the current partition...
+    */
+
+    pivot = ind->nodes[left];
+
+    for (templ = left, tempr = right; templ < tempr;)
+    {
+     /*
+      * Move left while left node <= pivot node...
+      */
+
+      while ((templ < right) &&
+             index_compare(ind, ind->nodes[templ], pivot) <= 0)
+	templ ++;
+
+     /*
+      * Move right while right node > pivot node...
+      */
+
+      while ((tempr > left) &&
+             index_compare(ind, ind->nodes[tempr], pivot) > 0)
+	tempr --;
+
+     /*
+      * Swap nodes if needed...
+      */
+
+      if (templ < tempr)
+      {
+	temp              = ind->nodes[templ];
+	ind->nodes[templ] = ind->nodes[tempr];
+	ind->nodes[tempr] = temp;
+      }
+    }
+
+   /*
+    * When we get here, the right (tempr) node is the new position for the
+    * pivot node...
+    */
+
+    if (index_compare(ind, pivot, ind->nodes[tempr]) > 0)
+    {
+      ind->nodes[left]  = ind->nodes[tempr];
+      ind->nodes[tempr] = pivot;
+    }
+
+   /*
+    * Recursively sort the left partition as needed...
+    */
+
+    if (left < (tempr - 1))
+      index_sort(ind, left, tempr - 1);
+  }
+  while (right > (left = tempr + 1));
+}
+
+
+/*
+ * End of "$Id: mxml-index.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-node.c b/src/mxml/mxml-2.9/mxml-node.c
new file mode 100644
index 0000000..128cda1
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-node.c
@@ -0,0 +1,788 @@
+/*
+ * "$Id: mxml-node.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Node support code for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * Local functions...
+ */
+
+static mxml_node_t	*mxml_new(mxml_node_t *parent, mxml_type_t type);
+
+
+/*
+ * 'mxmlAdd()' - Add a node to a tree.
+ *
+ * Adds the specified node to the parent. If the child argument is not
+ * NULL, puts the new node before or after the specified child depending
+ * on the value of the where argument. If the child argument is NULL,
+ * puts the new node at the beginning of the child list (MXML_ADD_BEFORE)
+ * or at the end of the child list (MXML_ADD_AFTER). The constant
+ * MXML_ADD_TO_PARENT can be used to specify a NULL child pointer.
+ */
+
+void
+mxmlAdd(mxml_node_t *parent,		/* I - Parent node */
+        int         where,		/* I - Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER */
+        mxml_node_t *child,		/* I - Child node for where or MXML_ADD_TO_PARENT */
+	mxml_node_t *node)		/* I - Node to add */
+{
+#ifdef DEBUG
+  fprintf(stderr, "mxmlAdd(parent=%p, where=%d, child=%p, node=%p)\n", parent,
+          where, child, node);
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!parent || !node)
+    return;
+
+#if DEBUG > 1
+  fprintf(stderr, "    BEFORE: node->parent=%p\n", node->parent);
+  if (parent)
+  {
+    fprintf(stderr, "    BEFORE: parent->child=%p\n", parent->child);
+    fprintf(stderr, "    BEFORE: parent->last_child=%p\n", parent->last_child);
+    fprintf(stderr, "    BEFORE: parent->prev=%p\n", parent->prev);
+    fprintf(stderr, "    BEFORE: parent->next=%p\n", parent->next);
+  }
+#endif /* DEBUG > 1 */
+
+ /*
+  * Remove the node from any existing parent...
+  */
+
+  if (node->parent)
+    mxmlRemove(node);
+
+ /*
+  * Reset pointers...
+  */
+
+  node->parent = parent;
+
+  switch (where)
+  {
+    case MXML_ADD_BEFORE :
+        if (!child || child == parent->child || child->parent != parent)
+	{
+	 /*
+	  * Insert as first node under parent...
+	  */
+
+	  node->next = parent->child;
+
+	  if (parent->child)
+	    parent->child->prev = node;
+	  else
+	    parent->last_child = node;
+
+	  parent->child = node;
+	}
+	else
+	{
+	 /*
+	  * Insert node before this child...
+	  */
+
+	  node->next = child;
+	  node->prev = child->prev;
+
+	  if (child->prev)
+	    child->prev->next = node;
+	  else
+	    parent->child = node;
+
+	  child->prev = node;
+	}
+        break;
+
+    case MXML_ADD_AFTER :
+        if (!child || child == parent->last_child || child->parent != parent)
+	{
+	 /*
+	  * Insert as last node under parent...
+	  */
+
+	  node->parent = parent;
+	  node->prev   = parent->last_child;
+
+	  if (parent->last_child)
+	    parent->last_child->next = node;
+	  else
+	    parent->child = node;
+
+	  parent->last_child = node;
+        }
+	else
+	{
+	 /*
+	  * Insert node after this child...
+	  */
+
+	  node->prev = child;
+	  node->next = child->next;
+
+	  if (child->next)
+	    child->next->prev = node;
+	  else
+	    parent->last_child = node;
+
+	  child->next = node;
+	}
+        break;
+  }
+
+#if DEBUG > 1
+  fprintf(stderr, "    AFTER: node->parent=%p\n", node->parent);
+  if (parent)
+  {
+    fprintf(stderr, "    AFTER: parent->child=%p\n", parent->child);
+    fprintf(stderr, "    AFTER: parent->last_child=%p\n", parent->last_child);
+    fprintf(stderr, "    AFTER: parent->prev=%p\n", parent->prev);
+    fprintf(stderr, "    AFTER: parent->next=%p\n", parent->next);
+  }
+#endif /* DEBUG > 1 */
+}
+
+
+/*
+ * 'mxmlDelete()' - Delete a node and all of its children.
+ *
+ * If the specified node has a parent, this function first removes the
+ * node from its parent using the mxmlRemove() function.
+ */
+
+void
+mxmlDelete(mxml_node_t *node)		/* I - Node to delete */
+{
+  int	i;				/* Looping var */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlDelete(node=%p)\n", node);
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return;
+
+ /*
+  * Remove the node from its parent, if any...
+  */
+
+  mxmlRemove(node);
+
+ /*
+  * Delete children...
+  */
+
+  while (node->child)
+    mxmlDelete(node->child);
+
+ /*
+  * Now delete any node data...
+  */
+
+  switch (node->type)
+  {
+    case MXML_ELEMENT :
+        if (node->value.element.name)
+	  free(node->value.element.name);
+
+	if (node->value.element.num_attrs)
+	{
+	  for (i = 0; i < node->value.element.num_attrs; i ++)
+	  {
+	    if (node->value.element.attrs[i].name)
+	      free(node->value.element.attrs[i].name);
+	    if (node->value.element.attrs[i].value)
+	      free(node->value.element.attrs[i].value);
+	  }
+
+          free(node->value.element.attrs);
+	}
+        break;
+    case MXML_INTEGER :
+       /* Nothing to do */
+        break;
+    case MXML_OPAQUE :
+        if (node->value.opaque)
+	  free(node->value.opaque);
+        break;
+    case MXML_REAL :
+       /* Nothing to do */
+        break;
+    case MXML_TEXT :
+        if (node->value.text.string)
+	  free(node->value.text.string);
+        break;
+    case MXML_CUSTOM :
+        if (node->value.custom.data &&
+	    node->value.custom.destroy)
+	  (*(node->value.custom.destroy))(node->value.custom.data);
+	break;
+    default :
+        break;
+  }
+
+ /*
+  * Free this node...
+  */
+
+  free(node);
+}
+
+
+/*
+ * 'mxmlGetRefCount()' - Get the current reference (use) count for a node.
+ *
+ * The initial reference count of new nodes is 1. Use the @link mxmlRetain@
+ * and @link mxmlRelease@ functions to increment and decrement a node's
+ * reference count.
+ *
+ * @since Mini-XML 2.7 at .
+ */
+
+int					/* O - Reference count */
+mxmlGetRefCount(mxml_node_t *node)	/* I - Node */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (0);
+
+ /*
+  * Return the reference count...
+  */
+
+  return (node->ref_count);
+}
+
+
+/*
+ * 'mxmlNewCDATA()' - Create a new CDATA node.
+ *
+ * The new CDATA node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * CDATA node has no parent. The data string must be nul-terminated and
+ * is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewCDATA(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+	     const char  *data)		/* I - Data string */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewCDATA(parent=%p, data=\"%s\")\n",
+          parent, data ? data : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!data)
+    return (NULL);
+
+ /*
+  * Create the node and set the name value...
+  */
+
+  if ((node = mxml_new(parent, MXML_ELEMENT)) != NULL)
+    node->value.element.name = _mxml_strdupf("![CDATA[%s]]", data);
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewCustom()' - Create a new custom data node.
+ *
+ * The new custom node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * element node has no parent. NULL can be passed when the data in the
+ * node is not dynamically allocated or is separately managed.
+ *
+ * @since Mini-XML 2.1@
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewCustom(
+    mxml_node_t              *parent,	/* I - Parent node or MXML_NO_PARENT */
+    void                     *data,	/* I - Pointer to data */
+    mxml_custom_destroy_cb_t destroy)	/* I - Function to destroy data */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewCustom(parent=%p, data=%p, destroy=%p)\n", parent,
+          data, destroy);
+#endif /* DEBUG */
+
+ /*
+  * Create the node and set the value...
+  */
+
+  if ((node = mxml_new(parent, MXML_CUSTOM)) != NULL)
+  {
+    node->value.custom.data    = data;
+    node->value.custom.destroy = destroy;
+  }
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewElement()' - Create a new element node.
+ *
+ * The new element node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * element node has no parent.
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewElement(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+               const char  *name)	/* I - Name of element */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewElement(parent=%p, name=\"%s\")\n", parent,
+          name ? name : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!name)
+    return (NULL);
+
+ /*
+  * Create the node and set the element name...
+  */
+
+  if ((node = mxml_new(parent, MXML_ELEMENT)) != NULL)
+    node->value.element.name = strdup(name);
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewInteger()' - Create a new integer node.
+ *
+ * The new integer node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * integer node has no parent.
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewInteger(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+               int         integer)	/* I - Integer value */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewInteger(parent=%p, integer=%d)\n", parent, integer);
+#endif /* DEBUG */
+
+ /*
+  * Create the node and set the element name...
+  */
+
+  if ((node = mxml_new(parent, MXML_INTEGER)) != NULL)
+    node->value.integer = integer;
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewOpaque()' - Create a new opaque string.
+ *
+ * The new opaque node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * opaque node has no parent. The opaque string must be nul-terminated and
+ * is copied into the new node.
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewOpaque(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+              const char  *opaque)	/* I - Opaque string */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewOpaque(parent=%p, opaque=\"%s\")\n", parent,
+          opaque ? opaque : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!opaque)
+    return (NULL);
+
+ /*
+  * Create the node and set the element name...
+  */
+
+  if ((node = mxml_new(parent, MXML_OPAQUE)) != NULL)
+    node->value.opaque = strdup(opaque);
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewReal()' - Create a new real number node.
+ *
+ * The new real number node is added to the end of the specified parent's
+ * child list. The constant MXML_NO_PARENT can be used to specify that
+ * the new real number node has no parent.
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewReal(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+            double      real)		/* I - Real number value */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewReal(parent=%p, real=%g)\n", parent, real);
+#endif /* DEBUG */
+
+ /*
+  * Create the node and set the element name...
+  */
+
+  if ((node = mxml_new(parent, MXML_REAL)) != NULL)
+    node->value.real = real;
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewText()' - Create a new text fragment node.
+ *
+ * The new text node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * text node has no parent. The whitespace parameter is used to specify
+ * whether leading whitespace is present before the node. The text
+ * string must be nul-terminated and is copied into the new node.
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewText(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+            int         whitespace,	/* I - 1 = leading whitespace, 0 = no whitespace */
+	    const char  *string)	/* I - String */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewText(parent=%p, whitespace=%d, string=\"%s\")\n",
+          parent, whitespace, string ? string : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!string)
+    return (NULL);
+
+ /*
+  * Create the node and set the text value...
+  */
+
+  if ((node = mxml_new(parent, MXML_TEXT)) != NULL)
+  {
+    node->value.text.whitespace = whitespace;
+    node->value.text.string     = strdup(string);
+  }
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlNewTextf()' - Create a new formatted text fragment node.
+ *
+ * The new text node is added to the end of the specified parent's child
+ * list. The constant MXML_NO_PARENT can be used to specify that the new
+ * text node has no parent. The whitespace parameter is used to specify
+ * whether leading whitespace is present before the node. The format
+ * string must be nul-terminated and is formatted into the new node.
+ */
+
+mxml_node_t *				/* O - New node */
+mxmlNewTextf(mxml_node_t *parent,	/* I - Parent node or MXML_NO_PARENT */
+             int         whitespace,	/* I - 1 = leading whitespace, 0 = no whitespace */
+	     const char  *format,	/* I - Printf-style frmat string */
+	     ...)			/* I - Additional args as needed */
+{
+  mxml_node_t	*node;			/* New node */
+  va_list	ap;			/* Pointer to arguments */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "mxmlNewTextf(parent=%p, whitespace=%d, format=\"%s\", ...)\n",
+          parent, whitespace, format ? format : "(null)");
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!format)
+    return (NULL);
+
+ /*
+  * Create the node and set the text value...
+  */
+
+  if ((node = mxml_new(parent, MXML_TEXT)) != NULL)
+  {
+    va_start(ap, format);
+
+    node->value.text.whitespace = whitespace;
+    node->value.text.string     = _mxml_vstrdupf(format, ap);
+
+    va_end(ap);
+  }
+
+  return (node);
+}
+
+
+/*
+ * 'mxmlRemove()' - Remove a node from its parent.
+ *
+ * Does not free memory used by the node - use mxmlDelete() for that.
+ * This function does nothing if the node has no parent.
+ */
+
+void
+mxmlRemove(mxml_node_t *node)		/* I - Node to remove */
+{
+#ifdef DEBUG
+  fprintf(stderr, "mxmlRemove(node=%p)\n", node);
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!node || !node->parent)
+    return;
+
+ /*
+  * Remove from parent...
+  */
+
+#if DEBUG > 1
+  fprintf(stderr, "    BEFORE: node->parent=%p\n", node->parent);
+  if (node->parent)
+  {
+    fprintf(stderr, "    BEFORE: node->parent->child=%p\n", node->parent->child);
+    fprintf(stderr, "    BEFORE: node->parent->last_child=%p\n", node->parent->last_child);
+  }
+  fprintf(stderr, "    BEFORE: node->child=%p\n", node->child);
+  fprintf(stderr, "    BEFORE: node->last_child=%p\n", node->last_child);
+  fprintf(stderr, "    BEFORE: node->prev=%p\n", node->prev);
+  fprintf(stderr, "    BEFORE: node->next=%p\n", node->next);
+#endif /* DEBUG > 1 */
+
+  if (node->prev)
+    node->prev->next = node->next;
+  else
+    node->parent->child = node->next;
+
+  if (node->next)
+    node->next->prev = node->prev;
+  else
+    node->parent->last_child = node->prev;
+
+  node->parent = NULL;
+  node->prev   = NULL;
+  node->next   = NULL;
+
+#if DEBUG > 1
+  fprintf(stderr, "    AFTER: node->parent=%p\n", node->parent);
+  if (node->parent)
+  {
+    fprintf(stderr, "    AFTER: node->parent->child=%p\n", node->parent->child);
+    fprintf(stderr, "    AFTER: node->parent->last_child=%p\n", node->parent->last_child);
+  }
+  fprintf(stderr, "    AFTER: node->child=%p\n", node->child);
+  fprintf(stderr, "    AFTER: node->last_child=%p\n", node->last_child);
+  fprintf(stderr, "    AFTER: node->prev=%p\n", node->prev);
+  fprintf(stderr, "    AFTER: node->next=%p\n", node->next);
+#endif /* DEBUG > 1 */
+}
+
+
+/*
+ * 'mxmlNewXML()' - Create a new XML document tree.
+ *
+ * The "version" argument specifies the version number to put in the
+ * ?xml element node. If NULL, version 1.0 is assumed.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+mxml_node_t *				/* O - New ?xml node */
+mxmlNewXML(const char *version)		/* I - Version number to use */
+{
+  char	element[1024];			/* Element text */
+
+
+  snprintf(element, sizeof(element), "?xml version=\"%s\" encoding=\"utf-8\"?",
+           version ? version : "1.0");
+
+  return (mxmlNewElement(NULL, element));
+}
+
+
+/*
+ * 'mxmlRelease()' - Release a node.
+ *
+ * When the reference count reaches zero, the node (and any children)
+ * is deleted via mxmlDelete().
+ *
+ * @since Mini-XML 2.3@
+ */
+
+int					/* O - New reference count */
+mxmlRelease(mxml_node_t *node)		/* I - Node */
+{
+  if (node)
+  {
+    if ((-- node->ref_count) <= 0)
+    {
+      mxmlDelete(node);
+      return (0);
+    }
+    else
+      return (node->ref_count);
+  }
+  else
+    return (-1);
+}
+
+
+/*
+ * 'mxmlRetain()' - Retain a node.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+int					/* O - New reference count */
+mxmlRetain(mxml_node_t *node)		/* I - Node */
+{
+  if (node)
+    return (++ node->ref_count);
+  else
+    return (-1);
+}
+
+
+/*
+ * 'mxml_new()' - Create a new node.
+ */
+
+static mxml_node_t *			/* O - New node */
+mxml_new(mxml_node_t *parent,		/* I - Parent node */
+         mxml_type_t type)		/* I - Node type */
+{
+  mxml_node_t	*node;			/* New node */
+
+
+#if DEBUG > 1
+  fprintf(stderr, "mxml_new(parent=%p, type=%d)\n", parent, type);
+#endif /* DEBUG > 1 */
+
+ /*
+  * Allocate memory for the node...
+  */
+
+  if ((node = calloc(1, sizeof(mxml_node_t))) == NULL)
+  {
+#if DEBUG > 1
+    fputs("    returning NULL\n", stderr);
+#endif /* DEBUG > 1 */
+
+    return (NULL);
+  }
+
+#if DEBUG > 1
+  fprintf(stderr, "    returning %p\n", node);
+#endif /* DEBUG > 1 */
+
+ /*
+  * Set the node type...
+  */
+
+  node->type      = type;
+  node->ref_count = 1;
+
+ /*
+  * Add to the parent if present...
+  */
+
+  if (parent)
+    mxmlAdd(parent, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, node);
+
+ /*
+  * Return the new node...
+  */
+
+  return (node);
+}
+
+
+/*
+ * End of "$Id: mxml-node.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-private.c b/src/mxml/mxml-2.9/mxml-private.c
new file mode 100644
index 0000000..bec4bbf
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-private.c
@@ -0,0 +1,323 @@
+/*
+ * "$Id: mxml-private.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Private functions for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "mxml-private.h"
+
+
+/*
+ * Some crazy people think that unloading a shared object is a good or safe
+ * thing to do.  Unfortunately, most objects are simply *not* safe to unload
+ * and bad things *will* happen.
+ *
+ * The following mess of conditional code allows us to provide a destructor
+ * function in Mini-XML for our thread-global storage so that it can possibly
+ * be unloaded safely, although since there is no standard way to do so I
+ * can't even provide any guarantees that you can do it safely on all platforms.
+ *
+ * This code currently supports AIX, HP-UX, Linux, Mac OS X, Solaris, and
+ * Windows.  It might work on the BSDs and IRIX, but I haven't tested that.
+ */
+
+#if defined(__sun) || defined(_AIX)
+#  pragma fini(_mxml_fini)
+#  define _MXML_FINI _mxml_fini
+#elif defined(__hpux)
+#  pragma FINI _mxml_fini
+#  define _MXML_FINI _mxml_fini
+#elif defined(__GNUC__) /* Linux and Mac OS X */
+#  define _MXML_FINI __attribute((destructor)) _mxml_fini
+#else
+#  define _MXML_FINI _fini
+#endif /* __sun */
+
+
+/*
+ * 'mxml_error()' - Display an error message.
+ */
+
+void
+mxml_error(const char *format,		/* I - Printf-style format string */
+           ...)				/* I - Additional arguments as needed */
+{
+  va_list	ap;			/* Pointer to arguments */
+  char		s[1024];		/* Message string */
+  _mxml_global_t *global = _mxml_global();
+					/* Global data */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!format)
+    return;
+
+ /*
+  * Format the error message string...
+  */
+
+  va_start(ap, format);
+
+  vsnprintf(s, sizeof(s), format, ap);
+
+  va_end(ap);
+
+ /*
+  * And then display the error message...
+  */
+
+  if (global->error_cb)
+    (*global->error_cb)(s);
+  else
+    fprintf(stderr, "mxml: %s\n", s);
+}
+
+
+/*
+ * 'mxml_ignore_cb()' - Default callback for ignored values.
+ */
+
+mxml_type_t				/* O - Node type */
+mxml_ignore_cb(mxml_node_t *node)	/* I - Current node */
+{
+  (void)node;
+
+  return (MXML_IGNORE);
+}
+
+
+/*
+ * 'mxml_integer_cb()' - Default callback for integer values.
+ */
+
+mxml_type_t				/* O - Node type */
+mxml_integer_cb(mxml_node_t *node)	/* I - Current node */
+{
+  (void)node;
+
+  return (MXML_INTEGER);
+}
+
+
+/*
+ * 'mxml_opaque_cb()' - Default callback for opaque values.
+ */
+
+mxml_type_t				/* O - Node type */
+mxml_opaque_cb(mxml_node_t *node)	/* I - Current node */
+{
+  (void)node;
+
+  return (MXML_OPAQUE);
+}
+
+
+/*
+ * 'mxml_real_cb()' - Default callback for real number values.
+ */
+
+mxml_type_t				/* O - Node type */
+mxml_real_cb(mxml_node_t *node)		/* I - Current node */
+{
+  (void)node;
+
+  return (MXML_REAL);
+}
+
+
+#ifdef HAVE_PTHREAD_H			/**** POSIX threading ****/
+#  include <pthread.h>
+
+static pthread_key_t	_mxml_key = -1;	/* Thread local storage key */
+static pthread_once_t	_mxml_key_once = PTHREAD_ONCE_INIT;
+					/* One-time initialization object */
+static void		_mxml_init(void);
+static void		_mxml_destructor(void *g);
+
+
+/*
+ * '_mxml_destructor()' - Free memory used for globals...
+ */
+
+static void
+_mxml_destructor(void *g)		/* I - Global data */
+{
+  free(g);
+}
+
+
+/*
+ * '_mxml_fini()' - Clean up when unloaded.
+ */
+
+static void
+_MXML_FINI(void)
+{
+  _mxml_global_t	*global;	/* Global data */
+
+
+  if (_mxml_key != -1)
+  {
+    if ((global = (_mxml_global_t *)pthread_getspecific(_mxml_key)) != NULL)
+      _mxml_destructor(global);
+
+    pthread_key_delete(_mxml_key);
+    _mxml_key = -1;
+  }
+}
+
+
+/*
+ * '_mxml_global()' - Get global data.
+ */
+
+_mxml_global_t *			/* O - Global data */
+_mxml_global(void)
+{
+  _mxml_global_t	*global;	/* Global data */
+
+
+  pthread_once(&_mxml_key_once, _mxml_init);
+
+  if ((global = (_mxml_global_t *)pthread_getspecific(_mxml_key)) == NULL)
+  {
+    global = (_mxml_global_t *)calloc(1, sizeof(_mxml_global_t));
+    pthread_setspecific(_mxml_key, global);
+
+    global->num_entity_cbs = 1;
+    global->entity_cbs[0]  = _mxml_entity_cb;
+    global->wrap           = 72;
+  }
+
+  return (global);
+}
+
+
+/*
+ * '_mxml_init()' - Initialize global data...
+ */
+
+static void
+_mxml_init(void)
+{
+  pthread_key_create(&_mxml_key, _mxml_destructor);
+}
+
+
+#elif defined(WIN32) && defined(MXML1_EXPORTS) /**** WIN32 threading ****/
+#  include <windows.h>
+
+static DWORD _mxml_tls_index;		/* Index for global storage */
+
+
+/*
+ * 'DllMain()' - Main entry for library.
+ */
+
+BOOL WINAPI				/* O - Success/failure */
+DllMain(HINSTANCE hinst,		/* I - DLL module handle */
+        DWORD     reason,		/* I - Reason */
+        LPVOID    reserved)		/* I - Unused */
+{
+  _mxml_global_t	*global;	/* Global data */
+
+
+  (void)hinst;
+  (void)reserved;
+
+  switch (reason)
+  {
+    case DLL_PROCESS_ATTACH :		/* Called on library initialization */
+        if ((_mxml_tls_index = TlsAlloc()) == TLS_OUT_OF_INDEXES)
+          return (FALSE);
+        break;
+
+    case DLL_THREAD_DETACH :		/* Called when a thread terminates */
+        if ((global = (_mxml_global_t *)TlsGetValue(_mxml_tls_index)) != NULL)
+          free(global);
+        break;
+
+    case DLL_PROCESS_DETACH :		/* Called when library is unloaded */
+        if ((global = (_mxml_global_t *)TlsGetValue(_mxml_tls_index)) != NULL)
+          free(global);
+
+        TlsFree(_mxml_tls_index);
+        break;
+
+    default:
+        break;
+  }
+
+  return (TRUE);
+}
+
+
+/*
+ * '_mxml_global()' - Get global data.
+ */
+
+_mxml_global_t *			/* O - Global data */
+_mxml_global(void)
+{
+  _mxml_global_t	*global;	/* Global data */
+
+
+  if ((global = (_mxml_global_t *)TlsGetValue(_mxml_tls_index)) == NULL)
+  {
+    global = (_mxml_global_t *)calloc(1, sizeof(_mxml_global_t));
+
+    global->num_entity_cbs = 1;
+    global->entity_cbs[0]  = _mxml_entity_cb;
+    global->wrap           = 72;
+
+    TlsSetValue(_mxml_tls_index, (LPVOID)global);
+  }
+
+  return (global);
+}
+
+
+#else					/**** No threading ****/
+/*
+ * '_mxml_global()' - Get global data.
+ */
+
+_mxml_global_t *			/* O - Global data */
+_mxml_global(void)
+{
+  static _mxml_global_t	global =	/* Global data */
+  {
+    NULL,				/* error_cb */
+    1,					/* num_entity_cbs */
+    { _mxml_entity_cb },		/* entity_cbs */
+    72,					/* wrap */
+    NULL,				/* custom_load_cb */
+    NULL				/* custom_save_cb */
+  };
+
+
+  return (&global);
+}
+#endif /* HAVE_PTHREAD_H */
+
+
+/*
+ * End of "$Id: mxml-private.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-private.h b/src/mxml/mxml-2.9/mxml-private.h
new file mode 100644
index 0000000..c5e4e6b
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-private.h
@@ -0,0 +1,50 @@
+/*
+ * "$Id: mxml-private.h 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Private definitions for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * Global, per-thread data...
+ */
+
+typedef struct _mxml_global_s
+{
+  void	(*error_cb)(const char *);
+  int	num_entity_cbs;
+  int	(*entity_cbs[100])(const char *name);
+  int	wrap;
+  mxml_custom_load_cb_t	custom_load_cb;
+  mxml_custom_save_cb_t	custom_save_cb;
+} _mxml_global_t;
+
+
+/*
+ * Functions...
+ */
+
+extern _mxml_global_t	*_mxml_global(void);
+extern int		_mxml_entity_cb(const char *name);
+
+
+/*
+ * End of "$Id: mxml-private.h 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-search.c b/src/mxml/mxml-2.9/mxml-search.c
new file mode 100644
index 0000000..313a52f
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-search.c
@@ -0,0 +1,280 @@
+/*
+ * "$Id: mxml-search.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Search/navigation functions for Mini-XML, a small XML-like file
+ * parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * 'mxmlFindElement()' - Find the named element.
+ *
+ * The search is constrained by the name, attribute name, and value; any
+ * NULL names or values are treated as wildcards, so different kinds of
+ * searches can be implemented by looking for all elements of a given name
+ * or all elements with a specific attribute. The descend argument determines
+ * whether the search descends into child nodes; normally you will use
+ * MXML_DESCEND_FIRST for the initial search and MXML_NO_DESCEND to find
+ * additional direct descendents of the node. The top node argument
+ * constrains the search to a particular node's children.
+ */
+
+mxml_node_t *				/* O - Element node or NULL */
+mxmlFindElement(mxml_node_t *node,	/* I - Current node */
+                mxml_node_t *top,	/* I - Top node */
+                const char  *name,	/* I - Element name or NULL for any */
+		const char  *attr,	/* I - Attribute name, or NULL for none */
+		const char  *value,	/* I - Attribute value, or NULL for any */
+		int         descend)	/* I - Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST */
+{
+  const char	*temp;			/* Current attribute value */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!node || !top || (!attr && value))
+    return (NULL);
+
+ /*
+  * Start with the next node...
+  */
+
+  node = mxmlWalkNext(node, top, descend);
+
+ /*
+  * Loop until we find a matching element...
+  */
+
+  while (node != NULL)
+  {
+   /*
+    * See if this node matches...
+    */
+
+    if (node->type == MXML_ELEMENT &&
+        node->value.element.name &&
+	(!name || !strcmp(node->value.element.name, name)))
+    {
+     /*
+      * See if we need to check for an attribute...
+      */
+
+      if (!attr)
+        return (node);			/* No attribute search, return it... */
+
+     /*
+      * Check for the attribute...
+      */
+
+      if ((temp = mxmlElementGetAttr(node, attr)) != NULL)
+      {
+       /*
+        * OK, we have the attribute, does it match?
+	*/
+
+	if (!value || !strcmp(value, temp))
+	  return (node);		/* Yes, return it... */
+      }
+    }
+
+   /*
+    * No match, move on to the next node...
+    */
+
+    if (descend == MXML_DESCEND)
+      node = mxmlWalkNext(node, top, MXML_DESCEND);
+    else
+      node = node->next;
+  }
+
+  return (NULL);
+}
+
+
+/*
+ * 'mxmlFindPath()' - Find a node with the given path.
+ *
+ * The "path" is a slash-separated list of element names. The name "*" is
+ * considered a wildcard for one or more levels of elements.  For example,
+ * "foo/one/two", "bar/two/one", "*\/one", and so forth.
+ *
+ * The first child node of the found node is returned if the given node has
+ * children and the first child is a value node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+mxml_node_t *				/* O - Found node or NULL */
+mxmlFindPath(mxml_node_t *top,		/* I - Top node */
+	     const char  *path)		/* I - Path to element */
+{
+  mxml_node_t	*node;			/* Current node */
+  char		element[256];		/* Current element name */
+  const char	*pathsep;		/* Separator in path */
+  int		descend;		/* mxmlFindElement option */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!top || !path || !*path)
+    return (NULL);
+
+ /*
+  * Search each element in the path...
+  */
+
+  node = top;
+  while (*path)
+  {
+   /*
+    * Handle wildcards...
+    */
+
+    if (!strncmp(path, "*/", 2))
+    {
+      path += 2;
+      descend = MXML_DESCEND;
+    }
+    else
+      descend = MXML_DESCEND_FIRST;
+
+   /*
+    * Get the next element in the path...
+    */
+
+    if ((pathsep = strchr(path, '/')) == NULL)
+      pathsep = path + strlen(path);
+
+    if (pathsep == path || (pathsep - path) >= sizeof(element))
+      return (NULL);
+
+    memcpy(element, path, pathsep - path);
+    element[pathsep - path] = '\0';
+
+    if (*pathsep)
+      path = pathsep + 1;
+    else
+      path = pathsep;
+
+   /*
+    * Search for the element...
+    */
+
+    if ((node = mxmlFindElement(node, node, element, NULL, NULL,
+                                descend)) == NULL)
+      return (NULL);
+  }
+
+ /*
+  * If we get this far, return the node or its first child...
+  */
+
+  if (node->child && node->child->type != MXML_ELEMENT)
+    return (node->child);
+  else
+    return (node);
+}
+
+
+/*
+ * 'mxmlWalkNext()' - Walk to the next logical node in the tree.
+ *
+ * The descend argument controls whether the first child is considered
+ * to be the next node. The top node argument constrains the walk to
+ * the node's children.
+ */
+
+mxml_node_t *				/* O - Next node or NULL */
+mxmlWalkNext(mxml_node_t *node,		/* I - Current node */
+             mxml_node_t *top,		/* I - Top node */
+             int         descend)	/* I - Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST */
+{
+  if (!node)
+    return (NULL);
+  else if (node->child && descend)
+    return (node->child);
+  else if (node == top)
+    return (NULL);
+  else if (node->next)
+    return (node->next);
+  else if (node->parent && node->parent != top)
+  {
+    node = node->parent;
+
+    while (!node->next)
+      if (node->parent == top || !node->parent)
+        return (NULL);
+      else
+        node = node->parent;
+
+    return (node->next);
+  }
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'mxmlWalkPrev()' - Walk to the previous logical node in the tree.
+ *
+ * The descend argument controls whether the previous node's last child
+ * is considered to be the previous node. The top node argument constrains
+ * the walk to the node's children.
+ */
+
+mxml_node_t *				/* O - Previous node or NULL */
+mxmlWalkPrev(mxml_node_t *node,		/* I - Current node */
+             mxml_node_t *top,		/* I - Top node */
+             int         descend)	/* I - Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST */
+{
+  if (!node || node == top)
+    return (NULL);
+  else if (node->prev)
+  {
+    if (node->prev->last_child && descend)
+    {
+     /*
+      * Find the last child under the previous node...
+      */
+
+      node = node->prev->last_child;
+
+      while (node->last_child)
+        node = node->last_child;
+
+      return (node);
+    }
+    else
+      return (node->prev);
+  }
+  else if (node->parent != top)
+    return (node->parent);
+  else
+    return (NULL);
+}
+
+
+/*
+ * End of "$Id: mxml-search.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-set.c b/src/mxml/mxml-2.9/mxml-set.c
new file mode 100644
index 0000000..16d4bf1
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-set.c
@@ -0,0 +1,337 @@
+/*
+ * "$Id: mxml-set.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Node set functions for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+
+
+/*
+ * 'mxmlSetCDATA()' - Set the element name of a CDATA node.
+ *
+ * The node is not changed if it (or its first child) is not a CDATA element node.
+ *
+ * @since Mini-XML 2.3@
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetCDATA(mxml_node_t *node,		/* I - Node to set */
+             const char  *data)		/* I - New data string */
+{
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      strncmp(node->value.element.name, "![CDATA[", 8) &&
+      node->child && node->child->type == MXML_ELEMENT &&
+      !strncmp(node->child->value.element.name, "![CDATA[", 8))
+    node = node->child;
+
+  if (!node || node->type != MXML_ELEMENT || !data ||
+      strncmp(node->value.element.name, "![CDATA[", 8))
+    return (-1);
+
+ /*
+  * Free any old element value and set the new value...
+  */
+
+  if (node->value.element.name)
+    free(node->value.element.name);
+
+  node->value.element.name = _mxml_strdupf("![CDATA[%s]]", data);
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetCustom()' - Set the data and destructor of a custom data node.
+ *
+ * The node is not changed if it (or its first child) is not a custom node.
+ *
+ * @since Mini-XML 2.1@
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetCustom(
+    mxml_node_t              *node,	/* I - Node to set */
+    void                     *data,	/* I - New data pointer */
+    mxml_custom_destroy_cb_t destroy)	/* I - New destructor function */
+{
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      node->child && node->child->type == MXML_CUSTOM)
+    node = node->child;
+
+  if (!node || node->type != MXML_CUSTOM)
+    return (-1);
+
+ /*
+  * Free any old element value and set the new value...
+  */
+
+  if (node->value.custom.data && node->value.custom.destroy)
+    (*(node->value.custom.destroy))(node->value.custom.data);
+
+  node->value.custom.data    = data;
+  node->value.custom.destroy = destroy;
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetElement()' - Set the name of an element node.
+ *
+ * The node is not changed if it is not an element node.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetElement(mxml_node_t *node,	/* I - Node to set */
+               const char  *name)	/* I - New name string */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node || node->type != MXML_ELEMENT || !name)
+    return (-1);
+
+ /*
+  * Free any old element value and set the new value...
+  */
+
+  if (node->value.element.name)
+    free(node->value.element.name);
+
+  node->value.element.name = strdup(name);
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetInteger()' - Set the value of an integer node.
+ *
+ * The node is not changed if it (or its first child) is not an integer node.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetInteger(mxml_node_t *node,	/* I - Node to set */
+               int         integer)	/* I - Integer value */
+{
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      node->child && node->child->type == MXML_INTEGER)
+    node = node->child;
+
+  if (!node || node->type != MXML_INTEGER)
+    return (-1);
+
+ /*
+  * Set the new value and return...
+  */
+
+  node->value.integer = integer;
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetOpaque()' - Set the value of an opaque node.
+ *
+ * The node is not changed if it (or its first child) is not an opaque node.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetOpaque(mxml_node_t *node,	/* I - Node to set */
+              const char  *opaque)	/* I - Opaque string */
+{
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      node->child && node->child->type == MXML_OPAQUE)
+    node = node->child;
+
+  if (!node || node->type != MXML_OPAQUE || !opaque)
+    return (-1);
+
+ /*
+  * Free any old opaque value and set the new value...
+  */
+
+  if (node->value.opaque)
+    free(node->value.opaque);
+
+  node->value.opaque = strdup(opaque);
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetReal()' - Set the value of a real number node.
+ *
+ * The node is not changed if it (or its first child) is not a real number node.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetReal(mxml_node_t *node,		/* I - Node to set */
+            double      real)		/* I - Real number value */
+{
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      node->child && node->child->type == MXML_REAL)
+    node = node->child;
+
+  if (!node || node->type != MXML_REAL)
+    return (-1);
+
+ /*
+  * Set the new value and return...
+  */
+
+  node->value.real = real;
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetText()' - Set the value of a text node.
+ *
+ * The node is not changed if it (or its first child) is not a text node.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetText(mxml_node_t *node,		/* I - Node to set */
+            int         whitespace,	/* I - 1 = leading whitespace, 0 = no whitespace */
+	    const char  *string)	/* I - String */
+{
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      node->child && node->child->type == MXML_TEXT)
+    node = node->child;
+
+  if (!node || node->type != MXML_TEXT || !string)
+    return (-1);
+
+ /*
+  * Free any old string value and set the new value...
+  */
+
+  if (node->value.text.string)
+    free(node->value.text.string);
+
+  node->value.text.whitespace = whitespace;
+  node->value.text.string     = strdup(string);
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetTextf()' - Set the value of a text node to a formatted string.
+ *
+ * The node is not changed if it (or its first child) is not a text node.
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetTextf(mxml_node_t *node,		/* I - Node to set */
+             int         whitespace,	/* I - 1 = leading whitespace, 0 = no whitespace */
+             const char  *format,	/* I - Printf-style format string */
+	     ...)			/* I - Additional arguments as needed */
+{
+  va_list	ap;			/* Pointer to arguments */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (node && node->type == MXML_ELEMENT &&
+      node->child && node->child->type == MXML_TEXT)
+    node = node->child;
+
+  if (!node || node->type != MXML_TEXT || !format)
+    return (-1);
+
+ /*
+  * Free any old string value and set the new value...
+  */
+
+  if (node->value.text.string)
+    free(node->value.text.string);
+
+  va_start(ap, format);
+
+  node->value.text.whitespace = whitespace;
+  node->value.text.string     = _mxml_strdupf(format, ap);
+
+  va_end(ap);
+
+  return (0);
+}
+
+
+/*
+ * 'mxmlSetUserData()' - Set the user data pointer for a node.
+ *
+ * @since Mini-XML 2.7@
+ */
+
+int					/* O - 0 on success, -1 on failure */
+mxmlSetUserData(mxml_node_t *node,	/* I - Node to set */
+                void        *data)	/* I - User data pointer */
+{
+ /*
+  * Range check input...
+  */
+
+  if (!node)
+    return (-1);
+
+ /*
+  * Set the user data pointer and return...
+  */
+
+  node->user_data = data;
+  return (0);
+}
+
+
+/*
+ * End of "$Id: mxml-set.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml-string.c b/src/mxml/mxml-2.9/mxml-string.c
new file mode 100644
index 0000000..9d5b58e
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml-string.c
@@ -0,0 +1,469 @@
+/*
+ * "$Id: mxml-string.c 454 2014-01-05 03:25:07Z msweet $"
+ *
+ * String functions for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+
+
+/*
+ * The va_copy macro is part of C99, but many compilers don't implement it.
+ * Provide a "direct assignment" implmentation when va_copy isn't defined...
+ */
+
+#ifndef va_copy
+#  ifdef __va_copy
+#    define va_copy(dst,src) __va_copy(dst,src)
+#  else
+#    define va_copy(dst,src) memcpy(&dst, src, sizeof(va_list))
+#  endif /* __va_copy */
+#endif /* va_copy */
+
+
+#ifndef HAVE_SNPRINTF
+/*
+ * '_mxml_snprintf()' - Format a string.
+ */
+
+int					/* O - Number of bytes formatted */
+_mxml_snprintf(char       *buffer,	/* I - Output buffer */
+               size_t     bufsize,	/* I - Size of output buffer */
+	       const char *format,	/* I - Printf-style format string */
+	       ...)			/* I - Additional arguments as needed */
+{
+  va_list	ap;			/* Argument list */
+  int		bytes;			/* Number of bytes formatted */
+
+
+  va_start(ap, format);
+  bytes = vsnprintf(buffer, bufsize, format, ap);
+  va_end(ap);
+
+  return (bytes);
+}
+#endif /* !HAVE_SNPRINTF */
+
+
+/*
+ * '_mxml_strdup()' - Duplicate a string.
+ */
+
+#ifndef HAVE_STRDUP
+char *					/* O - New string pointer */
+_mxml_strdup(const char *s)		/* I - String to duplicate */
+{
+  char	*t;				/* New string pointer */
+
+
+  if (s == NULL)
+    return (NULL);
+
+  if ((t = malloc(strlen(s) + 1)) == NULL)
+    return (NULL);
+
+  return (strcpy(t, s));
+}
+#endif /* !HAVE_STRDUP */
+
+
+/*
+ * '_mxml_strdupf()' - Format and duplicate a string.
+ */
+
+char *					/* O - New string pointer */
+_mxml_strdupf(const char *format,	/* I - Printf-style format string */
+              ...)			/* I - Additional arguments as needed */
+{
+  va_list	ap;			/* Pointer to additional arguments */
+  char		*s;			/* Pointer to formatted string */
+
+
+ /*
+  * Get a pointer to the additional arguments, format the string,
+  * and return it...
+  */
+
+  va_start(ap, format);
+  s = _mxml_vstrdupf(format, ap);
+  va_end(ap);
+
+  return (s);
+}
+
+
+#ifndef HAVE_VSNPRINTF
+/*
+ * '_mxml_vsnprintf()' - Format a string into a fixed size buffer.
+ */
+
+int					/* O - Number of bytes formatted */
+_mxml_vsnprintf(char       *buffer,	/* O - Output buffer */
+                size_t     bufsize,	/* O - Size of output buffer */
+		const char *format,	/* I - Printf-style format string */
+ 		va_list    ap)		/* I - Pointer to additional arguments */
+{
+  char		*bufptr,		/* Pointer to position in buffer */
+		*bufend,		/* Pointer to end of buffer */
+		sign,			/* Sign of format width */
+		size,			/* Size character (h, l, L) */
+		type;			/* Format type character */
+  int		width,			/* Width of field */
+		prec;			/* Number of characters of precision */
+  char		tformat[100],		/* Temporary format string for sprintf() */
+		*tptr,			/* Pointer into temporary format */
+		temp[1024];		/* Buffer for formatted numbers */
+  char		*s;			/* Pointer to string */
+  int		slen;			/* Length of string */
+  int		bytes;			/* Total number of bytes needed */
+
+
+ /*
+  * Loop through the format string, formatting as needed...
+  */
+
+  bufptr = buffer;
+  bufend = buffer + bufsize - 1;
+  bytes  = 0;
+
+  while (*format)
+  {
+    if (*format == '%')
+    {
+      tptr = tformat;
+      *tptr++ = *format++;
+
+      if (*format == '%')
+      {
+        if (bufptr && bufptr < bufend)
+          *bufptr++ = *format;
+        bytes ++;
+        format ++;
+	continue;
+      }
+      else if (strchr(" -+#\'", *format))
+      {
+        *tptr++ = *format;
+        sign = *format++;
+      }
+      else
+        sign = 0;
+
+      if (*format == '*')
+      {
+       /*
+        * Get width from argument...
+	*/
+
+	format ++;
+	width = va_arg(ap, int);
+
+	snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);
+	tptr += strlen(tptr);
+      }
+      else
+      {
+	width = 0;
+
+	while (isdigit(*format & 255))
+	{
+	  if (tptr < (tformat + sizeof(tformat) - 1))
+	    *tptr++ = *format;
+
+	  width = width * 10 + *format++ - '0';
+	}
+      }
+
+      if (*format == '.')
+      {
+	if (tptr < (tformat + sizeof(tformat) - 1))
+	  *tptr++ = *format;
+
+        format ++;
+
+        if (*format == '*')
+	{
+         /*
+	  * Get precision from argument...
+	  */
+
+	  format ++;
+	  prec = va_arg(ap, int);
+
+	  snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);
+	  tptr += strlen(tptr);
+	}
+	else
+	{
+	  prec = 0;
+
+	  while (isdigit(*format & 255))
+	  {
+	    if (tptr < (tformat + sizeof(tformat) - 1))
+	      *tptr++ = *format;
+
+	    prec = prec * 10 + *format++ - '0';
+	  }
+	}
+      }
+      else
+        prec = -1;
+
+      if (*format == 'l' && format[1] == 'l')
+      {
+        size = 'L';
+
+	if (tptr < (tformat + sizeof(tformat) - 2))
+	{
+	  *tptr++ = 'l';
+	  *tptr++ = 'l';
+	}
+
+	format += 2;
+      }
+      else if (*format == 'h' || *format == 'l' || *format == 'L')
+      {
+	if (tptr < (tformat + sizeof(tformat) - 1))
+	  *tptr++ = *format;
+
+        size = *format++;
+      }
+
+      if (!*format)
+        break;
+
+      if (tptr < (tformat + sizeof(tformat) - 1))
+        *tptr++ = *format;
+
+      type  = *format++;
+      *tptr = '\0';
+
+      switch (type)
+      {
+	case 'E' : /* Floating point formats */
+	case 'G' :
+	case 'e' :
+	case 'f' :
+	case 'g' :
+	    if ((width + 2) > sizeof(temp))
+	      break;
+
+	    sprintf(temp, tformat, va_arg(ap, double));
+
+            bytes += strlen(temp);
+
+            if (bufptr)
+	    {
+	      if ((bufptr + strlen(temp)) > bufend)
+	      {
+		strncpy(bufptr, temp, (size_t)(bufend - bufptr));
+		bufptr = bufend;
+	      }
+	      else
+	      {
+		strcpy(bufptr, temp);
+		bufptr += strlen(temp);
+	      }
+	    }
+	    break;
+
+        case 'B' : /* Integer formats */
+	case 'X' :
+	case 'b' :
+        case 'd' :
+	case 'i' :
+	case 'o' :
+	case 'u' :
+	case 'x' :
+	    if ((width + 2) > sizeof(temp))
+	      break;
+
+#ifdef HAVE_LONG_LONG
+	    if (size == 'L')
+	      sprintf(temp, tformat, va_arg(ap, long long));
+	    else
+#endif /* HAVE_LONG_LONG */
+	    sprintf(temp, tformat, va_arg(ap, int));
+
+            bytes += strlen(temp);
+
+	    if (bufptr)
+	    {
+	      if ((bufptr + strlen(temp)) > bufend)
+	      {
+		strncpy(bufptr, temp, (size_t)(bufend - bufptr));
+		bufptr = bufend;
+	      }
+	      else
+	      {
+		strcpy(bufptr, temp);
+		bufptr += strlen(temp);
+	      }
+	    }
+	    break;
+
+	case 'p' : /* Pointer value */
+	    if ((width + 2) > sizeof(temp))
+	      break;
+
+	    sprintf(temp, tformat, va_arg(ap, void *));
+
+            bytes += strlen(temp);
+
+	    if (bufptr)
+	    {
+	      if ((bufptr + strlen(temp)) > bufend)
+	      {
+		strncpy(bufptr, temp, (size_t)(bufend - bufptr));
+		bufptr = bufend;
+	      }
+	      else
+	      {
+		strcpy(bufptr, temp);
+		bufptr += strlen(temp);
+	      }
+	    }
+	    break;
+
+        case 'c' : /* Character or character array */
+	    bytes += width;
+
+	    if (bufptr)
+	    {
+	      if (width <= 1)
+	        *bufptr++ = va_arg(ap, int);
+	      else
+	      {
+		if ((bufptr + width) > bufend)
+		  width = bufend - bufptr;
+
+		memcpy(bufptr, va_arg(ap, char *), (size_t)width);
+		bufptr += width;
+	      }
+	    }
+	    break;
+
+	case 's' : /* String */
+	    if ((s = va_arg(ap, char *)) == NULL)
+	      s = "(null)";
+
+	    slen = strlen(s);
+	    if (slen > width && prec != width)
+	      width = slen;
+
+            bytes += width;
+
+	    if (bufptr)
+	    {
+	      if ((bufptr + width) > bufend)
+	        width = bufend - bufptr;
+
+              if (slen > width)
+	        slen = width;
+
+	      if (sign == '-')
+	      {
+		strncpy(bufptr, s, (size_t)slen);
+		memset(bufptr + slen, ' ', (size_t)(width - slen));
+	      }
+	      else
+	      {
+		memset(bufptr, ' ', (size_t)(width - slen));
+		strncpy(bufptr + width - slen, s, (size_t)slen);
+	      }
+
+	      bufptr += width;
+	    }
+	    break;
+
+	case 'n' : /* Output number of chars so far */
+	    *(va_arg(ap, int *)) = bytes;
+	    break;
+      }
+    }
+    else
+    {
+      bytes ++;
+
+      if (bufptr && bufptr < bufend)
+        *bufptr++ = *format;
+
+      format ++;
+    }
+  }
+
+ /*
+  * Nul-terminate the string and return the number of characters needed.
+  */
+
+  *bufptr = '\0';
+
+  return (bytes);
+}
+#endif /* !HAVE_VSNPRINTF */
+
+
+/*
+ * '_mxml_vstrdupf()' - Format and duplicate a string.
+ */
+
+char *					/* O - New string pointer */
+_mxml_vstrdupf(const char *format,	/* I - Printf-style format string */
+               va_list    ap)		/* I - Pointer to additional arguments */
+{
+  int		bytes;			/* Number of bytes required */
+  char		*buffer,		/* String buffer */
+		temp[256];		/* Small buffer for first vsnprintf */
+  va_list	apcopy;			/* Copy of argument list */
+
+
+ /*
+  * First format with a tiny buffer; this will tell us how many bytes are
+  * needed...
+  */
+
+  va_copy(apcopy, ap);
+  bytes = vsnprintf(temp, sizeof(temp), format, apcopy);
+
+  if (bytes < sizeof(temp))
+  {
+   /*
+    * Hey, the formatted string fits in the tiny buffer, so just dup that...
+    */
+
+    return (strdup(temp));
+  }
+
+ /*
+  * Allocate memory for the whole thing and reformat to the new, larger
+  * buffer...
+  */
+
+  if ((buffer = calloc(1, bytes + 1)) != NULL)
+    vsnprintf(buffer, bytes + 1, format, ap);
+
+ /*
+  * Return the new string...
+  */
+
+  return (buffer);
+}
+
+
+/*
+ * End of "$Id: mxml-string.c 454 2014-01-05 03:25:07Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml.h b/src/mxml/mxml-2.9/mxml.h
new file mode 100644
index 0000000..bba5fd2
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml.h
@@ -0,0 +1,332 @@
+/*
+ * "$Id: mxml.h 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Header file for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Prevent multiple inclusion...
+ */
+
+#ifndef _mxml_h_
+#  define _mxml_h_
+
+/*
+ * Include necessary headers...
+ */
+
+#  include <stdio.h>
+#  include <stdlib.h>
+#  include <string.h>
+#  include <ctype.h>
+#  include <errno.h>
+
+
+/*
+ * Constants...
+ */
+
+#  define MXML_MAJOR_VERSION	2	/* Major version number */
+#  define MXML_MINOR_VERSION	8	/* Minor version number */
+
+#  define MXML_TAB		8	/* Tabs every N columns */
+
+#  define MXML_NO_CALLBACK	0	/* Don't use a type callback */
+#  define MXML_INTEGER_CALLBACK	mxml_integer_cb
+					/* Treat all data as integers */
+#  define MXML_OPAQUE_CALLBACK	mxml_opaque_cb
+					/* Treat all data as opaque */
+#  define MXML_REAL_CALLBACK	mxml_real_cb
+					/* Treat all data as real numbers */
+#  define MXML_TEXT_CALLBACK	0	/* Treat all data as text */
+#  define MXML_IGNORE_CALLBACK	mxml_ignore_cb
+					/* Ignore all non-element content */
+
+#  define MXML_NO_PARENT	0	/* No parent for the node */
+
+#  define MXML_DESCEND		1	/* Descend when finding/walking */
+#  define MXML_NO_DESCEND	0	/* Don't descend when finding/walking */
+#  define MXML_DESCEND_FIRST	-1	/* Descend for first find */
+
+#  define MXML_WS_BEFORE_OPEN	0	/* Callback for before open tag */
+#  define MXML_WS_AFTER_OPEN	1	/* Callback for after open tag */
+#  define MXML_WS_BEFORE_CLOSE	2	/* Callback for before close tag */
+#  define MXML_WS_AFTER_CLOSE	3	/* Callback for after close tag */
+
+#  define MXML_ADD_BEFORE	0	/* Add node before specified node */
+#  define MXML_ADD_AFTER	1	/* Add node after specified node */
+#  define MXML_ADD_TO_PARENT	NULL	/* Add node relative to parent */
+
+
+/*
+ * Data types...
+ */
+
+typedef enum mxml_sax_event_e		/**** SAX event type. ****/
+{
+  MXML_SAX_CDATA,			/* CDATA node */
+  MXML_SAX_COMMENT,			/* Comment node */
+  MXML_SAX_DATA,			/* Data node */
+  MXML_SAX_DIRECTIVE,			/* Processing directive node */
+  MXML_SAX_ELEMENT_CLOSE,		/* Element closed */
+  MXML_SAX_ELEMENT_OPEN			/* Element opened */
+} mxml_sax_event_t;
+
+typedef enum mxml_type_e		/**** The XML node type. ****/
+{
+  MXML_IGNORE = -1,			/* Ignore/throw away node @since Mini-XML 2.3@ */
+  MXML_ELEMENT,				/* XML element with attributes */
+  MXML_INTEGER,				/* Integer value */
+  MXML_OPAQUE,				/* Opaque string */
+  MXML_REAL,				/* Real value */
+  MXML_TEXT,				/* Text fragment */
+  MXML_CUSTOM				/* Custom data @since Mini-XML 2.1@ */
+} mxml_type_t;
+
+typedef void (*mxml_custom_destroy_cb_t)(void *);
+					/**** Custom data destructor ****/
+
+typedef void (*mxml_error_cb_t)(const char *);
+					/**** Error callback function ****/
+
+typedef struct mxml_attr_s		/**** An XML element attribute value. @private@ ****/
+{
+  char			*name;		/* Attribute name */
+  char			*value;		/* Attribute value */
+} mxml_attr_t;
+
+typedef struct mxml_element_s		/**** An XML element value. @private@ ****/
+{
+  char			*name;		/* Name of element */
+  int			num_attrs;	/* Number of attributes */
+  mxml_attr_t		*attrs;		/* Attributes */
+} mxml_element_t;
+
+typedef struct mxml_text_s		/**** An XML text value. @private@ ****/
+{
+  int			whitespace;	/* Leading whitespace? */
+  char			*string;	/* Fragment string */
+} mxml_text_t;
+
+typedef struct mxml_custom_s		/**** An XML custom value. @private@ ****/
+{
+  void			*data;		/* Pointer to (allocated) custom data */
+  mxml_custom_destroy_cb_t destroy;	/* Pointer to destructor function */
+} mxml_custom_t;
+
+typedef union mxml_value_u		/**** An XML node value. @private@ ****/
+{
+  mxml_element_t	element;	/* Element */
+  int			integer;	/* Integer number */
+  char			*opaque;	/* Opaque string */
+  double		real;		/* Real number */
+  mxml_text_t		text;		/* Text fragment */
+  mxml_custom_t		custom;		/* Custom data @since Mini-XML 2.1@ */
+} mxml_value_t;
+
+struct mxml_node_s			/**** An XML node. @private@ ****/
+{
+  mxml_type_t		type;		/* Node type */
+  struct mxml_node_s	*next;		/* Next node under same parent */
+  struct mxml_node_s	*prev;		/* Previous node under same parent */
+  struct mxml_node_s	*parent;	/* Parent node */
+  struct mxml_node_s	*child;		/* First child node */
+  struct mxml_node_s	*last_child;	/* Last child node */
+  mxml_value_t		value;		/* Node value */
+  int			ref_count;	/* Use count */
+  void			*user_data;	/* User data */
+};
+
+typedef struct mxml_node_s mxml_node_t;	/**** An XML node. ****/
+
+struct mxml_index_s			 /**** An XML node index. @private@ ****/
+{
+  char			*attr;		/* Attribute used for indexing or NULL */
+  int			num_nodes;	/* Number of nodes in index */
+  int			alloc_nodes;	/* Allocated nodes in index */
+  int			cur_node;	/* Current node */
+  mxml_node_t		**nodes;	/* Node array */
+};
+
+typedef struct mxml_index_s mxml_index_t;
+					/**** An XML node index. ****/
+
+typedef int (*mxml_custom_load_cb_t)(mxml_node_t *, const char *);
+					/**** Custom data load callback function ****/
+
+typedef char *(*mxml_custom_save_cb_t)(mxml_node_t *);
+					/**** Custom data save callback function ****/
+
+typedef int (*mxml_entity_cb_t)(const char *);
+					/**** Entity callback function */
+
+typedef mxml_type_t (*mxml_load_cb_t)(mxml_node_t *);
+					/**** Load callback function ****/
+
+typedef const char *(*mxml_save_cb_t)(mxml_node_t *, int);
+					/**** Save callback function ****/
+
+typedef void (*mxml_sax_cb_t)(mxml_node_t *, mxml_sax_event_t, void *);
+					/**** SAX callback function ****/
+
+
+/*
+ * C++ support...
+ */
+
+#  ifdef __cplusplus
+extern "C" {
+#  endif /* __cplusplus */
+
+/*
+ * Prototypes...
+ */
+
+extern void		mxmlAdd(mxml_node_t *parent, int where,
+			        mxml_node_t *child, mxml_node_t *node);
+extern void		mxmlDelete(mxml_node_t *node);
+extern void		mxmlElementDeleteAttr(mxml_node_t *node,
+			                      const char *name);
+extern const char	*mxmlElementGetAttr(mxml_node_t *node, const char *name);
+extern void		mxmlElementSetAttr(mxml_node_t *node, const char *name,
+			                   const char *value);
+extern void		mxmlElementSetAttrf(mxml_node_t *node, const char *name,
+			                    const char *format, ...)
+#    ifdef __GNUC__
+__attribute__ ((__format__ (__printf__, 3, 4)))
+#    endif /* __GNUC__ */
+;
+extern int		mxmlEntityAddCallback(mxml_entity_cb_t cb);
+extern const char	*mxmlEntityGetName(int val);
+extern int		mxmlEntityGetValue(const char *name);
+extern void		mxmlEntityRemoveCallback(mxml_entity_cb_t cb);
+extern mxml_node_t	*mxmlFindElement(mxml_node_t *node, mxml_node_t *top,
+			                 const char *name, const char *attr,
+					 const char *value, int descend);
+extern mxml_node_t	*mxmlFindPath(mxml_node_t *node, const char *path);
+extern const char	*mxmlGetCDATA(mxml_node_t *node);
+extern const void	*mxmlGetCustom(mxml_node_t *node);
+extern const char	*mxmlGetElement(mxml_node_t *node);
+extern mxml_node_t	*mxmlGetFirstChild(mxml_node_t *node);
+extern int		mxmlGetInteger(mxml_node_t *node);
+extern mxml_node_t	*mxmlGetLastChild(mxml_node_t *node);
+extern mxml_node_t	*mxmlGetNextSibling(mxml_node_t *node);
+extern const char	*mxmlGetOpaque(mxml_node_t *node);
+extern mxml_node_t	*mxmlGetParent(mxml_node_t *node);
+extern mxml_node_t	*mxmlGetPrevSibling(mxml_node_t *node);
+extern double		mxmlGetReal(mxml_node_t *node);
+extern int		mxmlGetRefCount(mxml_node_t *node);
+extern const char	*mxmlGetText(mxml_node_t *node, int *whitespace);
+extern mxml_type_t	mxmlGetType(mxml_node_t *node);
+extern void		*mxmlGetUserData(mxml_node_t *node);
+extern void		mxmlIndexDelete(mxml_index_t *ind);
+extern mxml_node_t	*mxmlIndexEnum(mxml_index_t *ind);
+extern mxml_node_t	*mxmlIndexFind(mxml_index_t *ind,
+			               const char *element,
+			               const char *value);
+extern int		mxmlIndexGetCount(mxml_index_t *ind);
+extern mxml_index_t	*mxmlIndexNew(mxml_node_t *node, const char *element,
+			              const char *attr);
+extern mxml_node_t	*mxmlIndexReset(mxml_index_t *ind);
+extern mxml_node_t	*mxmlLoadFd(mxml_node_t *top, int fd,
+			            mxml_type_t (*cb)(mxml_node_t *));
+extern mxml_node_t	*mxmlLoadFile(mxml_node_t *top, FILE *fp,
+			              mxml_type_t (*cb)(mxml_node_t *));
+extern mxml_node_t	*mxmlLoadString(mxml_node_t *top, const char *s,
+			                mxml_type_t (*cb)(mxml_node_t *));
+extern mxml_node_t	*mxmlNewCDATA(mxml_node_t *parent, const char *string);
+extern mxml_node_t	*mxmlNewCustom(mxml_node_t *parent, void *data,
+			               mxml_custom_destroy_cb_t destroy);
+extern mxml_node_t	*mxmlNewElement(mxml_node_t *parent, const char *name);
+extern mxml_node_t	*mxmlNewInteger(mxml_node_t *parent, int integer);
+extern mxml_node_t	*mxmlNewOpaque(mxml_node_t *parent, const char *opaque);
+extern mxml_node_t	*mxmlNewReal(mxml_node_t *parent, double real);
+extern mxml_node_t	*mxmlNewText(mxml_node_t *parent, int whitespace,
+			             const char *string);
+extern mxml_node_t	*mxmlNewTextf(mxml_node_t *parent, int whitespace,
+			              const char *format, ...)
+#    ifdef __GNUC__
+__attribute__ ((__format__ (__printf__, 3, 4)))
+#    endif /* __GNUC__ */
+;
+extern mxml_node_t	*mxmlNewXML(const char *version);
+extern int		mxmlRelease(mxml_node_t *node);
+extern void		mxmlRemove(mxml_node_t *node);
+extern int		mxmlRetain(mxml_node_t *node);
+extern char		*mxmlSaveAllocString(mxml_node_t *node,
+			        	     mxml_save_cb_t cb);
+extern int		mxmlSaveFd(mxml_node_t *node, int fd,
+			           mxml_save_cb_t cb);
+extern int		mxmlSaveFile(mxml_node_t *node, FILE *fp,
+			             mxml_save_cb_t cb);
+extern int		mxmlSaveString(mxml_node_t *node, char *buffer,
+			               int bufsize, mxml_save_cb_t cb);
+extern mxml_node_t	*mxmlSAXLoadFd(mxml_node_t *top, int fd,
+			               mxml_type_t (*cb)(mxml_node_t *),
+			               mxml_sax_cb_t sax, void *sax_data);
+extern mxml_node_t	*mxmlSAXLoadFile(mxml_node_t *top, FILE *fp,
+			                 mxml_type_t (*cb)(mxml_node_t *),
+			                 mxml_sax_cb_t sax, void *sax_data);
+extern mxml_node_t	*mxmlSAXLoadString(mxml_node_t *top, const char *s,
+			                   mxml_type_t (*cb)(mxml_node_t *),
+			                   mxml_sax_cb_t sax, void *sax_data);
+extern int		mxmlSetCDATA(mxml_node_t *node, const char *data);
+extern int		mxmlSetCustom(mxml_node_t *node, void *data,
+			              mxml_custom_destroy_cb_t destroy);
+extern void		mxmlSetCustomHandlers(mxml_custom_load_cb_t load,
+			                      mxml_custom_save_cb_t save);
+extern int		mxmlSetElement(mxml_node_t *node, const char *name);
+extern void		mxmlSetErrorCallback(mxml_error_cb_t cb);
+extern int		mxmlSetInteger(mxml_node_t *node, int integer);
+extern int		mxmlSetOpaque(mxml_node_t *node, const char *opaque);
+extern int		mxmlSetReal(mxml_node_t *node, double real);
+extern int		mxmlSetText(mxml_node_t *node, int whitespace,
+			            const char *string);
+extern int		mxmlSetTextf(mxml_node_t *node, int whitespace,
+			             const char *format, ...)
+#    ifdef __GNUC__
+__attribute__ ((__format__ (__printf__, 3, 4)))
+#    endif /* __GNUC__ */
+;
+extern int		mxmlSetUserData(mxml_node_t *node, void *data);
+extern void		mxmlSetWrapMargin(int column);
+extern mxml_node_t	*mxmlWalkNext(mxml_node_t *node, mxml_node_t *top,
+			              int descend);
+extern mxml_node_t	*mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top,
+			              int descend);
+
+
+/*
+ * Semi-private functions...
+ */
+
+extern void		mxml_error(const char *format, ...);
+extern mxml_type_t	mxml_ignore_cb(mxml_node_t *node);
+extern mxml_type_t	mxml_integer_cb(mxml_node_t *node);
+extern mxml_type_t	mxml_opaque_cb(mxml_node_t *node);
+extern mxml_type_t	mxml_real_cb(mxml_node_t *node);
+
+
+/*
+ * C++ support...
+ */
+
+#  ifdef __cplusplus
+}
+#  endif /* __cplusplus */
+#endif /* !_mxml_h_ */
+
+
+/*
+ * End of "$Id: mxml.h 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/mxml.list.in b/src/mxml/mxml-2.9/mxml.list.in
new file mode 100644
index 0000000..e622feb
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml.list.in
@@ -0,0 +1,107 @@
+#
+# "$Id: mxml.list.in 451 2014-01-04 21:50:06Z msweet $"
+#
+# EPM software list file for Mini-XML, a small XML library.
+#
+# Copyright 2003-2014 by Michael Sweet.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+
+# Directories...
+$prefix=@prefix@
+$exec_prefix=@exec_prefix@
+$bindir=@bindir@
+$datarootdir=@datarootdir@
+$docdir=@docdir@
+$includedir=@includedir@
+$libdir=@libdir@
+$mandir=@mandir@
+$srcdir=@srcdir@
+
+$PICFLAG=@PICFLAG@
+
+# Product information
+%product mxml
+%copyright 2003-2014 by Michael Sweet
+%vendor Michael Sweet
+%license ${srcdir}/COPYING
+%readme ${srcdir}/README
+%version @VERSION@
+
+%description <<EOF
+Mini-XML is a small XML parsing library that you can use to read
+XML and XML-like data files in your application without
+requiring large non-standard libraries.  Mini-XML provides the
+following functionality:
+
+    - Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded
+      XML files and strings.
+    - Data is stored in a linked-list tree structure, preserving
+      the XML data hierarchy.
+    - Supports arbitrary element names, attributes, and
+      attribute values with no preset limits, just available
+      memory.
+    - Supports integer, real, opaque ("cdata"), and text data
+      types in "leaf" nodes.
+    - Functions for creating and managing trees of data.
+    - "Find" and "walk" functions for easily locating and
+      navigating trees of data.
+
+Mini-XML doesn't do validation or other types of processing on
+the data based upon schema files or other sources of definition
+information, nor does it support character entities other than
+those required by the XML specification.
+EOF
+
+# Executables
+f 0555 root sys ${bindir}/mxmldoc mxmldoc
+
+# Header files
+f 0444 root sys ${includedir}/mxml.h mxml.h
+
+# Libraries
+%if $PICFLAG
+%system hpux
+f 0555 root sys ${libdir}/libmxml.sl.1 libmxml.sl.1
+l 0555 root sys ${libdir}/libmxml.sl libmxml.sl.1
+
+%system darwin
+f 0555 root sys ${libdir}/libmxml.1.dylib libmxml.1.dylib
+l 0555 root sys ${libdir}/libmxml.dylib libmxml.1.dylib
+
+%system freebsd irix linux netbsd openbsd solaris tru64
+f 0555 root sys ${libdir}/libmxml.so.1.5 libmxml.so.1.5
+l 0555 root sys ${libdir}/libmxml.so.1 libmxml.so.1.5
+l 0555 root sys ${libdir}/libmxml.so libmxml.so.1.5
+
+%system all
+%endif
+
+f 0444 root sys ${libdir}/libmxml.a libmxml.a
+
+# pkg-config info
+f 0444 root sys $(libdir)/pkgconfig/mxml.pc mxml.pc
+
+# Documentation
+f 0444 root sys ${docdir}/README $srcdir/README
+f 0444 root sys ${docdir}/COPYING $srcdir/COPYING
+f 0444 root sys ${docdir}/CHANGES $srcdir/CHANGES
+f 0444 root sys ${docdir}/mxml.html $srcdir/doc/mxml.html
+f 0444 root sys ${docdir}/mxml.pdf $srcdir/doc/mxml.pdf
+
+# Man pages
+f 0444 root sys ${mandir}/man1/mxmldoc.1 $srcdir/mxmldoc.man
+f 0444 root sys ${mandir}/man3/mxml.3 $srcdir/mxml.man
+
+#
+# End of "$Id: mxml.list.in 451 2014-01-04 21:50:06Z msweet $".
+#
diff --git a/src/mxml/mxml-2.9/mxml.pc.in b/src/mxml/mxml-2.9/mxml.pc.in
new file mode 100644
index 0000000..9d48b60
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Mini-XML
+Description: Lightweight XML support library
+Version: @VERSION@
+Libs: @PC_LIBS@ @PTHREAD_LIBS@
+Cflags: @PC_CFLAGS@ @PTHREAD_FLAGS@
diff --git a/src/mxml/mxml-2.9/mxml.spec b/src/mxml/mxml-2.9/mxml.spec
new file mode 100644
index 0000000..ca08061
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml.spec
@@ -0,0 +1,95 @@
+#
+# "$Id: mxml.spec 399 2009-05-17 17:20:51Z mike $"
+#
+# RPM "spec" file for Mini-XML, a small XML library.
+#
+# Copyright 2003-2009 by Michael Sweet.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+
+Summary: Miniature XML development library
+Name: mxml
+Version: 2.6
+Release: 1
+License: LGPL
+Group: Development/Libraries
+Source: http://www.easysw.com/~mike/mxml/mxml-%{version}.tar.gz
+Url: http://www.easysw.com/~mike/mxml/
+Packager: Michael Sweet <mxml at easysw.com>
+Vendor: Michael Sweet
+
+# Use buildroot so as not to disturb the version already installed
+BuildRoot: /var/tmp/%{name}-root
+
+%description
+Mini-XML is a small XML parsing library that you can use to read
+XML and XML-like data files in your application without
+requiring large non-standard libraries.  Mini-XML provides the
+following functionality:
+
+    - Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded
+      XML files and strings.
+    - Data is stored in a linked-list tree structure, preserving
+      the XML data hierarchy.
+    - Supports arbitrary element names, attributes, and
+      attribute values with no preset limits, just available
+      memory.
+    - Supports integer, real, opaque ("cdata"), and text data
+      types in "leaf" nodes.
+    - Functions for creating and managing trees of data.
+    - "Find" and "walk" functions for easily locating and
+      navigating trees of data.
+
+Mini-XML doesn't do validation or other types of processing on
+the data based upon schema files or other sources of definition
+information, nor does it support character entities other than
+those required by the XML specification.
+
+%prep
+%setup
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_OPT_FLAGS" ./configure --enable-shared --prefix=/usr
+
+# If we got this far, all prerequisite libraries must be here.
+make
+
+%install
+# Make sure the RPM_BUILD_ROOT directory exists.
+rm -rf $RPM_BUILD_ROOT
+
+make BUILDROOT=$RPM_BUILD_ROOT install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+
+%dir /usr/bin
+/usr/bin/*
+%dir /usr/include
+/usr/include/mxml.h
+%dir /usr/lib
+/usr/lib/*
+%dir /usr/lib/pkgconfig
+/usr/lib/pkgconfig/mxml.pc
+%dir /usr/share/doc/mxml
+/usr/share/doc/mxml/*
+%dir /usr/share/man/man1
+/usr/share/man/man1/*
+%dir /usr/share/man/man3
+/usr/share/man/man3/*
+
+#
+# End of "$Id: mxml.spec 399 2009-05-17 17:20:51Z mike $".
+#
diff --git a/src/mxml/mxml-2.9/mxml.xml b/src/mxml/mxml-2.9/mxml.xml
new file mode 100644
index 0000000..bf6b520
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxml.xml
@@ -0,0 +1,1627 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mxmldoc xmlns="http://www.easysw.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minixml.org/mxmldoc.xsd">
+  <function name="mxmlAdd">
+    <description>Add a node to a tree.
+
+Adds the specified node to the parent. If the child argument is not
+NULL, puts the new node before or after the specified child depending
+on the value of the where argument. If the child argument is NULL,
+puts the new node at the beginning of the child list (MXML_ADD_BEFORE)
+or at the end of the child list (MXML_ADD_AFTER). The constant
+MXML_ADD_TO_PARENT can be used to specify a NULL child pointer.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node</description>
+    </argument>
+    <argument name="where" direction="I">
+      <type>int</type>
+      <description>Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER</description>
+    </argument>
+    <argument name="child" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Child node for where or MXML_ADD_TO_PARENT</description>
+    </argument>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to add</description>
+    </argument>
+  </function>
+  <function name="mxmlDelete">
+    <description>Delete a node and all of its children.
+
+If the specified node has a parent, this function first removes the
+node from its parent using the mxmlRemove() function.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to delete</description>
+    </argument>
+  </function>
+  <function name="mxmlElementDeleteAttr">
+    <description>Delete an attribute.
+
+ at since Mini-XML 2.4@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Element</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Attribute name</description>
+    </argument>
+  </function>
+  <function name="mxmlElementGetAttr">
+    <returnvalue>
+      <type>const char *</type>
+      <description>Attribute value or NULL</description>
+    </returnvalue>
+    <description>Get an attribute.
+
+This function returns NULL if the node is not an element or the
+named attribute does not exist.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Element node</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Name of attribute</description>
+    </argument>
+  </function>
+  <function name="mxmlElementSetAttr">
+    <description>Set an attribute.
+
+If the named attribute already exists, the value of the attribute
+is replaced by the new string value. The string value is copied
+into the element node. This function does nothing if the node is
+not an element.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Element node</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Name of attribute</description>
+    </argument>
+    <argument name="value" direction="I">
+      <type>const char *</type>
+      <description>Attribute value</description>
+    </argument>
+  </function>
+  <function name="mxmlElementSetAttrf">
+    <description>Set an attribute with a formatted value.
+
+If the named attribute already exists, the value of the attribute
+is replaced by the new formatted string. The formatted string value is
+copied into the element node. This function does nothing if the node
+is not an element.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Element node</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Name of attribute</description>
+    </argument>
+    <argument name="format" direction="I">
+      <type>const char *</type>
+      <description>Printf-style attribute value</description>
+    </argument>
+    <argument name="..." direction="I">
+      <type />      <description>Additional arguments as needed</description>
+    </argument>
+  </function>
+  <function name="mxmlEntityAddCallback">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Add a callback to convert entities to Unicode.</description>
+    <argument name="cb" direction="I">
+      <type>mxml_entity_cb_t</type>
+      <description>Callback function to add</description>
+    </argument>
+  </function>
+  <function name="mxmlEntityGetName">
+    <returnvalue>
+      <type>const char *</type>
+      <description>Entity name or NULL</description>
+    </returnvalue>
+    <description>Get the name that corresponds to the character value.
+
+If val does not need to be represented by a named entity, NULL is returned.</description>
+    <argument name="val" direction="I">
+      <type>int</type>
+      <description>Character value</description>
+    </argument>
+  </function>
+  <function name="mxmlEntityGetValue">
+    <returnvalue>
+      <type>int</type>
+      <description>Character value or -1 on error</description>
+    </returnvalue>
+    <description>Get the character corresponding to a named entity.
+
+The entity name can also be a numeric constant. -1 is returned if the
+name is not known.</description>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Entity name</description>
+    </argument>
+  </function>
+  <function name="mxmlEntityRemoveCallback">
+    <description>Remove a callback.</description>
+    <argument name="cb" direction="I">
+      <type>mxml_entity_cb_t</type>
+      <description>Callback function to remove</description>
+    </argument>
+  </function>
+  <function name="mxmlFindElement">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Element node or NULL</description>
+    </returnvalue>
+    <description>Find the named element.
+
+The search is constrained by the name, attribute name, and value; any
+NULL names or values are treated as wildcards, so different kinds of
+searches can be implemented by looking for all elements of a given name
+or all elements with a specific attribute. The descend argument determines
+whether the search descends into child nodes; normally you will use
+MXML_DESCEND_FIRST for the initial search and MXML_NO_DESCEND to find
+additional direct descendents of the node. The top node argument
+constrains the search to a particular node's children.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Current node</description>
+    </argument>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Element name or NULL for any</description>
+    </argument>
+    <argument name="attr" direction="I">
+      <type>const char *</type>
+      <description>Attribute name, or NULL for none</description>
+    </argument>
+    <argument name="value" direction="I">
+      <type>const char *</type>
+      <description>Attribute value, or NULL for any</description>
+    </argument>
+    <argument name="descend" direction="I">
+      <type>int</type>
+      <description>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</description>
+    </argument>
+  </function>
+  <function name="mxmlFindPath">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Found node or NULL</description>
+    </returnvalue>
+    <description>Find a node with the given path.
+
+The "path" is a slash-separated list of element names. The name "*" is
+considered a wildcard for one or more levels of elements.  For example,
+"foo/one/two", "bar/two/one", "*/one", and so forth.
+
+The first child node of the found node is returned if the given node has
+children and the first child is a value node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="path" direction="I">
+      <type>const char *</type>
+      <description>Path to element</description>
+    </argument>
+  </function>
+  <function name="mxmlGetCDATA">
+    <returnvalue>
+      <type>const char *</type>
+      <description>CDATA value or NULL</description>
+    </returnvalue>
+    <description>Get the value for a CDATA node.
+
+ at code NULL@ is returned if the node is not a CDATA element.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetCustom">
+    <returnvalue>
+      <type>const void *</type>
+      <description>Custom value or NULL</description>
+    </returnvalue>
+    <description>Get the value for a custom node.
+
+ at code NULL@ is returned if the node (or its first child) is not a custom
+value node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetElement">
+    <returnvalue>
+      <type>const char *</type>
+      <description>Element name or NULL</description>
+    </returnvalue>
+    <description>Get the name for an element node.
+
+ at code NULL@ is returned if the node is not an element node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetFirstChild">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First child or NULL</description>
+    </returnvalue>
+    <description>Get the first child of an element node.
+
+ at code NULL@ is returned if the node is not an element node or if the node
+has no children.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetInteger">
+    <returnvalue>
+      <type>int</type>
+      <description>Integer value or 0</description>
+    </returnvalue>
+    <description>Get the integer value from the specified node or its
+first child.
+
+0 is returned if the node (or its first child) is not an integer value node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetLastChild">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Last child or NULL</description>
+    </returnvalue>
+    <description>Get the last child of an element node.
+
+ at code NULL@ is returned if the node is not an element node or if the node
+has no children.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetNextSibling">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Get the next node for the current parent.
+
+ at code NULL@ is returned if this is the last child for the current parent.
+
+ at since Mini-XML 2.7@</description>
+    </returnvalue>
+    <description>Return the node type...</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetOpaque">
+    <returnvalue>
+      <type>const char *</type>
+      <description>Opaque string or NULL</description>
+    </returnvalue>
+    <description>Get an opaque string value for a node or its first child.
+
+ at code NULL@ is returned if the node (or its first child) is not an opaque
+value node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetParent">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Parent node or NULL</description>
+    </returnvalue>
+    <description>Get the parent node.
+
+ at code NULL@ is returned for a root node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetPrevSibling">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Previous node or NULL</description>
+    </returnvalue>
+    <description>Get the previous node for the current parent.
+
+ at code NULL@ is returned if this is the first child for the current parent.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetReal">
+    <returnvalue>
+      <type>double</type>
+      <description>Real value or 0.0</description>
+    </returnvalue>
+    <description>Get the real value for a node or its first child.
+
+0.0 is returned if the node (or its first child) is not a real value node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetRefCount">
+    <returnvalue>
+      <type>int</type>
+      <description>Reference count</description>
+    </returnvalue>
+    <description>Get the current reference (use) count for a node.
+
+The initial reference count of new nodes is 1. Use the @link mxmlRetain@
+and @link mxmlRelease@ functions to increment and decrement a node's
+reference count.
+
+ at since Mini-XML 2.7 at .</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node</description>
+    </argument>
+  </function>
+  <function name="mxmlGetText">
+    <returnvalue>
+      <type>const char *</type>
+      <description>Text string or NULL</description>
+    </returnvalue>
+    <description>Get the text value for a node or its first child.
+
+ at code NULL@ is returned if the node (or its first child) is not a text node.
+The "whitespace" argument can be NULL.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+    <argument name="whitespace" direction="O">
+      <type>int *</type>
+      <description>1 if string is preceded by whitespace, 0 otherwise</description>
+    </argument>
+  </function>
+  <function name="mxmlGetType">
+    <returnvalue>
+      <type>mxml_type_t</type>
+      <description>Type of node</description>
+    </returnvalue>
+    <description>Get the node type.
+
+ at code MXML_IGNORE@ is returned if "node" is @code NULL at .
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlGetUserData">
+    <returnvalue>
+      <type>void *</type>
+      <description>User data pointer</description>
+    </returnvalue>
+    <description>Get the user data pointer for a node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to get</description>
+    </argument>
+  </function>
+  <function name="mxmlIndexDelete">
+    <description>Delete an index.</description>
+    <argument name="ind" direction="I">
+      <type>mxml_index_t *</type>
+      <description>Index to delete</description>
+    </argument>
+  </function>
+  <function name="mxmlIndexEnum">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Next node or NULL if there is none</description>
+    </returnvalue>
+    <description>Return the next node in the index.
+
+Nodes are returned in the sorted order of the index.</description>
+    <argument name="ind" direction="I">
+      <type>mxml_index_t *</type>
+      <description>Index to enumerate</description>
+    </argument>
+  </function>
+  <function name="mxmlIndexFind">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Node or NULL if none found</description>
+    </returnvalue>
+    <description>Find the next matching node.
+
+You should call mxmlIndexReset() prior to using this function for
+the first time with a particular set of "element" and "value"
+strings. Passing NULL for both "element" and "value" is equivalent
+to calling mxmlIndexEnum().</description>
+    <argument name="ind" direction="I">
+      <type>mxml_index_t *</type>
+      <description>Index to search</description>
+    </argument>
+    <argument name="element" direction="I">
+      <type>const char *</type>
+      <description>Element name to find, if any</description>
+    </argument>
+    <argument name="value" direction="I">
+      <type>const char *</type>
+      <description>Attribute value, if any</description>
+    </argument>
+  </function>
+  <function name="mxmlIndexGetCount">
+    <returnvalue>
+      <type>int</type>
+      <description>Number of nodes in index</description>
+    </returnvalue>
+    <description>Get the number of nodes in an index.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="ind" direction="I">
+      <type>mxml_index_t *</type>
+      <description>Index of nodes</description>
+    </argument>
+  </function>
+  <function name="mxmlIndexNew">
+    <returnvalue>
+      <type>mxml_index_t *</type>
+      <description>New index</description>
+    </returnvalue>
+    <description>Create a new index.
+
+The index will contain all nodes that contain the named element and/or
+attribute. If both "element" and "attr" are NULL, then the index will
+contain a sorted list of the elements in the node tree.  Nodes are
+sorted by element name and optionally by attribute value if the "attr"
+argument is not NULL.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>XML node tree</description>
+    </argument>
+    <argument name="element" direction="I">
+      <type>const char *</type>
+      <description>Element to index or NULL for all</description>
+    </argument>
+    <argument name="attr" direction="I">
+      <type>const char *</type>
+      <description>Attribute to index or NULL for none</description>
+    </argument>
+  </function>
+  <function name="mxmlIndexReset">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if there is none</description>
+    </returnvalue>
+    <description>Reset the enumeration/find pointer in the index and
+return the first node in the index.
+
+This function should be called prior to using mxmlIndexEnum() or
+mxmlIndexFind() for the first time.</description>
+    <argument name="ind" direction="I">
+      <type>mxml_index_t *</type>
+      <description>Index to reset</description>
+    </argument>
+  </function>
+  <function name="mxmlLoadFd">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if the file could not be read.</description>
+    </returnvalue>
+    <description>Load a file descriptor into an XML node tree.
+
+The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.
+
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="fd" direction="I">
+      <type>int</type>
+      <description>File descriptor to read from</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_load_cb_t</type>
+      <description>Callback function or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlLoadFile">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if the file could not be read.</description>
+    </returnvalue>
+    <description>Load a file into an XML node tree.
+
+The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.
+
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="fp" direction="I">
+      <type>FILE *</type>
+      <description>File to read from</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_load_cb_t</type>
+      <description>Callback function or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlLoadString">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if the string has errors.</description>
+    </returnvalue>
+    <description>Load a string into an XML node tree.
+
+The nodes in the specified string are added to the specified top node.
+If no top node is provided, the XML string MUST be well-formed with a
+single parent node like <?xml> for the entire string. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.
+
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="s" direction="I">
+      <type>const char *</type>
+      <description>String to load</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_load_cb_t</type>
+      <description>Callback function or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlNewCDATA">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new CDATA node.
+
+The new CDATA node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+CDATA node has no parent. The data string must be nul-terminated and
+is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="data" direction="I">
+      <type>const char *</type>
+      <description>Data string</description>
+    </argument>
+  </function>
+  <function name="mxmlNewCustom">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new custom data node.
+
+The new custom node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+element node has no parent. NULL can be passed when the data in the
+node is not dynamically allocated or is separately managed.
+
+ at since Mini-XML 2.1@</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="data" direction="I">
+      <type>void *</type>
+      <description>Pointer to data</description>
+    </argument>
+    <argument name="destroy" direction="I">
+      <type>mxml_custom_destroy_cb_t</type>
+      <description>Function to destroy data</description>
+    </argument>
+  </function>
+  <function name="mxmlNewElement">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new element node.
+
+The new element node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+element node has no parent.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>Name of element</description>
+    </argument>
+  </function>
+  <function name="mxmlNewInteger">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new integer node.
+
+The new integer node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+integer node has no parent.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="integer" direction="I">
+      <type>int</type>
+      <description>Integer value</description>
+    </argument>
+  </function>
+  <function name="mxmlNewOpaque">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new opaque string.
+
+The new opaque node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+opaque node has no parent. The opaque string must be nul-terminated and
+is copied into the new node.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="opaque" direction="I">
+      <type>const char *</type>
+      <description>Opaque string</description>
+    </argument>
+  </function>
+  <function name="mxmlNewReal">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new real number node.
+
+The new real number node is added to the end of the specified parent's
+child list. The constant MXML_NO_PARENT can be used to specify that
+the new real number node has no parent.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="real" direction="I">
+      <type>double</type>
+      <description>Real number value</description>
+    </argument>
+  </function>
+  <function name="mxmlNewText">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new text fragment node.
+
+The new text node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+text node has no parent. The whitespace parameter is used to specify
+whether leading whitespace is present before the node. The text
+string must be nul-terminated and is copied into the new node.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="whitespace" direction="I">
+      <type>int</type>
+      <description>1 = leading whitespace, 0 = no whitespace</description>
+    </argument>
+    <argument name="string" direction="I">
+      <type>const char *</type>
+      <description>String</description>
+    </argument>
+  </function>
+  <function name="mxmlNewTextf">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New node</description>
+    </returnvalue>
+    <description>Create a new formatted text fragment node.
+
+The new text node is added to the end of the specified parent's child
+list. The constant MXML_NO_PARENT can be used to specify that the new
+text node has no parent. The whitespace parameter is used to specify
+whether leading whitespace is present before the node. The format
+string must be nul-terminated and is formatted into the new node.</description>
+    <argument name="parent" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Parent node or MXML_NO_PARENT</description>
+    </argument>
+    <argument name="whitespace" direction="I">
+      <type>int</type>
+      <description>1 = leading whitespace, 0 = no whitespace</description>
+    </argument>
+    <argument name="format" direction="I">
+      <type>const char *</type>
+      <description>Printf-style frmat string</description>
+    </argument>
+    <argument name="..." direction="I">
+      <type />      <description>Additional args as needed</description>
+    </argument>
+  </function>
+  <function name="mxmlNewXML">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>New ?xml node</description>
+    </returnvalue>
+    <description>Create a new XML document tree.
+
+The "version" argument specifies the version number to put in the
+?xml element node. If NULL, version 1.0 is assumed.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="version" direction="I">
+      <type>const char *</type>
+      <description>Version number to use</description>
+    </argument>
+  </function>
+  <function name="mxmlRelease">
+    <returnvalue>
+      <type>int</type>
+      <description>New reference count</description>
+    </returnvalue>
+    <description>Release a node.
+
+When the reference count reaches zero, the node (and any children)
+is deleted via mxmlDelete().
+
+ at since Mini-XML 2.3@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node</description>
+    </argument>
+  </function>
+  <function name="mxmlRemove">
+    <description>Remove a node from its parent.
+
+Does not free memory used by the node - use mxmlDelete() for that.
+This function does nothing if the node has no parent.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to remove</description>
+    </argument>
+  </function>
+  <function name="mxmlRetain">
+    <returnvalue>
+      <type>int</type>
+      <description>New reference count</description>
+    </returnvalue>
+    <description>Retain a node.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node</description>
+    </argument>
+  </function>
+  <function name="mxmlSAXLoadFd">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if the file could not be read.</description>
+    </returnvalue>
+    <description>Load a file descriptor into an XML node tree
+using a SAX callback.
+
+The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.
+
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.
+
+The SAX callback must call mxmlRetain() for any nodes that need to
+be kept for later use. Otherwise, nodes are deleted when the parent
+node is closed or after each data, comment, CDATA, or directive node.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="fd" direction="I">
+      <type>int</type>
+      <description>File descriptor to read from</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_load_cb_t</type>
+      <description>Callback function or MXML_NO_CALLBACK</description>
+    </argument>
+    <argument name="sax_cb" direction="I">
+      <type>mxml_sax_cb_t</type>
+      <description>SAX callback or MXML_NO_CALLBACK</description>
+    </argument>
+    <argument name="sax_data" direction="I">
+      <type>void *</type>
+      <description>SAX user data</description>
+    </argument>
+  </function>
+  <function name="mxmlSAXLoadFile">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if the file could not be read.</description>
+    </returnvalue>
+    <description>Load a file into an XML node tree
+using a SAX callback.
+
+The nodes in the specified file are added to the specified top node.
+If no top node is provided, the XML file MUST be well-formed with a
+single parent node like <?xml> for the entire file. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.
+
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.
+
+The SAX callback must call mxmlRetain() for any nodes that need to
+be kept for later use. Otherwise, nodes are deleted when the parent
+node is closed or after each data, comment, CDATA, or directive node.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="fp" direction="I">
+      <type>FILE *</type>
+      <description>File to read from</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_load_cb_t</type>
+      <description>Callback function or MXML_NO_CALLBACK</description>
+    </argument>
+    <argument name="sax_cb" direction="I">
+      <type>mxml_sax_cb_t</type>
+      <description>SAX callback or MXML_NO_CALLBACK</description>
+    </argument>
+    <argument name="sax_data" direction="I">
+      <type>void *</type>
+      <description>SAX user data</description>
+    </argument>
+  </function>
+  <function name="mxmlSAXLoadString">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>First node or NULL if the string has errors.</description>
+    </returnvalue>
+    <description>Load a string into an XML node tree
+using a SAX callback.
+
+The nodes in the specified string are added to the specified top node.
+If no top node is provided, the XML string MUST be well-formed with a
+single parent node like <?xml> for the entire string. The callback
+function returns the value type that should be used for child nodes.
+If MXML_NO_CALLBACK is specified then all child nodes will be either
+MXML_ELEMENT or MXML_TEXT nodes.
+
+The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
+MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
+child nodes of the specified type.
+
+The SAX callback must call mxmlRetain() for any nodes that need to
+be kept for later use. Otherwise, nodes are deleted when the parent
+node is closed or after each data, comment, CDATA, or directive node.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="s" direction="I">
+      <type>const char *</type>
+      <description>String to load</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_load_cb_t</type>
+      <description>Callback function or MXML_NO_CALLBACK</description>
+    </argument>
+    <argument name="sax_cb" direction="I">
+      <type>mxml_sax_cb_t</type>
+      <description>SAX callback or MXML_NO_CALLBACK</description>
+    </argument>
+    <argument name="sax_data" direction="I">
+      <type>void *</type>
+      <description>SAX user data</description>
+    </argument>
+  </function>
+  <function name="mxmlSaveAllocString">
+    <returnvalue>
+      <type>char *</type>
+      <description>Allocated string or NULL</description>
+    </returnvalue>
+    <description>Save an XML tree to an allocated string.
+
+This function returns a pointer to a string containing the textual
+representation of the XML node tree.  The string should be freed
+using the free() function when you are done with it.  NULL is returned
+if the node would produce an empty string or if the string cannot be
+allocated.
+
+The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to write</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_save_cb_t</type>
+      <description>Whitespace callback or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlSaveFd">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on error.</description>
+    </returnvalue>
+    <description>Save an XML tree to a file descriptor.
+
+The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to write</description>
+    </argument>
+    <argument name="fd" direction="I">
+      <type>int</type>
+      <description>File descriptor to write to</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_save_cb_t</type>
+      <description>Whitespace callback or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlSaveFile">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on error.</description>
+    </returnvalue>
+    <description>Save an XML tree to a file.
+
+The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to write</description>
+    </argument>
+    <argument name="fp" direction="I">
+      <type>FILE *</type>
+      <description>File to write to</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_save_cb_t</type>
+      <description>Whitespace callback or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlSaveString">
+    <returnvalue>
+      <type>int</type>
+      <description>Size of string</description>
+    </returnvalue>
+    <description>Save an XML node tree to a string.
+
+This function returns the total number of bytes that would be
+required for the string but only copies (bufsize - 1) characters
+into the specified buffer.
+
+The callback argument specifies a function that returns a whitespace
+string or NULL before and after each element. If MXML_NO_CALLBACK
+is specified, whitespace will only be added before MXML_TEXT nodes
+with leading whitespace and before attribute names inside opening
+element tags.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to write</description>
+    </argument>
+    <argument name="buffer" direction="I">
+      <type>char *</type>
+      <description>String buffer</description>
+    </argument>
+    <argument name="bufsize" direction="I">
+      <type>int</type>
+      <description>Size of string buffer</description>
+    </argument>
+    <argument name="cb" direction="I">
+      <type>mxml_save_cb_t</type>
+      <description>Whitespace callback or MXML_NO_CALLBACK</description>
+    </argument>
+  </function>
+  <function name="mxmlSetCDATA">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the element name of a CDATA node.
+
+The node is not changed if it (or its first child) is not a CDATA element node.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="data" direction="I">
+      <type>const char *</type>
+      <description>New data string</description>
+    </argument>
+  </function>
+  <function name="mxmlSetCustom">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the data and destructor of a custom data node.
+
+The node is not changed if it (or its first child) is not a custom node.
+
+ at since Mini-XML 2.1@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="data" direction="I">
+      <type>void *</type>
+      <description>New data pointer</description>
+    </argument>
+    <argument name="destroy" direction="I">
+      <type>mxml_custom_destroy_cb_t</type>
+      <description>New destructor function</description>
+    </argument>
+  </function>
+  <function name="mxmlSetCustomHandlers">
+    <description>Set the handling functions for custom data.
+
+The load function accepts a node pointer and a data string and must
+return 0 on success and non-zero on error.
+
+The save function accepts a node pointer and must return a malloc'd
+string on success and NULL on error.</description>
+    <argument name="load" direction="I">
+      <type>mxml_custom_load_cb_t</type>
+      <description>Load function</description>
+    </argument>
+    <argument name="save" direction="I">
+      <type>mxml_custom_save_cb_t</type>
+      <description>Save function</description>
+    </argument>
+  </function>
+  <function name="mxmlSetElement">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the name of an element node.
+
+The node is not changed if it is not an element node.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="name" direction="I">
+      <type>const char *</type>
+      <description>New name string</description>
+    </argument>
+  </function>
+  <function name="mxmlSetErrorCallback">
+    <description>Set the error message callback.</description>
+    <argument name="cb" direction="I">
+      <type>mxml_error_cb_t</type>
+      <description>Error callback function</description>
+    </argument>
+  </function>
+  <function name="mxmlSetInteger">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the value of an integer node.
+
+The node is not changed if it (or its first child) is not an integer node.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="integer" direction="I">
+      <type>int</type>
+      <description>Integer value</description>
+    </argument>
+  </function>
+  <function name="mxmlSetOpaque">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the value of an opaque node.
+
+The node is not changed if it (or its first child) is not an opaque node.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="opaque" direction="I">
+      <type>const char *</type>
+      <description>Opaque string</description>
+    </argument>
+  </function>
+  <function name="mxmlSetReal">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the value of a real number node.
+
+The node is not changed if it (or its first child) is not a real number node.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="real" direction="I">
+      <type>double</type>
+      <description>Real number value</description>
+    </argument>
+  </function>
+  <function name="mxmlSetText">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the value of a text node.
+
+The node is not changed if it (or its first child) is not a text node.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="whitespace" direction="I">
+      <type>int</type>
+      <description>1 = leading whitespace, 0 = no whitespace</description>
+    </argument>
+    <argument name="string" direction="I">
+      <type>const char *</type>
+      <description>String</description>
+    </argument>
+  </function>
+  <function name="mxmlSetTextf">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the value of a text node to a formatted string.
+
+The node is not changed if it (or its first child) is not a text node.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="whitespace" direction="I">
+      <type>int</type>
+      <description>1 = leading whitespace, 0 = no whitespace</description>
+    </argument>
+    <argument name="format" direction="I">
+      <type>const char *</type>
+      <description>Printf-style format string</description>
+    </argument>
+    <argument name="..." direction="I">
+      <type />      <description>Additional arguments as needed</description>
+    </argument>
+  </function>
+  <function name="mxmlSetUserData">
+    <returnvalue>
+      <type>int</type>
+      <description>0 on success, -1 on failure</description>
+    </returnvalue>
+    <description>Set the user data pointer for a node.
+
+ at since Mini-XML 2.7@</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Node to set</description>
+    </argument>
+    <argument name="data" direction="I">
+      <type>void *</type>
+      <description>User data pointer</description>
+    </argument>
+  </function>
+  <function name="mxmlSetWrapMargin">
+    <description>Set the wrap margin when saving XML data.
+
+Wrapping is disabled when "column" is 0.
+
+ at since Mini-XML 2.3@</description>
+    <argument name="column" direction="I">
+      <type>int</type>
+      <description>Column for wrapping, 0 to disable wrapping</description>
+    </argument>
+  </function>
+  <function name="mxmlWalkNext">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Next node or NULL</description>
+    </returnvalue>
+    <description>Walk to the next logical node in the tree.
+
+The descend argument controls whether the first child is considered
+to be the next node. The top node argument constrains the walk to
+the node's children.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Current node</description>
+    </argument>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="descend" direction="I">
+      <type>int</type>
+      <description>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</description>
+    </argument>
+  </function>
+  <function name="mxmlWalkPrev">
+    <returnvalue>
+      <type>mxml_node_t *</type>
+      <description>Previous node or NULL</description>
+    </returnvalue>
+    <description>Walk to the previous logical node in the tree.
+
+The descend argument controls whether the previous node's last child
+is considered to be the previous node. The top node argument constrains
+the walk to the node's children.</description>
+    <argument name="node" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Current node</description>
+    </argument>
+    <argument name="top" direction="I">
+      <type>mxml_node_t *</type>
+      <description>Top node</description>
+    </argument>
+    <argument name="descend" direction="I">
+      <type>int</type>
+      <description>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</description>
+    </argument>
+  </function>
+  <struct name="mxml_attr_s">
+    <description>An XML element attribute value. @private@</description>
+    <variable name="name">
+      <type>char *</type>
+      <description>Attribute name</description>
+    </variable>
+    <variable name="value">
+      <type>char *</type>
+      <description>Attribute value</description>
+    </variable>
+  </struct>
+  <typedef name="mxml_attr_t">
+    <type>struct mxml_attr_s</type>
+    <description>An XML element attribute value. @private@</description>
+  </typedef>
+  <typedef name="mxml_custom_destroy_cb_t">
+    <type>void(*)(void *)</type>
+    <description>Custom data destructor</description>
+  </typedef>
+  <typedef name="mxml_custom_load_cb_t">
+    <type>int(*)(mxml_node_t *, const char *)</type>
+    <description>Custom data load callback function</description>
+  </typedef>
+  <struct name="mxml_custom_s">
+    <description>An XML custom value. @private@</description>
+    <variable name="data">
+      <type>void *</type>
+      <description>Pointer to (allocated) custom data</description>
+    </variable>
+    <variable name="destroy">
+      <type>mxml_custom_destroy_cb_t</type>
+      <description>Pointer to destructor function</description>
+    </variable>
+  </struct>
+  <typedef name="mxml_custom_save_cb_t">
+    <type>char *(*)(mxml_node_t *)</type>
+    <description>Custom data save callback function</description>
+  </typedef>
+  <typedef name="mxml_custom_t">
+    <type>struct mxml_custom_s</type>
+    <description>An XML custom value. @private@</description>
+  </typedef>
+  <struct name="mxml_element_s">
+    <description>An XML element value. @private@</description>
+    <variable name="attrs">
+      <type>mxml_attr_t *</type>
+      <description>Attributes</description>
+    </variable>
+    <variable name="name">
+      <type>char *</type>
+      <description>Name of element</description>
+    </variable>
+    <variable name="num_attrs">
+      <type>int</type>
+      <description>Number of attributes</description>
+    </variable>
+  </struct>
+  <typedef name="mxml_element_t">
+    <type>struct mxml_element_s</type>
+    <description>An XML element value. @private@</description>
+  </typedef>
+  <typedef name="mxml_entity_cb_t">
+    <type>int(*)(const char *)</type>
+    <description>Entity callback function</description>
+  </typedef>
+  <typedef name="mxml_error_cb_t">
+    <type>void(*)(const char *)</type>
+    <description>Error callback function</description>
+  </typedef>
+  <struct name="mxml_index_s">
+    <description>An XML node index. @private@</description>
+    <variable name="alloc_nodes">
+      <type>int</type>
+      <description>Allocated nodes in index</description>
+    </variable>
+    <variable name="attr">
+      <type>char *</type>
+      <description>Attribute used for indexing or NULL</description>
+    </variable>
+    <variable name="cur_node">
+      <type>int</type>
+      <description>Current node</description>
+    </variable>
+    <variable name="nodes">
+      <type>mxml_node_t **</type>
+      <description>Node array</description>
+    </variable>
+    <variable name="num_nodes">
+      <type>int</type>
+      <description>Number of nodes in index</description>
+    </variable>
+  </struct>
+  <typedef name="mxml_index_t">
+    <type>struct mxml_index_s</type>
+    <description>An XML node index.</description>
+  </typedef>
+  <typedef name="mxml_load_cb_t">
+    <type>mxml_type_t(*)(mxml_node_t *)</type>
+    <description>Load callback function</description>
+  </typedef>
+  <struct name="mxml_node_s">
+    <description>An XML node. @private@</description>
+    <variable name="child">
+      <type>struct mxml_node_s *</type>
+      <description>First child node</description>
+    </variable>
+    <variable name="last_child">
+      <type>struct mxml_node_s *</type>
+      <description>Last child node</description>
+    </variable>
+    <variable name="next">
+      <type>struct mxml_node_s *</type>
+      <description>Next node under same parent</description>
+    </variable>
+    <variable name="parent">
+      <type>struct mxml_node_s *</type>
+      <description>Parent node</description>
+    </variable>
+    <variable name="prev">
+      <type>struct mxml_node_s *</type>
+      <description>Previous node under same parent</description>
+    </variable>
+    <variable name="ref_count">
+      <type>int</type>
+      <description>Use count</description>
+    </variable>
+    <variable name="type">
+      <type>mxml_type_t</type>
+      <description>Node type</description>
+    </variable>
+    <variable name="user_data">
+      <type>void *</type>
+      <description>User data</description>
+    </variable>
+    <variable name="value">
+      <type>mxml_value_t</type>
+      <description>Node value</description>
+    </variable>
+  </struct>
+  <typedef name="mxml_node_t">
+    <type>struct mxml_node_s</type>
+    <description>An XML node.</description>
+  </typedef>
+  <typedef name="mxml_save_cb_t">
+    <type>const char *(*)(mxml_node_t *, int)</type>
+    <description>Save callback function</description>
+  </typedef>
+  <typedef name="mxml_sax_cb_t">
+    <type>void(*)(mxml_node_t *, mxml_sax_event_t, void *)</type>
+    <description>SAX callback function</description>
+  </typedef>
+  <enumeration name="mxml_sax_event_e">
+    <description>SAX event type.</description>
+    <constant name="MXML_SAX_CDATA">
+      <description>CDATA node</description>
+    </constant>
+    <constant name="MXML_SAX_COMMENT">
+      <description>Comment node</description>
+    </constant>
+    <constant name="MXML_SAX_DATA">
+      <description>Data node</description>
+    </constant>
+    <constant name="MXML_SAX_DIRECTIVE">
+      <description>Processing directive node</description>
+    </constant>
+    <constant name="MXML_SAX_ELEMENT_CLOSE">
+      <description>Element closed</description>
+    </constant>
+    <constant name="MXML_SAX_ELEMENT_OPEN">
+      <description>Element opened</description>
+    </constant>
+  </enumeration>
+  <typedef name="mxml_sax_event_t">
+    <type>enum mxml_sax_event_e</type>
+    <description>SAX event type.</description>
+  </typedef>
+  <struct name="mxml_text_s">
+    <description>An XML text value. @private@</description>
+    <variable name="string">
+      <type>char *</type>
+      <description>Fragment string</description>
+    </variable>
+    <variable name="whitespace">
+      <type>int</type>
+      <description>Leading whitespace?</description>
+    </variable>
+  </struct>
+  <typedef name="mxml_text_t">
+    <type>struct mxml_text_s</type>
+    <description>An XML text value. @private@</description>
+  </typedef>
+  <enumeration name="mxml_type_e">
+    <description>The XML node type.</description>
+    <constant name="MXML_CUSTOM">
+      <description>Custom data @since Mini-XML 2.1@</description>
+    </constant>
+    <constant name="MXML_ELEMENT">
+      <description>XML element with attributes</description>
+    </constant>
+    <constant name="MXML_IGNORE">
+      <description>Ignore/throw away node @since Mini-XML 2.3@</description>
+    </constant>
+    <constant name="MXML_INTEGER">
+      <description>Integer value</description>
+    </constant>
+    <constant name="MXML_OPAQUE">
+      <description>Opaque string</description>
+    </constant>
+    <constant name="MXML_REAL">
+      <description>Real value</description>
+    </constant>
+    <constant name="MXML_TEXT">
+      <description>Text fragment</description>
+    </constant>
+  </enumeration>
+  <typedef name="mxml_type_t">
+    <description>The XML node type.</description>
+    <type>enum mxml_type_e</type>
+  </typedef>
+  <typedef name="mxml_value_t">
+    <type>union mxml_value_u</type>
+    <description>An XML node value. @private@</description>
+  </typedef>
+  <union name="mxml_value_u">
+    <description>An XML node value. @private@</description>
+    <variable name="custom">
+      <type>mxml_custom_t</type>
+      <description>Custom data @since Mini-XML 2.1@</description>
+    </variable>
+    <variable name="element">
+      <type>mxml_element_t</type>
+      <description>Element</description>
+    </variable>
+    <variable name="integer">
+      <type>int</type>
+      <description>Integer number</description>
+    </variable>
+    <variable name="opaque">
+      <type>char *</type>
+      <description>Opaque string</description>
+    </variable>
+    <variable name="real">
+      <type>double</type>
+      <description>Real number</description>
+    </variable>
+    <variable name="text">
+      <type>mxml_text_t</type>
+      <description>Text fragment</description>
+    </variable>
+  </union>
+</mxmldoc>
diff --git a/src/mxml/mxml-2.9/mxmldoc.c b/src/mxml/mxml-2.9/mxmldoc.c
new file mode 100644
index 0000000..c99cc84
--- /dev/null
+++ b/src/mxml/mxml-2.9/mxmldoc.c
@@ -0,0 +1,5797 @@
+/*#define DEBUG 1*/
+/*
+ * "$Id: mxmldoc.c 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Documentation generator using Mini-XML, a small XML-like file parsing
+ * library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.minixml.org/
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+#include <time.h>
+#include <sys/stat.h>
+#ifndef WIN32
+#  include <dirent.h>
+#  include <unistd.h>
+#endif /* !WIN32 */
+#ifdef __APPLE__
+#  include <spawn.h>
+#  include <sys/wait.h>
+extern char **environ;
+#endif /* __APPLE__ */
+
+
+/*
+ * This program scans source and header files and produces public API
+ * documentation for code that conforms to the CUPS Configuration
+ * Management Plan (CMP) coding standards.  Please see the following web
+ * page for details:
+ *
+ *     http://www.cups.org/cmp.html
+ *
+ * Using Mini-XML, this program creates and maintains an XML representation
+ * of the public API code documentation which can then be converted to HTML
+ * as desired.  The following is a poor-man's schema:
+ *
+ * <?xml version="1.0"?>
+ * <mxmldoc xmlns="http://www.easysw.com"
+ *  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ *  xsi:schemaLocation="http://www.minixml.org/mxmldoc.xsd">
+ *
+ *   <namespace name="">                        [optional...]
+ *     <constant name="">
+ *       <description>descriptive text</description>
+ *     </constant>
+ *
+ *     <enumeration name="">
+ *       <description>descriptive text</description>
+ *       <constant name="">...</constant>
+ *     </enumeration>
+ *
+ *     <typedef name="">
+ *       <description>descriptive text</description>
+ *       <type>type string</type>
+ *     </typedef>
+ *
+ *     <function name="" scope="">
+ *       <description>descriptive text</description>
+ *       <argument name="" direction="I|O|IO" default="">
+ *         <description>descriptive text</description>
+ *         <type>type string</type>
+ *       </argument>
+ *       <returnvalue>
+ *         <description>descriptive text</description>
+ *         <type>type string</type>
+ *       </returnvalue>
+ *       <seealso>function names separated by spaces</seealso>
+ *     </function>
+ *
+ *     <variable name="" scope="">
+ *       <description>descriptive text</description>
+ *       <type>type string</type>
+ *     </variable>
+ *
+ *     <struct name="">
+ *       <description>descriptive text</description>
+ *       <variable name="">...</variable>
+ *       <function name="">...</function>
+ *     </struct>
+ *
+ *     <union name="">
+ *       <description>descriptive text</description>
+ *       <variable name="">...</variable>
+ *     </union>
+ *
+ *     <class name="" parent="">
+ *       <description>descriptive text</description>
+ *       <class name="">...</class>
+ *       <enumeration name="">...</enumeration>
+ *       <function name="">...</function>
+ *       <struct name="">...</struct>
+ *       <variable name="">...</variable>
+ *     </class>
+ *   </namespace>
+ * </mxmldoc>
+ */
+
+
+/*
+ * Basic states for file parser...
+ */
+
+#define STATE_NONE		0	/* No state - whitespace, etc. */
+#define STATE_PREPROCESSOR	1	/* Preprocessor directive */
+#define STATE_C_COMMENT		2	/* Inside a C comment */
+#define STATE_CXX_COMMENT	3	/* Inside a C++ comment */
+#define STATE_STRING		4	/* Inside a string constant */
+#define STATE_CHARACTER		5	/* Inside a character constant */
+#define STATE_IDENTIFIER	6	/* Inside a keyword/identifier */
+
+
+/*
+ * Output modes...
+ */
+
+#define OUTPUT_NONE		0	/* No output */
+#define OUTPUT_HTML		1	/* Output HTML */
+#define OUTPUT_XML		2	/* Output XML */
+#define OUTPUT_MAN		3	/* Output nroff/man */
+#define OUTPUT_TOKENS		4	/* Output docset Tokens.xml file */
+
+
+/*
+ * Local functions...
+ */
+
+static mxml_node_t	*add_variable(mxml_node_t *parent, const char *name,
+			              mxml_node_t *type);
+static mxml_node_t	*find_public(mxml_node_t *node, mxml_node_t *top,
+			             const char *name);
+static char		*get_comment_info(mxml_node_t *description);
+static char		*get_text(mxml_node_t *node, char *buffer, int buflen);
+static mxml_type_t	load_cb(mxml_node_t *node);
+static mxml_node_t	*new_documentation(mxml_node_t **mxmldoc);
+static int		remove_directory(const char *path);
+static void		safe_strcpy(char *dst, const char *src);
+static int		scan_file(const char *filename, FILE *fp,
+			          mxml_node_t *doc);
+static void		sort_node(mxml_node_t *tree, mxml_node_t *func);
+static void		update_comment(mxml_node_t *parent,
+			               mxml_node_t *comment);
+static void		usage(const char *option);
+static void		write_description(FILE *out, mxml_node_t *description,
+			                  const char *element, int summary);
+static void		write_element(FILE *out, mxml_node_t *doc,
+			              mxml_node_t *element, int mode);
+static void		write_file(FILE *out, const char *file);
+static void		write_function(FILE *out, mxml_node_t *doc,
+			               mxml_node_t *function, int level);
+static void		write_html(const char *section, const char *title,
+			           const char *footerfile,
+			           const char *headerfile,
+				   const char *introfile, const char *cssfile,
+				   const char *framefile,
+				   const char *docset, const char *docversion,
+				   const char *feedname, const char *feedurl,
+				   mxml_node_t *doc);
+static void		write_html_head(FILE *out, const char *section,
+			                const char *title, const char *cssfile);
+static void		write_man(const char *man_name, const char *section,
+			          const char *title, const char *headerfile,
+				  const char *footerfile, const char *introfile,
+				  mxml_node_t *doc);
+static void		write_scu(FILE *out, mxml_node_t *doc,
+			          mxml_node_t *scut);
+static void		write_string(FILE *out, const char *s, int mode);
+static void		write_toc(FILE *out, mxml_node_t *doc,
+			          const char *introfile, const char *target,
+				  int xml);
+static void		write_tokens(FILE *out, mxml_node_t *doc,
+			             const char *path);
+static const char	*ws_cb(mxml_node_t *node, int where);
+
+
+/*
+ * 'main()' - Main entry for test program.
+ */
+
+int					/* O - Exit status */
+main(int  argc,				/* I - Number of command-line args */
+     char *argv[])			/* I - Command-line args */
+{
+  int		i;			/* Looping var */
+  int		len;			/* Length of argument */
+  FILE		*fp;			/* File to read */
+  mxml_node_t	*doc;			/* XML documentation tree */
+  mxml_node_t	*mxmldoc;		/* mxmldoc node */
+  const char	*cssfile,		/* CSS stylesheet file */
+		*docset,		/* Documentation set directory */
+		*docversion,		/* Documentation set version */
+		*feedname,		/* Feed name for documentation set */
+		*feedurl,		/* Feed URL for documentation set */
+		*footerfile,		/* Footer file */
+		*framefile,		/* Framed HTML basename */
+		*headerfile,		/* Header file */
+		*introfile,		/* Introduction file */
+		*name,			/* Name of manpage */
+		*path,			/* Path to help file for tokens */
+		*section,		/* Section/keywords of documentation */
+		*title,			/* Title of documentation */
+		*xmlfile;		/* XML file */
+  int		mode,			/* Output mode */
+		update;			/* Updated XML file */
+
+
+ /*
+  * Check arguments...
+  */
+
+  cssfile     = NULL;
+  doc         = NULL;
+  docset      = NULL;
+  docversion  = NULL;
+  feedname    = NULL;
+  feedurl     = NULL;
+  footerfile  = NULL;
+  framefile   = NULL;
+  headerfile  = NULL;
+  introfile   = NULL;
+  mode        = OUTPUT_HTML;
+  mxmldoc     = NULL;
+  name        = NULL;
+  path        = NULL;
+  section     = NULL;
+  title       = NULL;
+  update      = 0;
+  xmlfile     = NULL;
+
+  for (i = 1; i < argc; i ++)
+    if (!strcmp(argv[i], "--help"))
+    {
+     /*
+      * Show help...
+      */
+
+      usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--version"))
+    {
+     /*
+      * Show version...
+      */
+
+      puts(MXML_VERSION + 10);
+      return (0);
+    }
+    else if (!strcmp(argv[i], "--css") && !cssfile)
+    {
+     /*
+      * Set CSS stylesheet file...
+      */
+
+      i ++;
+      if (i < argc)
+        cssfile = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--docset") && !docset)
+    {
+     /*
+      * Set documentation set directory...
+      */
+
+      i ++;
+      if (i < argc)
+        docset = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--docversion") && !docversion)
+    {
+     /*
+      * Set documentation set directory...
+      */
+
+      i ++;
+      if (i < argc)
+        docversion = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--footer") && !footerfile)
+    {
+     /*
+      * Set footer file...
+      */
+
+      i ++;
+      if (i < argc)
+        footerfile = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--feedname") && !feedname)
+    {
+     /*
+      * Set documentation set feed name...
+      */
+
+      i ++;
+      if (i < argc)
+        feedname = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--feedurl") && !feedurl)
+    {
+     /*
+      * Set documentation set feed name...
+      */
+
+      i ++;
+      if (i < argc)
+        feedurl = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--framed") && !framefile)
+    {
+     /*
+      * Set base filename for framed HTML output...
+      */
+
+      i ++;
+      if (i < argc)
+        framefile = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--header") && !headerfile)
+    {
+     /*
+      * Set header file...
+      */
+
+      i ++;
+      if (i < argc)
+        headerfile = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--intro") && !introfile)
+    {
+     /*
+      * Set intro file...
+      */
+
+      i ++;
+      if (i < argc)
+        introfile = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--man") && !name)
+    {
+     /*
+      * Output manpage...
+      */
+
+      i ++;
+      if (i < argc)
+      {
+        mode = OUTPUT_MAN;
+        name = argv[i];
+      }
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--no-output"))
+      mode = OUTPUT_NONE;
+    else if (!strcmp(argv[i], "--section") && !section)
+    {
+     /*
+      * Set section/keywords...
+      */
+
+      i ++;
+      if (i < argc)
+        section = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--title") && !title)
+    {
+     /*
+      * Set title...
+      */
+
+      i ++;
+      if (i < argc)
+        title = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (!strcmp(argv[i], "--tokens"))
+    {
+     /*
+      * Output Tokens.xml file...
+      */
+
+      mode = OUTPUT_TOKENS;
+
+      i ++;
+      if (i < argc)
+        path = argv[i];
+      else
+        usage(NULL);
+    }
+    else if (argv[i][0] == '-')
+    {
+     /*
+      * Unknown/bad option...
+      */
+
+      usage(argv[i]);
+    }
+    else
+    {
+     /*
+      * Process XML or source file...
+      */
+
+      len = (int)strlen(argv[i]);
+      if (len > 4 && !strcmp(argv[i] + len - 4, ".xml"))
+      {
+       /*
+        * Set XML file...
+	*/
+
+        if (xmlfile)
+	  usage(NULL);
+
+        xmlfile = argv[i];
+
+        if (!doc)
+	{
+	  if ((fp = fopen(argv[i], "r")) != NULL)
+	  {
+	   /*
+	    * Read the existing XML file...
+	    */
+
+	    doc = mxmlLoadFile(NULL, fp, load_cb);
+
+	    fclose(fp);
+
+	    if (!doc)
+	    {
+	      mxmldoc = NULL;
+
+	      fprintf(stderr,
+	              "mxmldoc: Unable to read the XML documentation file "
+		      "\"%s\"!\n", argv[i]);
+	    }
+	    else if ((mxmldoc = mxmlFindElement(doc, doc, "mxmldoc", NULL,
+                                        	NULL, MXML_DESCEND)) == NULL)
+	    {
+	      fprintf(stderr,
+	              "mxmldoc: XML documentation file \"%s\" is missing "
+		      "<mxmldoc> node!!\n", argv[i]);
+
+	      mxmlDelete(doc);
+	      doc = NULL;
+	    }
+	  }
+	  else
+	  {
+	    doc     = NULL;
+	    mxmldoc = NULL;
+	  }
+
+	  if (!doc)
+	    doc = new_documentation(&mxmldoc);
+        }
+      }
+      else
+      {
+       /*
+        * Load source file...
+	*/
+
+        update = 1;
+
+	if (!doc)
+	  doc = new_documentation(&mxmldoc);
+
+	if ((fp = fopen(argv[i], "r")) == NULL)
+	{
+	  fprintf(stderr, "mxmldoc: Unable to open source file \"%s\": %s\n",
+	          argv[i], strerror(errno));
+	  mxmlDelete(doc);
+	  return (1);
+	}
+	else if (scan_file(argv[i], fp, mxmldoc))
+	{
+	  fclose(fp);
+	  mxmlDelete(doc);
+	  return (1);
+	}
+	else
+	  fclose(fp);
+      }
+    }
+
+  if (update && xmlfile)
+  {
+   /*
+    * Save the updated XML documentation file...
+    */
+
+    if ((fp = fopen(xmlfile, "w")) != NULL)
+    {
+     /*
+      * Write over the existing XML file...
+      */
+
+      mxmlSetWrapMargin(0);
+
+      if (mxmlSaveFile(doc, fp, ws_cb))
+      {
+	fprintf(stderr,
+	        "mxmldoc: Unable to write the XML documentation file \"%s\": "
+		"%s!\n", xmlfile, strerror(errno));
+	fclose(fp);
+	mxmlDelete(doc);
+	return (1);
+      }
+
+      fclose(fp);
+    }
+    else
+    {
+      fprintf(stderr,
+              "mxmldoc: Unable to create the XML documentation file \"%s\": "
+	      "%s!\n", xmlfile, strerror(errno));
+      mxmlDelete(doc);
+      return (1);
+    }
+  }
+
+  switch (mode)
+  {
+    case OUTPUT_HTML :
+       /*
+        * Write HTML documentation...
+        */
+
+        write_html(section, title ? title : "Documentation", footerfile,
+	           headerfile, introfile, cssfile, framefile, docset,
+		   docversion, feedname, feedurl, mxmldoc);
+        break;
+
+    case OUTPUT_MAN :
+       /*
+        * Write manpage documentation...
+        */
+
+        write_man(name, section, title, footerfile, headerfile, introfile,
+	          mxmldoc);
+        break;
+
+    case OUTPUT_TOKENS :
+	fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+	      "<Tokens version=\"1.0\">\n", stdout);
+
+	write_tokens(stdout, mxmldoc, path);
+
+	fputs("</Tokens>\n", stdout);
+        break;
+  }
+
+ /*
+  * Delete the tree and return...
+  */
+
+  mxmlDelete(doc);
+
+  return (0);
+}
+
+
+/*
+ * 'add_variable()' - Add a variable or argument.
+ */
+
+static mxml_node_t *			/* O - New variable/argument */
+add_variable(mxml_node_t *parent,	/* I - Parent node */
+             const char  *name,		/* I - "argument" or "variable" */
+             mxml_node_t *type)		/* I - Type nodes */
+{
+  mxml_node_t	*variable,		/* New variable */
+		*node,			/* Current node */
+		*next;			/* Next node */
+  char		buffer[16384],		/* String buffer */
+		*bufptr;		/* Pointer into buffer */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "add_variable(parent=%p, name=\"%s\", type=%p)\n",
+          parent, name, type);
+#endif /* DEBUG */
+
+ /*
+  * Range check input...
+  */
+
+  if (!type || !type->child)
+    return (NULL);
+
+ /*
+  * Create the variable/argument node...
+  */
+
+  variable = mxmlNewElement(parent, name);
+
+ /*
+  * Check for a default value...
+  */
+
+  for (node = type->child; node; node = node->next)
+    if (!strcmp(node->value.text.string, "="))
+      break;
+
+  if (node)
+  {
+   /*
+    * Default value found, copy it and add as a "default" attribute...
+    */
+
+    for (bufptr = buffer; node; bufptr += strlen(bufptr))
+    {
+      if (node->value.text.whitespace && bufptr > buffer)
+	*bufptr++ = ' ';
+
+      strcpy(bufptr, node->value.text.string);
+
+      next = node->next;
+      mxmlDelete(node);
+      node = next;
+    }
+
+    mxmlElementSetAttr(variable, "default", buffer);
+  }
+
+ /*
+  * Extract the argument/variable name...
+  */
+
+  if (type->last_child->value.text.string[0] == ')')
+  {
+   /*
+    * Handle "type (*name)(args)"...
+    */
+
+    for (node = type->child; node; node = node->next)
+      if (node->value.text.string[0] == '(')
+	break;
+
+    for (bufptr = buffer; node; bufptr += strlen(bufptr))
+    {
+      if (node->value.text.whitespace && bufptr > buffer)
+	*bufptr++ = ' ';
+
+      strcpy(bufptr, node->value.text.string);
+
+      next = node->next;
+      mxmlDelete(node);
+      node = next;
+    }
+  }
+  else
+  {
+   /*
+    * Handle "type name"...
+    */
+
+    strcpy(buffer, type->last_child->value.text.string);
+    mxmlDelete(type->last_child);
+  }
+
+ /*
+  * Set the name...
+  */
+
+  mxmlElementSetAttr(variable, "name", buffer);
+
+ /*
+  * Add the remaining type information to the variable node...
+  */
+
+  mxmlAdd(variable, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, type);
+
+ /*
+  * Add new new variable node...
+  */
+
+  return (variable);
+}
+
+
+/*
+ * 'find_public()' - Find a public function, type, etc.
+ */
+
+static mxml_node_t *			/* I - Found node or NULL */
+find_public(mxml_node_t *node,		/* I - Current node */
+            mxml_node_t *top,		/* I - Top node */
+            const char  *name)		/* I - Name of element */
+{
+  mxml_node_t	*description,		/* Description node */
+		*comment;		/* Comment node */
+
+
+  for (node = mxmlFindElement(node, top, name, NULL, NULL,
+                              node == top ? MXML_DESCEND_FIRST :
+			                    MXML_NO_DESCEND);
+       node;
+       node = mxmlFindElement(node, top, name, NULL, NULL, MXML_NO_DESCEND))
+  {
+   /*
+    * Get the description for this node...
+    */
+
+    description = mxmlFindElement(node, node, "description", NULL, NULL,
+                                  MXML_DESCEND_FIRST);
+
+   /*
+    * A missing or empty description signals a private node...
+    */
+
+    if (!description)
+      continue;
+
+   /*
+    * Look for @private@ in the comment text...
+    */
+
+    for (comment = description->child; comment; comment = comment->next)
+      if ((comment->type == MXML_TEXT &&
+           strstr(comment->value.text.string, "@private@")) ||
+          (comment->type == MXML_OPAQUE &&
+           strstr(comment->value.opaque, "@private@")))
+        break;
+
+    if (!comment)
+    {
+     /*
+      * No @private@, so return this node...
+      */
+
+      return (node);
+    }
+  }
+
+ /*
+  * If we get here, there are no (more) public nodes...
+  */
+
+  return (NULL);
+}
+
+
+/*
+ * 'get_comment_info()' - Get info from comment.
+ */
+
+static char *				/* O - Info from comment */
+get_comment_info(
+    mxml_node_t *description)		/* I - Description node */
+{
+  char		text[10240],		/* Description text */
+		since[255],		/* @since value */
+		*ptr;			/* Pointer into text */
+  static char	info[1024];		/* Info string */
+
+
+  if (!description)
+    return ("");
+
+  get_text(description, text, sizeof(text));
+
+  for (ptr = strchr(text, '@'); ptr; ptr = strchr(ptr + 1, '@'))
+  {
+    if (!strncmp(ptr, "@deprecated@", 12))
+      return ("<span class=\"info\"> DEPRECATED </span>");
+    else if (!strncmp(ptr, "@since ", 7))
+    {
+      strncpy(since, ptr + 7, sizeof(since) - 1);
+      since[sizeof(since) - 1] = '\0';
+
+      if ((ptr = strchr(since, '@')) != NULL)
+        *ptr = '\0';
+
+      snprintf(info, sizeof(info), "<span class=\"info\"> %s </span>", since);
+      return (info);
+    }
+  }
+
+  return ("");
+}
+
+
+/*
+ * 'get_text()' - Get the text for a node.
+ */
+
+static char *				/* O - Text in node */
+get_text(mxml_node_t *node,		/* I - Node to get */
+         char        *buffer,		/* I - Buffer */
+	 int         buflen)		/* I - Size of buffer */
+{
+  char		*ptr,			/* Pointer into buffer */
+		*end;			/* End of buffer */
+  int		len;			/* Length of node */
+  mxml_node_t	*current;		/* Current node */
+
+
+  ptr = buffer;
+  end = buffer + buflen - 1;
+
+  for (current = node->child; current && ptr < end; current = current->next)
+  {
+    if (current->type == MXML_TEXT)
+    {
+      if (current->value.text.whitespace)
+        *ptr++ = ' ';
+
+      len = (int)strlen(current->value.text.string);
+      if (len > (int)(end - ptr))
+        len = (int)(end - ptr);
+
+      memcpy(ptr, current->value.text.string, len);
+      ptr += len;
+    }
+    else if (current->type == MXML_OPAQUE)
+    {
+      len = (int)strlen(current->value.opaque);
+      if (len > (int)(end - ptr))
+        len = (int)(end - ptr);
+
+      memcpy(ptr, current->value.opaque, len);
+      ptr += len;
+    }
+  }
+
+  *ptr = '\0';
+
+  return (buffer);
+}
+
+
+/*
+ * 'load_cb()' - Set the type of child nodes.
+ */
+
+static mxml_type_t			/* O - Node type */
+load_cb(mxml_node_t *node)		/* I - Node */
+{
+  if (!strcmp(node->value.element.name, "description"))
+    return (MXML_OPAQUE);
+  else
+    return (MXML_TEXT);
+}
+
+
+/*
+ * 'new_documentation()' - Create a new documentation tree.
+ */
+
+static mxml_node_t *			/* O - New documentation */
+new_documentation(mxml_node_t **mxmldoc)/* O - mxmldoc node */
+{
+  mxml_node_t	*doc;			/* New documentation */
+
+
+ /*
+  * Create an empty XML documentation file...
+  */
+
+  doc = mxmlNewXML(NULL);
+
+  *mxmldoc = mxmlNewElement(doc, "mxmldoc");
+
+  mxmlElementSetAttr(*mxmldoc, "xmlns", "http://www.easysw.com");
+  mxmlElementSetAttr(*mxmldoc, "xmlns:xsi",
+                     "http://www.w3.org/2001/XMLSchema-instance");
+  mxmlElementSetAttr(*mxmldoc, "xsi:schemaLocation",
+                     "http://www.minixml.org/mxmldoc.xsd");
+
+  return (doc);
+}
+
+
+/*
+ * 'remove_directory()' - Remove a directory.
+ */
+
+static int				/* O - 1 on success, 0 on failure */
+remove_directory(const char *path)	/* I - Directory to remove */
+{
+#ifdef WIN32
+  /* TODO: Add Windows directory removal code */
+
+#else
+  DIR		*dir;			/* Directory */
+  struct dirent	*dent;			/* Current directory entry */
+  char		filename[1024];		/* Current filename */
+  struct stat	fileinfo;		/* File information */
+
+
+  if ((dir = opendir(path)) == NULL)
+  {
+    fprintf(stderr, "mxmldoc: Unable to open directory \"%s\": %s\n", path,
+            strerror(errno));
+    return (0);
+  }
+
+  while ((dent = readdir(dir)) != NULL)
+  {
+   /*
+    * Skip "." and ".."...
+    */
+
+    if (!strcmp(dent->d_name, ".") || !strcmp(dent->d_name, ".."))
+      continue;
+
+   /*
+    * See if we have a file or directory...
+    */
+
+    snprintf(filename, sizeof(filename), "%s/%s", path, dent->d_name);
+
+    if (stat(filename, &fileinfo))
+    {
+      fprintf(stderr, "mxmldoc: Unable to stat \"%s\": %s\n", filename,
+	      strerror(errno));
+      closedir(dir);
+      return (0);
+    }
+
+    if (S_ISDIR(fileinfo.st_mode))
+    {
+      if (!remove_directory(filename))
+      {
+        closedir(dir);
+	return (0);
+      }
+    }
+    else if (unlink(filename))
+    {
+      fprintf(stderr, "mxmldoc: Unable to remove \"%s\": %s\n", filename,
+	      strerror(errno));
+      closedir(dir);
+      return (0);
+    }
+  }
+
+  closedir(dir);
+
+  if (rmdir(path))
+  {
+    fprintf(stderr, "mxmldoc: Unable to remove directory \"%s\": %s\n", path,
+            strerror(errno));
+    return (0);
+  }
+#endif /* WIN32 */
+
+  return (1);
+}
+
+
+/*
+ * 'safe_strcpy()' - Copy a string allowing for overlapping strings.
+ */
+
+static void
+safe_strcpy(char       *dst,		/* I - Destination string */
+            const char *src)		/* I - Source string */
+{
+  while (*src)
+    *dst++ = *src++;
+
+  *dst = '\0';
+}
+
+
+/*
+ * 'scan_file()' - Scan a source file.
+ */
+
+static int				/* O - 0 on success, -1 on error */
+scan_file(const char  *filename,	/* I - Filename */
+          FILE        *fp,		/* I - File to scan */
+          mxml_node_t *tree)		/* I - Function tree */
+{
+  int		state,			/* Current parser state */
+		braces,			/* Number of braces active */
+		parens;			/* Number of active parenthesis */
+  int		ch;			/* Current character */
+  char		buffer[65536],		/* String buffer */
+		*bufptr;		/* Pointer into buffer */
+  const char	*scope;			/* Current variable/function scope */
+  mxml_node_t	*comment,		/* <comment> node */
+		*constant,		/* <constant> node */
+		*enumeration,		/* <enumeration> node */
+		*function,		/* <function> node */
+		*fstructclass,		/* function struct/class node */
+		*structclass,		/* <struct> or <class> node */
+		*typedefnode,		/* <typedef> node */
+		*variable,		/* <variable> or <argument> node */
+		*returnvalue,		/* <returnvalue> node */
+		*type,			/* <type> node */
+		*description,		/* <description> node */
+		*node,			/* Current node */
+		*next;			/* Next node */
+#if DEBUG > 1
+  mxml_node_t	*temp;			/* Temporary node */
+  int		oldstate,		/* Previous state */
+		oldch;			/* Old character */
+  static const char *states[] =		/* State strings */
+		{
+		  "STATE_NONE",
+		  "STATE_PREPROCESSOR",
+		  "STATE_C_COMMENT",
+		  "STATE_CXX_COMMENT",
+		  "STATE_STRING",
+		  "STATE_CHARACTER",
+		  "STATE_IDENTIFIER"
+		};
+#endif /* DEBUG > 1 */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "scan_file(filename=\"%s\", fp=%p, tree=%p)\n", filename,
+          fp, tree);
+#endif /* DEBUG */
+
+ /*
+  * Initialize the finite state machine...
+  */
+
+  state        = STATE_NONE;
+  braces       = 0;
+  parens       = 0;
+  bufptr       = buffer;
+
+  comment      = mxmlNewElement(MXML_NO_PARENT, "temp");
+  constant     = NULL;
+  enumeration  = NULL;
+  function     = NULL;
+  variable     = NULL;
+  returnvalue  = NULL;
+  type         = NULL;
+  description  = NULL;
+  typedefnode  = NULL;
+  structclass  = NULL;
+  fstructclass = NULL;
+
+  if (!strcmp(tree->value.element.name, "class"))
+    scope = "private";
+  else
+    scope = NULL;
+
+ /*
+  * Read until end-of-file...
+  */
+
+  while ((ch = getc(fp)) != EOF)
+  {
+#if DEBUG > 1
+    oldstate = state;
+    oldch    = ch;
+#endif /* DEBUG > 1 */
+
+    switch (state)
+    {
+      case STATE_NONE :			/* No state - whitespace, etc. */
+          switch (ch)
+	  {
+	    case '/' :			/* Possible C/C++ comment */
+	        ch     = getc(fp);
+		bufptr = buffer;
+
+		if (ch == '*')
+		  state = STATE_C_COMMENT;
+		else if (ch == '/')
+		  state = STATE_CXX_COMMENT;
+		else
+		{
+		  ungetc(ch, fp);
+
+		  if (type)
+		  {
+#ifdef DEBUG
+                    fputs("Identifier: <<<< / >>>\n", stderr);
+#endif /* DEBUG */
+                    ch = type->last_child->value.text.string[0];
+		    mxmlNewText(type, isalnum(ch) || ch == '_', "/");
+		  }
+		}
+		break;
+
+	    case '#' :			/* Preprocessor */
+#ifdef DEBUG
+	        fputs("    #preprocessor...\n", stderr);
+#endif /* DEBUG */
+	        state = STATE_PREPROCESSOR;
+		break;
+
+            case '\'' :			/* Character constant */
+	        state = STATE_CHARACTER;
+		bufptr = buffer;
+		*bufptr++ = ch;
+		break;
+
+            case '\"' :			/* String constant */
+	        state = STATE_STRING;
+		bufptr = buffer;
+		*bufptr++ = ch;
+		break;
+
+            case '{' :
+#ifdef DEBUG
+	        fprintf(stderr, "    open brace, function=%p, type=%p...\n",
+		        function, type);
+                if (type)
+                  fprintf(stderr, "    type->child=\"%s\"...\n",
+		          type->child->value.text.string);
+#endif /* DEBUG */
+
+	        if (function)
+		{
+		  if (fstructclass)
+		  {
+		    sort_node(fstructclass, function);
+		    fstructclass = NULL;
+		  }
+		  else
+		    sort_node(tree, function);
+
+		  function = NULL;
+		}
+		else if (type && type->child &&
+		         ((!strcmp(type->child->value.text.string, "typedef") &&
+			   type->child->next &&
+			   (!strcmp(type->child->next->value.text.string, "struct") ||
+			    !strcmp(type->child->next->value.text.string, "union") ||
+			    !strcmp(type->child->next->value.text.string, "class"))) ||
+			  !strcmp(type->child->value.text.string, "union") ||
+			  !strcmp(type->child->value.text.string, "struct") ||
+			  !strcmp(type->child->value.text.string, "class")))
+		{
+		 /*
+		  * Start of a class or structure...
+		  */
+
+		  if (!strcmp(type->child->value.text.string, "typedef"))
+		  {
+#ifdef DEBUG
+                    fputs("    starting typedef...\n", stderr);
+#endif /* DEBUG */
+
+		    typedefnode = mxmlNewElement(MXML_NO_PARENT, "typedef");
+		    mxmlDelete(type->child);
+		  }
+		  else
+		    typedefnode = NULL;
+
+		  structclass = mxmlNewElement(MXML_NO_PARENT,
+		                               type->child->value.text.string);
+
+#ifdef DEBUG
+                  fprintf(stderr, "%c%s: <<<< %s >>>\n",
+		          toupper(type->child->value.text.string[0]),
+			  type->child->value.text.string + 1,
+			  type->child->next ?
+			      type->child->next->value.text.string : "(noname)");
+
+                  fputs("    type =", stderr);
+                  for (node = type->child; node; node = node->next)
+		    fprintf(stderr, " \"%s\"", node->value.text.string);
+		  putc('\n', stderr);
+
+                  fprintf(stderr, "    scope = %s\n", scope ? scope : "(null)");
+#endif /* DEBUG */
+
+                  if (type->child->next)
+		  {
+		    mxmlElementSetAttr(structclass, "name",
+		                       type->child->next->value.text.string);
+		    sort_node(tree, structclass);
+		  }
+
+                  if (typedefnode && type->child)
+		    type->child->value.text.whitespace = 0;
+                  else if (structclass && type->child &&
+		           type->child->next && type->child->next->next)
+		  {
+		    for (bufptr = buffer, node = type->child->next->next;
+		         node;
+			 bufptr += strlen(bufptr))
+		    {
+		      if (node->value.text.whitespace && bufptr > buffer)
+			*bufptr++ = ' ';
+
+		      strcpy(bufptr, node->value.text.string);
+
+		      next = node->next;
+		      mxmlDelete(node);
+		      node = next;
+		    }
+
+		    mxmlElementSetAttr(structclass, "parent", buffer);
+
+		    mxmlDelete(type);
+		    type = NULL;
+		  }
+		  else
+		  {
+		    mxmlDelete(type);
+		    type = NULL;
+		  }
+
+		  if (typedefnode && comment->last_child)
+		  {
+		   /*
+		    * Copy comment for typedef as well as class/struct/union...
+		    */
+
+		    mxmlNewText(comment, 0,
+		                comment->last_child->value.text.string);
+		    description = mxmlNewElement(typedefnode, "description");
+#ifdef DEBUG
+		    fprintf(stderr,
+		            "    duplicating comment %p/%p for typedef...\n",
+			    comment->last_child, comment->child);
+#endif /* DEBUG */
+		    update_comment(typedefnode, comment->last_child);
+		    mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+		            comment->last_child);
+		  }
+
+		  description = mxmlNewElement(structclass, "description");
+#ifdef DEBUG
+		  fprintf(stderr, "    adding comment %p/%p to %s...\n",
+		          comment->last_child, comment->child,
+			  structclass->value.element.name);
+#endif /* DEBUG */
+		  update_comment(structclass, comment->last_child);
+		  mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+		          comment->last_child);
+
+                  if (scan_file(filename, fp, structclass))
+		  {
+		    mxmlDelete(comment);
+		    return (-1);
+		  }
+
+#ifdef DEBUG
+                  fputs("    ended typedef...\n", stderr);
+#endif /* DEBUG */
+                  structclass = NULL;
+                  break;
+                }
+		else if (type && type->child && type->child->next &&
+		         (!strcmp(type->child->value.text.string, "enum") ||
+			  (!strcmp(type->child->value.text.string, "typedef") &&
+			   !strcmp(type->child->next->value.text.string, "enum"))))
+                {
+		 /*
+		  * Enumeration type...
+		  */
+
+		  if (!strcmp(type->child->value.text.string, "typedef"))
+		  {
+#ifdef DEBUG
+                    fputs("    starting typedef...\n", stderr);
+#endif /* DEBUG */
+
+		    typedefnode = mxmlNewElement(MXML_NO_PARENT, "typedef");
+		    mxmlDelete(type->child);
+		  }
+		  else
+		    typedefnode = NULL;
+
+		  enumeration = mxmlNewElement(MXML_NO_PARENT, "enumeration");
+
+#ifdef DEBUG
+                  fprintf(stderr, "Enumeration: <<<< %s >>>\n",
+			  type->child->next ?
+			      type->child->next->value.text.string : "(noname)");
+#endif /* DEBUG */
+
+                  if (type->child->next)
+		  {
+		    mxmlElementSetAttr(enumeration, "name",
+		                       type->child->next->value.text.string);
+		    sort_node(tree, enumeration);
+		  }
+
+                  if (typedefnode && type->child)
+		    type->child->value.text.whitespace = 0;
+                  else
+		  {
+		    mxmlDelete(type);
+		    type = NULL;
+		  }
+
+		  if (typedefnode && comment->last_child)
+		  {
+		   /*
+		    * Copy comment for typedef as well as class/struct/union...
+		    */
+
+		    mxmlNewText(comment, 0,
+		                comment->last_child->value.text.string);
+		    description = mxmlNewElement(typedefnode, "description");
+#ifdef DEBUG
+		    fprintf(stderr,
+		            "    duplicating comment %p/%p for typedef...\n",
+			    comment->last_child, comment->child);
+#endif /* DEBUG */
+		    update_comment(typedefnode, comment->last_child);
+		    mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+		            comment->last_child);
+		  }
+
+		  description = mxmlNewElement(enumeration, "description");
+#ifdef DEBUG
+		  fprintf(stderr, "    adding comment %p/%p to enumeration...\n",
+		          comment->last_child, comment->child);
+#endif /* DEBUG */
+		  update_comment(enumeration, comment->last_child);
+		  mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+		          comment->last_child);
+		}
+		else if (type && type->child &&
+		         !strcmp(type->child->value.text.string, "extern"))
+                {
+                  if (scan_file(filename, fp, tree))
+		  {
+		    mxmlDelete(comment);
+		    return (-1);
+		  }
+                }
+		else if (type)
+		{
+		  mxmlDelete(type);
+		  type = NULL;
+		}
+
+	        braces ++;
+		function = NULL;
+		variable = NULL;
+		break;
+
+            case '}' :
+#ifdef DEBUG
+	        fputs("    close brace...\n", stderr);
+#endif /* DEBUG */
+
+                if (structclass)
+		  scope = NULL;
+
+                if (!typedefnode)
+		  enumeration = NULL;
+
+		constant    = NULL;
+		structclass = NULL;
+
+	        if (braces > 0)
+		  braces --;
+		else
+		{
+		  mxmlDelete(comment);
+		  return (0);
+		}
+		break;
+
+            case '(' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< ( >>>\n", stderr);
+#endif /* DEBUG */
+		  mxmlNewText(type, 0, "(");
+		}
+
+	        parens ++;
+		break;
+
+            case ')' :
+		if (type && parens)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< ) >>>\n", stderr);
+#endif /* DEBUG */
+		  mxmlNewText(type, 0, ")");
+		}
+
+                if (function && type && !parens)
+		{
+		 /*
+		  * Check for "void" argument...
+		  */
+
+		  if (type->child && type->child->next)
+		    variable = add_variable(function, "argument", type);
+		  else
+		    mxmlDelete(type);
+
+		  type = NULL;
+		}
+
+	        if (parens > 0)
+		  parens --;
+		break;
+
+	    case ';' :
+#ifdef DEBUG
+                fputs("Identifier: <<<< ; >>>\n", stderr);
+		fprintf(stderr, "    enumeration=%p, function=%p, type=%p, type->child=%p, typedefnode=%p\n",
+		        enumeration, function, type, type ? type->child : NULL, typedefnode);
+#endif /* DEBUG */
+
+		if (function)
+		{
+		  if (!strcmp(tree->value.element.name, "class"))
+		  {
+#ifdef DEBUG
+		    fputs("    ADDING FUNCTION TO CLASS\n", stderr);
+#endif /* DEBUG */
+		    sort_node(tree, function);
+		  }
+		  else
+		    mxmlDelete(function);
+
+		  function = NULL;
+		  variable = NULL;
+		}
+
+		if (type)
+		{
+		 /*
+		  * See if we have a typedef...
+		  */
+
+		  if (type->child &&
+		      !strcmp(type->child->value.text.string, "typedef"))
+		  {
+		   /*
+		    * Yes, add it!
+		    */
+
+		    typedefnode = mxmlNewElement(MXML_NO_PARENT, "typedef");
+
+		    for (node = type->child->next; node; node = node->next)
+		      if (!strcmp(node->value.text.string, "("))
+			break;
+
+                    if (node)
+		    {
+		      for (node = node->next; node; node = node->next)
+			if (strcmp(node->value.text.string, "*"))
+			  break;
+                    }
+
+                    if (!node)
+		      node = type->last_child;
+
+#ifdef DEBUG
+		    fprintf(stderr, "    ADDING TYPEDEF FOR %p(%s)...\n",
+		            node, node->value.text.string);
+#endif /* DEBUG */
+
+		    mxmlElementSetAttr(typedefnode, "name",
+				       node->value.text.string);
+		    sort_node(tree, typedefnode);
+
+                    if (type->child != node)
+		      mxmlDelete(type->child);
+
+		    mxmlDelete(node);
+
+		    if (type->child)
+		      type->child->value.text.whitespace = 0;
+
+		    mxmlAdd(typedefnode, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+			    type);
+		    type = NULL;
+		    break;
+		  }
+		  else if (typedefnode && enumeration)
+		  {
+		   /*
+		    * Add enum typedef...
+		    */
+
+                    node = type->child;
+
+#ifdef DEBUG
+		    fprintf(stderr, "    ADDING TYPEDEF FOR %p(%s)...\n",
+		            node, node->value.text.string);
+#endif /* DEBUG */
+
+		    mxmlElementSetAttr(typedefnode, "name",
+				       node->value.text.string);
+		    sort_node(tree, typedefnode);
+		    mxmlDelete(type);
+
+		    type = mxmlNewElement(typedefnode, "type");
+                    mxmlNewText(type, 0, "enum");
+		    mxmlNewText(type, 1,
+		                mxmlElementGetAttr(enumeration, "name"));
+		    enumeration = NULL;
+		    type = NULL;
+		    break;
+		  }
+
+		  mxmlDelete(type);
+		  type = NULL;
+		}
+		break;
+
+	    case ':' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< : >>>\n", stderr);
+#endif /* DEBUG */
+		  mxmlNewText(type, 1, ":");
+		}
+		break;
+
+	    case '*' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< * >>>\n", stderr);
+#endif /* DEBUG */
+                  ch = type->last_child->value.text.string[0];
+		  mxmlNewText(type, isalnum(ch) || ch == '_', "*");
+		}
+		break;
+
+	    case ',' :
+		if (type && !enumeration)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< , >>>\n", stderr);
+#endif /* DEBUG */
+		  mxmlNewText(type, 0, ",");
+		}
+		break;
+
+	    case '&' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< & >>>\n", stderr);
+#endif /* DEBUG */
+		  mxmlNewText(type, 1, "&");
+		}
+		break;
+
+	    case '+' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< + >>>\n", stderr);
+#endif /* DEBUG */
+                  ch = type->last_child->value.text.string[0];
+		  mxmlNewText(type, isalnum(ch) || ch == '_', "+");
+		}
+		break;
+
+	    case '-' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< - >>>\n", stderr);
+#endif /* DEBUG */
+                  ch = type->last_child->value.text.string[0];
+		  mxmlNewText(type, isalnum(ch) || ch == '_', "-");
+		}
+		break;
+
+	    case '=' :
+		if (type)
+		{
+#ifdef DEBUG
+                  fputs("Identifier: <<<< = >>>\n", stderr);
+#endif /* DEBUG */
+                  ch = type->last_child->value.text.string[0];
+		  mxmlNewText(type, isalnum(ch) || ch == '_', "=");
+		}
+		break;
+
+            default :			/* Other */
+	        if (isalnum(ch) || ch == '_' || ch == '.' || ch == ':' || ch == '~')
+		{
+		  state     = STATE_IDENTIFIER;
+		  bufptr    = buffer;
+		  *bufptr++ = ch;
+		}
+		break;
+          }
+          break;
+
+      case STATE_PREPROCESSOR :		/* Preprocessor directive */
+          if (ch == '\n')
+	    state = STATE_NONE;
+	  else if (ch == '\\')
+	    getc(fp);
+          break;
+
+      case STATE_C_COMMENT :		/* Inside a C comment */
+          switch (ch)
+	  {
+	    case '\n' :
+	        while ((ch = getc(fp)) != EOF)
+		  if (ch == '*')
+		  {
+		    ch = getc(fp);
+
+		    if (ch == '/')
+		    {
+		      *bufptr = '\0';
+
+        	      if (comment->child != comment->last_child)
+		      {
+#ifdef DEBUG
+			fprintf(stderr, "    removing comment %p(%20.20s), last comment %p(%20.20s)...\n",
+				comment->child,
+				comment->child ? comment->child->value.text.string : "",
+				comment->last_child,
+				comment->last_child ? comment->last_child->value.text.string : "");
+#endif /* DEBUG */
+			mxmlDelete(comment->child);
+#ifdef DEBUG
+			fprintf(stderr, "    new comment %p, last comment %p...\n",
+				comment->child, comment->last_child);
+#endif /* DEBUG */
+		      }
+
+#ifdef DEBUG
+                      fprintf(stderr,
+		              "    processing comment, variable=%p, "
+		              "constant=%p, typedefnode=%p, tree=\"%s\"\n",
+		              variable, constant, typedefnode,
+			      tree->value.element.name);
+#endif /* DEBUG */
+
+		      if (variable)
+		      {
+		        if (strstr(buffer, "@private@"))
+			{
+			 /*
+			  * Delete private variables...
+			  */
+
+			  mxmlDelete(variable);
+			}
+			else
+			{
+			  description = mxmlNewElement(variable, "description");
+#ifdef DEBUG
+			  fprintf(stderr,
+			          "    adding comment %p/%p to variable...\n",
+			          comment->last_child, comment->child);
+#endif /* DEBUG */
+			  mxmlNewText(comment, 0, buffer);
+			  update_comment(variable,
+					 mxmlNewText(description, 0, buffer));
+                        }
+
+			variable = NULL;
+		      }
+		      else if (constant)
+		      {
+		        if (strstr(buffer, "@private@"))
+			{
+			 /*
+			  * Delete private constants...
+			  */
+
+			  mxmlDelete(constant);
+			}
+			else
+			{
+			  description = mxmlNewElement(constant, "description");
+#ifdef DEBUG
+			  fprintf(stderr,
+			          "    adding comment %p/%p to constant...\n",
+				  comment->last_child, comment->child);
+#endif /* DEBUG */
+			  mxmlNewText(comment, 0, buffer);
+			  update_comment(constant,
+					 mxmlNewText(description, 0, buffer));
+			}
+
+			constant = NULL;
+		      }
+		      else if (typedefnode)
+		      {
+		        if (strstr(buffer, "@private@"))
+			{
+			 /*
+			  * Delete private typedefs...
+			  */
+
+			  mxmlDelete(typedefnode);
+
+			  if (structclass)
+			  {
+			    mxmlDelete(structclass);
+			    structclass = NULL;
+			  }
+
+			  if (enumeration)
+			  {
+			    mxmlDelete(enumeration);
+			    enumeration = NULL;
+			  }
+			}
+			else
+			{
+			  description = mxmlNewElement(typedefnode, "description");
+#ifdef DEBUG
+			  fprintf(stderr,
+			          "    adding comment %p/%p to typedef %s...\n",
+				  comment->last_child, comment->child,
+				  mxmlElementGetAttr(typedefnode, "name"));
+#endif /* DEBUG */
+			  mxmlNewText(comment, 0, buffer);
+			  update_comment(typedefnode,
+					 mxmlNewText(description, 0, buffer));
+
+			  if (structclass)
+			  {
+			    description = mxmlNewElement(structclass, "description");
+			    update_comment(structclass,
+					   mxmlNewText(description, 0, buffer));
+			  }
+			  else if (enumeration)
+			  {
+			    description = mxmlNewElement(enumeration, "description");
+			    update_comment(enumeration,
+					   mxmlNewText(description, 0, buffer));
+			  }
+			}
+
+			typedefnode = NULL;
+		      }
+		      else if (strcmp(tree->value.element.name, "mxmldoc") &&
+		               !mxmlFindElement(tree, tree, "description",
+			                        NULL, NULL, MXML_DESCEND_FIRST))
+                      {
+        		description = mxmlNewElement(tree, "description");
+#ifdef DEBUG
+			fprintf(stderr, "    adding comment %p/%p to parent...\n",
+			        comment->last_child, comment->child);
+#endif /* DEBUG */
+        		mxmlNewText(comment, 0, buffer);
+			update_comment(tree,
+			               mxmlNewText(description, 0, buffer));
+		      }
+		      else
+		      {
+#ifdef DEBUG
+		        fprintf(stderr, "    before adding comment, child=%p, last_child=%p\n",
+			        comment->child, comment->last_child);
+#endif /* DEBUG */
+        		mxmlNewText(comment, 0, buffer);
+#ifdef DEBUG
+		        fprintf(stderr, "    after adding comment, child=%p, last_child=%p\n",
+			        comment->child, comment->last_child);
+#endif /* DEBUG */
+                      }
+#ifdef DEBUG
+		      fprintf(stderr, "C comment: <<<< %s >>>\n", buffer);
+#endif /* DEBUG */
+
+		      state = STATE_NONE;
+		      break;
+		    }
+		    else
+		      ungetc(ch, fp);
+		  }
+		  else if (ch == '\n' && bufptr > buffer &&
+		           bufptr < (buffer + sizeof(buffer) - 1))
+		    *bufptr++ = ch;
+		  else if (!isspace(ch))
+		    break;
+
+		if (ch != EOF)
+		  ungetc(ch, fp);
+
+                if (bufptr > buffer && bufptr < (buffer + sizeof(buffer) - 1))
+		  *bufptr++ = '\n';
+		break;
+
+	    case '/' :
+	        if (ch == '/' && bufptr > buffer && bufptr[-1] == '*')
+		{
+		  while (bufptr > buffer &&
+		         (bufptr[-1] == '*' || isspace(bufptr[-1] & 255)))
+		    bufptr --;
+		  *bufptr = '\0';
+
+        	  if (comment->child != comment->last_child)
+		  {
+#ifdef DEBUG
+		    fprintf(stderr, "    removing comment %p(%20.20s), last comment %p(%20.20s)...\n",
+			    comment->child,
+			    comment->child ? comment->child->value.text.string : "",
+			    comment->last_child,
+			    comment->last_child ? comment->last_child->value.text.string : "");
+#endif /* DEBUG */
+		    mxmlDelete(comment->child);
+#ifdef DEBUG
+		    fprintf(stderr, "    new comment %p, last comment %p...\n",
+			    comment->child, comment->last_child);
+#endif /* DEBUG */
+		  }
+
+#ifdef DEBUG
+                  fprintf(stderr,
+		          "    processing comment, variable=%p, "
+		          "constant=%p, typedefnode=%p, tree=\"%s\"\n",
+		          variable, constant, typedefnode,
+			  tree->value.element.name);
+#endif /* DEBUG */
+
+		  if (variable)
+		  {
+		    if (strstr(buffer, "@private@"))
+		    {
+		     /*
+		      * Delete private variables...
+		      */
+
+		      mxmlDelete(variable);
+		    }
+		    else
+		    {
+		      description = mxmlNewElement(variable, "description");
+#ifdef DEBUG
+		      fprintf(stderr, "    adding comment %p/%p to variable...\n",
+		              comment->last_child, comment->child);
+#endif /* DEBUG */
+		      mxmlNewText(comment, 0, buffer);
+		      update_comment(variable,
+				     mxmlNewText(description, 0, buffer));
+                    }
+
+		    variable = NULL;
+		  }
+		  else if (constant)
+		  {
+		    if (strstr(buffer, "@private@"))
+		    {
+		     /*
+		      * Delete private constants...
+		      */
+
+		      mxmlDelete(constant);
+		    }
+		    else
+		    {
+		      description = mxmlNewElement(constant, "description");
+#ifdef DEBUG
+		      fprintf(stderr, "    adding comment %p/%p to constant...\n",
+		              comment->last_child, comment->child);
+#endif /* DEBUG */
+		      mxmlNewText(comment, 0, buffer);
+		      update_comment(constant,
+				     mxmlNewText(description, 0, buffer));
+		    }
+
+		    constant = NULL;
+		  }
+		  else if (typedefnode)
+		  {
+		    if (strstr(buffer, "@private@"))
+		    {
+		     /*
+		      * Delete private typedefs...
+		      */
+
+		      mxmlDelete(typedefnode);
+
+		      if (structclass)
+		      {
+			mxmlDelete(structclass);
+			structclass = NULL;
+		      }
+
+		      if (enumeration)
+		      {
+			mxmlDelete(enumeration);
+			enumeration = NULL;
+		      }
+		    }
+		    else
+		    {
+		      description = mxmlNewElement(typedefnode, "description");
+#ifdef DEBUG
+		      fprintf(stderr,
+		              "    adding comment %p/%p to typedef %s...\n",
+			      comment->last_child, comment->child,
+			      mxmlElementGetAttr(typedefnode, "name"));
+#endif /* DEBUG */
+		      mxmlNewText(comment, 0, buffer);
+		      update_comment(typedefnode,
+				     mxmlNewText(description, 0, buffer));
+
+		      if (structclass)
+		      {
+			description = mxmlNewElement(structclass, "description");
+			update_comment(structclass,
+				       mxmlNewText(description, 0, buffer));
+		      }
+		      else if (enumeration)
+		      {
+			description = mxmlNewElement(enumeration, "description");
+			update_comment(enumeration,
+				       mxmlNewText(description, 0, buffer));
+		      }
+		    }
+
+		    typedefnode = NULL;
+		  }
+		  else if (strcmp(tree->value.element.name, "mxmldoc") &&
+		           !mxmlFindElement(tree, tree, "description",
+			                    NULL, NULL, MXML_DESCEND_FIRST))
+                  {
+        	    description = mxmlNewElement(tree, "description");
+#ifdef DEBUG
+		    fprintf(stderr, "    adding comment %p/%p to parent...\n",
+		            comment->last_child, comment->child);
+#endif /* DEBUG */
+		    mxmlNewText(comment, 0, buffer);
+		    update_comment(tree,
+			           mxmlNewText(description, 0, buffer));
+		  }
+		  else
+        	    mxmlNewText(comment, 0, buffer);
+
+#ifdef DEBUG
+		  fprintf(stderr, "C comment: <<<< %s >>>\n", buffer);
+#endif /* DEBUG */
+
+		  state = STATE_NONE;
+		  break;
+		}
+
+	    default :
+	        if (ch == ' ' && bufptr == buffer)
+		  break;
+
+	        if (bufptr < (buffer + sizeof(buffer) - 1))
+		  *bufptr++ = ch;
+		break;
+          }
+          break;
+
+      case STATE_CXX_COMMENT :		/* Inside a C++ comment */
+          if (ch == '\n')
+	  {
+	    state = STATE_NONE;
+	    *bufptr = '\0';
+
+            if (comment->child != comment->last_child)
+	    {
+#ifdef DEBUG
+	      fprintf(stderr, "    removing comment %p(%20.20s), last comment %p(%20.20s)...\n",
+		      comment->child,
+		      comment->child ? comment->child->value.text.string : "",
+		      comment->last_child,
+		      comment->last_child ? comment->last_child->value.text.string : "");
+#endif /* DEBUG */
+	      mxmlDelete(comment->child);
+#ifdef DEBUG
+	      fprintf(stderr, "    new comment %p, last comment %p...\n",
+		      comment->child, comment->last_child);
+#endif /* DEBUG */
+	    }
+
+	    if (variable)
+	    {
+	      if (strstr(buffer, "@private@"))
+	      {
+	       /*
+		* Delete private variables...
+		*/
+
+		mxmlDelete(variable);
+	      }
+	      else
+	      {
+		description = mxmlNewElement(variable, "description");
+#ifdef DEBUG
+		fprintf(stderr, "    adding comment %p/%p to variable...\n",
+		        comment->last_child, comment->child);
+#endif /* DEBUG */
+		mxmlNewText(comment, 0, buffer);
+		update_comment(variable,
+			       mxmlNewText(description, 0, buffer));
+              }
+
+	      variable = NULL;
+	    }
+	    else if (constant)
+	    {
+	      if (strstr(buffer, "@private@"))
+	      {
+	       /*
+		* Delete private constants...
+		*/
+
+		mxmlDelete(constant);
+	      }
+	      else
+	      {
+		description = mxmlNewElement(constant, "description");
+#ifdef DEBUG
+		fprintf(stderr, "    adding comment %p/%p to constant...\n",
+		        comment->last_child, comment->child);
+#endif /* DEBUG */
+		mxmlNewText(comment, 0, buffer);
+		update_comment(constant,
+			       mxmlNewText(description, 0, buffer));
+              }
+
+	      constant = NULL;
+	    }
+	    else if (typedefnode)
+	    {
+	      if (strstr(buffer, "@private@"))
+	      {
+	       /*
+		* Delete private typedefs...
+		*/
+
+		mxmlDelete(typedefnode);
+		typedefnode = NULL;
+
+		if (structclass)
+		{
+		  mxmlDelete(structclass);
+		  structclass = NULL;
+		}
+
+		if (enumeration)
+		{
+		  mxmlDelete(enumeration);
+		  enumeration = NULL;
+		}
+	      }
+	      else
+	      {
+		description = mxmlNewElement(typedefnode, "description");
+#ifdef DEBUG
+		fprintf(stderr, "    adding comment %p/%p to typedef %s...\n",
+			comment->last_child, comment->child,
+			mxmlElementGetAttr(typedefnode, "name"));
+#endif /* DEBUG */
+		mxmlNewText(comment, 0, buffer);
+		update_comment(typedefnode,
+			       mxmlNewText(description, 0, buffer));
+
+		if (structclass)
+		{
+		  description = mxmlNewElement(structclass, "description");
+		  update_comment(structclass,
+				 mxmlNewText(description, 0, buffer));
+		}
+		else if (enumeration)
+		{
+		  description = mxmlNewElement(enumeration, "description");
+		  update_comment(enumeration,
+				 mxmlNewText(description, 0, buffer));
+		}
+              }
+	    }
+	    else if (strcmp(tree->value.element.name, "mxmldoc") &&
+		     !mxmlFindElement(tree, tree, "description",
+			              NULL, NULL, MXML_DESCEND_FIRST))
+            {
+              description = mxmlNewElement(tree, "description");
+#ifdef DEBUG
+	      fprintf(stderr, "    adding comment %p/%p to parent...\n",
+	              comment->last_child, comment->child);
+#endif /* DEBUG */
+	      mxmlNewText(comment, 0, buffer);
+	      update_comment(tree,
+			     mxmlNewText(description, 0, buffer));
+	    }
+	    else
+              mxmlNewText(comment, 0, buffer);
+
+#ifdef DEBUG
+	    fprintf(stderr, "C++ comment: <<<< %s >>>\n", buffer);
+#endif /* DEBUG */
+	  }
+	  else if (ch == ' ' && bufptr == buffer)
+	    break;
+	  else if (bufptr < (buffer + sizeof(buffer) - 1))
+	    *bufptr++ = ch;
+          break;
+
+      case STATE_STRING :		/* Inside a string constant */
+	  *bufptr++ = ch;
+
+          if (ch == '\\')
+	    *bufptr++ = getc(fp);
+	  else if (ch == '\"')
+	  {
+	    *bufptr = '\0';
+
+	    if (type)
+	      mxmlNewText(type, type->child != NULL, buffer);
+
+	    state = STATE_NONE;
+	  }
+          break;
+
+      case STATE_CHARACTER :		/* Inside a character constant */
+	  *bufptr++ = ch;
+
+          if (ch == '\\')
+	    *bufptr++ = getc(fp);
+	  else if (ch == '\'')
+	  {
+	    *bufptr = '\0';
+
+	    if (type)
+	      mxmlNewText(type, type->child != NULL, buffer);
+
+	    state = STATE_NONE;
+	  }
+          break;
+
+      case STATE_IDENTIFIER :		/* Inside a keyword or identifier */
+	  if (isalnum(ch) || ch == '_' || ch == '[' || ch == ']' ||
+	      (ch == ',' && (parens > 1 || (type && !enumeration && !function))) ||
+	      ch == ':' || ch == '.' || ch == '~')
+	  {
+	    if (bufptr < (buffer + sizeof(buffer) - 1))
+	      *bufptr++ = ch;
+	  }
+	  else
+	  {
+	    ungetc(ch, fp);
+	    *bufptr = '\0';
+	    state   = STATE_NONE;
+
+#ifdef DEBUG
+            fprintf(stderr, "    braces=%d, type=%p, type->child=%p, buffer=\"%s\"\n",
+	            braces, type, type ? type->child : NULL, buffer);
+#endif /* DEBUG */
+
+            if (!braces)
+	    {
+	      if (!type || !type->child)
+	      {
+		if (!strcmp(tree->value.element.name, "class"))
+		{
+		  if (!strcmp(buffer, "public") ||
+	              !strcmp(buffer, "public:"))
+		  {
+		    scope = "public";
+#ifdef DEBUG
+		    fputs("    scope = public\n", stderr);
+#endif /* DEBUG */
+		    break;
+		  }
+		  else if (!strcmp(buffer, "private") ||
+	                   !strcmp(buffer, "private:"))
+		  {
+		    scope = "private";
+#ifdef DEBUG
+		    fputs("    scope = private\n", stderr);
+#endif /* DEBUG */
+		    break;
+		  }
+		  else if (!strcmp(buffer, "protected") ||
+	                   !strcmp(buffer, "protected:"))
+		  {
+		    scope = "protected";
+#ifdef DEBUG
+		    fputs("    scope = protected\n", stderr);
+#endif /* DEBUG */
+		    break;
+		  }
+		}
+	      }
+
+	      if (!type)
+                type = mxmlNewElement(MXML_NO_PARENT, "type");
+
+#ifdef DEBUG
+              fprintf(stderr, "    function=%p (%s), type->child=%p, ch='%c', parens=%d\n",
+	              function,
+		      function ? mxmlElementGetAttr(function, "name") : "null",
+	              type->child, ch, parens);
+#endif /* DEBUG */
+
+              if (!function && ch == '(')
+	      {
+	        if (type->child &&
+		    !strcmp(type->child->value.text.string, "extern"))
+		{
+		 /*
+		  * Remove external declarations...
+		  */
+
+		  mxmlDelete(type);
+		  type = NULL;
+		  break;
+		}
+
+	        if (type->child &&
+		    !strcmp(type->child->value.text.string, "static") &&
+		    !strcmp(tree->value.element.name, "mxmldoc"))
+		{
+		 /*
+		  * Remove static functions...
+		  */
+
+		  mxmlDelete(type);
+		  type = NULL;
+		  break;
+		}
+
+	        function = mxmlNewElement(MXML_NO_PARENT, "function");
+		if ((bufptr = strchr(buffer, ':')) != NULL && bufptr[1] == ':')
+		{
+		  *bufptr = '\0';
+		  bufptr += 2;
+
+		  if ((fstructclass =
+		           mxmlFindElement(tree, tree, "class", "name", buffer,
+		                           MXML_DESCEND_FIRST)) == NULL)
+		    fstructclass =
+		        mxmlFindElement(tree, tree, "struct", "name", buffer,
+		                        MXML_DESCEND_FIRST);
+		}
+		else
+		  bufptr = buffer;
+
+		mxmlElementSetAttr(function, "name", bufptr);
+
+		if (scope)
+		  mxmlElementSetAttr(function, "scope", scope);
+
+#ifdef DEBUG
+                fprintf(stderr, "function: %s\n", buffer);
+		fprintf(stderr, "    scope = %s\n", scope ? scope : "(null)");
+		fprintf(stderr, "    comment = %p\n", comment);
+		fprintf(stderr, "    child = (%p) %s\n",
+		        comment->child,
+			comment->child ?
+			    comment->child->value.text.string : "(null)");
+		fprintf(stderr, "    last_child = (%p) %s\n",
+		        comment->last_child,
+			comment->last_child ?
+			    comment->last_child->value.text.string : "(null)");
+#endif /* DEBUG */
+
+                if (type->last_child &&
+		    strcmp(type->last_child->value.text.string, "void"))
+		{
+                  returnvalue = mxmlNewElement(function, "returnvalue");
+
+		  mxmlAdd(returnvalue, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, type);
+
+		  description = mxmlNewElement(returnvalue, "description");
+#ifdef DEBUG
+		  fprintf(stderr, "    adding comment %p/%p to returnvalue...\n",
+		          comment->last_child, comment->child);
+#endif /* DEBUG */
+		  update_comment(returnvalue, comment->last_child);
+		  mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+		          comment->last_child);
+                }
+		else
+		  mxmlDelete(type);
+
+		description = mxmlNewElement(function, "description");
+#ifdef DEBUG
+		  fprintf(stderr, "    adding comment %p/%p to function...\n",
+		          comment->last_child, comment->child);
+#endif /* DEBUG */
+		update_comment(function, comment->last_child);
+		mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT,
+		        comment->last_child);
+
+		type = NULL;
+	      }
+	      else if (function && ((ch == ')' && parens == 1) || ch == ','))
+	      {
+	       /*
+	        * Argument definition...
+		*/
+
+                if (strcmp(buffer, "void"))
+		{
+	          mxmlNewText(type, type->child != NULL &&
+		                    type->last_child->value.text.string[0] != '(' &&
+				    type->last_child->value.text.string[0] != '*',
+			      buffer);
+
+#ifdef DEBUG
+                  fprintf(stderr, "Argument: <<<< %s >>>\n", buffer);
+#endif /* DEBUG */
+
+	          variable = add_variable(function, "argument", type);
+		}
+		else
+		  mxmlDelete(type);
+
+		type = NULL;
+	      }
+              else if (type->child && !function && (ch == ';' || ch == ','))
+	      {
+#ifdef DEBUG
+	        fprintf(stderr, "    got semicolon, typedefnode=%p, structclass=%p\n",
+		        typedefnode, structclass);
+#endif /* DEBUG */
+
+	        if (typedefnode || structclass)
+		{
+#ifdef DEBUG
+                  fprintf(stderr, "Typedef/struct/class: <<<< %s >>>>\n", buffer);
+#endif /* DEBUG */
+
+		  if (typedefnode)
+		  {
+		    mxmlElementSetAttr(typedefnode, "name", buffer);
+
+                    sort_node(tree, typedefnode);
+		  }
+
+		  if (structclass && !mxmlElementGetAttr(structclass, "name"))
+		  {
+#ifdef DEBUG
+		    fprintf(stderr, "setting struct/class name to %s!\n",
+		            type->last_child->value.text.string);
+#endif /* DEBUG */
+		    mxmlElementSetAttr(structclass, "name", buffer);
+
+		    sort_node(tree, structclass);
+		    structclass = NULL;
+		  }
+
+		  if (typedefnode)
+		    mxmlAdd(typedefnode, MXML_ADD_BEFORE, MXML_ADD_TO_PARENT,
+		            type);
+                  else
+		    mxmlDelete(type);
+
+		  type        = NULL;
+		  typedefnode = NULL;
+		}
+		else if (type->child &&
+		         !strcmp(type->child->value.text.string, "typedef"))
+		{
+		 /*
+		  * Simple typedef...
+		  */
+
+#ifdef DEBUG
+                  fprintf(stderr, "Typedef: <<<< %s >>>\n", buffer);
+#endif /* DEBUG */
+
+		  typedefnode = mxmlNewElement(MXML_NO_PARENT, "typedef");
+		  mxmlElementSetAttr(typedefnode, "name", buffer);
+		  mxmlDelete(type->child);
+
+                  sort_node(tree, typedefnode);
+
+                  if (type->child)
+		    type->child->value.text.whitespace = 0;
+
+		  mxmlAdd(typedefnode, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, type);
+		  type = NULL;
+		}
+		else if (!parens)
+		{
+		 /*
+	          * Variable definition...
+		  */
+
+	          if (type->child &&
+		      !strcmp(type->child->value.text.string, "static") &&
+		      !strcmp(tree->value.element.name, "mxmldoc"))
+		  {
+		   /*
+		    * Remove static functions...
+		    */
+
+		    mxmlDelete(type);
+		    type = NULL;
+		    break;
+		  }
+
+	          mxmlNewText(type, type->child != NULL &&
+		                    type->last_child->value.text.string[0] != '(' &&
+				    type->last_child->value.text.string[0] != '*',
+			      buffer);
+
+#ifdef DEBUG
+                  fprintf(stderr, "Variable: <<<< %s >>>>\n", buffer);
+                  fprintf(stderr, "    scope = %s\n", scope ? scope : "(null)");
+#endif /* DEBUG */
+
+	          variable = add_variable(MXML_NO_PARENT, "variable", type);
+		  type     = NULL;
+
+		  sort_node(tree, variable);
+
+		  if (scope)
+		    mxmlElementSetAttr(variable, "scope", scope);
+		}
+              }
+	      else
+              {
+#ifdef DEBUG
+                fprintf(stderr, "Identifier: <<<< %s >>>>\n", buffer);
+#endif /* DEBUG */
+
+	        mxmlNewText(type, type->child != NULL &&
+		                  type->last_child->value.text.string[0] != '(' &&
+				  type->last_child->value.text.string[0] != '*',
+			    buffer);
+	      }
+	    }
+	    else if (enumeration && !isdigit(buffer[0] & 255))
+	    {
+#ifdef DEBUG
+	      fprintf(stderr, "Constant: <<<< %s >>>\n", buffer);
+#endif /* DEBUG */
+
+	      constant = mxmlNewElement(MXML_NO_PARENT, "constant");
+	      mxmlElementSetAttr(constant, "name", buffer);
+	      sort_node(enumeration, constant);
+	    }
+	    else if (type)
+	    {
+	      mxmlDelete(type);
+	      type = NULL;
+	    }
+	  }
+          break;
+    }
+
+#if DEBUG > 1
+    if (state != oldstate)
+    {
+      fprintf(stderr, "    changed states from %s to %s on receipt of character '%c'...\n",
+              states[oldstate], states[state], oldch);
+      fprintf(stderr, "    variable = %p\n", variable);
+      if (type)
+      {
+        fputs("    type =", stderr);
+        for (temp = type->child; temp; temp = temp->next)
+	  fprintf(stderr, " \"%s\"", temp->value.text.string);
+	fputs("\n", stderr);
+      }
+    }
+#endif /* DEBUG > 1 */
+  }
+
+  mxmlDelete(comment);
+
+ /*
+  * All done, return with no errors...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'sort_node()' - Insert a node sorted into a tree.
+ */
+
+static void
+sort_node(mxml_node_t *tree,		/* I - Tree to sort into */
+          mxml_node_t *node)		/* I - Node to add */
+{
+  mxml_node_t	*temp;			/* Current node */
+  const char	*tempname,		/* Name of current node */
+		*nodename,		/* Name of node */
+		*scope;			/* Scope */
+
+
+#if DEBUG > 1
+  fprintf(stderr, "    sort_node(tree=%p, node=%p)\n", tree, node);
+#endif /* DEBUG > 1 */
+
+ /*
+  * Range check input...
+  */
+
+  if (!tree || !node || node->parent == tree)
+    return;
+
+ /*
+  * Get the node name...
+  */
+
+  if ((nodename = mxmlElementGetAttr(node, "name")) == NULL)
+    return;
+
+  if (nodename[0] == '_')
+    return;				/* Hide private names */
+
+#if DEBUG > 1
+  fprintf(stderr, "        nodename=%p (\"%s\")\n", nodename, nodename);
+#endif /* DEBUG > 1 */
+
+ /*
+  * Delete any existing definition at this level, if one exists...
+  */
+
+  if ((temp = mxmlFindElement(tree, tree, node->value.element.name,
+                              "name", nodename, MXML_DESCEND_FIRST)) != NULL)
+  {
+   /*
+    * Copy the scope if needed...
+    */
+
+    if ((scope = mxmlElementGetAttr(temp, "scope")) != NULL &&
+        mxmlElementGetAttr(node, "scope") == NULL)
+    {
+#ifdef DEBUG
+      fprintf(stderr, "    copying scope %s for %s\n", scope, nodename);
+#endif /* DEBUG */
+
+      mxmlElementSetAttr(node, "scope", scope);
+    }
+
+    mxmlDelete(temp);
+  }
+
+ /*
+  * Add the node into the tree at the proper place...
+  */
+
+  for (temp = tree->child; temp; temp = temp->next)
+  {
+#if DEBUG > 1
+    fprintf(stderr, "        temp=%p\n", temp);
+#endif /* DEBUG > 1 */
+
+    if ((tempname = mxmlElementGetAttr(temp, "name")) == NULL)
+      continue;
+
+#if DEBUG > 1
+    fprintf(stderr, "        tempname=%p (\"%s\")\n", tempname, tempname);
+#endif /* DEBUG > 1 */
+
+    if (strcmp(nodename, tempname) < 0)
+      break;
+  }
+
+  if (temp)
+    mxmlAdd(tree, MXML_ADD_BEFORE, temp, node);
+  else
+    mxmlAdd(tree, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, node);
+}
+
+
+/*
+ * 'update_comment()' - Update a comment node.
+ */
+
+static void
+update_comment(mxml_node_t *parent,	/* I - Parent node */
+               mxml_node_t *comment)	/* I - Comment node */
+{
+  char	*ptr;				/* Pointer into comment */
+
+
+#ifdef DEBUG
+  fprintf(stderr, "update_comment(parent=%p, comment=%p)\n",
+          parent, comment);
+#endif /* DEBUG */
+
+ /*
+  * Range check the input...
+  */
+
+  if (!parent || !comment)
+    return;
+
+ /*
+  * Convert "\/" to "/"...
+  */
+
+  for (ptr = strstr(comment->value.text.string, "\\/");
+       ptr;
+       ptr = strstr(ptr, "\\/"))
+    safe_strcpy(ptr, ptr + 1);
+
+ /*
+  * Update the comment...
+  */
+
+  ptr = comment->value.text.string;
+
+  if (*ptr == '\'')
+  {
+   /*
+    * Convert "'name()' - description" to "description".
+    */
+
+    for (ptr ++; *ptr && *ptr != '\''; ptr ++);
+
+    if (*ptr == '\'')
+    {
+      ptr ++;
+      while (isspace(*ptr & 255))
+        ptr ++;
+
+      if (*ptr == '-')
+        ptr ++;
+
+      while (isspace(*ptr & 255))
+        ptr ++;
+
+      safe_strcpy(comment->value.text.string, ptr);
+    }
+  }
+  else if (!strncmp(ptr, "I ", 2) || !strncmp(ptr, "O ", 2) ||
+           !strncmp(ptr, "IO ", 3))
+  {
+   /*
+    * 'Convert "I - description", "IO - description", or "O - description"
+    * to description + direction attribute.
+    */
+
+    ptr = strchr(ptr, ' ');
+    *ptr++ = '\0';
+
+    if (!strcmp(parent->value.element.name, "argument"))
+      mxmlElementSetAttr(parent, "direction", comment->value.text.string);
+
+    while (isspace(*ptr & 255))
+      ptr ++;
+
+    if (*ptr == '-')
+      ptr ++;
+
+    while (isspace(*ptr & 255))
+      ptr ++;
+
+    safe_strcpy(comment->value.text.string, ptr);
+  }
+
+ /*
+  * Eliminate leading and trailing *'s...
+  */
+
+  for (ptr = comment->value.text.string; *ptr == '*'; ptr ++);
+  for (; isspace(*ptr & 255); ptr ++);
+  if (ptr > comment->value.text.string)
+    safe_strcpy(comment->value.text.string, ptr);
+
+  for (ptr = comment->value.text.string + strlen(comment->value.text.string) - 1;
+       ptr > comment->value.text.string && *ptr == '*';
+       ptr --)
+    *ptr = '\0';
+  for (; ptr > comment->value.text.string && isspace(*ptr & 255); ptr --)
+    *ptr = '\0';
+
+#ifdef DEBUG
+  fprintf(stderr, "    updated comment = %s\n", comment->value.text.string);
+#endif /* DEBUG */
+}
+
+
+/*
+ * 'usage()' - Show program usage...
+ */
+
+static void
+usage(const char *option)		/* I - Unknown option */
+{
+  if (option)
+    printf("mxmldoc: Bad option \"%s\"!\n\n", option);
+
+  puts("Usage: mxmldoc [options] [filename.xml] [source files] >filename.html");
+  puts("Options:");
+  puts("    --css filename.css         Set CSS stylesheet file");
+  puts("    --docset bundleid.docset   Generate documentation set");
+  puts("    --docversion version       Set documentation version");
+  puts("    --feedname name            Set documentation set feed name");
+  puts("    --feedurl url              Set documentation set feed URL");
+  puts("    --footer footerfile        Set footer file");
+  puts("    --framed basename          Generate framed HTML to basename*.html");
+  puts("    --header headerfile        Set header file");
+  puts("    --intro introfile          Set introduction file");
+  puts("    --man name                 Generate man page");
+  puts("    --no-output                Do no generate documentation file");
+  puts("    --section section          Set section name");
+  puts("    --title title              Set documentation title");
+  puts("    --tokens path              Generate Xcode docset Tokens.xml file");
+  puts("    --version                  Show mxmldoc/Mini-XML version");
+
+  exit(1);
+}
+
+
+/*
+ * 'write_description()' - Write the description text.
+ */
+
+static void
+write_description(
+    FILE        *out,			/* I - Output file */
+    mxml_node_t *description,		/* I - Description node */
+    const char  *element,		/* I - HTML element, if any */
+    int         summary)		/* I - Show summary */
+{
+  char	text[10240],			/* Text for description */
+        *start,				/* Start of code/link */
+	*ptr;				/* Pointer into text */
+  int	col;				/* Current column */
+
+
+  if (!description)
+    return;
+
+  get_text(description, text, sizeof(text));
+
+  ptr = strstr(text, "\n\n");
+
+  if (summary)
+  {
+    if (ptr)
+      *ptr = '\0';
+
+    ptr = text;
+  }
+  else if (!ptr || !ptr[2])
+    return;
+  else
+    ptr += 2;
+
+  if (element && *element)
+    fprintf(out, "<%s class=\"%s\">", element,
+            summary ? "description" : "discussion");
+  else if (!summary)
+    fputs(".PP\n", out);
+
+  for (col = 0; *ptr; ptr ++)
+  {
+    if (*ptr == '@' &&
+        (!strncmp(ptr + 1, "deprecated@", 11) ||
+         !strncmp(ptr + 1, "since ", 6)))
+    {
+      ptr ++;
+      while (*ptr && *ptr != '@')
+        ptr ++;
+
+      if (!*ptr)
+        return;
+    }
+    else if (!strncmp(ptr, "@code ", 6))
+    {
+      for (ptr += 6; isspace(*ptr & 255); ptr ++);
+
+      for (start = ptr, ptr ++; *ptr && *ptr != '@'; ptr ++);
+
+      if (*ptr)
+        *ptr = '\0';
+      else
+        ptr --;
+
+      if (element && *element)
+      {
+        fputs("<code>", out);
+        for (; *start; start ++)
+        {
+          if (*start == '<')
+            fputs("<", out);
+          else if (*start == '>')
+            fputs(">", out);
+          else if (*start == '&')
+            fputs("&", out);
+          else
+            putc(*start, out);
+        }
+        fputs("</code>", out);
+      }
+      else if (element)
+        fputs(start, out);
+      else
+        fprintf(out, "\\fB%s\\fR", start);
+    }
+    else if (!strncmp(ptr, "@link ", 6))
+    {
+      for (ptr += 6; isspace(*ptr & 255); ptr ++);
+
+      for (start = ptr, ptr ++; *ptr && *ptr != '@'; ptr ++);
+
+      if (*ptr)
+        *ptr = '\0';
+      else
+        ptr --;
+
+      if (element && *element)
+        fprintf(out, "<a href=\"#%s\"><code>%s</code></a>", start, start);
+      else if (element)
+        fputs(start, out);
+      else
+        fprintf(out, "\\fI%s\\fR", start);
+    }
+    else if (element)
+    {
+      if (*ptr == '&')
+        fputs("&", out);
+      else if (*ptr == '<')
+        fputs("<", out);
+      else if (*ptr == '>')
+        fputs(">", out);
+      else if (*ptr == '\"')
+        fputs(""", out);
+      else if (*ptr & 128)
+      {
+       /*
+        * Convert UTF-8 to Unicode constant...
+        */
+
+        int	ch;			/* Unicode character */
+
+
+        ch = *ptr & 255;
+
+        if ((ch & 0xe0) == 0xc0)
+        {
+          ch = ((ch & 0x1f) << 6) | (ptr[1] & 0x3f);
+	  ptr ++;
+        }
+        else if ((ch & 0xf0) == 0xe0)
+        {
+          ch = ((((ch * 0x0f) << 6) | (ptr[1] & 0x3f)) << 6) | (ptr[2] & 0x3f);
+	  ptr += 2;
+        }
+
+        if (ch == 0xa0)
+        {
+         /*
+          * Handle non-breaking space as-is...
+	  */
+
+          fputs(" ", out);
+        }
+        else
+          fprintf(out, "&#x%x;", ch);
+      }
+      else if (*ptr == '\n' && ptr[1] == '\n' && ptr[2] && ptr[2] != '@')
+      {
+        fputs("<br>\n<br>\n", out);
+        ptr ++;
+      }
+      else
+        putc(*ptr, out);
+    }
+    else if (*ptr == '\n' && ptr[1] == '\n' && ptr[2] && ptr[2] != '@')
+    {
+      fputs("\n.PP\n", out);
+      ptr ++;
+    }
+    else
+    {
+      if (*ptr == '\\' || (*ptr == '.' && col == 0))
+        putc('\\', out);
+
+      putc(*ptr, out);
+
+      if (*ptr == '\n')
+        col = 0;
+      else
+        col ++;
+    }
+  }
+
+  if (element && *element)
+    fprintf(out, "</%s>\n", element);
+  else if (!element)
+    putc('\n', out);
+}
+
+
+/*
+ * 'write_element()' - Write an element's text nodes.
+ */
+
+static void
+write_element(FILE        *out,		/* I - Output file */
+              mxml_node_t *doc,		/* I - Document tree */
+              mxml_node_t *element,	/* I - Element to write */
+              int         mode)		/* I - Output mode */
+{
+  mxml_node_t	*node;			/* Current node */
+
+
+  if (!element)
+    return;
+
+  for (node = element->child;
+       node;
+       node = mxmlWalkNext(node, element, MXML_NO_DESCEND))
+    if (node->type == MXML_TEXT)
+    {
+      if (node->value.text.whitespace)
+	putc(' ', out);
+
+      if (mode == OUTPUT_HTML &&
+          (mxmlFindElement(doc, doc, "class", "name", node->value.text.string,
+                           MXML_DESCEND) ||
+	   mxmlFindElement(doc, doc, "enumeration", "name",
+	                   node->value.text.string, MXML_DESCEND) ||
+	   mxmlFindElement(doc, doc, "struct", "name", node->value.text.string,
+                           MXML_DESCEND) ||
+	   mxmlFindElement(doc, doc, "typedef", "name", node->value.text.string,
+                           MXML_DESCEND) ||
+	   mxmlFindElement(doc, doc, "union", "name", node->value.text.string,
+                           MXML_DESCEND)))
+      {
+        fputs("<a href=\"#", out);
+        write_string(out, node->value.text.string, mode);
+	fputs("\">", out);
+        write_string(out, node->value.text.string, mode);
+	fputs("</a>", out);
+      }
+      else
+        write_string(out, node->value.text.string, mode);
+    }
+
+  if (!strcmp(element->value.element.name, "type") &&
+      element->last_child->value.text.string[0] != '*')
+    putc(' ', out);
+}
+
+
+/*
+ * 'write_file()' - Copy a file to the output.
+ */
+
+static void
+write_file(FILE       *out,		/* I - Output file */
+           const char *file)		/* I - File to copy */
+{
+  FILE		*fp;			/* Copy file */
+  char		line[8192];		/* Line from file */
+
+
+  if ((fp = fopen(file, "r")) == NULL)
+  {
+    fprintf(stderr, "mxmldoc: Unable to open \"%s\": %s\n", file,
+            strerror(errno));
+    return;
+  }
+
+  while (fgets(line, sizeof(line), fp))
+    fputs(line, out);
+
+  fclose(fp);
+}
+
+
+/*
+ * 'write_function()' - Write documentation for a function.
+ */
+
+static void
+write_function(FILE        *out,	/* I - Output file */
+               mxml_node_t *doc,	/* I - Document */
+               mxml_node_t *function,	/* I - Function */
+	       int         level)	/* I - Base heading level */
+{
+  mxml_node_t	*arg,			/* Current argument */
+		*adesc,			/* Description of argument */
+		*description,		/* Description of function */
+		*type,			/* Type for argument */
+		*node;			/* Node in description */
+  const char	*name,			/* Name of function/type */
+		*defval;		/* Default value */
+  char		prefix;			/* Prefix character */
+  char		*sep;			/* Newline separator */
+
+
+  name        = mxmlElementGetAttr(function, "name");
+  description = mxmlFindElement(function, function, "description", NULL,
+				NULL, MXML_DESCEND_FIRST);
+
+  fprintf(out, "<h%d class=\"%s\">%s<a name=\"%s\">%s</a></h%d>\n",
+	  level, level == 3 ? "function" : "method",
+	  get_comment_info(description), name, name, level);
+
+  if (description)
+    write_description(out, description, "p", 1);
+
+  fputs("<p class=\"code\">\n", out);
+
+  arg = mxmlFindElement(function, function, "returnvalue", NULL,
+			NULL, MXML_DESCEND_FIRST);
+
+  if (arg)
+    write_element(out, doc, mxmlFindElement(arg, arg, "type", NULL,
+					    NULL, MXML_DESCEND_FIRST),
+		  OUTPUT_HTML);
+  else
+    fputs("void ", out);
+
+  fprintf(out, "%s ", name);
+  for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+			     MXML_DESCEND_FIRST), prefix = '(';
+       arg;
+       arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+			     MXML_NO_DESCEND), prefix = ',')
+  {
+    type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+			   MXML_DESCEND_FIRST);
+
+    fprintf(out, "%c<br>\n    ", prefix);
+    if (type->child)
+      write_element(out, doc, type, OUTPUT_HTML);
+
+    fputs(mxmlElementGetAttr(arg, "name"), out);
+    if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+      fprintf(out, " %s", defval);
+  }
+
+  if (prefix == '(')
+    fputs("(void);</p>\n", out);
+  else
+  {
+    fprintf(out,
+            "<br>\n);</p>\n"
+	    "<h%d class=\"parameters\">Parameters</h%d>\n"
+	    "<dl>\n", level + 1, level + 1);
+
+    for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+			       MXML_DESCEND_FIRST);
+	 arg;
+	 arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+			       MXML_NO_DESCEND))
+    {
+      fprintf(out, "<dt>%s</dt>\n", mxmlElementGetAttr(arg, "name"));
+
+      adesc = mxmlFindElement(arg, arg, "description", NULL, NULL,
+			      MXML_DESCEND_FIRST);
+
+      write_description(out, adesc, "dd", 1);
+      write_description(out, adesc, "dd", 0);
+    }
+
+    fputs("</dl>\n", out);
+  }
+
+  arg = mxmlFindElement(function, function, "returnvalue", NULL,
+			NULL, MXML_DESCEND_FIRST);
+
+  if (arg)
+  {
+    fprintf(out, "<h%d class=\"returnvalue\">Return Value</h%d>\n", level + 1,
+            level + 1);
+
+    adesc = mxmlFindElement(arg, arg, "description", NULL, NULL,
+			    MXML_DESCEND_FIRST);
+
+    write_description(out, adesc, "p", 1);
+    write_description(out, adesc, "p", 0);
+  }
+
+  if (description)
+  {
+    for (node = description->child; node; node = node->next)
+      if (node->value.text.string &&
+	  (sep = strstr(node->value.text.string, "\n\n")) != NULL)
+      {
+	sep += 2;
+	if (*sep && strncmp(sep, "@since ", 7) &&
+	    strncmp(sep, "@deprecated@", 12))
+	  break;
+      }
+
+    if (node)
+    {
+      fprintf(out, "<h%d class=\"discussion\">Discussion</h%d>\n", level + 1,
+	      level + 1);
+      write_description(out, description, "p", 0);
+    }
+  }
+}
+
+
+/*
+ * 'write_html()' - Write HTML documentation.
+ */
+
+static void
+write_html(const char  *section,	/* I - Section */
+	   const char  *title,		/* I - Title */
+	   const char  *footerfile,	/* I - Footer file */
+	   const char  *headerfile,	/* I - Header file */
+	   const char  *introfile,	/* I - Intro file */
+	   const char  *cssfile,	/* I - Stylesheet file */
+	   const char  *framefile,	/* I - Framed HTML basename */
+	   const char  *docset,		/* I - Documentation set directory */
+	   const char  *docversion,	/* I - Documentation set version */
+	   const char  *feedname,	/* I - Feed name for doc set */
+	   const char  *feedurl,	/* I - Feed URL for doc set */
+	   mxml_node_t *doc)		/* I - XML documentation */
+{
+  FILE		*out;			/* Output file */
+  mxml_node_t	*function,		/* Current function */
+		*scut,			/* Struct/class/union/typedef */
+		*arg,			/* Current argument */
+		*description,		/* Description of function/var */
+		*type;			/* Type for argument */
+  const char	*name,			/* Name of function/type */
+		*defval,		/* Default value */
+		*basename;		/* Base filename for framed output */
+  char		filename[1024];		/* Current output filename */
+
+
+  if (framefile)
+  {
+   /*
+    * Get the basename of the frame file...
+    */
+
+    if ((basename = strrchr(framefile, '/')) != NULL)
+      basename ++;
+    else
+      basename = framefile;
+
+    if (strstr(basename, ".html"))
+      fputs("mxmldoc: Frame base name should not contain .html extension!\n",
+            stderr);
+
+   /*
+    * Create the container HTML file for the frames...
+    */
+
+    snprintf(filename, sizeof(filename), "%s.html", framefile);
+
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    fputs("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" "
+          "\"http://www.w3.org/TR/html4/frameset.dtd\">\n"
+	  "<html>\n"
+	  "<head>\n"
+	  "\t<title>", out);
+    write_string(out, title, OUTPUT_HTML);
+    fputs("</title>\n", out);
+
+    if (section)
+      fprintf(out, "\t<meta name=\"keywords\" content=\"%s\">\n", section);
+
+    fputs("\t<meta http-equiv=\"Content-Type\" "
+          "content=\"text/html;charset=utf-8\">\n"
+	  "\t<meta name=\"creator\" content=\"" MXML_VERSION "\">\n"
+          "</head>\n", out);
+
+    fputs("<frameset cols=\"250,*\">\n", out);
+    fprintf(out, "<frame src=\"%s-toc.html\">\n", basename);
+    fprintf(out, "<frame name=\"body\" src=\"%s-body.html\">\n", basename);
+    fputs("</frameset>\n"
+          "<noframes>\n"
+	  "<h1>", out);
+    write_string(out, title, OUTPUT_HTML);
+    fprintf(out,
+            "</h1>\n"
+            "<ul>\n"
+	    "\t<li><a href=\"%s-toc.html\">Table of Contents</a></li>\n"
+	    "\t<li><a href=\"%s-body.html\">Body</a></li>\n"
+	    "</ul>\n", basename, basename);
+    fputs("</noframes>\n"
+          "</html>\n", out);
+    fclose(out);
+
+   /*
+    * Write the table-of-contents file...
+    */
+
+    snprintf(filename, sizeof(filename), "%s-toc.html", framefile);
+
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    write_html_head(out, section, title, cssfile);
+
+    snprintf(filename, sizeof(filename), "%s-body.html", basename);
+
+    fputs("<div class=\"contents\">\n", out);
+    fprintf(out, "<h1 class=\"title\"><a href=\"%s\" target=\"body\">",
+            filename);
+    write_string(out, title, OUTPUT_HTML);
+    fputs("</a></h1>\n", out);
+
+    write_toc(out, doc, introfile, filename, 0);
+
+    fputs("</div>\n"
+          "</body>\n"
+          "</html>\n", out);
+    fclose(out);
+
+   /*
+    * Finally, open the body file...
+    */
+
+    snprintf(filename, sizeof(filename), "%s-body.html", framefile);
+
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+  }
+  else if (docset)
+  {
+   /*
+    * Create an Xcode documentation set - start by removing any existing
+    * output directory...
+    */
+
+#ifdef __APPLE__
+    const char	*id;			/* Identifier */
+
+
+    if (!access(docset, 0) && !remove_directory(docset))
+      return;
+
+   /*
+    * Then make the Apple standard bundle directory structure...
+    */
+
+    if (mkdir(docset, 0755))
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", docset,
+              strerror(errno));
+      return;
+    }
+
+    snprintf(filename, sizeof(filename), "%s/Contents", docset);
+    if (mkdir(filename, 0755))
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    snprintf(filename, sizeof(filename), "%s/Contents/Resources", docset);
+    if (mkdir(filename, 0755))
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    snprintf(filename, sizeof(filename), "%s/Contents/Resources/Documentation",
+             docset);
+    if (mkdir(filename, 0755))
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+   /*
+    * The Info.plist file, which describes the documentation set...
+    */
+
+    if ((id = strrchr(docset, '/')) != NULL)
+      id ++;
+    else
+      id = docset;
+
+    snprintf(filename, sizeof(filename), "%s/Contents/Info.plist", docset);
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+          "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
+          "<plist version=\"1.0\">\n"
+          "<dict>\n"
+	  "\t<key>CFBundleIdentifier</key>\n"
+	  "\t<string>", out);
+    write_string(out, id, OUTPUT_HTML);
+    fputs("</string>\n"
+          "\t<key>CFBundleName</key>\n"
+	  "\t<string>", out);
+    write_string(out, title, OUTPUT_HTML);
+    fputs("</string>\n"
+          "\t<key>CFBundleVersion</key>\n"
+	  "\t<string>", out);
+    write_string(out, docversion ? docversion : "0.0", OUTPUT_HTML);
+    fputs("</string>\n"
+          "\t<key>CFBundleShortVersionString</key>\n"
+	  "\t<string>", out);
+    write_string(out, docversion ? docversion : "0.0", OUTPUT_HTML);
+    fputs("</string>\n", out);
+
+    if (feedname)
+    {
+      fputs("\t<key>DocSetFeedName</key>\n"
+	    "\t<string>", out);
+      write_string(out, feedname ? feedname : title, OUTPUT_HTML);
+      fputs("</string>\n", out);
+    }
+
+    if (feedurl)
+    {
+      fputs("\t<key>DocSetFeedURL</key>\n"
+	    "\t<string>", out);
+      write_string(out, feedurl, OUTPUT_HTML);
+      fputs("</string>\n", out);
+    }
+
+    fputs("</dict>\n"
+          "</plist>\n", out);
+
+    fclose(out);
+
+   /*
+    * Next the Nodes.xml file...
+    */
+
+    snprintf(filename, sizeof(filename), "%s/Contents/Resources/Nodes.xml",
+             docset);
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+          "<DocSetNodes version=\"1.0\">\n"
+	  "<TOC>\n"
+	  "<Node id=\"0\">\n"
+	  "<Name>", out);
+    write_string(out, title, OUTPUT_HTML);
+    fputs("</Name>\n"
+          "<Path>Documentation/index.html</Path>\n"
+	  "<Subnodes>\n", out);
+
+    write_toc(out, doc, introfile, NULL, 1);
+
+    fputs("</Subnodes>\n"
+          "</Node>\n"
+          "</TOC>\n"
+          "</DocSetNodes>\n", out);
+
+    fclose(out);
+
+   /*
+    * Then the Tokens.xml file...
+    */
+
+    snprintf(filename, sizeof(filename), "%s/Contents/Resources/Tokens.xml",
+             docset);
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+    fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+          "<Tokens version=\"1.0\">\n", out);
+
+    write_tokens(out, doc, "index.html");
+
+    fputs("</Tokens>\n", out);
+
+    fclose(out);
+
+   /*
+    * Finally the HTML file...
+    */
+
+    snprintf(filename, sizeof(filename),
+             "%s/Contents/Resources/Documentation/index.html",
+             docset);
+    if ((out = fopen(filename, "w")) == NULL)
+    {
+      fprintf(stderr, "mxmldoc: Unable to create \"%s\": %s\n", filename,
+              strerror(errno));
+      return;
+    }
+
+#else
+    fputs("mxmldoc: Xcode documentation sets can only be created on "
+          "Mac OS X.\n", stderr);
+    return;
+#endif /* __APPLE__ */
+  }
+  else
+    out = stdout;
+
+ /*
+  * Standard header...
+  */
+
+  write_html_head(out, section, title, cssfile);
+
+  fputs("<div class='body'>\n", out);
+
+ /*
+  * Header...
+  */
+
+  if (headerfile)
+  {
+   /*
+    * Use custom header...
+    */
+
+    write_file(out, headerfile);
+  }
+  else
+  {
+   /*
+    * Use standard header...
+    */
+
+    fputs("<h1 class=\"title\">", out);
+    write_string(out, title, OUTPUT_HTML);
+    fputs("</h1>\n", out);
+  }
+
+ /*
+  * Table of contents...
+  */
+
+  if (!framefile)
+    write_toc(out, doc, introfile, NULL, 0);
+
+ /*
+  * Intro...
+  */
+
+  if (introfile)
+    write_file(out, introfile);
+
+ /*
+  * List of classes...
+  */
+
+  if ((scut = find_public(doc, doc, "class")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"CLASSES\">Classes</a></h2>\n", out);
+
+    while (scut)
+    {
+      write_scu(out, doc, scut);
+
+      scut = find_public(scut, doc, "class");
+    }
+  }
+
+ /*
+  * List of functions...
+  */
+
+  if ((function = find_public(doc, doc, "function")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"FUNCTIONS\">Functions</a></h2>\n", out);
+
+    while (function)
+    {
+      write_function(out, doc, function, 3);
+
+      function = find_public(function, doc, "function");
+    }
+  }
+
+ /*
+  * List of types...
+  */
+
+  if ((scut = find_public(doc, doc, "typedef")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"TYPES\">Data Types</a></h2>\n", out);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      fprintf(out, "<h3 class=\"typedef\">%s<a name=\"%s\">%s</a></h3>\n",
+	      get_comment_info(description), name, name);
+
+      if (description)
+	write_description(out, description, "p", 1);
+
+      fputs("<p class=\"code\">\n"
+	    "typedef ", out);
+
+      type = mxmlFindElement(scut, scut, "type", NULL, NULL,
+                             MXML_DESCEND_FIRST);
+
+      for (type = type->child; type; type = type->next)
+        if (!strcmp(type->value.text.string, "("))
+	  break;
+	else
+	{
+	  if (type->value.text.whitespace)
+	    putc(' ', out);
+
+	  if (mxmlFindElement(doc, doc, "class", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "enumeration", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "struct", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "typedef", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "union", "name",
+	                      type->value.text.string, MXML_DESCEND))
+	  {
+            fputs("<a href=\"#", out);
+            write_string(out, type->value.text.string, OUTPUT_HTML);
+	    fputs("\">", out);
+            write_string(out, type->value.text.string, OUTPUT_HTML);
+	    fputs("</a>", out);
+	  }
+	  else
+            write_string(out, type->value.text.string, OUTPUT_HTML);
+        }
+
+      if (type)
+      {
+       /*
+        * Output function type...
+	*/
+
+        if (type->prev && type->prev->value.text.string[0] != '*')
+	  putc(' ', out);
+
+        fprintf(out, "(*%s", name);
+
+	for (type = type->next->next; type; type = type->next)
+	{
+	  if (type->value.text.whitespace)
+	    putc(' ', out);
+
+	  if (mxmlFindElement(doc, doc, "class", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "enumeration", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "struct", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "typedef", "name",
+	                      type->value.text.string, MXML_DESCEND) ||
+	      mxmlFindElement(doc, doc, "union", "name",
+	                      type->value.text.string, MXML_DESCEND))
+	  {
+            fputs("<a href=\"#", out);
+            write_string(out, type->value.text.string, OUTPUT_HTML);
+	    fputs("\">", out);
+            write_string(out, type->value.text.string, OUTPUT_HTML);
+	    fputs("</a>", out);
+	  }
+	  else
+            write_string(out, type->value.text.string, OUTPUT_HTML);
+        }
+
+        fputs(";\n", out);
+      }
+      else
+      {
+	type = mxmlFindElement(scut, scut, "type", NULL, NULL,
+			       MXML_DESCEND_FIRST);
+        if (type->last_child->value.text.string[0] != '*')
+	  putc(' ', out);
+
+	fprintf(out, "%s;\n", name);
+      }
+
+      fputs("</p>\n", out);
+
+      scut = find_public(scut, doc, "typedef");
+    }
+  }
+
+ /*
+  * List of structures...
+  */
+
+  if ((scut = find_public(doc, doc, "struct")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"STRUCTURES\">Structures</a></h2>\n",
+          out);
+
+    while (scut)
+    {
+      write_scu(out, doc, scut);
+
+      scut = find_public(scut, doc, "struct");
+    }
+  }
+
+ /*
+  * List of unions...
+  */
+
+  if ((scut = find_public(doc, doc, "union")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"UNIONS\">Unions</a></h2>\n", out);
+
+    while (scut)
+    {
+      write_scu(out, doc, scut);
+
+      scut = find_public(scut, doc, "union");
+    }
+  }
+
+ /*
+  * Variables...
+  */
+
+  if ((arg = find_public(doc, doc, "variable")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"VARIABLES\">Variables</a></h2>\n",
+          out);
+
+    while (arg)
+    {
+      name        = mxmlElementGetAttr(arg, "name");
+      description = mxmlFindElement(arg, arg, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      fprintf(out, "<h3 class=\"variable\">%s<a name=\"%s\">%s</a></h3>\n",
+	      get_comment_info(description), name, name);
+
+      if (description)
+	write_description(out, description, "p", 1);
+
+      fputs("<p class=\"code\">", out);
+
+      write_element(out, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                              NULL, MXML_DESCEND_FIRST),
+                    OUTPUT_HTML);
+      fputs(mxmlElementGetAttr(arg, "name"), out);
+      if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	fprintf(out, " %s", defval);
+      fputs(";</p>\n", out);
+
+      arg = find_public(arg, doc, "variable");
+    }
+  }
+
+ /*
+  * List of enumerations...
+  */
+
+  if ((scut = find_public(doc, doc, "enumeration")) != NULL)
+  {
+    fputs("<h2 class=\"title\"><a name=\"ENUMERATIONS\">Constants</a></h2>\n",
+          out);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      fprintf(out, "<h3 class=\"enumeration\">%s<a name=\"%s\">%s</a></h3>\n",
+              get_comment_info(description), name, name);
+
+      if (description)
+	write_description(out, description, "p", 1);
+
+      fputs("<h4 class=\"constants\">Constants</h4>\n"
+            "<dl>\n", out);
+
+      for (arg = mxmlFindElement(scut, scut, "constant", NULL, NULL,
+                        	 MXML_DESCEND_FIRST);
+	   arg;
+	   arg = mxmlFindElement(arg, scut, "constant", NULL, NULL,
+                        	 MXML_NO_DESCEND))
+      {
+	description = mxmlFindElement(arg, arg, "description", NULL,
+                                      NULL, MXML_DESCEND_FIRST);
+	fprintf(out, "<dt>%s %s</dt>\n",
+	        mxmlElementGetAttr(arg, "name"), get_comment_info(description));
+
+	write_description(out, description, "dd", 1);
+	write_description(out, description, "dd", 0);
+      }
+
+      fputs("</dl>\n", out);
+
+      scut = find_public(scut, doc, "enumeration");
+    }
+  }
+
+ /*
+  * Footer...
+  */
+
+  if (footerfile)
+  {
+   /*
+    * Use custom footer...
+    */
+
+    write_file(out, footerfile);
+  }
+
+  fputs("</div>\n"
+        "</body>\n"
+        "</html>\n", out);
+
+ /*
+  * Close output file as needed...
+  */
+
+  if (out != stdout)
+    fclose(out);
+
+#ifdef __APPLE__
+ /*
+  * When generating document sets, run the docsetutil program to index it...
+  */
+
+  if (docset)
+  {
+    int		argc = 0;		/* Argument count */
+    const char	*args[5];		/* Argument array */
+    pid_t	pid;			/* Process ID */
+    int		status;			/* Exit status */
+
+
+    args[argc++] = "/usr/bin/xcrun";
+    args[argc++] = "docsetutil";
+    args[argc++] = "index";
+    args[argc++] = docset;
+    args[argc  ] = NULL;
+
+    if (posix_spawn(&pid, args[0], NULL, NULL, (char **)args, environ))
+    {
+      fprintf(stderr, "mxmldoc: Unable to index documentation set \"%s\": %s\n",
+              docset, strerror(errno));
+    }
+    else
+    {
+      while (wait(&status) != pid);
+
+      if (status)
+      {
+        if (WIFEXITED(status))
+	  fprintf(stderr, "mxmldoc: docsetutil exited with status %d\n",
+		  WEXITSTATUS(status));
+        else
+	  fprintf(stderr, "mxmldoc: docsetutil crashed with signal %d\n",
+		  WTERMSIG(status));
+      }
+      else
+      {
+       /*
+        * Remove unneeded temporary XML files...
+	*/
+
+	snprintf(filename, sizeof(filename), "%s/Contents/Resources/Nodes.xml",
+		 docset);
+        unlink(filename);
+
+	snprintf(filename, sizeof(filename), "%s/Contents/Resources/Tokens.xml",
+		 docset);
+        unlink(filename);
+      }
+    }
+  }
+#endif /* __APPLE__ */
+}
+
+
+/*
+ * 'write_html_head()' - Write the standard HTML header.
+ */
+
+static void
+write_html_head(FILE       *out,	/* I - Output file */
+                const char *section,	/* I - Section */
+                const char *title,	/* I - Title */
+		const char *cssfile)	/* I - Stylesheet */
+{
+  fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+        "\"http://www.w3.org/TR/html4/loose.dtd\">\n"
+        "<html>\n", out);
+
+  if (section)
+    fprintf(out, "<!-- SECTION: %s -->\n", section);
+
+  fputs("<head>\n"
+        "\t<title>", out);
+  write_string(out, title, OUTPUT_HTML);
+  fputs("\t</title>\n", out);
+
+  if (section)
+    fprintf(out, "\t<meta name=\"keywords\" content=\"%s\">\n", section);
+
+  fputs("\t<meta http-equiv=\"Content-Type\" "
+	"content=\"text/html;charset=utf-8\">\n"
+	"\t<meta name=\"creator\" content=\"" MXML_VERSION "\">\n"
+        "<style type=\"text/css\"><!--\n", out);
+
+  if (cssfile)
+  {
+   /*
+    * Use custom stylesheet file...
+    */
+
+    write_file(out, cssfile);
+  }
+  else
+  {
+   /*
+    * Use standard stylesheet...
+    */
+
+    fputs("body, p, h1, h2, h3, h4 {\n"
+	  "  font-family: \"lucida grande\", geneva, helvetica, arial, "
+	  "sans-serif;\n"
+	  "}\n"
+	  "div.body h1 {\n"
+	  "  font-size: 250%;\n"
+	  "  font-weight: bold;\n"
+	  "  margin: 0;\n"
+	  "}\n"
+	  "div.body h2 {\n"
+	  "  font-size: 250%;\n"
+	  "  margin-top: 1.5em;\n"
+	  "}\n"
+	  "div.body h3 {\n"
+	  "  font-size: 150%;\n"
+	  "  margin-bottom: 0.5em;\n"
+	  "  margin-top: 1.5em;\n"
+	  "}\n"
+	  "div.body h4 {\n"
+	  "  font-size: 110%;\n"
+	  "  margin-bottom: 0.5em;\n"
+	  "  margin-top: 1.5em;\n"
+	  "}\n"
+	  "div.body h5 {\n"
+	  "  font-size: 100%;\n"
+	  "  margin-bottom: 0.5em;\n"
+	  "  margin-top: 1.5em;\n"
+	  "}\n"
+	  "div.contents {\n"
+	  "  background: #e8e8e8;\n"
+	  "  border: solid thin black;\n"
+	  "  padding: 10px;\n"
+	  "}\n"
+	  "div.contents h1 {\n"
+	  "  font-size: 110%;\n"
+	  "}\n"
+	  "div.contents h2 {\n"
+	  "  font-size: 100%;\n"
+	  "}\n"
+	  "div.contents ul.contents {\n"
+	  "  font-size: 80%;\n"
+	  "}\n"
+	  ".class {\n"
+	  "  border-bottom: solid 2px gray;\n"
+	  "}\n"
+	  ".constants {\n"
+	  "}\n"
+	  ".description {\n"
+	  "  margin-top: 0.5em;\n"
+	  "}\n"
+	  ".discussion {\n"
+	  "}\n"
+	  ".enumeration {\n"
+	  "  border-bottom: solid 2px gray;\n"
+	  "}\n"
+	  ".function {\n"
+	  "  border-bottom: solid 2px gray;\n"
+	  "  margin-bottom: 0;\n"
+	  "}\n"
+	  ".members {\n"
+	  "}\n"
+	  ".method {\n"
+	  "}\n"
+	  ".parameters {\n"
+	  "}\n"
+	  ".returnvalue {\n"
+	  "}\n"
+	  ".struct {\n"
+	  "  border-bottom: solid 2px gray;\n"
+	  "}\n"
+	  ".typedef {\n"
+	  "  border-bottom: solid 2px gray;\n"
+	  "}\n"
+	  ".union {\n"
+	  "  border-bottom: solid 2px gray;\n"
+	  "}\n"
+	  ".variable {\n"
+	  "}\n"
+	  "code, p.code, pre, ul.code li {\n"
+	  "  font-family: monaco, courier, monospace;\n"
+	  "  font-size: 90%;\n"
+	  "}\n"
+	  "a:link, a:visited {\n"
+	  "  text-decoration: none;\n"
+	  "}\n"
+	  "span.info {\n"
+	  "  background: black;\n"
+	  "  border: solid thin black;\n"
+	  "  color: white;\n"
+	  "  font-size: 80%;\n"
+	  "  font-style: italic;\n"
+	  "  font-weight: bold;\n"
+	  "  white-space: nowrap;\n"
+	  "}\n"
+	  "h3 span.info, h4 span.info {\n"
+	  "  float: right;\n"
+	  "  font-size: 100%;\n"
+	  "}\n"
+	  "ul.code, ul.contents, ul.subcontents {\n"
+	  "  list-style-type: none;\n"
+	  "  margin: 0;\n"
+	  "  padding-left: 0;\n"
+	  "}\n"
+	  "ul.code li {\n"
+	  "  margin: 0;\n"
+	  "}\n"
+	  "ul.contents > li {\n"
+	  "  margin-top: 1em;\n"
+	  "}\n"
+	  "ul.contents li ul.code, ul.contents li ul.subcontents {\n"
+	  "  padding-left: 2em;\n"
+	  "}\n"
+	  "div.body dl {\n"
+	  "  margin-top: 0;\n"
+	  "}\n"
+	  "div.body dt {\n"
+	  "  font-style: italic;\n"
+	  "  margin-top: 0;\n"
+	  "}\n"
+	  "div.body dd {\n"
+	  "  margin-bottom: 0.5em;\n"
+	  "}\n"
+	  "h1.title {\n"
+	  "}\n"
+	  "h2.title {\n"
+	  "  border-bottom: solid 2px black;\n"
+	  "}\n"
+	  "h3.title {\n"
+	  "  border-bottom: solid 2px black;\n"
+	  "}\n", out);
+  }
+
+  fputs("--></style>\n"
+        "</head>\n"
+        "<body>\n", out);
+}
+
+
+/*
+ * 'write_man()' - Write manpage documentation.
+ */
+
+static void
+write_man(const char  *man_name,	/* I - Name of manpage */
+	  const char  *section,		/* I - Section */
+	  const char  *title,		/* I - Title */
+	  const char  *footerfile,	/* I - Footer file */
+	  const char  *headerfile,	/* I - Header file */
+	  const char  *introfile,	/* I - Intro file */
+	  mxml_node_t *doc)		/* I - XML documentation */
+{
+  int		i;			/* Looping var */
+  mxml_node_t	*function,		/* Current function */
+		*scut,			/* Struct/class/union/typedef */
+		*arg,			/* Current argument */
+		*description,		/* Description of function/var */
+		*type;			/* Type for argument */
+  const char	*name,			/* Name of function/type */
+		*cname,			/* Class name */
+		*defval,		/* Default value */
+		*parent;		/* Parent class */
+  int		inscope;		/* Variable/method scope */
+  char		prefix;			/* Prefix character */
+  time_t	curtime;		/* Current time */
+  struct tm	*curdate;		/* Current date */
+  char		buffer[1024];		/* String buffer */
+  static const char * const scopes[] =	/* Scope strings */
+		{
+		  "private",
+		  "protected",
+		  "public"
+		};
+
+
+ /*
+  * Standard man page...
+  */
+
+  curtime = time(NULL);
+  curdate = localtime(&curtime);
+  strftime(buffer, sizeof(buffer), "%x", curdate);
+
+  printf(".TH %s %s \"%s\" \"%s\" \"%s\"\n", man_name, section ? section : "3",
+         title ? title : "", buffer, title ? title : "");
+
+ /*
+  * Header...
+  */
+
+  if (headerfile)
+  {
+   /*
+    * Use custom header...
+    */
+
+    write_file(stdout, headerfile);
+  }
+  else
+  {
+   /*
+    * Use standard header...
+    */
+
+    puts(".SH NAME");
+    printf("%s \\- %s\n", man_name, title ? title : man_name);
+  }
+
+ /*
+  * Intro...
+  */
+
+  if (introfile)
+    write_file(stdout, introfile);
+
+ /*
+  * List of classes...
+  */
+
+  if (find_public(doc, doc, "class"))
+  {
+    puts(".SH CLASSES");
+
+    for (scut = find_public(doc, doc, "class");
+	 scut;
+	 scut = find_public(scut, doc, "class"))
+    {
+      cname       = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", cname);
+
+      write_description(stdout, description, NULL, 1);
+
+      printf(".PP\n"
+             ".nf\n"
+             "class %s", cname);
+      if ((parent = mxmlElementGetAttr(scut, "parent")) != NULL)
+        printf(" %s", parent);
+      puts("\n{");
+
+      for (i = 0; i < 3; i ++)
+      {
+        inscope = 0;
+
+	for (arg = mxmlFindElement(scut, scut, "variable", "scope", scopes[i],
+                        	   MXML_DESCEND_FIRST);
+	     arg;
+	     arg = mxmlFindElement(arg, scut, "variable", "scope", scopes[i],
+                        	   MXML_NO_DESCEND))
+	{
+          if (!inscope)
+	  {
+	    inscope = 1;
+	    printf("  %s:\n", scopes[i]);
+	  }
+
+	  printf("    ");
+	  write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                     NULL, MXML_DESCEND_FIRST),
+                        OUTPUT_MAN);
+	  printf("%s;\n", mxmlElementGetAttr(arg, "name"));
+	}
+
+	for (function = mxmlFindElement(scut, scut, "function", "scope",
+	                                scopes[i], MXML_DESCEND_FIRST);
+	     function;
+	     function = mxmlFindElement(function, scut, "function", "scope",
+	                                scopes[i], MXML_NO_DESCEND))
+	{
+          if (!inscope)
+	  {
+	    inscope = 1;
+	    printf("  %s:\n", scopes[i]);
+	  }
+
+          name = mxmlElementGetAttr(function, "name");
+
+          printf("    ");
+
+	  arg = mxmlFindElement(function, function, "returnvalue", NULL,
+                        	NULL, MXML_DESCEND_FIRST);
+
+	  if (arg)
+	    write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                       NULL, MXML_DESCEND_FIRST),
+                          OUTPUT_MAN);
+	  else if (strcmp(cname, name) && strcmp(cname, name + 1))
+	    fputs("void ", stdout);
+
+	  printf("%s", name);
+
+	  for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+                        	     MXML_DESCEND_FIRST), prefix = '(';
+	       arg;
+	       arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+                        	     MXML_NO_DESCEND), prefix = ',')
+	  {
+	    type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+	                	   MXML_DESCEND_FIRST);
+
+	    putchar(prefix);
+	    if (prefix == ',')
+	      putchar(' ');
+
+	    if (type->child)
+	      write_element(stdout, doc, type, OUTPUT_MAN);
+	    fputs(mxmlElementGetAttr(arg, "name"), stdout);
+            if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	      printf(" %s", defval);
+	  }
+
+	  if (prefix == '(')
+	    puts("(void);");
+	  else
+	    puts(");");
+	}
+      }
+
+      puts("};\n"
+           ".fi");
+
+      write_description(stdout, description, NULL, 0);
+    }
+  }
+
+ /*
+  * List of enumerations...
+  */
+
+  if (find_public(doc, doc, "enumeration"))
+  {
+    puts(".SH ENUMERATIONS");
+
+    for (scut = find_public(doc, doc, "enumeration");
+	 scut;
+	 scut = find_public(scut, doc, "enumeration"))
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", name);
+
+      write_description(stdout, description, NULL, 1);
+      write_description(stdout, description, NULL, 0);
+
+      for (arg = mxmlFindElement(scut, scut, "constant", NULL, NULL,
+                        	 MXML_DESCEND_FIRST);
+	   arg;
+	   arg = mxmlFindElement(arg, scut, "constant", NULL, NULL,
+                        	 MXML_NO_DESCEND))
+      {
+	description = mxmlFindElement(arg, arg, "description", NULL,
+                                      NULL, MXML_DESCEND_FIRST);
+	printf(".TP 5\n%s\n.br\n", mxmlElementGetAttr(arg, "name"));
+	write_description(stdout, description, NULL, 1);
+      }
+    }
+  }
+
+ /*
+  * List of functions...
+  */
+
+  if (find_public(doc, doc, "function"))
+  {
+    puts(".SH FUNCTIONS");
+
+    for (function = find_public(doc, doc, "function");
+	 function;
+	 function = find_public(function, doc, "function"))
+    {
+      name        = mxmlElementGetAttr(function, "name");
+      description = mxmlFindElement(function, function, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", name);
+
+      write_description(stdout, description, NULL, 1);
+
+      puts(".PP\n"
+           ".nf");
+
+      arg = mxmlFindElement(function, function, "returnvalue", NULL,
+                            NULL, MXML_DESCEND_FIRST);
+
+      if (arg)
+	write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                   NULL, MXML_DESCEND_FIRST),
+                      OUTPUT_MAN);
+      else
+	fputs("void", stdout);
+
+      printf(" %s ", name);
+      for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+                        	 MXML_DESCEND_FIRST), prefix = '(';
+	   arg;
+	   arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+                        	 MXML_NO_DESCEND), prefix = ',')
+      {
+        type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+	                       MXML_DESCEND_FIRST);
+
+	printf("%c\n    ", prefix);
+	if (type->child)
+	  write_element(stdout, doc, type, OUTPUT_MAN);
+	fputs(mxmlElementGetAttr(arg, "name"), stdout);
+        if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	  printf(" %s", defval);
+      }
+
+      if (prefix == '(')
+	puts("(void);");
+      else
+	puts("\n);");
+
+      puts(".fi");
+
+      write_description(stdout, description, NULL, 0);
+    }
+  }
+
+ /*
+  * List of structures...
+  */
+
+  if (find_public(doc, doc, "struct"))
+  {
+    puts(".SH STRUCTURES");
+
+    for (scut = find_public(doc, doc, "struct");
+	 scut;
+	 scut = find_public(scut, doc, "struct"))
+    {
+      cname       = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", cname);
+
+      write_description(stdout, description, NULL, 1);
+
+      printf(".PP\n"
+             ".nf\n"
+	     "struct %s\n{\n", cname);
+      for (arg = mxmlFindElement(scut, scut, "variable", NULL, NULL,
+                        	 MXML_DESCEND_FIRST);
+	   arg;
+	   arg = mxmlFindElement(arg, scut, "variable", NULL, NULL,
+                        	 MXML_NO_DESCEND))
+      {
+	printf("  ");
+	write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                   NULL, MXML_DESCEND_FIRST),
+                      OUTPUT_MAN);
+	printf("%s;\n", mxmlElementGetAttr(arg, "name"));
+      }
+
+      for (function = mxmlFindElement(scut, scut, "function", NULL, NULL,
+                                      MXML_DESCEND_FIRST);
+	   function;
+	   function = mxmlFindElement(function, scut, "function", NULL, NULL,
+                                      MXML_NO_DESCEND))
+      {
+        name = mxmlElementGetAttr(function, "name");
+
+        printf("  ");
+
+	arg = mxmlFindElement(function, function, "returnvalue", NULL,
+                              NULL, MXML_DESCEND_FIRST);
+
+	if (arg)
+	  write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                     NULL, MXML_DESCEND_FIRST),
+                        OUTPUT_MAN);
+	else if (strcmp(cname, name) && strcmp(cname, name + 1))
+	  fputs("void ", stdout);
+
+	fputs(name, stdout);
+
+	for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+                        	   MXML_DESCEND_FIRST), prefix = '(';
+	     arg;
+	     arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+                        	   MXML_NO_DESCEND), prefix = ',')
+	{
+	  type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+	                	 MXML_DESCEND_FIRST);
+
+	  putchar(prefix);
+	  if (prefix == ',')
+	    putchar(' ');
+
+	  if (type->child)
+	    write_element(stdout, doc, type, OUTPUT_MAN);
+	  fputs(mxmlElementGetAttr(arg, "name"), stdout);
+          if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	    printf(" %s", defval);
+	}
+
+	if (prefix == '(')
+	  puts("(void);");
+	else
+	  puts(");");
+      }
+
+      puts("};\n"
+           ".fi");
+
+      write_description(stdout, description, NULL, 0);
+    }
+  }
+
+ /*
+  * List of types...
+  */
+
+  if (find_public(doc, doc, "typedef"))
+  {
+    puts(".SH TYPES");
+
+    for (scut = find_public(doc, doc, "typedef");
+	 scut;
+	 scut = find_public(scut, doc, "typedef"))
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", name);
+
+      write_description(stdout, description, NULL, 1);
+
+      fputs(".PP\n"
+            ".nf\n"
+	    "typedef ", stdout);
+
+      type = mxmlFindElement(scut, scut, "type", NULL, NULL,
+                             MXML_DESCEND_FIRST);
+
+      for (type = type->child; type; type = type->next)
+        if (!strcmp(type->value.text.string, "("))
+	  break;
+	else
+	{
+	  if (type->value.text.whitespace)
+	    putchar(' ');
+
+          write_string(stdout, type->value.text.string, OUTPUT_MAN);
+        }
+
+      if (type)
+      {
+       /*
+        * Output function type...
+	*/
+
+        printf(" (*%s", name);
+
+	for (type = type->next->next; type; type = type->next)
+	{
+	  if (type->value.text.whitespace)
+	    putchar(' ');
+
+          write_string(stdout, type->value.text.string, OUTPUT_MAN);
+        }
+
+        puts(";");
+      }
+      else
+	printf(" %s;\n", name);
+
+      puts(".fi");
+
+      write_description(stdout, description, NULL, 0);
+    }
+  }
+
+ /*
+  * List of unions...
+  */
+
+  if (find_public(doc, doc, "union"))
+  {
+    puts(".SH UNIONS");
+
+    for (scut = find_public(doc, doc, "union");
+	 scut;
+	 scut = find_public(scut, doc, "union"))
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", name);
+
+      write_description(stdout, description, NULL, 1);
+
+      printf(".PP\n"
+             ".nf\n"
+	     "union %s\n{\n", name);
+      for (arg = mxmlFindElement(scut, scut, "variable", NULL, NULL,
+                        	 MXML_DESCEND_FIRST);
+	   arg;
+	   arg = mxmlFindElement(arg, scut, "variable", NULL, NULL,
+                        	 MXML_NO_DESCEND))
+      {
+	printf("  ");
+	write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                   NULL, MXML_DESCEND_FIRST),
+                      OUTPUT_MAN);
+	printf("%s;\n", mxmlElementGetAttr(arg, "name"));
+      }
+
+      puts("};\n"
+           ".fi");
+
+      write_description(stdout, description, NULL, 0);
+    }
+  }
+
+ /*
+  * Variables...
+  */
+
+  if (find_public(doc, doc, "variable"))
+  {
+    puts(".SH VARIABLES");
+
+    for (arg = find_public(doc, doc, "variable");
+	 arg;
+	 arg = find_public(arg, doc, "variable"))
+    {
+      name        = mxmlElementGetAttr(arg, "name");
+      description = mxmlFindElement(arg, arg, "description", NULL,
+                                    NULL, MXML_DESCEND_FIRST);
+      printf(".SS %s\n", name);
+
+      write_description(stdout, description, NULL, 1);
+
+      puts(".PP\n"
+           ".nf");
+
+      write_element(stdout, doc, mxmlFindElement(arg, arg, "type", NULL,
+                                                 NULL, MXML_DESCEND_FIRST),
+                    OUTPUT_MAN);
+      fputs(mxmlElementGetAttr(arg, "name"), stdout);
+      if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	printf(" %s", defval);
+      puts(";\n"
+           ".fi");
+
+      write_description(stdout, description, NULL, 0);
+    }
+  }
+
+  if (footerfile)
+  {
+   /*
+    * Use custom footer...
+    */
+
+    write_file(stdout, footerfile);
+  }
+}
+
+
+/*
+ * 'write_scu()' - Write a structure, class, or union.
+ */
+
+static void
+write_scu(FILE        *out,	/* I - Output file */
+          mxml_node_t *doc,	/* I - Document */
+          mxml_node_t *scut)	/* I - Structure, class, or union */
+{
+  int		i;			/* Looping var */
+  mxml_node_t	*function,		/* Current function */
+		*arg,			/* Current argument */
+		*description,		/* Description of function/var */
+		*type;			/* Type for argument */
+  const char	*name,			/* Name of function/type */
+		*cname,			/* Class name */
+		*defval,		/* Default value */
+		*parent,		/* Parent class */
+		*scope;			/* Scope for variable/function */
+  int		inscope,		/* Variable/method scope */
+		maxscope;		/* Maximum scope */
+  char		prefix;			/* Prefix character */
+  static const char * const scopes[] =	/* Scope strings */
+		{
+		  "private",
+		  "protected",
+		  "public"
+		};
+
+
+  cname       = mxmlElementGetAttr(scut, "name");
+  description = mxmlFindElement(scut, scut, "description", NULL,
+				NULL, MXML_DESCEND_FIRST);
+
+  fprintf(out, "<h3 class=\"%s\">%s<a name=\"%s\">%s</a></h3>\n",
+	  scut->value.element.name, get_comment_info(description), cname,
+	  cname);
+
+  if (description)
+    write_description(out, description, "p", 1);
+
+  fprintf(out, "<p class=\"code\">%s %s", scut->value.element.name, cname);
+  if ((parent = mxmlElementGetAttr(scut, "parent")) != NULL)
+    fprintf(out, " %s", parent);
+  fputs(" {<br>\n", out);
+
+  maxscope = !strcmp(scut->value.element.name, "class") ? 3 : 1;
+
+  for (i = 0; i < maxscope; i ++)
+  {
+    inscope = maxscope == 1;
+
+    for (arg = mxmlFindElement(scut, scut, "variable", NULL, NULL,
+			       MXML_DESCEND_FIRST);
+	 arg;
+	 arg = mxmlFindElement(arg, scut, "variable", NULL, NULL,
+			       MXML_NO_DESCEND))
+    {
+      if (maxscope > 1 &&
+          ((scope = mxmlElementGetAttr(arg, "scope")) == NULL ||
+	   strcmp(scope, scopes[i])))
+	continue;
+
+      if (!inscope)
+      {
+	inscope = 1;
+	fprintf(out, "  %s:<br>\n", scopes[i]);
+      }
+
+      fputs("    ", out);
+      write_element(out, doc, mxmlFindElement(arg, arg, "type", NULL,
+					      NULL, MXML_DESCEND_FIRST),
+		    OUTPUT_HTML);
+      fprintf(out, "%s;<br>\n", mxmlElementGetAttr(arg, "name"));
+    }
+
+    for (function = mxmlFindElement(scut, scut, "function", NULL, NULL,
+                                    MXML_DESCEND_FIRST);
+	 function;
+	 function = mxmlFindElement(function, scut, "function", NULL, NULL,
+	                            MXML_NO_DESCEND))
+    {
+      if (maxscope > 1 &&
+          ((scope = mxmlElementGetAttr(arg, "scope")) == NULL ||
+	   strcmp(scope, scopes[i])))
+	continue;
+
+      if (!inscope)
+      {
+	inscope = 1;
+	fprintf(out, "  %s:<br>\n", scopes[i]);
+      }
+
+      name = mxmlElementGetAttr(function, "name");
+
+      fputs("    ", out);
+
+      arg = mxmlFindElement(function, function, "returnvalue", NULL,
+			    NULL, MXML_DESCEND_FIRST);
+
+      if (arg)
+	write_element(out, doc, mxmlFindElement(arg, arg, "type", NULL,
+						NULL, MXML_DESCEND_FIRST),
+		      OUTPUT_HTML);
+      else if (strcmp(cname, name) && strcmp(cname, name + 1))
+	fputs("void ", out);
+
+      fprintf(out, "<a href=\"#%s.%s\">%s</a>", cname, name, name);
+
+      for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+				 MXML_DESCEND_FIRST), prefix = '(';
+	   arg;
+	   arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+				 MXML_NO_DESCEND), prefix = ',')
+      {
+	type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+			       MXML_DESCEND_FIRST);
+
+	putc(prefix, out);
+	if (prefix == ',')
+	  putc(' ', out);
+
+	if (type->child)
+	  write_element(out, doc, type, OUTPUT_HTML);
+
+	fputs(mxmlElementGetAttr(arg, "name"), out);
+	if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	  fprintf(out, " %s", defval);
+      }
+
+      if (prefix == '(')
+	fputs("(void);<br>\n", out);
+      else
+	fputs(");<br>\n", out);
+    }
+  }
+
+  fputs("};</p>\n"
+	"<h4 class=\"members\">Members</h4>\n"
+	"<dl>\n", out);
+
+  for (arg = mxmlFindElement(scut, scut, "variable", NULL, NULL,
+			     MXML_DESCEND_FIRST);
+       arg;
+       arg = mxmlFindElement(arg, scut, "variable", NULL, NULL,
+			     MXML_NO_DESCEND))
+  {
+    description = mxmlFindElement(arg, arg, "description", NULL,
+				  NULL, MXML_DESCEND_FIRST);
+
+    fprintf(out, "<dt>%s %s</dt>\n",
+	    mxmlElementGetAttr(arg, "name"), get_comment_info(description));
+
+    write_description(out, description, "dd", 1);
+    write_description(out, description, "dd", 0);
+  }
+
+  fputs("</dl>\n", out);
+
+  for (function = mxmlFindElement(scut, scut, "function", NULL, NULL,
+				  MXML_DESCEND_FIRST);
+       function;
+       function = mxmlFindElement(function, scut, "function", NULL, NULL,
+				  MXML_NO_DESCEND))
+  {
+    write_function(out, doc, function, 4);
+  }
+}
+
+
+/*
+ * 'write_string()' - Write a string, quoting HTML special chars as needed.
+ */
+
+static void
+write_string(FILE       *out,		/* I - Output file */
+             const char *s,		/* I - String to write */
+             int        mode)		/* I - Output mode */
+{
+  switch (mode)
+  {
+    case OUTPUT_HTML :
+    case OUTPUT_XML :
+        while (*s)
+        {
+          if (*s == '&')
+            fputs("&", out);
+          else if (*s == '<')
+            fputs("<", out);
+          else if (*s == '>')
+            fputs(">", out);
+          else if (*s == '\"')
+            fputs(""", out);
+          else if (*s & 128)
+          {
+           /*
+            * Convert UTF-8 to Unicode constant...
+            */
+
+            int	ch;			/* Unicode character */
+
+
+            ch = *s & 255;
+
+            if ((ch & 0xe0) == 0xc0)
+            {
+              ch = ((ch & 0x1f) << 6) | (s[1] & 0x3f);
+	      s ++;
+            }
+            else if ((ch & 0xf0) == 0xe0)
+            {
+              ch = ((((ch * 0x0f) << 6) | (s[1] & 0x3f)) << 6) | (s[2] & 0x3f);
+	      s += 2;
+            }
+
+            if (ch == 0xa0)
+            {
+             /*
+              * Handle non-breaking space as-is...
+	      */
+
+              fputs(" ", out);
+            }
+            else
+              fprintf(out, "&#x%x;", ch);
+          }
+          else
+            putc(*s, out);
+
+          s ++;
+        }
+        break;
+
+    case OUTPUT_MAN :
+        while (*s)
+        {
+          if (*s == '\\' || *s == '-')
+            putc('\\', out);
+
+          putc(*s++, out);
+        }
+        break;
+  }
+}
+
+
+/*
+ * 'write_toc()' - Write a table-of-contents.
+ */
+
+static void
+write_toc(FILE        *out,		/* I - Output file */
+          mxml_node_t *doc,		/* I - Document */
+          const char  *introfile,	/* I - Introduction file */
+	  const char  *target,		/* I - Target name */
+	  int         xml)		/* I - Write XML nodes? */
+{
+  FILE		*fp;			/* Intro file */
+  mxml_node_t	*function,		/* Current function */
+		*scut,			/* Struct/class/union/typedef */
+		*arg,			/* Current argument */
+		*description;		/* Description of function/var */
+  const char	*name,			/* Name of function/type */
+		*targetattr;		/* Target attribute, if any */
+  int		xmlid = 1;		/* Current XML node ID */
+
+
+ /*
+  * If target is set, it is the frame file that contains the body.
+  * Otherwise, we are creating a single-file...
+  */
+
+  if (target)
+    targetattr = " target=\"body\"";
+  else
+    targetattr = "";
+
+ /*
+  * The table-of-contents is a nested unordered list.  Start by
+  * reading any intro file to see if there are any headings there.
+  */
+
+  if (!xml)
+    fputs("<h2 class=\"title\">Contents</h2>\n"
+          "<ul class=\"contents\">\n", out);
+
+  if (introfile && (fp = fopen(introfile, "r")) != NULL)
+  {
+    char	line[8192],		/* Line from file */
+		*ptr,			/* Pointer in line */
+		*end,			/* End of line */
+		*anchor,		/* Anchor name */
+		quote,			/* Quote character for value */
+		level = '2',		/* Current heading level */
+		newlevel;		/* New heading level */
+    int		inelement;		/* In an element? */
+
+
+    while (fgets(line, sizeof(line), fp))
+    {
+     /*
+      * See if this line has a heading...
+      */
+
+      if ((ptr = strstr(line, "<h")) == NULL &&
+          (ptr = strstr(line, "<H")) == NULL)
+	continue;
+
+      if (ptr[2] != '2' && ptr[2] != '3')
+        continue;
+
+      newlevel = ptr[2];
+
+     /*
+      * Make sure we have the whole heading...
+      */
+
+      while (!strstr(line, "</h") && !strstr(line, "</H"))
+      {
+        end = line + strlen(line);
+
+	if (end == (line + sizeof(line) - 1) ||
+	    !fgets(end, (int)(sizeof(line) - (end - line)), fp))
+	  break;
+      }
+
+     /*
+      * Convert newlines and tabs to spaces...
+      */
+
+      for (ptr = line; *ptr; ptr ++)
+        if (isspace(*ptr & 255))
+	  *ptr = ' ';
+
+     /*
+      * Find the anchor and text...
+      */
+
+      for (ptr = strchr(line, '<'); ptr; ptr = strchr(ptr + 1, '<'))
+        if (!strncmp(ptr, "<A NAME=", 8) || !strncmp(ptr, "<a name=", 8))
+	  break;
+
+      if (!ptr)
+        continue;
+
+      ptr += 8;
+      inelement = 1;
+
+      if (*ptr == '\'' || *ptr == '\"')
+      {
+       /*
+        * Quoted anchor...
+	*/
+
+        quote  = *ptr++;
+	anchor = ptr;
+
+	while (*ptr && *ptr != quote)
+	  ptr ++;
+
+        if (!*ptr)
+	  continue;
+
+        *ptr++ = '\0';
+      }
+      else
+      {
+       /*
+        * Non-quoted anchor...
+	*/
+
+        anchor = ptr;
+
+	while (*ptr && *ptr != '>' && !isspace(*ptr & 255))
+	  ptr ++;
+
+        if (!*ptr)
+	  continue;
+
+        if (*ptr == '>')
+	  inelement = 0;
+
+	*ptr++ = '\0';
+      }
+
+     /*
+      * Write text until we see "</A>"...
+      */
+
+      if (xml)
+      {
+	if (newlevel < level)
+	  fputs("</Node>\n"
+		"</Subnodes></Node>\n", out);
+	else if (newlevel > level && newlevel == '3')
+	  fputs("<Subnodes>\n", out);
+	else if (xmlid > 1)
+	  fputs("</Node>\n", out);
+
+	level = newlevel;
+
+	fprintf(out, "<Node id=\"%d\">\n"
+                     "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>", xmlid ++, anchor);
+
+	quote = 0;
+
+	while (*ptr)
+	{
+	  if (inelement)
+	  {
+	    if (*ptr == quote)
+	      quote = 0;
+	    else if (*ptr == '>')
+	      inelement = 0;
+	    else if (*ptr == '\'' || *ptr == '\"')
+	      quote = *ptr;
+	  }
+	  else if (*ptr == '<')
+	  {
+	    if (!strncmp(ptr, "</A>", 4) || !strncmp(ptr, "</a>", 4))
+	      break;
+
+	    inelement = 1;
+	  }
+	  else
+	    putc(*ptr, out);
+
+	  ptr ++;
+	}
+
+	fputs("</Name>\n", out);
+      }
+      else
+      {
+	if (newlevel < level)
+	  fputs("</li>\n"
+		"</ul></li>\n", out);
+	else if (newlevel > level)
+	  fputs("<ul class=\"subcontents\">\n", out);
+	else if (xmlid > 1)
+	  fputs("</li>\n", out);
+
+	level = newlevel;
+	xmlid ++;
+
+	fprintf(out, "%s<li><a href=\"%s#%s\"%s>", level > '2' ? "\t" : "",
+	        target ? target : "", anchor, targetattr);
+
+	quote = 0;
+
+	while (*ptr)
+	{
+	  if (inelement)
+	  {
+	    if (*ptr == quote)
+	      quote = 0;
+	    else if (*ptr == '>')
+	      inelement = 0;
+	    else if (*ptr == '\'' || *ptr == '\"')
+	      quote = *ptr;
+	  }
+	  else if (*ptr == '<')
+	  {
+	    if (!strncmp(ptr, "</A>", 4) || !strncmp(ptr, "</a>", 4))
+	      break;
+
+	    inelement = 1;
+	  }
+	  else
+	    putc(*ptr, out);
+
+	  ptr ++;
+	}
+
+	fputs("</a>", out);
+      }
+    }
+
+    if (level > '1')
+    {
+      if (xml)
+      {
+	fputs("</Node>\n", out);
+
+	if (level == '3')
+	  fputs("</Subnodes></Node>\n", out);
+      }
+      else
+      {
+	fputs("</li>\n", out);
+
+	if (level == '3')
+	  fputs("</ul></li>\n", out);
+      }
+    }
+
+    fclose(fp);
+  }
+
+ /*
+  * Next the classes...
+  */
+
+  if ((scut = find_public(doc, doc, "class")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>CLASSES</Anchor>\n"
+		   "<Name>Classes</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out, "<li><a href=\"%s#CLASSES\"%s>Classes</a>"
+		   "<ul class=\"code\">\n",
+	      target ? target : "", targetattr);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      scut = find_public(scut, doc, "class");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Functions...
+  */
+
+  if ((function = find_public(doc, doc, "function")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>FUNCTIONS</Anchor>\n"
+		   "<Name>Functions</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out, "<li><a href=\"%s#FUNCTIONS\"%s>Functions</a>"
+		   "<ul class=\"code\">\n", target ? target : "", targetattr);
+
+    while (function)
+    {
+      name        = mxmlElementGetAttr(function, "name");
+      description = mxmlFindElement(function, function, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      function = find_public(function, doc, "function");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Data types...
+  */
+
+  if ((scut = find_public(doc, doc, "typedef")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>TYPES</Anchor>\n"
+		   "<Name>Data Types</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out, "<li><a href=\"%s#TYPES\"%s>Data Types</a>"
+		   "<ul class=\"code\">\n", target ? target : "", targetattr);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      scut = find_public(scut, doc, "typedef");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Structures...
+  */
+
+  if ((scut = find_public(doc, doc, "struct")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>STRUCTURES</Anchor>\n"
+		   "<Name>Structures</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out, "<li><a href=\"%s#STRUCTURES\"%s>Structures</a>"
+		   "<ul class=\"code\">\n", target ? target : "", targetattr);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      scut = find_public(scut, doc, "struct");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Unions...
+  */
+
+  if ((scut = find_public(doc, doc, "union")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>UNIONS</Anchor>\n"
+		   "<Name>Unions</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out,
+              "<li><a href=\"%s#UNIONS\"%s>Unions</a><ul class=\"code\">\n",
+	      target ? target : "", targetattr);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      scut = find_public(scut, doc, "union");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Globals variables...
+  */
+
+  if ((arg = find_public(doc, doc, "variable")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>VARIABLES</Anchor>\n"
+		   "<Name>Variables</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out, "<li><a href=\"%s#VARIABLES\"%s>Variables</a>"
+		   "<ul class=\"code\">\n", target ? target : "", targetattr);
+
+    while (arg)
+    {
+      name        = mxmlElementGetAttr(arg, "name");
+      description = mxmlFindElement(arg, arg, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      arg = find_public(arg, doc, "variable");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Enumerations/constants...
+  */
+
+  if ((scut = find_public(doc, doc, "enumeration")) != NULL)
+  {
+    if (xml)
+      fprintf(out, "<Node id=\"%d\">\n"
+		   "<Path>Documentation/index.html</Path>\n"
+	           "<Anchor>ENUMERATIONS</Anchor>\n"
+		   "<Name>Constants</Name>\n"
+		   "<Subnodes>\n", xmlid ++);
+    else
+      fprintf(out, "<li><a href=\"%s#ENUMERATIONS\"%s>Constants</a>"
+		   "<ul class=\"code\">\n", target ? target : "", targetattr);
+
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      if (xml)
+      {
+	fprintf(out, "<Node id=\"%d\">\n"
+	             "<Path>Documentation/index.html</Path>\n"
+	             "<Anchor>%s</Anchor>\n"
+		     "<Name>%s</Name>\n"
+		     "</Node>\n", xmlid ++, name, name);
+      }
+      else
+      {
+	fprintf(out, "\t<li><a href=\"%s#%s\"%s title=\"",
+		target ? target : "", name, targetattr);
+	write_description(out, description, "", 1);
+	fprintf(out, "\">%s</a></li>\n", name);
+      }
+
+      scut = find_public(scut, doc, "enumeration");
+    }
+
+    if (xml)
+      fputs("</Subnodes></Node>\n", out);
+    else
+      fputs("</ul></li>\n", out);
+  }
+
+ /*
+  * Close out the HTML table-of-contents list as needed...
+  */
+
+  if (!xml)
+    fputs("</ul>\n", out);
+}
+
+
+/*
+ * 'write_tokens()' - Write <Token> nodes for all APIs.
+ */
+
+static void
+write_tokens(FILE        *out,		/* I - Output file */
+             mxml_node_t *doc,		/* I - Document */
+	     const char  *path)		/* I - Path to help file */
+{
+  mxml_node_t	*function,		/* Current function */
+		*scut,			/* Struct/class/union/typedef */
+		*arg,			/* Current argument */
+		*description,		/* Description of function/var */
+		*type,			/* Type node */
+		*node;			/* Current child node */
+  const char	*name,			/* Name of function/type */
+		*cename,		/* Current class/enum name */
+		*defval;		/* Default value for argument */
+  char		prefix;			/* Prefix for declarations */
+
+
+ /*
+  * Classes...
+  */
+
+  if ((scut = find_public(doc, doc, "class")) != NULL)
+  {
+    while (scut)
+    {
+      cename      = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/cpp/cl/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, cename, cename);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "</Token>\n", out);
+
+      if ((function = find_public(scut, scut, "function")) != NULL)
+      {
+	while (function)
+	{
+	  name        = mxmlElementGetAttr(function, "name");
+	  description = mxmlFindElement(function, function, "description",
+					NULL, NULL, MXML_DESCEND_FIRST);
+
+	  fprintf(out, "<Token>\n"
+		       "<Path>Documentation/%s</Path>\n"
+		       "<Anchor>%s.%s</Anchor>\n"
+		       "<TokenIdentifier>//apple_ref/cpp/clm/%s/%s", path,
+		  cename, name, cename, name);
+
+	  arg = mxmlFindElement(function, function, "returnvalue", NULL,
+				NULL, MXML_DESCEND_FIRST);
+
+	  if (arg && (type = mxmlFindElement(arg, arg, "type", NULL,
+					     NULL, MXML_DESCEND_FIRST)) != NULL)
+          {
+	    for (node = type->child; node; node = node->next)
+	      fputs(node->value.text.string, out);
+	  }
+	  else if (strcmp(cename, name) && strcmp(cename, name + 1))
+	    fputs("void", out);
+
+	  fputs("/", out);
+
+	  for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+				     MXML_DESCEND_FIRST), prefix = '(';
+	       arg;
+	       arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+				     MXML_NO_DESCEND), prefix = ',')
+	  {
+	    type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+				   MXML_DESCEND_FIRST);
+
+	    putc(prefix, out);
+
+	    for (node = type->child; node; node = node->next)
+	      fputs(node->value.text.string, out);
+
+	    fputs(mxmlElementGetAttr(arg, "name"), out);
+	  }
+
+	  if (prefix == '(')
+	    fputs("(void", out);
+
+	  fputs(")</TokenIdentifier>\n"
+	        "<Abstract>", out);
+	  write_description(out, description, "", 1);
+	  fputs("</Abstract>\n"
+		"<Declaration>", out);
+
+	  arg = mxmlFindElement(function, function, "returnvalue", NULL,
+				NULL, MXML_DESCEND_FIRST);
+
+	  if (arg)
+	    write_element(out, doc, mxmlFindElement(arg, arg, "type", NULL,
+						    NULL, MXML_DESCEND_FIRST),
+			  OUTPUT_XML);
+	  else if (strcmp(cename, name) && strcmp(cename, name + 1))
+	    fputs("void ", out);
+
+	  fputs(name, out);
+
+	  for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+				     MXML_DESCEND_FIRST), prefix = '(';
+	       arg;
+	       arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+				     MXML_NO_DESCEND), prefix = ',')
+	  {
+	    type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+				   MXML_DESCEND_FIRST);
+
+	    putc(prefix, out);
+	    if (prefix == ',')
+	      putc(' ', out);
+
+	    if (type->child)
+	      write_element(out, doc, type, OUTPUT_XML);
+
+	    fputs(mxmlElementGetAttr(arg, "name"), out);
+	    if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	      fprintf(out, " %s", defval);
+	  }
+
+	  if (prefix == '(')
+	    fputs("(void);", out);
+	  else
+	    fputs(");", out);
+
+	  fputs("</Declaration>\n"
+		"</Token>\n", out);
+
+	  function = find_public(function, doc, "function");
+	}
+      }
+      scut = find_public(scut, doc, "class");
+    }
+  }
+
+ /*
+  * Functions...
+  */
+
+  if ((function = find_public(doc, doc, "function")) != NULL)
+  {
+    while (function)
+    {
+      name        = mxmlElementGetAttr(function, "name");
+      description = mxmlFindElement(function, function, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/c/func/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, name, name);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "<Declaration>", out);
+
+      arg = mxmlFindElement(function, function, "returnvalue", NULL,
+			    NULL, MXML_DESCEND_FIRST);
+
+      if (arg)
+	write_element(out, doc, mxmlFindElement(arg, arg, "type", NULL,
+						NULL, MXML_DESCEND_FIRST),
+		      OUTPUT_XML);
+      else // if (strcmp(cname, name) && strcmp(cname, name + 1))
+	fputs("void ", out);
+
+      fputs(name, out);
+
+      for (arg = mxmlFindElement(function, function, "argument", NULL, NULL,
+				 MXML_DESCEND_FIRST), prefix = '(';
+	   arg;
+	   arg = mxmlFindElement(arg, function, "argument", NULL, NULL,
+				 MXML_NO_DESCEND), prefix = ',')
+      {
+	type = mxmlFindElement(arg, arg, "type", NULL, NULL,
+			       MXML_DESCEND_FIRST);
+
+	putc(prefix, out);
+	if (prefix == ',')
+	  putc(' ', out);
+
+	if (type->child)
+	  write_element(out, doc, type, OUTPUT_XML);
+
+	fputs(mxmlElementGetAttr(arg, "name"), out);
+	if ((defval = mxmlElementGetAttr(arg, "default")) != NULL)
+	  fprintf(out, " %s", defval);
+      }
+
+      if (prefix == '(')
+	fputs("(void);", out);
+      else
+	fputs(");", out);
+
+      fputs("</Declaration>\n"
+            "</Token>\n", out);
+
+      function = find_public(function, doc, "function");
+    }
+  }
+
+ /*
+  * Data types...
+  */
+
+  if ((scut = find_public(doc, doc, "typedef")) != NULL)
+  {
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/c/tdef/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, name, name);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "</Token>\n", out);
+
+      scut = find_public(scut, doc, "typedef");
+    }
+  }
+
+ /*
+  * Structures...
+  */
+
+  if ((scut = find_public(doc, doc, "struct")) != NULL)
+  {
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/c/tag/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, name, name);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "</Token>\n", out);
+
+      scut = find_public(scut, doc, "struct");
+    }
+  }
+
+ /*
+  * Unions...
+  */
+
+  if ((scut = find_public(doc, doc, "union")) != NULL)
+  {
+    while (scut)
+    {
+      name        = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/c/tag/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, name, name);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "</Token>\n", out);
+
+      scut = find_public(scut, doc, "union");
+    }
+  }
+
+ /*
+  * Globals variables...
+  */
+
+  if ((arg = find_public(doc, doc, "variable")) != NULL)
+  {
+    while (arg)
+    {
+      name        = mxmlElementGetAttr(arg, "name");
+      description = mxmlFindElement(arg, arg, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/c/data/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, name, name);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "</Token>\n", out);
+
+      arg = find_public(arg, doc, "variable");
+    }
+  }
+
+ /*
+  * Enumerations/constants...
+  */
+
+  if ((scut = find_public(doc, doc, "enumeration")) != NULL)
+  {
+    while (scut)
+    {
+      cename      = mxmlElementGetAttr(scut, "name");
+      description = mxmlFindElement(scut, scut, "description",
+				    NULL, NULL, MXML_DESCEND_FIRST);
+
+      fprintf(out, "<Token>\n"
+		   "<Path>Documentation/%s</Path>\n"
+		   "<Anchor>%s</Anchor>\n"
+		   "<TokenIdentifier>//apple_ref/c/tag/%s</TokenIdentifier>\n"
+		   "<Abstract>", path, cename, cename);
+      write_description(out, description, "", 1);
+      fputs("</Abstract>\n"
+            "</Token>\n", out);
+
+      for (arg = mxmlFindElement(scut, scut, "constant", NULL, NULL,
+                        	 MXML_DESCEND_FIRST);
+	   arg;
+	   arg = mxmlFindElement(arg, scut, "constant", NULL, NULL,
+                        	 MXML_NO_DESCEND))
+      {
+        name        = mxmlElementGetAttr(arg, "name");
+	description = mxmlFindElement(arg, arg, "description", NULL,
+                                      NULL, MXML_DESCEND_FIRST);
+	fprintf(out, "<Token>\n"
+		     "<Path>Documentation/%s</Path>\n"
+		     "<Anchor>%s</Anchor>\n"
+		     "<TokenIdentifier>//apple_ref/c/econst/%s</TokenIdentifier>\n"
+		     "<Abstract>", path, cename, name);
+	write_description(out, description, "", 1);
+	fputs("</Abstract>\n"
+	      "</Token>\n", out);
+      }
+
+      scut = find_public(scut, doc, "enumeration");
+    }
+  }
+}
+
+
+/*
+ * 'ws_cb()' - Whitespace callback for saving.
+ */
+
+static const char *			/* O - Whitespace string or NULL for none */
+ws_cb(mxml_node_t *node,		/* I - Element node */
+      int         where)		/* I - Where value */
+{
+  const char *name;			/* Name of element */
+  int	depth;				/* Depth of node */
+  static const char *spaces = "                                        ";
+					/* Whitespace (40 spaces) for indent */
+
+
+  name = node->value.element.name;
+
+  switch (where)
+  {
+    case MXML_WS_BEFORE_CLOSE :
+        if (strcmp(name, "argument") &&
+	    strcmp(name, "class") &&
+	    strcmp(name, "constant") &&
+	    strcmp(name, "enumeration") &&
+	    strcmp(name, "function") &&
+	    strcmp(name, "mxmldoc") &&
+	    strcmp(name, "namespace") &&
+	    strcmp(name, "returnvalue") &&
+	    strcmp(name, "struct") &&
+	    strcmp(name, "typedef") &&
+	    strcmp(name, "union") &&
+	    strcmp(name, "variable"))
+	  return (NULL);
+
+	for (depth = -4; node; node = node->parent, depth += 2);
+	if (depth > 40)
+	  return (spaces);
+	else if (depth < 2)
+	  return (NULL);
+	else
+	  return (spaces + 40 - depth);
+
+    case MXML_WS_AFTER_CLOSE :
+	return ("\n");
+
+    case MXML_WS_BEFORE_OPEN :
+	for (depth = -4; node; node = node->parent, depth += 2);
+	if (depth > 40)
+	  return (spaces);
+	else if (depth < 2)
+	  return (NULL);
+	else
+	  return (spaces + 40 - depth);
+
+    default :
+    case MXML_WS_AFTER_OPEN :
+        if (strcmp(name, "argument") &&
+	    strcmp(name, "class") &&
+	    strcmp(name, "constant") &&
+	    strcmp(name, "enumeration") &&
+	    strcmp(name, "function") &&
+	    strcmp(name, "mxmldoc") &&
+	    strcmp(name, "namespace") &&
+	    strcmp(name, "returnvalue") &&
+	    strcmp(name, "struct") &&
+	    strcmp(name, "typedef") &&
+	    strcmp(name, "union") &&
+	    strcmp(name, "variable") &&
+	    strncmp(name, "?xml", 4))
+	  return (NULL);
+	else
+          return ("\n");
+  }
+}
+
+
+/*
+ * End of "$Id: mxmldoc.c 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/test.xml b/src/mxml/mxml-2.9/test.xml
new file mode 100644
index 0000000..044304e
--- /dev/null
+++ b/src/mxml/mxml-2.9/test.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<group>
+	<option>
+		<keyword type="opaque">InputSlot</keyword>
+		<default type="opaque">Auto</default>
+		<text>Media Source</text>
+		<order type="real">10.000000</order>
+		<choice>
+			<keyword type="opaque">Auto</keyword>
+			<text>Auto Tray Selection</text>
+			<code type="opaque" />
+		</choice>
+		<choice>
+			<keyword type="opaque">Upper</keyword>
+			<text>Tray 1</text>
+			<code type="opaque"><</MediaPosition 0>>setpagedevice</code>
+		</choice>
+		<choice>
+			<keyword type="opaque">Lower</keyword>
+			<text>Tray 2</text>
+			<code type="opaque"><</MediaPosition 1>>setpagedevice</code>
+		</choice>
+	</option>
+	<integer>123</integer>
+	<string>Now is the time for all good men to come to the aid of their
+country.</string>
+	<!-- this is a comment -->
+	<![CDATA[this is CDATA 0123456789ABCDEF]]>
+</group>
diff --git a/src/mxml/mxml-2.9/test/class.cxx b/src/mxml/mxml-2.9/test/class.cxx
new file mode 100644
index 0000000..2703616
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/class.cxx
@@ -0,0 +1,84 @@
+class foo_c : public bar_c		// Foo class derived from bar
+{
+  float	foo;				/* Real number */
+  int	bar;				/* Integer */
+
+  public:
+
+  foo_c(float f, int b);
+  ~foo_c();
+
+  // 'get_bar()' - Get the value of bar.
+  int // O - Value of bar
+  get_bar()
+  {
+    return (bar);
+  }
+
+  // 'get_foo()' - Get the value of foo.
+  float // O - Value of foo
+  get_foo()
+  {
+    return (foo);
+  }
+
+  // 'set_bar()' - Set the value of bar.
+  void
+  set_bar(int b) // I - Value of bar
+  {
+    bar = b;
+  }
+
+  // 'set_foo()' - Set the value of foo.
+  void
+  set_foo(float f) // I - Value of foo
+  {
+    foo = f;
+  }
+
+  // 'set_foobar()' - Set foo and optionally bar (should show default args).
+  void
+  set_foobar(float f, // I - Value of foo
+             int b = 0) // I - Value of bar
+  {
+    foo = f;
+    bar = b;
+  }
+
+  protected:
+
+  static int global;			/* Global integer */
+
+  // 'get_global()' - Get the global integer.
+  int // O - Integer
+  get_global()
+  {
+    return (global);
+  }
+
+  private:
+
+  int barfoo; // Another private integer
+
+  public: 
+
+  // 'get_barfoo()' - Get the barfoo value.
+  int // O - Barfoo value
+  get_barfoo()
+  {
+    return (barfoo);
+  }
+}
+
+// 'foo_c::foo_c()' - Create a foo_c class.
+foo_c::foo_c(float f, // I - Value of foo
+             int b) // I - Value of bar
+{
+  foo = f;
+  bar = b;
+}
+
+// 'foo_c::~foo_c()' - Destroy a foo_c class.
+foo_c::~foo_c()
+{
+}
diff --git a/src/mxml/mxml-2.9/test/dotest.sh b/src/mxml/mxml-2.9/test/dotest.sh
new file mode 100755
index 0000000..5443ffe
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/dotest.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+(cd ..; make mxmldoc-static)
+
+files=""
+mode=""
+
+while test $# -gt 0; do
+	arg="$1"
+	shift
+
+	case "$arg" in
+		-f) framed="--framed framed" ;;
+		-g) mode="gdb" ;;
+		-v) mode="valgrind" ;;
+		*.h | *.c | *.cxx) files="$files $arg" ;;
+		*)
+			echo "Usage: ./dotest.sh [-f] [-g] [-v] [files]"
+			exit 1
+			;;
+	esac
+done
+
+if test "$files" = ""; then
+	files=*.cxx
+fi
+
+rm -f test.xml
+
+case "$mode" in
+	gdb)
+		echo "break malloc_error_break" >.gdbcmds
+		echo "set env DYLD_INSERT_LIBRARIES /usr/lib/libgmalloc.dylib" >>.gdbcmds
+		echo "run $framed test.xml $files >test.html 2>test.log" >>.gdbcmds
+		gdb -x .gdbcmds ../mxmldoc-static
+		;;
+
+	valgrind)
+		valgrind --log-fd=3 --leak-check=yes \
+			../mxmldoc-static $framed test.xml $files \
+			>test.html 2>test.log 3>test.valgrind
+		;;
+
+	*)
+		../mxmldoc-static $framed test.xml $files >test.html 2>test.log
+		;;
+esac
+
diff --git a/src/mxml/mxml-2.9/test/enum.cxx b/src/mxml/mxml-2.9/test/enum.cxx
new file mode 100644
index 0000000..49f2a7f
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/enum.cxx
@@ -0,0 +1,17 @@
+typedef enum foo_enum_e			/* Sample enumeration type */
+{
+  FOO_ONE,				/* One fish */
+  FOO_TWO,				/* Two fish */
+  FOO_RED,				/* Red fish */
+  FOO_BLUE,				/* Blue fish */
+  FOO_PRIVATE				/* Private fish @private@ */
+} foo_enum_t;
+
+typedef enum foo_enum2_e		/* Sample enumeration type #2 */
+{
+  FOO2_ONE,				/* One fish #2 */
+  FOO2_TWO,				/* Two fish #2 */
+  FOO2_RED,				/* Red fish #2 */
+  FOO2_BLUE,				/* Blue fish #2 */
+  FOO2_PRIVATE				/* Private fish #2 @private@ */
+} foo_enum2_t;
diff --git a/src/mxml/mxml-2.9/test/function.cxx b/src/mxml/mxml-2.9/test/function.cxx
new file mode 100644
index 0000000..0010a7d
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/function.cxx
@@ -0,0 +1,107 @@
+/*
+ * 'foo_void_function()' - Do foo with bar.
+ *
+ * Use the @link foo_float_function@ or @link foo_int_function@ functions
+ * instead.  Pass @code NULL@ for "three" then there is no string to print.
+ *
+ * @deprecated@
+ */
+
+void
+foo_void_function(int        one,	/* I - Integer */
+                  float      *two,	/* O - Real number */
+                  const char *three)	/* I - String */
+{
+  if (one)
+  {
+    puts("Hello, World!");
+  }
+  else
+    puts(three);
+
+  *two = 2.0f;
+}
+
+
+/*
+ * 'foo_float_function()' - Do foo with bar.
+ *
+ * @since 1.2@
+ */
+
+float					/* O - Real number */
+foo_float_function(int        one,	/* I - Integer */
+                   const char *two)	/* I - String */
+{
+  if (one)
+  {
+    puts("Hello, World!");
+  }
+  else
+    puts(two);
+
+  return (2.0f);
+}
+
+
+/*
+ * 'foo_default_string()' - Do something with a defaulted string arg.
+ */
+
+int					/* O - Integer value */
+foo_default_string(int one,		/* I - Integer */
+                   const char *two = "2")
+					/* I - String */
+{
+  if (one)
+  {
+    puts("Hello, World!");
+  }
+  else
+    puts(two);
+
+  return (2);
+}
+
+
+/*
+ * 'foo_default_int()' - Do something with a defaulted int arg.
+ */
+
+int					/* O - Integer value */
+foo_default_int(int one,		/* I - Integer */
+                int two = 2)		/* I - Integer */
+{
+  if (one)
+  {
+    puts("Hello, World!");
+  }
+  else
+    puts(two);
+
+  return (2);
+}
+
+
+/*
+ * 'foo_void_func()' - Function taking no arguments.
+ */
+
+void
+foo_void_func(void)
+{
+  puts("foo_void_func()");
+}
+
+
+/*
+ * 'foo_private_func()' - Private function.
+ *
+ * @private@
+ */
+
+void
+foo_private_func(void)
+{
+  puts("foo_private_func()");
+}
diff --git a/src/mxml/mxml-2.9/test/functype.cxx b/src/mxml/mxml-2.9/test/functype.cxx
new file mode 100644
index 0000000..589e577
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/functype.cxx
@@ -0,0 +1 @@
+typedef int (*foo_func_t)(void *foo, int bar);	/**** Foo function type ****/
diff --git a/src/mxml/mxml-2.9/test/struct.cxx b/src/mxml/mxml-2.9/test/struct.cxx
new file mode 100644
index 0000000..2f4bd4b
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/struct.cxx
@@ -0,0 +1,55 @@
+typedef struct foo_s			/* Foo structure */
+{
+  float	foo;				/* Real number */
+  int	bar;				/* Integer */
+
+  foo_s(float f, int b);
+  ~foo_s();
+
+  // 'get_bar()' - Get the value of bar.
+  int // O - Value of bar
+  get_bar()
+  {
+    return (bar);
+  }
+
+  // 'get_foo()' - Get the value of foo.
+  float // O - Value of foo
+  get_foo()
+  {
+    return (foo);
+  }
+
+  // 'set_bar()' - Set the value of bar.
+  void
+  set_bar(int b) // I - Value of bar
+  {
+    bar = b;
+  }
+
+  // 'set_foo()' - Set the value of foo.
+  void
+  set_foo(float f) // I - Value of foo
+  {
+    foo = f;
+  }
+} foo_t;
+
+// 'foo_s::foo_s()' - Create a foo_s structure.
+foo_s::foo_s(float f, // I - Value of foo
+             int b) // I - Value of bar
+{
+  foo = f;
+  bar = b;
+}
+
+// 'foo_s::~foo_s()' - Destroy a foo_s structure.
+foo_s::~foo_s()
+{
+}
+
+typedef struct foo_private_s		/* @private@ */
+{
+  int	a;				/* Value of "a" */
+  char	b[255];				/* Value of "b" */
+} foo_private_t;
diff --git a/src/mxml/mxml-2.9/test/type.cxx b/src/mxml/mxml-2.9/test/type.cxx
new file mode 100644
index 0000000..78349b8
--- /dev/null
+++ b/src/mxml/mxml-2.9/test/type.cxx
@@ -0,0 +1,3 @@
+typedef int foo_simple_t;		/* Simple integer type */
+
+typedef int foo_simple_private_t;	/* @private@ */
diff --git a/src/mxml/mxml-2.9/testmxml.c b/src/mxml/mxml-2.9/testmxml.c
new file mode 100644
index 0000000..c00647a
--- /dev/null
+++ b/src/mxml/mxml-2.9/testmxml.c
@@ -0,0 +1,860 @@
+/*
+ * "$Id: testmxml.c 459 2014-10-19 17:21:48Z msweet $"
+ *
+ * Test program for Mini-XML, a small XML-like file parsing library.
+ *
+ * Usage:
+ *
+ *   ./testmxml input.xml [string-output.xml] >stdio-output.xml
+ *   ./testmxml "<?xml ..." [string-output.xml] >stdio-output.xml
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "config.h"
+#include "mxml.h"
+#ifndef WIN32
+#  include <unistd.h>
+#endif /* !WIN32 */
+#include <fcntl.h>
+#ifndef O_BINARY
+#  define O_BINARY 0
+#endif /* !O_BINARY */
+
+
+/*
+ * Globals...
+ */
+
+int		event_counts[6];
+
+
+/*
+ * Local functions...
+ */
+
+void		sax_cb(mxml_node_t *node, mxml_sax_event_t event, void *data);
+mxml_type_t	type_cb(mxml_node_t *node);
+const char	*whitespace_cb(mxml_node_t *node, int where);
+
+
+/*
+ * 'main()' - Main entry for test program.
+ */
+
+int					/* O - Exit status */
+main(int  argc,				/* I - Number of command-line args */
+     char *argv[])			/* I - Command-line args */
+{
+  int			i;		/* Looping var */
+  FILE			*fp;		/* File to read */
+  int			fd;		/* File descriptor */
+  mxml_node_t		*tree,		/* XML tree */
+			*node;		/* Node which should be in test.xml */
+  mxml_index_t		*ind;		/* XML index */
+  char			buffer[16384];	/* Save string */
+  static const char	*types[] =	/* Strings for node types */
+			{
+			  "MXML_ELEMENT",
+			  "MXML_INTEGER",
+			  "MXML_OPAQUE",
+			  "MXML_REAL",
+			  "MXML_TEXT"
+			};
+
+
+ /*
+  * Check arguments...
+  */
+
+  if (argc != 2 && argc != 3)
+  {
+    fputs("Usage: testmxml filename.xml [string-output.xml]\n", stderr);
+    return (1);
+  }
+
+ /*
+  * Test the basic functionality...
+  */
+
+  tree = mxmlNewElement(MXML_NO_PARENT, "element");
+
+  if (!tree)
+  {
+    fputs("ERROR: No parent node in basic test!\n", stderr);
+    return (1);
+  }
+
+  if (tree->type != MXML_ELEMENT)
+  {
+    fprintf(stderr, "ERROR: Parent has type %s (%d), expected MXML_ELEMENT!\n",
+            tree->type < MXML_ELEMENT || tree->type > MXML_TEXT ?
+	        "UNKNOWN" : types[tree->type], tree->type);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (strcmp(tree->value.element.name, "element"))
+  {
+    fprintf(stderr, "ERROR: Parent value is \"%s\", expected \"element\"!\n",
+            tree->value.element.name);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlNewInteger(tree, 123);
+  mxmlNewOpaque(tree, "opaque");
+  mxmlNewReal(tree, 123.4f);
+  mxmlNewText(tree, 1, "text");
+
+  mxmlLoadString(tree, "<group type='string'>string string string</group>",
+                 MXML_NO_CALLBACK);
+  mxmlLoadString(tree, "<group type='integer'>1 2 3</group>",
+                 MXML_INTEGER_CALLBACK);
+  mxmlLoadString(tree, "<group type='real'>1.0 2.0 3.0</group>",
+                 MXML_REAL_CALLBACK);
+  mxmlLoadString(tree, "<group>opaque opaque opaque</group>",
+                 MXML_OPAQUE_CALLBACK);
+  mxmlLoadString(tree, "<foo><bar><one><two>value<two>value2</two></two></one>"
+                       "</bar></foo>", MXML_OPAQUE_CALLBACK);
+
+  node = tree->child;
+
+  if (!node)
+  {
+    fputs("ERROR: No first child node in basic test!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (node->type != MXML_INTEGER)
+  {
+    fprintf(stderr, "ERROR: First child has type %s (%d), expected MXML_INTEGER!\n",
+            node->type < MXML_ELEMENT || node->type > MXML_TEXT ?
+	        "UNKNOWN" : types[node->type], node->type);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (node->value.integer != 123)
+  {
+    fprintf(stderr, "ERROR: First child value is %d, expected 123!\n",
+            node->value.integer);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  node = node->next;
+
+  if (!node)
+  {
+    fputs("ERROR: No second child node in basic test!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (node->type != MXML_OPAQUE)
+  {
+    fprintf(stderr, "ERROR: Second child has type %s (%d), expected MXML_OPAQUE!\n",
+            node->type < MXML_ELEMENT || node->type > MXML_TEXT ?
+	        "UNKNOWN" : types[node->type], node->type);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (!node->value.opaque || strcmp(node->value.opaque, "opaque"))
+  {
+    fprintf(stderr, "ERROR: Second child value is \"%s\", expected \"opaque\"!\n",
+            node->value.opaque ? node->value.opaque : "(null)");
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  node = node->next;
+
+  if (!node)
+  {
+    fputs("ERROR: No third child node in basic test!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (node->type != MXML_REAL)
+  {
+    fprintf(stderr, "ERROR: Third child has type %s (%d), expected MXML_REAL!\n",
+            node->type < MXML_ELEMENT || node->type > MXML_TEXT ?
+	        "UNKNOWN" : types[node->type], node->type);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (node->value.real != 123.4f)
+  {
+    fprintf(stderr, "ERROR: Third child value is %f, expected 123.4!\n",
+            node->value.real);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  node = node->next;
+
+  if (!node)
+  {
+    fputs("ERROR: No fourth child node in basic test!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (node->type != MXML_TEXT)
+  {
+    fprintf(stderr, "ERROR: Fourth child has type %s (%d), expected MXML_TEXT!\n",
+            node->type < MXML_ELEMENT || node->type > MXML_TEXT ?
+	        "UNKNOWN" : types[node->type], node->type);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (!node->value.text.whitespace ||
+      !node->value.text.string || strcmp(node->value.text.string, "text"))
+  {
+    fprintf(stderr, "ERROR: Fourth child value is %d,\"%s\", expected 1,\"text\"!\n",
+            node->value.text.whitespace,
+	    node->value.text.string ? node->value.text.string : "(null)");
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  for (i = 0; i < 4; i ++)
+  {
+    node = node->next;
+
+    if (!node)
+    {
+      fprintf(stderr, "ERROR: No group #%d child node in basic test!\n", i + 1);
+      mxmlDelete(tree);
+      return (1);
+    }
+
+    if (node->type != MXML_ELEMENT)
+    {
+      fprintf(stderr, "ERROR: Group child #%d has type %s (%d), expected MXML_ELEMENT!\n",
+              i + 1, node->type < MXML_ELEMENT || node->type > MXML_TEXT ?
+	                 "UNKNOWN" : types[node->type], node->type);
+      mxmlDelete(tree);
+      return (1);
+    }
+  }
+
+ /*
+  * Test mxmlFindPath...
+  */
+
+  node = mxmlFindPath(tree, "*/two");
+  if (!node)
+  {
+    fputs("ERROR: Unable to find value for \"*/two\".\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+  else if (node->type != MXML_OPAQUE || strcmp(node->value.opaque, "value"))
+  {
+    fputs("ERROR: Bad value for \"*/two\".\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  node = mxmlFindPath(tree, "foo/*/two");
+  if (!node)
+  {
+    fputs("ERROR: Unable to find value for \"foo/*/two\".\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+  else if (node->type != MXML_OPAQUE || strcmp(node->value.opaque, "value"))
+  {
+    fputs("ERROR: Bad value for \"foo/*/two\".\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  node = mxmlFindPath(tree, "foo/bar/one/two");
+  if (!node)
+  {
+    fputs("ERROR: Unable to find value for \"foo/bar/one/two\".\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+  else if (node->type != MXML_OPAQUE || strcmp(node->value.opaque, "value"))
+  {
+    fputs("ERROR: Bad value for \"foo/bar/one/two\".\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+ /*
+  * Test indices...
+  */
+
+  ind = mxmlIndexNew(tree, NULL, NULL);
+  if (!ind)
+  {
+    fputs("ERROR: Unable to create index of all nodes!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (ind->num_nodes != 10)
+  {
+    fprintf(stderr, "ERROR: Index of all nodes contains %d "
+                    "nodes; expected 10!\n", ind->num_nodes);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexReset(ind);
+  if (!mxmlIndexFind(ind, "group", NULL))
+  {
+    fputs("ERROR: mxmlIndexFind for \"group\" failed!\n", stderr);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexDelete(ind);
+
+  ind = mxmlIndexNew(tree, "group", NULL);
+  if (!ind)
+  {
+    fputs("ERROR: Unable to create index of groups!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (ind->num_nodes != 4)
+  {
+    fprintf(stderr, "ERROR: Index of groups contains %d "
+                    "nodes; expected 4!\n", ind->num_nodes);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexReset(ind);
+  if (!mxmlIndexEnum(ind))
+  {
+    fputs("ERROR: mxmlIndexEnum failed!\n", stderr);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexDelete(ind);
+
+  ind = mxmlIndexNew(tree, NULL, "type");
+  if (!ind)
+  {
+    fputs("ERROR: Unable to create index of type attributes!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (ind->num_nodes != 3)
+  {
+    fprintf(stderr, "ERROR: Index of type attributes contains %d "
+                    "nodes; expected 3!\n", ind->num_nodes);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexReset(ind);
+  if (!mxmlIndexFind(ind, NULL, "string"))
+  {
+    fputs("ERROR: mxmlIndexFind for \"string\" failed!\n", stderr);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexDelete(ind);
+
+  ind = mxmlIndexNew(tree, "group", "type");
+  if (!ind)
+  {
+    fputs("ERROR: Unable to create index of elements and attributes!\n", stderr);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  if (ind->num_nodes != 3)
+  {
+    fprintf(stderr, "ERROR: Index of elements and attributes contains %d "
+                    "nodes; expected 3!\n", ind->num_nodes);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexReset(ind);
+  if (!mxmlIndexFind(ind, "group", "string"))
+  {
+    fputs("ERROR: mxmlIndexFind for \"string\" failed!\n", stderr);
+    mxmlIndexDelete(ind);
+    mxmlDelete(tree);
+    return (1);
+  }
+
+  mxmlIndexDelete(ind);
+
+ /*
+  * Check the mxmlDelete() works properly...
+  */
+
+  for (i = 0; i < 9; i ++)
+  {
+    if (tree->child)
+      mxmlDelete(tree->child);
+    else
+    {
+      fprintf(stderr, "ERROR: Child pointer prematurely NULL on child #%d\n",
+              i + 1);
+      mxmlDelete(tree);
+      return (1);
+    }
+  }
+
+  if (tree->child)
+  {
+    fputs("ERROR: Child pointer not NULL after deleting all children!\n", stderr);
+    return (1);
+  }
+
+  if (tree->last_child)
+  {
+    fputs("ERROR: Last child pointer not NULL after deleting all children!\n", stderr);
+    return (1);
+  }
+
+  mxmlDelete(tree);
+
+ /*
+  * Open the file/string using the default (MXML_NO_CALLBACK) callback...
+  */
+
+  if (argv[1][0] == '<')
+    tree = mxmlLoadString(NULL, argv[1], MXML_NO_CALLBACK);
+  else if ((fp = fopen(argv[1], "rb")) == NULL)
+  {
+    perror(argv[1]);
+    return (1);
+  }
+  else
+  {
+   /*
+    * Read the file...
+    */
+
+    tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+
+    fclose(fp);
+  }
+
+  if (!tree)
+  {
+    fputs("Unable to read XML file with default callback!\n", stderr);
+    return (1);
+  }
+
+  if (!strcmp(argv[1], "test.xml"))
+  {
+    const char	*text;			/* Text value */
+
+   /*
+    * Verify that mxmlFindElement() and indirectly mxmlWalkNext() work
+    * properly...
+    */
+
+    if ((node = mxmlFindPath(tree, "group/option/keyword")) == NULL)
+    {
+      fputs("Unable to find group/option/keyword element in XML tree!\n", stderr);
+      mxmlDelete(tree);
+      return (1);
+    }
+
+    if (node->type != MXML_TEXT)
+    {
+      fputs("No child node of group/option/keyword!\n", stderr);
+      mxmlSaveFile(tree, stderr, MXML_NO_CALLBACK);
+      mxmlDelete(tree);
+      return (1);
+    }
+
+    if ((text = mxmlGetText(node, NULL)) == NULL || strcmp(text, "InputSlot"))
+    {
+      fprintf(stderr, "Child node of group/option/value has value \"%s\" instead of \"InputSlot\"!\n", text ? text : "(null)");
+      mxmlDelete(tree);
+      return (1);
+    }
+  }
+
+  mxmlDelete(tree);
+
+ /*
+  * Open the file...
+  */
+
+  if (argv[1][0] == '<')
+    tree = mxmlLoadString(NULL, argv[1], type_cb);
+  else if ((fp = fopen(argv[1], "rb")) == NULL)
+  {
+    perror(argv[1]);
+    return (1);
+  }
+  else
+  {
+   /*
+    * Read the file...
+    */
+
+    tree = mxmlLoadFile(NULL, fp, type_cb);
+
+    fclose(fp);
+  }
+
+  if (!tree)
+  {
+    fputs("Unable to read XML file!\n", stderr);
+    return (1);
+  }
+
+  if (!strcmp(argv[1], "test.xml"))
+  {
+   /*
+    * Verify that mxmlFindElement() and indirectly mxmlWalkNext() work
+    * properly...
+    */
+
+    if ((node = mxmlFindElement(tree, tree, "choice", NULL, NULL,
+                                MXML_DESCEND)) == NULL)
+    {
+      fputs("Unable to find first <choice> element in XML tree!\n", stderr);
+      mxmlDelete(tree);
+      return (1);
+    }
+
+    if (!mxmlFindElement(node, tree, "choice", NULL, NULL, MXML_NO_DESCEND))
+    {
+      fputs("Unable to find second <choice> element in XML tree!\n", stderr);
+      mxmlDelete(tree);
+      return (1);
+    }
+  }
+
+ /*
+  * Print the XML tree...
+  */
+
+  mxmlSaveFile(tree, stdout, whitespace_cb);
+
+ /*
+  * Save the XML tree to a string and print it...
+  */
+
+  if (mxmlSaveString(tree, buffer, sizeof(buffer), whitespace_cb) > 0)
+  {
+    if (argc == 3)
+    {
+      fp = fopen(argv[2], "w");
+      fputs(buffer, fp);
+      fclose(fp);
+    }
+  }
+
+ /*
+  * Delete the tree...
+  */
+
+  mxmlDelete(tree);
+
+ /*
+  * Read from/write to file descriptors...
+  */
+
+  if (argv[1][0] != '<')
+  {
+   /*
+    * Open the file again...
+    */
+
+    if ((fd = open(argv[1], O_RDONLY | O_BINARY)) < 0)
+    {
+      perror(argv[1]);
+      return (1);
+    }
+
+   /*
+    * Read the file...
+    */
+
+    tree = mxmlLoadFd(NULL, fd, type_cb);
+
+    close(fd);
+
+   /*
+    * Create filename.xmlfd...
+    */
+
+    snprintf(buffer, sizeof(buffer), "%sfd", argv[1]);
+
+    if ((fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0666)) < 0)
+    {
+      perror(buffer);
+      mxmlDelete(tree);
+      return (1);
+    }
+
+   /*
+    * Write the file...
+    */
+
+    mxmlSaveFd(tree, fd, whitespace_cb);
+
+    close(fd);
+
+   /*
+    * Delete the tree...
+    */
+
+    mxmlDelete(tree);
+  }
+
+ /*
+  * Test SAX methods...
+  */
+
+  memset(event_counts, 0, sizeof(event_counts));
+
+  if (argv[1][0] == '<')
+    mxmlSAXLoadString(NULL, argv[1], type_cb, sax_cb, NULL);
+  else if ((fp = fopen(argv[1], "rb")) == NULL)
+  {
+    perror(argv[1]);
+    return (1);
+  }
+  else
+  {
+   /*
+    * Read the file...
+    */
+
+    mxmlSAXLoadFile(NULL, fp, type_cb, sax_cb, NULL);
+
+    fclose(fp);
+  }
+
+  if (!strcmp(argv[1], "test.xml"))
+  {
+    if (event_counts[MXML_SAX_CDATA] != 1)
+    {
+      fprintf(stderr, "MXML_SAX_CDATA seen %d times, expected 1 times!\n",
+              event_counts[MXML_SAX_CDATA]);
+      return (1);
+    }
+
+    if (event_counts[MXML_SAX_COMMENT] != 1)
+    {
+      fprintf(stderr, "MXML_SAX_COMMENT seen %d times, expected 1 times!\n",
+              event_counts[MXML_SAX_COMMENT]);
+      return (1);
+    }
+
+    if (event_counts[MXML_SAX_DATA] != 60)
+    {
+      fprintf(stderr, "MXML_SAX_DATA seen %d times, expected 60 times!\n",
+              event_counts[MXML_SAX_DATA]);
+      return (1);
+    }
+
+    if (event_counts[MXML_SAX_DIRECTIVE] != 1)
+    {
+      fprintf(stderr, "MXML_SAX_DIRECTIVE seen %d times, expected 1 times!\n",
+              event_counts[MXML_SAX_DIRECTIVE]);
+      return (1);
+    }
+
+    if (event_counts[MXML_SAX_ELEMENT_CLOSE] != 20)
+    {
+      fprintf(stderr, "MXML_SAX_ELEMENT_CLOSE seen %d times, expected 20 times!\n",
+              event_counts[MXML_SAX_ELEMENT_CLOSE]);
+      return (1);
+    }
+
+    if (event_counts[MXML_SAX_ELEMENT_OPEN] != 20)
+    {
+      fprintf(stderr, "MXML_SAX_ELEMENT_OPEN seen %d times, expected 20 times!\n",
+              event_counts[MXML_SAX_ELEMENT_OPEN]);
+      return (1);
+    }
+  }
+
+ /*
+  * Return...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'sax_cb()' - Process nodes via SAX.
+ */
+
+void
+sax_cb(mxml_node_t      *node,		/* I - Current node */
+       mxml_sax_event_t event,		/* I - SAX event */
+       void             *data)		/* I - SAX user data */
+{
+ /*
+  * This SAX callback just counts the different events.
+  */
+
+  event_counts[event] ++;
+}
+
+
+/*
+ * 'type_cb()' - XML data type callback for mxmlLoadFile()...
+ */
+
+mxml_type_t				/* O - Data type */
+type_cb(mxml_node_t *node)		/* I - Element node */
+{
+  const char	*type;			/* Type string */
+
+
+ /*
+  * You can lookup attributes and/or use the element name, hierarchy, etc...
+  */
+
+  if ((type = mxmlElementGetAttr(node, "type")) == NULL)
+    type = node->value.element.name;
+
+  if (!strcmp(type, "integer"))
+    return (MXML_INTEGER);
+  else if (!strcmp(type, "opaque") || !strcmp(type, "pre"))
+    return (MXML_OPAQUE);
+  else if (!strcmp(type, "real"))
+    return (MXML_REAL);
+  else
+    return (MXML_TEXT);
+}
+
+
+/*
+ * 'whitespace_cb()' - Let the mxmlSaveFile() function know when to insert
+ *                     newlines and tabs...
+ */
+
+const char *				/* O - Whitespace string or NULL */
+whitespace_cb(mxml_node_t *node,	/* I - Element node */
+              int         where)	/* I - Open or close tag? */
+{
+  mxml_node_t	*parent;		/* Parent node */
+  int		level;			/* Indentation level */
+  const char	*name;			/* Name of element */
+  static const char *tabs = "\t\t\t\t\t\t\t\t";
+					/* Tabs for indentation */
+
+
+ /*
+  * We can conditionally break to a new line before or after any element.
+  * These are just common HTML elements...
+  */
+
+  name = node->value.element.name;
+
+  if (!strcmp(name, "html") || !strcmp(name, "head") || !strcmp(name, "body") ||
+      !strcmp(name, "pre") || !strcmp(name, "p") ||
+      !strcmp(name, "h1") || !strcmp(name, "h2") || !strcmp(name, "h3") ||
+      !strcmp(name, "h4") || !strcmp(name, "h5") || !strcmp(name, "h6"))
+  {
+   /*
+    * Newlines before open and after close...
+    */
+
+    if (where == MXML_WS_BEFORE_OPEN || where == MXML_WS_AFTER_CLOSE)
+      return ("\n");
+  }
+  else if (!strcmp(name, "dl") || !strcmp(name, "ol") || !strcmp(name, "ul"))
+  {
+   /*
+    * Put a newline before and after list elements...
+    */
+
+    return ("\n");
+  }
+  else if (!strcmp(name, "dd") || !strcmp(name, "dt") || !strcmp(name, "li"))
+  {
+   /*
+    * Put a tab before <li>'s, <dd>'s, and <dt>'s, and a newline after them...
+    */
+
+    if (where == MXML_WS_BEFORE_OPEN)
+      return ("\t");
+    else if (where == MXML_WS_AFTER_CLOSE)
+      return ("\n");
+  }
+  else if (!strncmp(name, "?xml", 4))
+  {
+    if (where == MXML_WS_AFTER_OPEN)
+      return ("\n");
+    else
+      return (NULL);
+  }
+  else if (where == MXML_WS_BEFORE_OPEN ||
+           ((!strcmp(name, "choice") || !strcmp(name, "option")) &&
+	    where == MXML_WS_BEFORE_CLOSE))
+  {
+    for (level = -1, parent = node->parent;
+         parent;
+	 level ++, parent = parent->parent);
+
+    if (level > 8)
+      level = 8;
+    else if (level < 0)
+      level = 0;
+
+    return (tabs + 8 - level);
+  }
+  else if (where == MXML_WS_AFTER_CLOSE ||
+           ((!strcmp(name, "group") || !strcmp(name, "option") ||
+	     !strcmp(name, "choice")) &&
+            where == MXML_WS_AFTER_OPEN))
+    return ("\n");
+  else if (where == MXML_WS_AFTER_OPEN && !node->child)
+    return ("\n");
+
+ /*
+  * Return NULL for no added whitespace...
+  */
+
+  return (NULL);
+}
+
+
+/*
+ * End of "$Id: testmxml.c 459 2014-10-19 17:21:48Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/vcnet/config.h b/src/mxml/mxml-2.9/vcnet/config.h
new file mode 100644
index 0000000..1723d41
--- /dev/null
+++ b/src/mxml/mxml-2.9/vcnet/config.h
@@ -0,0 +1,123 @@
+/*
+ * "$Id: config.h 451 2014-01-04 21:50:06Z msweet $"
+ *
+ * Configuration file for Mini-XML, a small XML-like file parsing library.
+ *
+ * Copyright 2003-2014 by Michael R Sweet.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Michael R Sweet and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "COPYING"
+ * which should have been included with this file.  If this file is
+ * missing or damaged, see the license at:
+ *
+ *     http://www.msweet.org/projects.php/Mini-XML
+ */
+
+/*
+ * Beginning with VC2005, Microsoft breaks ISO C and POSIX conformance
+ * by deprecating a number of functions in the name of security, even
+ * when many of the affected functions are otherwise completely secure.
+ * The _CRT_SECURE_NO_DEPRECATE definition ensures that we won't get
+ * warnings from their use...
+ *
+ * Then Microsoft decided that they should ignore this in VC2008 and use
+ * yet another define (_CRT_SECURE_NO_WARNINGS) instead.  Bastards.
+ */
+
+#define _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_WARNINGS
+
+
+/*
+ * Include necessary headers...
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <io.h>
+
+
+/*
+ * Microsoft also renames the POSIX functions to _name, and introduces
+ * a broken compatibility layer using the original names.  As a result,
+ * random crashes can occur when, for example, strdup() allocates memory
+ * from a different heap than used by malloc() and free().
+ *
+ * To avoid moronic problems like this, we #define the POSIX function
+ * names to the corresponding non-standard Microsoft names.
+ */
+
+#define close		_close
+#define open		_open
+#define read	        _read
+#define snprintf 	_snprintf
+#define strdup		_strdup
+#define vsnprintf 	_vsnprintf
+#define write		_write
+
+
+/*
+ * Version number...
+ */
+
+#define MXML_VERSION "Mini-XML v2.8"
+
+
+/*
+ * Inline function support...
+ */
+
+#define inline _inline
+
+
+/*
+ * Long long support...
+ */
+
+#define HAVE_LONG_LONG 1
+
+
+/*
+ * Do we have the snprintf() and vsnprintf() functions?
+ */
+
+#define HAVE_SNPRINTF 1
+#define HAVE_VSNPRINTF 1
+
+
+/*
+ * Do we have the strXXX() functions?
+ */
+
+#define HAVE_STRDUP 1
+
+
+/*
+ * Define prototypes for string functions as needed...
+ */
+
+#  ifndef HAVE_STRDUP
+extern char	*_mxml_strdup(const char *);
+#    define strdup _mxml_strdup
+#  endif /* !HAVE_STRDUP */
+
+extern char	*_mxml_strdupf(const char *, ...);
+extern char	*_mxml_vstrdupf(const char *, va_list);
+
+#  ifndef HAVE_SNPRINTF
+extern int	_mxml_snprintf(char *, size_t, const char *, ...);
+#    define snprintf _mxml_snprintf
+#  endif /* !HAVE_SNPRINTF */
+
+#  ifndef HAVE_VSNPRINTF
+extern int	_mxml_vsnprintf(char *, size_t, const char *, va_list);
+#    define vsnprintf _mxml_vsnprintf
+#  endif /* !HAVE_VSNPRINTF */
+
+/*
+ * End of "$Id: config.h 451 2014-01-04 21:50:06Z msweet $".
+ */
diff --git a/src/mxml/mxml-2.9/vcnet/mxml.sln b/src/mxml/mxml-2.9/vcnet/mxml.sln
new file mode 100644
index 0000000..b5c3b01
--- /dev/null
+++ b/src/mxml/mxml-2.9/vcnet/mxml.sln
@@ -0,0 +1,51 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mxmldoc", "mxmldoc.vcproj", "{D909892E-520A-4322-9A47-DAEBDA9CC7A7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{E5AA9476-9751-4654-8109-B1A2112D5E73} = {E5AA9476-9751-4654-8109-B1A2112D5E73}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mxml1", "mxml1.vcproj", "{E5AA9476-9751-4654-8109-B1A2112D5E73}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmxml", "testmxml.vcproj", "{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}"
+	ProjectSection(ProjectDependencies) = postProject
+		{E5AA9476-9751-4654-8109-B1A2112D5E73} = {E5AA9476-9751-4654-8109-B1A2112D5E73}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Debug|Win32.Build.0 = Debug|Win32
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Debug|x64.ActiveCfg = Debug|x64
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Debug|x64.Build.0 = Debug|x64
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Release|Win32.ActiveCfg = Release|Win32
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Release|Win32.Build.0 = Release|Win32
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Release|x64.ActiveCfg = Release|x64
+		{D909892E-520A-4322-9A47-DAEBDA9CC7A7}.Release|x64.Build.0 = Release|x64
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Debug|Win32.Build.0 = Debug|Win32
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Debug|x64.ActiveCfg = Debug|x64
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Debug|x64.Build.0 = Debug|x64
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Release|Win32.ActiveCfg = Release|Win32
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Release|Win32.Build.0 = Release|Win32
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Release|x64.ActiveCfg = Release|x64
+		{E5AA9476-9751-4654-8109-B1A2112D5E73}.Release|x64.Build.0 = Release|x64
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Debug|Win32.ActiveCfg = Debug|Win32
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Debug|Win32.Build.0 = Debug|Win32
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Debug|x64.ActiveCfg = Debug|x64
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Debug|x64.Build.0 = Debug|x64
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Release|Win32.ActiveCfg = Release|Win32
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Release|Win32.Build.0 = Release|Win32
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Release|x64.ActiveCfg = Release|x64
+		{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/src/mxml/mxml-2.9/vcnet/mxml1.def b/src/mxml/mxml-2.9/vcnet/mxml1.def
new file mode 100644
index 0000000..90725f8
--- /dev/null
+++ b/src/mxml/mxml-2.9/vcnet/mxml1.def
@@ -0,0 +1,77 @@
+LIBRARY "MXML1"
+EXPORTS
+ _mxml_strdupf
+ _mxml_vstrdupf
+ mxml_ignore_cb
+ mxml_integer_cb
+ mxml_opaque_cb
+ mxml_real_cb
+ mxmlAdd
+ mxmlDelete
+ mxmlElementDeleteAttr
+ mxmlElementGetAttr
+ mxmlElementSetAttr
+ mxmlElementSetAttrf
+ mxmlEntityAddCallback
+ mxmlEntityGetName
+ mxmlEntityGetValue
+ mxmlEntityRemoveCallback
+ mxmlFindElement
+ mxmlFindPath
+ mxmlGetCDATA
+ mxmlGetCustom
+ mxmlGetElement
+ mxmlGetFirstChild
+ mxmlGetInteger
+ mxmlGetLastChild
+ mxmlGetNextSibling
+ mxmlGetOpaque
+ mxmlGetParent
+ mxmlGetPrevSibling
+ mxmlGetReal
+ mxmlGetRefCount
+ mxmlGetText
+ mxmlGetType
+ mxmlGetUserData
+ mxmlIndexDelete
+ mxmlIndexEnum
+ mxmlIndexFind
+ mxmlIndexGetCount
+ mxmlIndexNew
+ mxmlIndexReset
+ mxmlLoadFd
+ mxmlLoadFile
+ mxmlLoadString
+ mxmlNewCDATA
+ mxmlNewCustom
+ mxmlNewElement
+ mxmlNewInteger
+ mxmlNewOpaque
+ mxmlNewReal
+ mxmlNewText
+ mxmlNewTextf
+ mxmlNewXML
+ mxmlRelease
+ mxmlRemove
+ mxmlRetain
+ mxmlSaveAllocString
+ mxmlSaveFd
+ mxmlSaveFile
+ mxmlSaveString
+ mxmlSAXLoadFd
+ mxmlSAXLoadFile
+ mxmlSAXLoadString
+ mxmlSetCDATA
+ mxmlSetCustom
+ mxmlSetCustomHandlers
+ mxmlSetElement
+ mxmlSetErrorCallback
+ mxmlSetInteger
+ mxmlSetOpaque
+ mxmlSetReal
+ mxmlSetText
+ mxmlSetTextf
+ mxmlSetUserData
+ mxmlSetWrapMargin
+ mxmlWalkNext
+ mxmlWalkPrev
diff --git a/src/mxml/mxml-2.9/vcnet/mxml1.vcproj b/src/mxml/mxml-2.9/vcnet/mxml1.vcproj
new file mode 100644
index 0000000..8144c8f
--- /dev/null
+++ b/src/mxml/mxml-2.9/vcnet/mxml1.vcproj
@@ -0,0 +1,424 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="mxml1"
+	ProjectGUID="{E5AA9476-9751-4654-8109-B1A2112D5E73}"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+		<Platform
+			Name="x64"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\vcnet;.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MXML1_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="1"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="mxml1.dll"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				ModuleDefinitionFile=".\mxml1.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/mxml1.pdb"
+				SubSystem="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="mxml1.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\vcnet;.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MXML1_EXPORTS"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="1"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="mxml1.dll"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				ModuleDefinitionFile=".\mxml1.def"
+				GenerateDebugInformation="false"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="mxml1.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|x64"
+			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\vcnet;.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MXML1_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="1"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="mxml1.dll"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				ModuleDefinitionFile=".\mxml1.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/mxml1.pdb"
+				SubSystem="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="mxml1.lib"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|x64"
+			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\vcnet;.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MXML1_EXPORTS"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="1"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="mxml1.dll"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				ModuleDefinitionFile=".\mxml1.def"
+				GenerateDebugInformation="false"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="mxml1.lib"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\mxml-attr.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-entity.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-get.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-node.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-private.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-search.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-set.c"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-string.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\vcnet\config.h"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml-private.h"
+				>
+			</File>
+			<File
+				RelativePath="..\mxml.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+			<File
+				RelativePath=".\mxml1.def"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/src/mxml/mxml-2.9/vcnet/mxmldoc.vcproj b/src/mxml/mxml-2.9/vcnet/mxmldoc.vcproj
new file mode 100644
index 0000000..5ae9cb1
--- /dev/null
+++ b/src/mxml/mxml-2.9/vcnet/mxmldoc.vcproj
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="mxmldoc"
+	ProjectGUID="{D909892E-520A-4322-9A47-DAEBDA9CC7A7}"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+		<Platform
+			Name="x64"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../mxmldoc.exe"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/mxmldoc.pdb"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../mxmldoc.exe"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|x64"
+			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../mxmldoc.exe"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/mxmldoc.pdb"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|x64"
+			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../mxmldoc.exe"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\mxmldoc.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/src/mxml/mxml-2.9/vcnet/testmxml.vcproj b/src/mxml/mxml-2.9/vcnet/testmxml.vcproj
new file mode 100644
index 0000000..3cf1e25
--- /dev/null
+++ b/src/mxml/mxml-2.9/vcnet/testmxml.vcproj
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="testmxml"
+	ProjectGUID="{75CAC6C4-A6BC-4935-A3C9-8F0AE0744227}"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+		<Platform
+			Name="x64"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../testmxml.exe"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/testmxml.pdb"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../testmxml.exe"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|x64"
+			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../testmxml.exe"
+				LinkIncremental="2"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/testmxml.pdb"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|x64"
+			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../vcnet,.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../testmxml.exe"
+				LinkIncremental="1"
+				IgnoreDefaultLibraryNames="oldnames.lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\testmxml.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/src/nssi/adios_nssi_args.x b/src/nssi/adios_nssi_args.x
deleted file mode 100644
index 2aa5116..0000000
--- a/src/nssi/adios_nssi_args.x
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -------------------------------------------------------------------------- */
-/**
- *   @file adios_nessie_args.x
- *
- *   @brief XDR argument structures for the adios proxy.
- *
- *   @author Todd Kordenbrock (thkorde\@sandia.gov).
- *
- */
-
-/* Extra stuff to put at the beginning of the header file */
-#ifdef RPC_HDR
-/*%#include <sys/syslimits.h>  /* ADIOS_PATH_MAX, ... */
-#endif
-
-/* Extra stuff to put at the beginning of the C file */
-#ifdef RPC_XDR
-%#include <adios.h>
-%#include "adios_nssi_args.h"
-#endif
-
-/**
- * Operation codes for the adios proxy.
- */
-enum adios_opcode {
-    ADIOS_NULL_OP = 10000,
-    ADIOS_OPEN_OP,
-    ADIOS_GROUP_SIZE_OP,
-    ADIOS_READ_OP,
-    ADIOS_WRITE_OP,
-    ADIOS_END_ITER_OP,
-    ADIOS_START_CALC_OP,
-    ADIOS_STOP_CALC_OP,
-    ADIOS_CLOSE_OP,
-    ADIOS_FINALIZE_OP,
-
-    ADIOS_READ_FOPEN_OP,
-    ADIOS_READ_FCLOSE_OP,
-    ADIOS_READ_GET_VARTYPE_SIZE_OP,
-    ADIOS_READ_READ_VAR_OP
-};
-
-
-enum extra_errcodes {
-    ADIOS_ENOTSUPP = -99
-};
-
-enum write_type {
-    WRITE_DIRECT,
-    WRITE_AGGREGATE_INDEPENDENT,
-    WRITE_AGGREGATE_COLLECTIVE,
-    WRITE_CACHING_INDEPENDENT,
-    WRITE_CACHING_COLLECTIVE
-};
-
-enum adios_open_mode {
-    ADIOS_MODE_READ,
-    ADIOS_MODE_WRITE,
-    ADIOS_MODE_APPEND,
-    ADIOS_MODE_UPDATE
-
-};
-
-const ADIOS_PATH_MAX = 256;
-const ADIOS_DIM_MAX = 16;
-
-/* ********* ARGUMENTS FOR STUB FUNCTIONS ************* */
-
-/**
- * Argument structure for adios_open
- */
-struct adios_open_args {
-    string          client_id<ADIOS_PATH_MAX>;
-    string          gname<ADIOS_PATH_MAX>;
-    string          fname<ADIOS_PATH_MAX>;
-    adios_open_mode mode;
-    int8_t          use_single_server;
-};
-
-/**
- * Structure for adios_open result
- */
-struct adios_open_res {
-    int64_t fd;
-};
-
-/**
- * Argument structure for adios_group_size
- */
-struct adios_group_size_args {
-    int64_t  fd;
-    uint64_t data_size;
-};
-
-struct adios_var {
-    uint8_t  is_anonymous;
-    uint64_t vdata;
-    uint64_t vdatasize;
-    string   vpath<ADIOS_PATH_MAX>;
-    string   vname<ADIOS_PATH_MAX>;
-};
-
-/**
- * Marshaled arguments for adios_read
- */
-struct adios_read_args {
-    int64_t  fd;
-    string   vpath<ADIOS_PATH_MAX>;
-    string   vname<ADIOS_PATH_MAX>;
-    uint64_t max_read;
-    uint16_t is_scalar;
-    struct adios_var offsets<ADIOS_DIM_MAX>;
-    struct adios_var ldims<ADIOS_DIM_MAX>;
-    struct adios_var gdims<ADIOS_DIM_MAX>;
-};
-
-/**
- * Marshaled arguments for adios_read result
- */
-struct adios_read_res {
-    uint64_t bytes_read;
-};
-
-/**
- * Marshalled argument structure for adios_write
- */
-struct adios_write_args {
-    int64_t  fd;
-    string   vpath<ADIOS_PATH_MAX>;
-    string   vname<ADIOS_PATH_MAX>;
-    uint64_t vsize;
-    uint64_t atype;
-    uint16_t is_scalar;
-    int64_t  writer_rank;
-    struct adios_var offsets<ADIOS_DIM_MAX>;
-    struct adios_var ldims<ADIOS_DIM_MAX>;
-    struct adios_var gdims<ADIOS_DIM_MAX>;
-};
-
-/**
- * Marshaled arguments for adios_write result
- */
-struct adios_write_res {
-    uint64_t bytes_written;
-};
-
-/**
- * Marshalled arguments for adios_end_iteration
- */
-struct adios_end_iter_args {
-    int64_t fd;
-};
-
-/**
- * Marshalled arguments for adios_start_calculation
- */
-struct adios_start_calc_args {
-    int64_t fd;
-};
-
-/**
- * Marshalled arguments for adios_stop_calculation
- */
-struct adios_stop_calc_args {
-    int64_t fd;
-};
-
-/**
- * Marshalled arguments for adios_close
- */
-struct adios_close_args {
-    string  fname<ADIOS_PATH_MAX>;
-    int64_t fd;
-};
-
-/**
- * Marshalled arguments for adios_finalize
- */
-struct adios_finalize_args {
-    string client_id<ADIOS_PATH_MAX>;
-};
-
-
-/**
- * Argument structure for adios_read_fopen
- */
-struct adios_read_fopen_args {
-    string client_id<ADIOS_PATH_MAX>;
-    string gname<ADIOS_PATH_MAX>;
-    string fname<ADIOS_PATH_MAX>;
-    uint64_t requested_timestep;
-};
-
-/**
- * Structure for adios_read_fopen result
- */
-struct adios_read_fopen_res {
-    int64_t fd;
-};
-
-/**
- * Marshaled arguments for adios_read
- */
-struct adios_read_read_var_args {
-    int64_t  fd;
-    string   client_id<ADIOS_PATH_MAX>;
-    uint64_t open_timestep;
-    string   vpath<ADIOS_PATH_MAX>;
-    string   vname<ADIOS_PATH_MAX>;
-    uint64_t max_read;
-    uint16_t is_scalar;
-
-    uint64_t offsets[3];
-    uint64_t counts[3];
-};
-
-/**
- * Marshaled arguments for adios_read result
- */
-struct adios_read_read_var_res {
-    uint64_t bytes_read;
-};
-
-/**
- * Marshaled arguments for adios_read
- */
-struct adios_read_get_vartype_size_args {
-    int64_t  fd;
-    string   client_id<ADIOS_PATH_MAX>;
-    uint64_t open_timestep;
-    string   vpath<ADIOS_PATH_MAX>;
-    string   vname<ADIOS_PATH_MAX>;
-};
-
-/**
- * Marshaled arguments for adios_read result
- */
-struct adios_read_get_vartype_size_res {
-    uint64_t vartype_size;
-};
-
-/**
- * Marshalled arguments for adios_fclose
- */
-struct adios_read_fclose_args {
-    int64_t  fd;
-    uint64_t open_timestep;
-    string   client_id<ADIOS_PATH_MAX>;
-    string   fname<ADIOS_PATH_MAX>;
-};
diff --git a/src/nssi/adios_nssi_config.c b/src/nssi/adios_nssi_config.c
deleted file mode 100644
index a53c6b4..0000000
--- a/src/nssi/adios_nssi_config.c
+++ /dev/null
@@ -1,373 +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.
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <sys/stat.h> /* struct stat */
-
-// xml parser
-#include <mxml.h>
-
-#include "public/adios_mpi.h"
-#include "nssi_client.h"
-#include "adios_nssi_args.h"
-#include "adios_nssi_config.h"
-
-// this macro makes getting the attributes easier
-// fix the bgp bugs
-#define GET_ATTR(n,attr,var,en)                              \
-if (!strcasecmp (n, attr->name)) {                           \
-    if (!var)                                                \
-    {                                                        \
-        var = attr->value;                                   \
-        continue;                                            \
-    }                                                        \
-    else                                                     \
-    {                                                        \
-        fprintf (stderr, "xml: duplicate attribute %s on %s (ignored)",n,en); \
-        continue;                                            \
-    }                                                        \
-}
-
-
-static int parseGroup(mxml_node_t * node, struct adios_nssi_config *config)
-{
-    mxml_node_t * n;
-    int i;
-    int service_count=0;
-    int service_num=0;
-
-//    printf("enter parseGroup\n");
-
-    for (n = mxmlWalkNext (node, node, MXML_DESCEND)
-        ;n
-        ;n = mxmlWalkNext (n, node, MXML_NO_DESCEND)
-        )
-    {
-        if (n->type != MXML_ELEMENT)
-        {
-            continue;
-        }
-
-        if (!strcasecmp (n->value.element.name, "staging-service"))
-        {
-            service_count++;
-        }
-    }
-
-    config->num_servers=service_count;
-    config->nssi_server_ids=(nssi_remote_pid *)calloc(service_count, sizeof(nssi_remote_pid));
-
-
-    service_num=0;
-    for (n = mxmlWalkNext (node, node, MXML_DESCEND)
-        ;n
-        ;n = mxmlWalkNext (n, node, MXML_NO_DESCEND)
-        )
-    {
-        if (n->type != MXML_ELEMENT)
-        {
-            continue;
-        }
-
-        if (!strcasecmp (n->value.element.name, "staging-service"))
-        {
-            mxml_node_t * n1;   // used for global_bounds
-
-            const char *nid = 0;
-            const char *pid= 0;
-            const char *hostname = 0;
-            const char *port = 0;
-
-            for (i = 0; i < n->value.element.num_attrs; i++)
-            {
-                mxml_attr_t * attr = &n->value.element.attrs [i];
-
-                GET_ATTR("nid",attr,nid,"var")
-                GET_ATTR("pid",attr,pid,"var")
-
-                GET_ATTR("hostname",attr,hostname,"var")
-                GET_ATTR("port",attr,port,"var")
-
-                fprintf (stderr, "config.xml: unknown attribute '%s' on %s "
-                                 "(ignored)\n"
-                        ,attr->name
-                        ,"staging-service"
-                        );
-            }
-
-            config->nssi_server_ids[service_num].nid = (nssi_pid)atoll(nid);
-            config->nssi_server_ids[service_num].pid = (nssi_pid)atoll(pid);
-            config->nssi_server_ids[service_num].hostname[0]='\0';
-            strncpy(config->nssi_server_ids[service_num].hostname, hostname, NSSI_HOSTNAME_LEN);
-    #ifdef HAVE_INFINIBAND
-            config->nssi_server_ids[service_num].addr = inet_addr(config->nssi_server_ids[service_num]->hostname);
-    #endif
-            config->nssi_server_ids[service_num].port = (nssi_pid)atoi(port);
-
-//            log_debug(netcdf_config_debug_level, "service (nid=%lld, pid=%llu, hostname=%s, addr=%d, port=%d)",
-//                    (long long)id->nid, (long long)id->pid, id->hostname, id->addr, id->port);
-
-//            printf("staging-service: service_num(%d) nid(%lld) pid(%llu) hostname(%s) port(%d)\n",
-//                    service_num,
-//                    config->nssi_server_ids[service_num].nid,
-//                    config->nssi_server_ids[service_num].pid,
-//                    config->nssi_server_ids[service_num].hostname,
-//                    config->nssi_server_ids[service_num].port);
-
-            service_num++;
-
-        } else {
-            if (!strncmp (n->value.element.name, "!--", 3)) // a comment
-            {
-                continue;
-            }
-            else
-            {
-                fprintf (stderr, "config.xml: invalid xml element: '%s'\n"
-                        ,n->value.element.name
-                        );
-
-                return 0;
-            }
-        }
-    }
-
-    return 1;
-}
-
-
-int parse_nssi_config(const char *config_file, struct adios_nssi_config *config)
-{
-    FILE * fp = 0;
-    mxml_node_t * doc = NULL;
-    mxml_node_t * node = NULL;
-    mxml_node_t * root = NULL;
-    int saw_staging_group = 0;
-
-    int i;
-
-    char * buffer = NULL;
-//#if HAVE_MPI
-    int buffer_size = 0;
-    int rank;
-    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
-    if (rank == 0)
-    {
-//#endif
-        fp = fopen (config_file, "r");
-        if (!fp)
-        {
-            fprintf (stderr, "missing config file %s\n", config_file);
-
-            return 0;
-        }
-        struct stat s;
-        if (stat (config_file, &s) == 0)
-        {
-            buffer = malloc (s.st_size + 1);
-            buffer [s.st_size] = 0;
-        }
-        if (buffer)
-        {
-            size_t bytes_read = fread (buffer, 1, s.st_size, fp);
-            if (bytes_read != s.st_size)
-            {
-                fprintf (stderr, "error reading config file: %s. Expected %d Got %d\n"
-                        ,config_file, s.st_size, bytes_read );
-
-                return 0;
-            }
-        }
-        else
-        {
-            fprintf (stderr, "error allocating %d for reading config.\n"
-                    ,s.st_size + 1
-                    );
-
-            return 0;
-        }
-        fclose (fp);
-//#if HAVE_MPI
-        buffer_size = s.st_size;
-        MPI_Bcast (&buffer_size, 1, MPI_INT, 0, MPI_COMM_WORLD);
-        MPI_Bcast (buffer, buffer_size, MPI_BYTE, 0, MPI_COMM_WORLD);
-    }
-    else
-    {
-        MPI_Bcast (&buffer_size, 1, MPI_INT, 0, MPI_COMM_WORLD);
-        buffer = malloc (buffer_size + 1);
-        if (!buffer)
-        {
-            fprintf (stderr, "cannot allocate %d bytes to receive config file\n"
-                    ,buffer_size + 1
-                    );
-
-            return 0;
-        }
-        MPI_Bcast (buffer, buffer_size, MPI_BYTE, 0, MPI_COMM_WORLD);
-        buffer [buffer_size] = 0;
-    }
-//#endif
-
-    doc = mxmlLoadString (NULL, buffer, MXML_TEXT_CALLBACK);
-    free (buffer);
-    buffer = NULL;
-
-    if (!doc)
-    {
-        fprintf (stderr, "config.xml: unknown error parsing XML "
-                         "(probably structural)\n"
-                         "Did you remember to start the file with\n"
-                         "<?xml version=\"1.0\"?>\n");
-
-        return 0;
-    }
-
-    root = doc;
-
-    while (root && root->type != MXML_ELEMENT)
-    {
-        root = mxmlWalkNext (root, doc, MXML_DESCEND);
-    }
-
-    while (!strncmp (root->value.element.name, "!--", 3))
-    {
-        root = mxmlWalkNext (root, doc, MXML_NO_DESCEND);
-        root = mxmlWalkNext (root, doc, MXML_NO_DESCEND);
-    }
-
-    if (strcasecmp (root->value.element.name, "nssi-config"))
-    {
-        if (strncmp (root->value.element.name, "?xml", 4))
-        {
-            fprintf (stderr, "config.xml: invalid root xml element: %s\n"
-                    ,root->value.element.name
-                    );
-
-            mxmlRelease (doc);
-
-            return 0;
-        }
-        else
-        {
-            while (!strncmp (root->value.element.name, "!--", 3))
-            {
-                root = mxmlWalkNext (root, doc, MXML_NO_DESCEND);
-            }
-
-            root = mxmlWalkNext (root, doc, MXML_DESCEND);  // skip ver num
-            root = mxmlWalkNext (root, doc, MXML_NO_DESCEND);  // get next
-            while (!strncmp (root->value.element.name, "!--", 3))
-            {
-                root = mxmlWalkNext (root, doc, MXML_NO_DESCEND);
-                root = mxmlWalkNext (root, doc, MXML_NO_DESCEND);
-            }
-        }
-    }
-    else
-    {
-        printf("it is nssi-config\n");
-    }
-
-
-    for (node = mxmlWalkNext (root, doc, MXML_DESCEND_FIRST)
-        ;node
-        ;node = mxmlWalkNext (node, root, MXML_NO_DESCEND)
-        )
-    {
-        if (node->type != MXML_ELEMENT)
-        {
-            continue;
-        }
-
-        if (!strcasecmp (node->value.element.name, "staging-group"))
-        {
-            const char *write_type = 0;
-
-            for (i = 0; i < node->value.element.num_attrs; i++)
-            {
-                mxml_attr_t *attr = &node->value.element.attrs[i];
-
-                GET_ATTR("write-type",attr,write_type,"var")
-
-                fprintf (stderr, "config.xml: unknown attribute '%s' on %s "
-                                 "(ignored)\n"
-                        ,attr->name
-                        ,"staging-service"
-                        );
-            }
-
-            if (!strcmp(write_type, "WRITE_DIRECT")) {
-                config->write_type = WRITE_DIRECT;
-//                log_debug(LOG_ALL, "using %s", write_type);
-            } else if (!strcmp(write_type, "WRITE_AGGREGATE_INDEPENDENT")) {
-                config->write_type = WRITE_AGGREGATE_INDEPENDENT;
-//                log_debug(LOG_ALL, "using %s", write_type);
-            } else if (!strcmp(write_type, "WRITE_AGGREGATE_COLLECTIVE")) {
-                config->write_type = WRITE_AGGREGATE_COLLECTIVE;
-//                log_debug(LOG_ALL, "using %s", write_type);
-            } else if (!strcmp(write_type, "WRITE_CACHING_INDEPENDENT")) {
-                config->write_type = WRITE_CACHING_INDEPENDENT;
-//                log_debug(LOG_ALL, "using %s", write_type);
-            } else if (!strcmp(write_type, "WRITE_CACHING_COLLECTIVE")) {
-                config->write_type = WRITE_CACHING_COLLECTIVE;
-//                log_debug(LOG_ALL, "using %s", write_type);
-            }
-
-            if (!parseGroup(node, config))
-                break;
-            saw_staging_group = 1;
-        }
-        else
-        {
-            if (!strncmp (node->value.element.name, "!--", 3))
-            {
-                continue;
-            }
-            else
-            {
-                fprintf (stderr, "config.xml: invalid element: %s\n"
-                        ,node->value.element.name
-                );
-
-                break;
-            }
-        }
-    }
-
-    mxmlRelease (doc);
-
-    if (!saw_staging_group)
-    {
-        fprintf (stderr, "config.xml: must define at least 1 staging-group in "
-                         "config.xml\n"
-                );
-
-        return 0;
-    }
-
-//    for (i=0;i<config->num_servers;i++) {
-//        printf("staging-service: service_num(%d) nid(%lld) pid(%llu) hostname(%s) port(%d)\n",
-//                i,
-//                config->nssi_server_ids[i].nid,
-//                config->nssi_server_ids[i].pid,
-//                config->nssi_server_ids[i].hostname,
-//                config->nssi_server_ids[i].port);
-//    }
-
-    return 1;
-}
-
-void free_nssi_config(struct adios_nssi_config *config)
-{
-    if (config->nssi_server_ids) {
-        free(config->nssi_server_ids);
-        config->nssi_server_ids=NULL;
-    }
-}
diff --git a/src/nssi/adios_nssi_config.h b/src/nssi/adios_nssi_config.h
deleted file mode 100644
index 7a09dd3..0000000
--- a/src/nssi/adios_nssi_config.h
+++ /dev/null
@@ -1,31 +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.
- */
-
-#ifndef ADIOS_NSSI_CONFIG_H
-#define ADIOS_NSSI_CONFIG_H
-
-/**
- * @brief A structure to represent the configuration of
- * NSSI core services.
- */
-struct adios_nssi_config {
-
-    /** @brief Number of available storage servers */
-    int num_servers;
-
-    /** @brief storage service IDs */
-    nssi_remote_pid *nssi_server_ids;
-
-    /** @brief The type of write operation the client wishes the server to perform */
-    enum write_type write_type;
-};
-
-
-int parse_nssi_config(const char *config_file, struct adios_nssi_config *config);
-void free_nssi_config(struct adios_nssi_config *config);
-
-#endif
diff --git a/src/nssi/adios_nssi_filter.c b/src/nssi/adios_nssi_filter.c
deleted file mode 100644
index 05601f2..0000000
--- a/src/nssi/adios_nssi_filter.c
+++ /dev/null
@@ -1,1419 +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.
- */
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "config.h"
-#include "adios.h"
-#include "adios_types.h"
-#include "adios_bp_v1.h"
-#include "adios_transport_hooks.h"
-#include "adios_internals.h"
-#ifdef HAVE_NSSI
-#include "nssi_client.h"
-#include "adios_nssi_args.h"
-#include "adios_nssi_config.h"
-#include "nssi_logger.h"
-#endif
-
-#include "io_timer.h"
-
-
-#define NUM_GP 24
-void adios_nssi_filter_get_write_buffer(
-        struct adios_file_struct *f,
-        struct adios_var_struct *v,
-        uint64_t *size,
-        void **buffer,
-        struct adios_method_struct *method)
-{
-}
-
-///////////////////////////
-// Datatypes
-///////////////////////////
-struct adios_nssi_filter_data_struct
-{
-    char *sm_method;
-    char *sm_parameters;
-
-    int      fd;
-    MPI_Comm group_comm;
-    int      rank;
-    int      size;
-
-    struct adios_method_struct *submethod;
-};
-
-///* Need a struct to encapsulate var offset info.
-// */
-//struct var_offset {
-//    char      opath[ADIOS_PATH_MAX];
-//    char      oname[ADIOS_PATH_MAX];
-//    void     *ovalue;
-//    uint64_t  osize;
-//};
-//
-///* list of variable offsets */
-//List var_offset_list;
-//
-///* Need a struct to encapsulate var dim info.
-// */
-//struct var_dim {
-//    char      dpath[ADIOS_PATH_MAX];
-//    char      dname[ADIOS_PATH_MAX];
-//    void     *dvalue;
-//    uint64_t  dsize;
-//};
-//
-///* list of variable offsets */
-//List var_dim_list;
-
-/* Need a struct to encapsulate anonymous dim info.
- */
-struct anonymous_dim {
-    char      adpath[ADIOS_PATH_MAX];
-    char      adpathname[ADIOS_PATH_MAX];
-    void     *advalue;
-    uint64_t  adsize;
-    struct adios_dimension_item_struct *dim;
-};
-
-///* list of anonymous dims */
-//List anonymous_dim_list;
-
-/* Need a struct to encapsulate open file info
- */
-struct open_file {
-    char                           fpath[ADIOS_PATH_MAX];
-    char                           fname[ADIOS_PATH_MAX];
-    struct adios_nssi_filter_data_struct *md;
-    struct adios_file_struct      *f;
-
-    List anonymous_dim_list;
-};
-
-/* list of variable offsets */
-static List open_file_list;
-
-///////////////////////////
-// Global Variables
-///////////////////////////
-static int adios_nssi_filter_initialized = 0;
-
-static int global_rank=-1;
-struct adios_nssi_config nssi_cfg;
-
-//static log_level adios_nssi_filter_debug_level;
-static int DEBUG=0;
-
-
-extern struct adios_transport_struct * adios_transports;
-//struct adios_method_struct *submethod=NULL;
-struct adios_method_struct *self=NULL;
-
-
-///////////////////////////
-// Function Definitions
-///////////////////////////
-
-struct adios_var_struct *vars_deep_copy(struct adios_var_struct *orig)
-{
-    struct adios_var_struct *new = NULL;
-    struct adios_var_struct *current = NULL;
-
-    if (orig) {
-        new = current = (struct adios_var_struct *)malloc(sizeof(struct adios_var_struct));
-        current->next = NULL;
-        while(orig) {
-            memcpy(current, orig, sizeof(struct adios_var_struct));
-
-            current->name = strdup (orig->name);
-            current->path = strdup (orig->path);
-            current->type = orig->type;
-            current->got_buffer = adios_flag_no;
-
-            current->write_offset = 0;
-
-            current->stats=0;
-            current->bitmap=0;
-
-            if (orig->dimensions) {
-
-                // NCSU Statistics - copy stat to new var struct
-                uint8_t count = adios_get_stat_set_count(orig->type);
-                uint8_t idx = 0;
-                uint64_t characteristic_size;
-                uint8_t c;
-                uint8_t j;
-
-//                printf("vars_deep_copy(): copying %d stat sets\n", count);
-
-                current->bitmap = orig->bitmap;
-                current->stats = malloc (count * sizeof(struct adios_stat_struct *));
-
-                // Set of characteristics will be repeated thrice for complex numbers
-                for (c = 0; c < count; c ++)
-                {
-                    current->stats[c] = calloc(ADIOS_STAT_LENGTH, sizeof (struct adios_stat_struct));
-
-                    j = idx = 0;
-                    while (orig->bitmap >> j)
-                    {
-//                        printf("name(%s) j(%d) ((orig->bitmap >> j) & 1)(%d) orig->stats[%d][%d].data(%p)\n", orig->name, j, ((orig->bitmap >> j) & 1), c, idx, orig->stats[c][idx].data);
-
-                        if ((orig->bitmap >> j) & 1)
-                        {
-                            if (orig->stats[c][idx].data != NULL) {
-                                if (j == adios_statistic_hist)
-                                {
-                                    current->stats[c][idx].data = (struct adios_hist_struct *) malloc (sizeof(struct adios_hist_struct));
-
-                                    struct adios_hist_struct * orig_hist = orig->stats[c][idx].data;
-                                    struct adios_hist_struct * current_hist = current->stats[c][idx].data;
-
-                                    current_hist->min = orig_hist->min;
-                                    current_hist->max = orig_hist->max;
-                                    current_hist->num_breaks = orig_hist->num_breaks;
-
-                                    current_hist->frequencies = malloc ((orig_hist->num_breaks + 1) * adios_get_type_size(adios_unsigned_integer, ""));
-                                    memcpy (current_hist->frequencies, orig_hist->frequencies, (orig_hist->num_breaks + 1) * adios_get_type_size(adios_unsigned_integer, ""));
-                                    current_hist->breaks = malloc ((orig_hist->num_breaks) * adios_get_type_size(adios_double, ""));
-                                    memcpy (current_hist->breaks, orig_hist->breaks, (orig_hist->num_breaks) * adios_get_type_size(adios_double, ""));
-                                }
-                                else
-                                {
-                                    characteristic_size = adios_get_stat_size(orig->stats[c][idx].data, orig->type, j);
-                                    current->stats[c][idx].data = malloc (characteristic_size);
-                                    memcpy (current->stats[c][idx].data, orig->stats[c][idx].data, characteristic_size);
-                                }
-
-                                idx++;
-                            }
-                        }
-                        j++;
-                    }
-                }
-                // NCSU - End of copy, for statistics
-            }
-
-            current->free_data = adios_flag_no;
-            current->data = 0;
-            current->data_size = 0;
-
-            current->next = NULL;
-            orig = orig->next;
-            if (orig) {
-                current->next = (struct adios_var_struct *)malloc(sizeof(struct adios_var_struct));
-                current = current->next;
-            }
-        }
-    }
-
-    return(new);
-}
-
-struct adios_attribute_struct *attrs_deep_copy(
-        struct adios_attribute_struct *orig,
-        struct adios_group_struct *new_group)
-{
-    struct adios_attribute_struct *new = NULL;
-    struct adios_attribute_struct *current = NULL;
-
-    if (orig) {
-        new = current = (struct adios_attribute_struct *)malloc(sizeof(struct adios_attribute_struct));
-        current->next = NULL;
-        while(orig) {
-            memcpy(current, orig, sizeof(struct adios_attribute_struct));
-
-
-            current->name = strdup (orig->name);
-            current->path = strdup (orig->path);
-            current->type = orig->type;
-
-            if (orig->var == 0) {
-                uint64_t size = adios_get_type_size(orig->type, orig->value);
-                current->value=malloc(size);
-                memcpy(current->value, orig->value, size);
-            } else {
-                current->value = 0;
-                current->type = adios_unknown;
-                current->var = adios_find_var_by_id(new_group->vars,
-                                                    orig->var->id);
-            }
-
-            current->next = NULL;
-            orig = orig->next;
-            if (orig) {
-                current->next = (struct adios_attribute_struct *)malloc(sizeof(struct adios_attribute_struct));
-                current = current->next;
-            }
-        }
-    }
-
-    return(new);
-}
-
-struct adios_group_struct *group_deep_copy(struct adios_group_struct *orig)
-{
-    struct adios_group_struct *new = NULL;
-
-    if (orig) {
-        new = (struct adios_group_struct *)malloc(sizeof(struct adios_group_struct));
-        memcpy(new, orig, sizeof(struct adios_group_struct));
-
-        new->vars = vars_deep_copy(orig->vars);
-        new->attributes = attrs_deep_copy(orig->attributes, new);
-    }
-
-    return(new);
-}
-
-
-
-struct adios_method_struct *init_submethod(
-        const char * method,
-        const char * parameters)
-{
-    int64_t group_id;
-    struct adios_group_struct * g;
-    struct adios_method_struct * new_method;
-    int requires_group_comm = 0;
-
-    new_method = (struct adios_method_struct *)
-                           malloc (sizeof (struct adios_method_struct));
-
-    new_method->m = ADIOS_METHOD_UNKNOWN;
-    new_method->base_path = strdup(self->base_path);
-    new_method->method = strdup (method);
-    new_method->parameters = strdup (parameters);
-    new_method->iterations = self->iterations;
-    new_method->priority = self->priority;
-    new_method->method_data = 0;
-    new_method->group = 0;
-
-    if (adios_parse_method (method, &new_method->m, &requires_group_comm))
-    {
-        if (   new_method->m != ADIOS_METHOD_UNKNOWN
-            && new_method->m != ADIOS_METHOD_NULL
-            && adios_transports [new_method->m].adios_init_fn
-           )
-        {
-            adios_transports[new_method->m].adios_init_fn
-                                       (parameters, new_method);
-        }
-    }
-    else
-    {
-        fprintf (stderr, "config.xml: invalid transport: %s\n", method);
-
-        free (new_method->method);
-        free (new_method->parameters);
-        free (new_method);
-
-        return NULL;
-    }
-
-    return new_method;
-}
-
-
-static struct anonymous_dim *anonymous_dim_create(const char *path, const char *pathname, void *value, uint64_t size, struct adios_dimension_item_struct *dim)
-{
-    struct anonymous_dim *ad=calloc(1,sizeof(struct anonymous_dim));
-
-    strcpy(ad->adpath, path);
-    strcpy(ad->adpathname, pathname);
-    ad->advalue = value;
-    ad->adsize  = size;
-    ad->dim     = dim;
-
-    return(ad);
-}
-static void anonymous_dim_free(void *ad)
-{
-    free(ad);
-}
-static int anonymous_dim_equal(const struct anonymous_dim *ad1, const struct anonymous_dim *ad2)
-{
-    if (strcmp(ad1->adpathname, ad2->adpathname) == 0) return TRUE;
-
-    return FALSE;
-}
-static struct anonymous_dim *anonymous_dim_find(List *ad_list, const char *pathname)
-{
-    ListElmt *elmt;
-    struct anonymous_dim *ad;
-
-    if (DEBUG>3) printf("looking for adpathname(%s)\n", pathname);
-
-    elmt = list_head(ad_list);
-    while(elmt) {
-        ad = list_data(elmt);
-        if (DEBUG>3) printf("comparing to adpathname(%s)\n", ad->adpathname);
-        if (strcmp(pathname, ad->adpathname) == 0) {
-            if (DEBUG>3) printf("adpathname(%s) matches search\n", ad->adpathname);
-            return ad;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static void anonymous_dim_printall(List *ad_list)
-{
-    ListElmt *elmt;
-    struct anonymous_dim *ad;
-
-    elmt = list_head(ad_list);
-    while(elmt) {
-        ad = list_data(elmt);
-        if (DEBUG>3) printf("adpathname(%s)\n", ad->adpathname);
-        elmt = list_next(elmt);
-    }
-}
-
-static struct open_file *open_file_create(
-        const char *path,
-        const char *name,
-        struct adios_nssi_filter_data_struct *method_private_data,
-        struct adios_file_struct *f)
-{
-    struct open_file *of=calloc(1,sizeof(struct open_file));
-
-    strcpy(of->fpath, path);
-    strcpy(of->fname, name);
-    of->md = method_private_data;
-    of->f = f;
-
-    list_init(&of->anonymous_dim_list, anonymous_dim_free);
-
-
-    return(of);
-}
-static void open_file_free(void *of)
-{
-    list_destroy(&((struct open_file *)of)->anonymous_dim_list);
-    free(of);
-}
-static int open_file_equal(const struct open_file *of1, const struct open_file *of2)
-{
-    if ((strcmp(of1->fpath, of2->fpath) == 0) && (strcmp(of1->fname, of2->fname) == 0)) return TRUE;
-
-    return FALSE;
-}
-static struct open_file *open_file_find(const char *path, const char *name)
-{
-    ListElmt *elmt;
-    struct open_file *of;
-
-    if (DEBUG>3) printf("looking for fpath(%s) fname(%s)\n", path, name);
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        if (DEBUG>3) printf("comparing to fpath(%s) fname(%s)\n", of->fpath, of->fname);
-        if ((strcmp(path, of->fpath) == 0) && (strcmp(name, of->fname) == 0)) {
-            if (DEBUG>3) printf("fpath(%s) fname(%s) matches search\n", of->fpath, of->fname);
-            return of;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static struct open_file *open_file_delete(const char *path, const char *name)
-{
-    ListElmt *elmt, *prev;
-    struct open_file *of;
-
-    if (DEBUG>3) printf("trying to delete fpath(%s) fname(%s)\n", path, name);
-
-    prev = elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        if (DEBUG>3) printf("comparing to fpath(%s) fname(%s)\n", of->fpath, of->fname);
-        if ((strcmp(path, of->fpath) == 0) && (strcmp(name, of->fname) == 0)) {
-            if (DEBUG>3) printf("fpath(%s) fname(%s) matches search\n", of->fpath, of->fname);
-            if (list_is_head(&open_file_list, elmt)) {
-                list_rem_next(&open_file_list, NULL, &of);
-            } else {
-                list_rem_next(&open_file_list, prev, &of);
-            }
-        }
-        prev = elmt;
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static void open_file_printall(void)
-{
-    ListElmt *elmt;
-    struct open_file *of;
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        if (DEBUG>3) printf("fpath(%s) fname(%s)\n", of->fpath, of->fname);
-        elmt = list_next(elmt);
-    }
-}
-
-//static struct var_offset *var_offset_create(const char *path, const char *name, void *value, uint64_t size)
-//{
-//    struct var_offset *vo=calloc(1,sizeof(struct var_offset));
-//
-//    strcpy(vo->opath, path);
-//    strcpy(vo->oname, name);
-//    vo->ovalue = value;
-//    vo->osize  = size;
-//
-//    return(vo);
-//}
-//static void var_offset_free(void *vo)
-//{
-//    free(vo);
-//}
-//static int var_offset_equal(const struct var_offset *vo1, const struct var_offset *vo2)
-//{
-//    if ((strcmp(vo1->opath, vo2->opath) == 0) && (strcmp(vo1->oname, vo2->oname) == 0)) return TRUE;
-//
-//    return FALSE;
-//}
-//static struct var_offset *var_offset_find(const char *path, const char *name)
-//{
-//    ListElmt *elmt;
-//    struct var_offset *vo;
-//
-//    if (DEBUG>3) printf("looking for opath(%s) oname(%s)\n", path, name);
-//
-//    elmt = list_head(&var_offset_list);
-//    while(elmt) {
-//        vo = list_data(elmt);
-//        if (DEBUG>3) printf("comparing to opath(%s) oname(%s)\n", vo->opath, vo->oname);
-//        if ((strcmp(path, vo->opath) == 0) && (strcmp(name, vo->oname) == 0)) {
-//            if (DEBUG>3) printf("opath(%s) oname(%s) matches search\n", vo->opath, vo->oname);
-//            return vo;
-//        }
-//        elmt = list_next(elmt);
-//    }
-//
-//    return NULL;
-//}
-//static void var_offset_printall(void)
-//{
-//    ListElmt *elmt;
-//    struct var_offset *vo;
-//
-//    elmt = list_head(&var_offset_list);
-//    while(elmt) {
-//        vo = list_data(elmt);
-//        if (DEBUG>3) printf("opath(%s) oname(%s)\n", vo->opath, vo->oname);
-//        elmt = list_next(elmt);
-//    }
-//}
-//
-//static struct var_dim *var_dim_create(const char *path, const char *name, void *value, uint64_t size)
-//{
-//    struct var_dim *vd=calloc(1,sizeof(struct var_dim));
-//
-//    strcpy(vd->dpath, path);
-//    strcpy(vd->dname, name);
-//    vd->dvalue = value;
-//    vd->dsize  = size;
-//
-//    return(vd);
-//}
-//static void var_dim_free(void *vd)
-//{
-//    free(vd);
-//}
-//static int var_dim_equal(const struct var_dim *vd1, const struct var_dim *vd2)
-//{
-//    if ((strcmp(vd1->dpath, vd2->dpath) == 0) && (strcmp(vd1->dname, vd2->dname) == 0)) return TRUE;
-//
-//    return FALSE;
-//}
-//static struct var_dim *var_dim_find(const char *path, const char *name)
-//{
-//    ListElmt *elmt;
-//    struct var_dim *vd;
-//
-//    if (DEBUG>3) printf("looking for opath(%s) oname(%s)\n", path, name);
-//
-//    elmt = list_head(&var_dim_list);
-//    while(elmt) {
-//        vd = list_data(elmt);
-//        if (DEBUG>3) printf("comparing to opath(%s) oname(%s)\n", vd->dpath, vd->dname);
-//        if ((strcmp(path, vd->dpath) == 0) && (strcmp(name, vd->dname) == 0)) {
-//            if (DEBUG>3) printf("opath(%s) oname(%s) matches search\n", vd->dpath, vd->dname);
-//            return vd;
-//        }
-//        elmt = list_next(elmt);
-//    }
-//
-//    return NULL;
-//}
-//static void var_dim_printall(void)
-//{
-//    ListElmt *elmt;
-//    struct var_dim *vd;
-//
-//    elmt = list_head(&var_dim_list);
-//    while(elmt) {
-//        vd = list_data(elmt);
-//        if (DEBUG>3) printf("dpath(%s) dname(%s)\n", vd->dpath, vd->dname);
-//        elmt = list_next(elmt);
-//    }
-//}
-
-static void parse_dimension_size(
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_dimension_item_struct *dim,
-        size_t *dimsize)
-{
-    struct adios_var_struct *var_linked = NULL;
-    struct adios_attribute_struct *attr_linked;
-    if (dim->id) {
-        var_linked = adios_find_var_by_id (pvar_root , dim->id);
-        if (!var_linked) {
-            attr_linked = adios_find_attribute_by_id (patt_root, dim->id);
-            if (!attr_linked->var) {
-                switch (attr_linked->type) {
-                case adios_unsigned_byte:
-                    *dimsize = *(uint8_t *)attr_linked->value;
-                    break;
-                case adios_byte:
-                    *dimsize = *(int8_t *)attr_linked->value;
-                    break;
-                case adios_unsigned_short:
-                    *dimsize = *(uint16_t *)attr_linked->value;
-                    break;
-                case adios_short:
-                    *dimsize = *(int16_t *)attr_linked->value;
-                    break;
-                case adios_unsigned_integer:
-                    *dimsize = *(uint32_t *)attr_linked->value;
-                    break;
-                case adios_integer:
-                    *dimsize = *(int32_t *)attr_linked->value;
-                    break;
-                case adios_unsigned_long:
-                    *dimsize = *(uint64_t *)attr_linked->value;
-                    break;
-                case adios_long:
-                    *dimsize = *(int64_t *)attr_linked->value;
-                    break;
-                default:
-                    fprintf (stderr, "Invalid datatype for array dimension on "
-                            "var %s: %s\n"
-                            ,attr_linked->name
-                            ,adios_type_to_string_int (var_linked->type)
-                    );
-                    break;
-                }
-            } else {
-                var_linked = attr_linked->var;
-            }
-        }
-        if (var_linked && var_linked->data) {
-            *dimsize = *(int *)var_linked->data;
-        }
-    } else {
-        if (dim->time_index == adios_flag_yes) {
-            *dimsize = 1;
-        } else {
-            *dimsize = dim->rank;
-        }
-    }
-
-    return;
-}
-static void parse_dimension_name(
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_dimension_item_struct *dim,
-        char *dimname)
-{
-    struct adios_var_struct *var_linked = NULL;
-    struct adios_attribute_struct *attr_linked;
-    if (dim->id) {
-        var_linked = adios_find_var_by_id (pvar_root , dim->id);
-        if (!var_linked) {
-            attr_linked = adios_find_attribute_by_id (patt_root, dim->id);
-            if (!attr_linked->var) {
-//                strcpy(dimname, attr_linked->name);
-                sprintf(dimname, "%s", attr_linked->name);
-            } else {
-                var_linked = attr_linked->var;
-            }
-        }
-        if (var_linked && var_linked->name) {
-//            strcpy(dimname, var_linked->name);
-            sprintf(dimname, "%s", var_linked->name);
-        }
-    } else {
-        if (dim->time_index == adios_flag_yes) {
-//            strcpy(dimname, group->time_index_name);
-            sprintf(dimname, "%s", group->time_index_name);
-        } else {
-            dimname[0] = '\0';
-        }
-    }
-
-    return;
-}
-static int is_anonymous_dimension(
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_dimension_item_struct *dim)
-{
-    int rc=FALSE;
-    struct adios_var_struct       *var_linked = NULL;
-    struct adios_attribute_struct *attr_linked = NULL;
-
-    if (dim->id) {
-        var_linked = adios_find_var_by_id (pvar_root , dim->id);
-        if (!var_linked) {
-            attr_linked = adios_find_attribute_by_id (patt_root, dim->id);
-            if (!attr_linked->var) {
-                rc=FALSE;
-            } else {
-                var_linked = attr_linked->var;
-            }
-        }
-        if (var_linked && var_linked->name) {
-            rc=FALSE;
-        } else {
-            rc=TRUE;
-        }
-    } else {
-        if (dim->time_index == adios_flag_yes) {
-            rc=FALSE;
-        } else {
-            rc=TRUE;
-        }
-    }
-
-    return rc;
-}
-
-
-static int gen_anonymous_dim_list(
-        struct open_file *of,
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root)
-{
-    struct adios_var_struct *v;
-    struct adios_dimension_struct *dims;
-    struct anonymous_dim *ad;
-    char ad_name[255];
-    uint64_t *value;
-
-    v = pvar_root;
-    while (v) {
-        dims=v->dimensions;
-        int ad_idx=0;
-        uint64_t vsize = 8;
-
-        while (dims) {
-            if (is_anonymous_dimension(pvar_root, patt_root, &dims->dimension) == TRUE) {
-                sprintf(ad_name, "%s_%s_dim_%d", /*v->path*/"", v->name, ad_idx);
-                if (DEBUG>3) printf("gen: dim_name(%s)\n", ad_name);
-
-                value=calloc(1,sizeof(uint64_t));
-                parse_dimension_size(group, pvar_root, patt_root, &dims->dimension, value);
-
-                ad = anonymous_dim_create(v->path, ad_name, value, vsize, &dims->dimension);
-                list_ins_next(&of->anonymous_dim_list, list_tail(&of->anonymous_dim_list), ad);
-            }
-
-            if (is_anonymous_dimension(pvar_root, patt_root, &dims->global_dimension) == TRUE) {
-                sprintf(ad_name, "%s_%s_global_%d", /*v->path*/"", v->name, ad_idx);
-                if (DEBUG>3) printf("gen: gdim_name(%s)\n", ad_name);
-
-                value=calloc(1,sizeof(uint64_t));
-                parse_dimension_size(group, pvar_root, patt_root, &dims->global_dimension, value);
-
-                ad = anonymous_dim_create(v->path, ad_name, value, vsize, &dims->global_dimension);
-                list_ins_next(&of->anonymous_dim_list, list_tail(&of->anonymous_dim_list), ad);
-            }
-
-            if (is_anonymous_dimension(pvar_root, patt_root, &dims->local_offset) == TRUE) {
-                sprintf(ad_name, "%s_%s_offset_%d", /*v->path*/"", v->name, ad_idx);
-                if (DEBUG>3) printf("gen: ad_name(%s)\n", ad_name);
-
-                value=calloc(1,sizeof(uint64_t));
-                parse_dimension_size(group, pvar_root, patt_root, &dims->local_offset, value);
-
-                ad = anonymous_dim_create(v->path, ad_name, value, vsize, &dims->local_offset);
-                list_ins_next(&of->anonymous_dim_list, list_tail(&of->anonymous_dim_list), ad);
-            }
-
-            ad_idx++;
-            dims = dims->next;
-        }
-        v = v->next;
-    }
-}
-
-
-void adios_nssi_filter_init(
-        const char *parameters,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-    int verbose=5;
-    char logfile[1024];
-    int log_rank;
-
-    struct adios_nssi_filter_data_struct *self_md=NULL;
-
-    if (!adios_nssi_filter_initialized) {
-        adios_nssi_filter_initialized = 1;
-    }
-
-    MPI_Comm_rank(method->init_comm, &global_rank);
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_init\n", global_rank);
-
-//    sprintf(logfile, "%s.%04d", "adios_nssi_filter_client.log", log_rank);
-//    logger_init((log_level)verbose, logfile);
-
-//    logger_init((log_level)verbose, NULL);
-
-    if (self == NULL) {
-        self=method;
-        self_md=calloc(1, sizeof(struct adios_nssi_filter_data_struct));
-        self->method_data=self_md;
-    } else {
-        self_md=(struct adios_nssi_filter_data_struct *)self->method_data;
-    }
-
-    /*
-     * initialize sub_method
-     */
-    char *sm_method=NULL;
-    char *sm_parameters=NULL;
-
-    if (DEBUG>3) printf("parameters=%s\n", parameters);
-
-    char *pkey=NULL;
-    char *pkey_str="submethod=\"";
-    char *pvalue=NULL;
-    int   pvalue_len=0;
-    pkey=strstr(parameters, pkey_str);
-    if (pkey != NULL) {
-        pvalue=pkey+strlen(pkey_str);
-        char *quote_pos=strchr(pvalue, '"');
-        pvalue_len=quote_pos-pvalue+1;
-        sm_method=(char *)malloc(pvalue_len+1);
-        strncpy(sm_method, pvalue, pvalue_len);
-        sm_method[pvalue_len-1]='\0';
-    }
-
-    if (DEBUG>3) printf("sm_method=%s\n", sm_method);
-
-    if (sm_method != NULL) {
-        pkey=NULL;
-        pkey_str="subparameters=\"";
-        pvalue=NULL;
-        pvalue_len=0;
-        pkey=strstr(parameters, pkey_str);
-        if (pkey != NULL) {
-            pvalue=pkey+strlen(pkey_str);
-            char *quote_pos=strchr(pvalue, '"');
-            pvalue_len=quote_pos-pvalue+1;
-            sm_parameters=(char *)malloc(pvalue_len+1);
-            strncpy(sm_parameters, pvalue, pvalue_len);
-            sm_parameters[pvalue_len-1]='\0';
-        }
-    }
-
-    if (DEBUG>3) printf("sm_parameters=%s\n", sm_parameters);
-
-    if (sm_parameters == NULL) {
-        sm_parameters="";
-    }
-
-    self_md->sm_method = strdup(sm_method);
-    self_md->sm_parameters = strdup(sm_parameters);
-
-
-    list_init(&open_file_list, open_file_free);
-//    list_init(&var_offset_list, var_offset_free);
-//    list_init(&var_dim_list, var_dim_free);
-
-    return;
-}
-
-
-enum ADIOS_FLAG adios_nssi_filter_should_buffer(
-        struct adios_file_struct *f,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    enum ADIOS_FLAG sm_should_buffer=adios_flag_no;
-    enum ADIOS_FLAG old_shared_buffer=adios_flag_no;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_should_buffer\n", global_rank);
-
-    if (DEBUG>3) {
-        struct adios_var_struct *v=f->group->vars;
-        while(v) {
-            printf("adios_nssi_filter_should_buffer: fname(%s) vname(%s)\n", f->name, v->name);
-            v=v->next;
-        }
-    }
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "nssi_filter_should_buffer: file(%s, %s) is not open.  FAIL.", method->base_path, f->name);
-        return adios_flag_no;
-    }
-    md=of->md;
-
-    /*
-     * call sub_method
-     */
-    if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-        && md->submethod->m != ADIOS_METHOD_NULL
-        && adios_transports[md->submethod->m].adios_should_buffer_fn
-       )
-    {
-        sm_should_buffer = adios_transports[md->submethod->m].adios_should_buffer_fn
-                                                                (f, md->submethod);
-    }
-
-    if (DEBUG>3) printf("sm_should_buffer==%d\n", sm_should_buffer);
-    return sm_should_buffer;
-}
-
-int adios_nssi_filter_open(
-        struct adios_file_struct *f,
-        struct adios_method_struct *method,
-        MPI_Comm comm)
-{
-    int rc=NSSI_OK;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("global_rank(%d): enter adios_nssi_filter_open (%s)\n", global_rank, f->name);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        struct adios_nssi_filter_data_struct *self_md=(struct adios_nssi_filter_data_struct *)self->method_data;;
-
-        md             = malloc(sizeof(struct adios_nssi_filter_data_struct));
-        md->fd         = -1;
-        md->rank       = -1;
-        md->size       = 0;
-        md->group_comm = comm;
-
-        md->submethod = init_submethod(self_md->sm_method, self_md->sm_parameters);
-        md->submethod->group = group_deep_copy(f->group);
-        f->group = md->submethod->group;
-
-        of=open_file_create(method->base_path, f->name, md, f);
-    } else {
-        md=of->md;
-
-        // sanity check
-        if (md->fd == -1) {
-            if (DEBUG>3) printf("open: %s is open but fd==-1.  sanity check failed.  attempting reopen.\n", f->name);
-            open_file_delete(of->fpath, of->fname);
-        } else {
-            // file already open
-            return adios_flag_no;
-        }
-    }
-
-    if (md->group_comm != MPI_COMM_NULL) {
-        if (DEBUG>3) printf("global_rank(%d): adios_nssi_filter_open: get rank and size: group_comm(%p)\n", global_rank, md->group_comm);
-        MPI_Comm_rank(md->group_comm, &md->rank);
-        MPI_Comm_size(md->group_comm, &md->size);
-        if (DEBUG>3) printf("global_rank(%d): adios_nssi_filter_open: size(%d) rank(%d)\n", global_rank, md->size, md->rank);
-    } else {
-        md->group_comm=MPI_COMM_SELF;
-    }
-    f->group->process_id = md->rank;
-
-
-    gen_anonymous_dim_list(
-            of,
-            f->group,
-            f->group->vars,
-            f->group->attributes);
-
-
-//    gen_offset_list(
-//            f->group,
-//            f->group->vars,
-//            f->group->attributes);
-//    gen_dim_list(
-//            f->group,
-//            f->group->vars,
-//            f->group->attributes);
-//    var_offset_printall();
-
-
-    /*
-     * call sub_method
-     */
-    if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-        && md->submethod->m != ADIOS_METHOD_NULL
-        && adios_transports[md->submethod->m].adios_open_fn
-       )
-    {
-        adios_transports[md->submethod->m].adios_open_fn
-                                   (f, md->submethod, md->group_comm);
-    }
-
-
-    list_ins_next(&open_file_list, list_tail(&open_file_list), of);
-
-    return 1;
-}
-
-void adios_nssi_filter_start_calculation(
-        struct adios_method_struct * method)
-{
-    int rc=NSSI_OK;
-    int myrank;
-
-    ListElmt *elmt;
-    struct open_file *of;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_start_calc\n", global_rank);
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        md = of->md;
-
-        /*
-         * call sub_method
-         */
-        if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-            && md->submethod->m != ADIOS_METHOD_NULL
-            && adios_transports[md->submethod->m].adios_start_calculation_fn
-           )
-        {
-            adios_transports[md->submethod->m].adios_start_calculation_fn
-                                       (md->submethod);
-        }
-
-        elmt = list_next(elmt);
-    }
-
-    if (DEBUG>3) printf("rank(%d) exit adios_nssi_filter_start_calc\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_filter_end_iteration(
-        struct adios_method_struct * method)
-{
-    int rc=NSSI_OK;
-    int myrank;
-
-    ListElmt *elmt;
-    struct open_file *of;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_end_iteration\n", global_rank);
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        md = of->md;
-
-        /*
-         * call sub_method
-         */
-        if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-            && md->submethod->m != ADIOS_METHOD_NULL
-            && adios_transports[md->submethod->m].adios_end_iteration_fn
-        )
-        {
-            adios_transports[md->submethod->m].adios_end_iteration_fn
-                                        (md->submethod);
-        }
-
-        elmt = list_next(elmt);
-    }
-
-    if (DEBUG>3) printf("rank(%d) exit adios_nssi_filter_end_iteration\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_filter_stop_calculation(
-        struct adios_method_struct * method)
-{
-    int rc=NSSI_OK;
-    int remote_rc=NSSI_OK;
-    int myrank;
-
-    ListElmt *elmt;
-    struct open_file *of;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_stop_calc\n", global_rank);
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        md = of->md;
-
-        /*
-         * call sub_method
-         */
-        if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-            && md->submethod->m != ADIOS_METHOD_NULL
-            && adios_transports[md->submethod->m].adios_stop_calculation_fn
-        )
-        {
-            adios_transports[md->submethod->m].adios_stop_calculation_fn
-                                        (md->submethod);
-        }
-
-        elmt = list_next(elmt);
-    }
-
-    if (DEBUG>3) printf("rank(%d) exit adios_nssi_filter_stop_calc\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_filter_write(
-        struct adios_file_struct *f,
-        struct adios_var_struct *v,
-        void *data,
-        struct adios_method_struct *method)
-{
-    static int first_write = 1;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_write - var(%s, %s)\n", global_rank, v->path, v->name);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "nssi_filter_write: file(%s, %s) is not open.  FAIL.", method->base_path, f->name);
-        return;
-    }
-    md=of->md;
-
-    /*
-     * call sub_method
-     */
-    if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-        && md->submethod->m != ADIOS_METHOD_NULL
-        && adios_transports[md->submethod->m].adios_write_fn
-       )
-    {
-        adios_transports[md->submethod->m].adios_write_fn
-                                   (f, v, data, md->submethod);
-    }
-
-
-//    if (f->mode == adios_mode_write || f->mode == adios_mode_append) {
-//
-//        if (md->rank==0) {
-//            if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-//            if (DEBUG>3) fprintf(stderr, "write var: %s start!\n", v->name);
-//        }
-//        uint64_t var_size = adios_get_var_size (v, f->group, data);
-//        if (DEBUG>3) printf("vname(%s) vsize(%ld)\n", v->name, var_size);
-//        write_var(md->fd,
-//                f->group,
-//                f->group->vars,
-//                f->group->attributes,
-//                v,
-//                var_size,
-//                f->group->adios_host_language_fortran,
-//                md->rank,
-//                md->size,
-//                md->group_comm);
-//    } else {
-//        if (DEBUG>3) fprintf(stderr, "entering unknown nc4 mode %d!\n", f->mode);
-//    }
-//    if (md->rank==0) {
-//        if (DEBUG>3) fprintf(stderr, "write var: %s end!\n", v->name);
-//        if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-//    }
-
-    return;
-}
-
-
-void adios_nssi_filter_read(
-        struct adios_file_struct *f,
-        struct adios_var_struct *v,
-        void *buffer,
-        uint64_t buffersize,
-        struct adios_method_struct *method)
-{
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_read\n", global_rank);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "nssi_filter_read: file(%s, %s) is not open.  FAIL.", method->base_path, f->name);
-        return;
-    }
-    md=of->md;
-
-    /*
-     * call sub_method
-     */
-    if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-        && md->submethod->m != ADIOS_METHOD_NULL
-        && adios_transports[md->submethod->m].adios_read_fn
-       )
-    {
-        adios_transports[md->submethod->m].adios_read_fn
-                                   (f, v, buffer, buffersize, md->submethod);
-    }
-
-
-//    if(f->mode == adios_mode_read) {
-//        v->data = buffer;
-//        v->data_size = buffersize;
-//
-//        if (md->rank==0) {
-//            if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-//            if (DEBUG>3) fprintf(stderr, "read var: %s! start\n", v->name);
-//        }
-//        read_var(md->fd,
-//                v,
-//                md->rank,
-//                md->size,
-//                md->group_comm);
-//        if (md->rank==0) {
-//            if (DEBUG>3) fprintf(stderr, "read var: %s! end\n", v->name);
-//            if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-//        }
-//    }
-
-    return;
-}
-
-void adios_nssi_filter_close(
-        struct adios_file_struct *f,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-    struct adios_attribute_struct * a = f->group->attributes;
-    int myrank;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("global_rank(%d) enter adios_nssi_filter_close\n", global_rank);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "nssi_filter_close: file(%s, %s) is not open.  FAIL.", method->base_path, f->name);
-        return;
-    }
-    md=of->md;
-    myrank=md->rank;
-
-    if (DEBUG>3) printf("myrank(%d) enter adios_nssi_filter_close\n", myrank);
-
-    /*
-     * call sub_method
-     */
-    if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-        && md->submethod->m != ADIOS_METHOD_NULL
-        && adios_transports[md->submethod->m].adios_close_fn
-       )
-    {
-        adios_transports[md->submethod->m].adios_close_fn
-                                   (f, md->submethod);
-    }
-
-    if (f->mode == adios_mode_read) {
-        struct adios_var_struct * v = f->group->vars;
-        while (v)
-        {
-            v->data = 0;
-            v = v->next;
-        }
-
-        if (md->rank==0) {
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-            if (DEBUG>1) fprintf(stderr, "reading done, NSSI_FILTER file is virtually closed;\n");
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-        }
-    } else if (f->mode == adios_mode_write || f->mode == adios_mode_append) {
-        //fprintf(stderr, "entering nc4 write attribute mode!\n");
-        if (md->rank==0) {
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-            if (DEBUG>1) fprintf(stderr, "writing done, NSSI_FILTER file is virtually closed;\n");
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-        }
-    }
-
-//    struct adios_group_struct *group_clone=f->group;
-//    if (group_clone) {
-//        while (group_clone->vars)
-//        {
-//            struct adios_var_struct *vars = group_clone->vars->next;
-//            free (group_clone->vars);
-//            group_clone->vars = vars;
-//        }
-//
-//        while (group_clone->attributes)
-//        {
-//            struct adios_attribute_struct * attributes = group_clone->attributes->next;
-//            free (group_clone->attributes);
-//            group_clone->attributes = attributes;
-//        }
-//
-//        free(group_clone);
-//        f->group=NULL;
-//    }
-
-    open_file_delete(method->base_path, f->name);
-    free(md);
-    of=NULL;
-    md=NULL;
-
-    if (DEBUG>3) printf("global_rank(%d) exit adios_nssi_filter_close\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_filter_finalize(
-        int mype,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-    int myrank;
-
-    ListElmt *elmt;
-    struct open_file *of;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_filter_finalize\n", global_rank);
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        md = of->md;
-
-        /*
-         * call sub_method
-         */
-        if (   md->submethod->m != ADIOS_METHOD_UNKNOWN
-            && md->submethod->m != ADIOS_METHOD_NULL
-            && adios_transports[md->submethod->m].adios_finalize_fn
-        )
-        {
-            adios_transports[md->submethod->m].adios_finalize_fn
-                                        (mype, md->submethod);
-        }
-
-        elmt = list_next(elmt);
-    }
-
-    free_nssi_config(&nssi_cfg);
-
-    if (adios_nssi_filter_initialized) {
-        adios_nssi_filter_initialized = 0;
-        self=NULL;
-    }
-
-    if (DEBUG>3) printf("rank(%d) exit adios_nssi_filter_finalize\n", global_rank);
-}
-
-
-int adios_nssi_filter_is_anon_dim(
-        int fd,
-        const char *dimname)
-{
-    struct adios_file_struct *f=(struct adios_file_struct *)fd;
-    int myrank;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("global_rank(%d) enter BACKDOOR adios_nssi_filter_is_anon_dim\n", global_rank);
-
-    if ((!adios_nssi_filter_initialized) || (self == NULL)) {
-        return FALSE;
-    }
-
-    of=open_file_find(self->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "nssi_filter_is_anon: file(%s, %s) is not open.  FAIL.", self->base_path, f->name);
-        return FALSE;
-    }
-    md=of->md;
-    myrank=md->rank;
-
-    if (anonymous_dim_find(&of->anonymous_dim_list, dimname) != NULL) {
-        return TRUE;
-    }
-    return FALSE;
-}
-void adios_nssi_filter_set_anon_dim(
-        int fd,
-        const char *dimname,
-        const uint64_t dimvalue)
-{
-    struct adios_file_struct *f=(struct adios_file_struct *)fd;
-    int myrank;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_filter_data_struct *md=NULL;
-
-    if (DEBUG>3) printf("global_rank(%d) enter BACKDOOR adios_nssi_filter_set_anon_dim\n", global_rank);
-
-    if ((!adios_nssi_filter_initialized) || (self == NULL)) {
-        return;
-    }
-
-    of=open_file_find(self->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "nssi_filter_set_anon: file(%s, %s) is not open.  FAIL.", self->base_path, f->name);
-        return;
-    }
-    md=of->md;
-    myrank=md->rank;
-
-    struct anonymous_dim *ad=anonymous_dim_find(&of->anonymous_dim_list, dimname);
-    if (ad == NULL) {
-        fprintf(stderr, "couldn't find anonymous dimension (%s)\n", dimname);
-        return;
-    }
-    ad->dim->rank=dimvalue;
-
-    return;
-}
diff --git a/src/nssi/aggregation.cpp b/src/nssi/aggregation.cpp
deleted file mode 100644
index c18d0f6..0000000
--- a/src/nssi/aggregation.cpp
+++ /dev/null
@@ -1,1120 +0,0 @@
-/*
- * aggregation.cpp
- *
- *  Created on: Mar 9, 2009
- *      Author: thkorde
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <assert.h>
-
-#include <nssi_server.h>
-
-#include <algorithm>
-#include <map>
-#include <list>
-
-using namespace std;
-
-#include "aggregation.h"
-
-
-struct ltstr
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return strcmp(s1, s2) < 0;
-  }
-};
-
-
-
-typedef struct {
-    int ahead_count;
-    int behind_count;
-    int same_count;
-    int no_match_count;
-} chunk_location_count_t;
-
-typedef list<aggregation_chunk_details_t *> chunk_details_t;
-typedef list<aggregation_chunk_details_t *>::iterator chunk_details_iterator_t;
-
-typedef struct {
-    aggregation_chunk_details_t *details;
-    chunk_details_t              component_chunks;
-} aggregation_chunk_t;
-
-typedef list<aggregation_chunk_t *> chunks_t;
-typedef list<aggregation_chunk_t *>::iterator chunks_iterator_t;
-
-
-typedef struct {
-    char      var_path[ADIOS_PATH_MAX];
-    char      var_name[ADIOS_PATH_MAX];
-    chunks_t *chunks;
-    int       chunks_received;
-} per_var_details_t;
-
-typedef map<const char *, per_var_details_t *, ltstr> var_map_t;
-typedef map<const char *, per_var_details_t *, ltstr>::iterator var_map_iterator_t;
-typedef pair<const char *, per_var_details_t *> var_map_pair_t;
-
-typedef struct {
-    int        fd;
-    var_map_t  vars;
-    write_type type; /* direct, aggregate independent, aggregate collective */
-} file_details_t;
-
-static map<int, file_details_t *> open_file_map;
-typedef map<int, file_details_t *>::iterator open_file_map_iterator_t;
-typedef pair<int, file_details_t *> open_file_map_pair_t;
-
-
-
-static int DEBUG=0;
-
-
-
-
-bool compare_chunks_for_aggregation(const aggregation_chunk_t* c1, const aggregation_chunk_t* c2)
-{
-    aggregation_chunk_details_t *details1=c1->details;
-    aggregation_chunk_details_t *details2=c2->details;
-
-    for (int i=0;i<details1->ndims;i++) {
-        if (details1->count[i] < details2->count[i]) {
-            return true;
-        } else if (details1->count[i] > details2->count[i]) {
-            return false;
-        }
-    }
-    for (int i=0;i<details1->ndims;i++) {
-        if (details1->offset[i] < details2->offset[i]) {
-            return true;
-        } else if (details1->offset[i] > details2->offset[i]) {
-            return false;
-        }
-    }
-    return false;
-}
-
-bool compare_chunks_for_caching(const aggregation_chunk_t* c1, const aggregation_chunk_t* c2)
-{
-    aggregation_chunk_details_t *details1=c1->details;
-    aggregation_chunk_details_t *details2=c2->details;
-
-    for (int i=0;i<details1->ndims;i++) {
-        if (details1->offset[i] < details2->offset[i]) {
-            return true;
-        } else if (details1->offset[i] > details2->offset[i]) {
-            return false;
-        }
-    }
-    return false;
-}
-
-file_details_t *new_open_file(const int fd)
-{
-    file_details_t *details=NULL;
-
-    details = new file_details_t;
-    details->fd = fd;
-
-    return details;
-}
-
-int use_aggregation(const int fd)
-{
-    file_details_t *details=NULL;
-
-    details = open_file_map[fd];
-    if ((details->type == WRITE_AGGREGATE_INDEPENDENT) ||
-        (details->type == WRITE_AGGREGATE_COLLECTIVE)) {
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-int use_caching(const int fd)
-{
-    file_details_t *details=NULL;
-
-    details = open_file_map[fd];
-    if ((details->type == WRITE_CACHING_INDEPENDENT) ||
-        (details->type == WRITE_CACHING_COLLECTIVE)) {
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-int use_collective(const int fd)
-{
-    file_details_t *details=NULL;
-
-    details = open_file_map[fd];
-    if ((details->type == WRITE_AGGREGATE_COLLECTIVE) ||
-        (details->type == WRITE_CACHING_COLLECTIVE)) {
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-int use_independent(const int fd)
-{
-    file_details_t *details=NULL;
-
-    details = open_file_map[fd];
-    if ((details->type == WRITE_AGGREGATE_INDEPENDENT) ||
-        (details->type == WRITE_CACHING_INDEPENDENT)) {
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-int use_direct(const int fd)
-{
-    file_details_t *details=NULL;
-
-    details = open_file_map[fd];
-    if (details->type == WRITE_DIRECT) {
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-int getTypeSize(
-        enum ADIOS_DATATYPES type,
-        void *val)
-{
-    switch (type)
-    {
-    case adios_byte:
-    case adios_unsigned_byte:
-        return 1;
-
-    case adios_string:
-        return strlen ((char *) val);
-
-    case adios_short:
-    case adios_unsigned_short:
-        return 2;
-
-    case adios_integer:
-    case adios_unsigned_integer:
-        return 4;
-
-    case adios_real:
-        return 4;
-
-    case adios_long:
-    case adios_unsigned_long:
-        return 8;
-
-    case adios_double:
-        return 8;
-
-    case adios_long_double:
-        return 16;
-
-    case adios_complex:
-        return 2 * 4;
-
-    case adios_double_complex:
-        return 2 * 8;
-
-    default:
-        return -1;
-    }
-}
-
-void add_file(const int fd,
-            const write_type write_type)
-{
-    file_details_t *details=NULL;
-
-    details = open_file_map[fd];
-    if (details == NULL) {
-        details=new_open_file(fd);
-        open_file_map[fd]=details;
-    }
-
-    details->type = write_type;
-}
-
-void add_chunk(aggregation_chunk_details_t *chunk_details)
-{
-    file_details_t  *file_details=NULL;
-
-    if (DEBUG > 3) printf("adding chunk: fd(%d) var_name(%s)\n", chunk_details->fd, chunk_details->var_name);
-
-    chunk_details->atype_size = getTypeSize(chunk_details->atype, chunk_details->buf);
-    if ((chunk_details->len > 0) && (chunk_details->num_elements > 0)) {
-        if ((chunk_details->len/chunk_details->num_elements) != chunk_details->atype_size) {
-            printf("datatype size conflict: (%lu/%d)==%lu is not equal to %d\n",
-                    chunk_details->len, chunk_details->num_elements, chunk_details->len/chunk_details->num_elements, chunk_details->atype_size);
-            print_chunk(chunk_details);
-        }
-    }
-
-    file_details = open_file_map[chunk_details->fd];
-    if (file_details == NULL) {
-        printf("failed to add chunk.  cannot aggregate.\n");
-        return;
-    }
-    per_var_details_t *var_details = file_details->vars[chunk_details->var_name];
-    if (var_details == NULL) {
-//        if (DEBUG > 3) printf("var_details don't exist for %s\n", chunk_details->var_name);
-        var_details=new per_var_details_t;
-        strcpy(var_details->var_path, chunk_details->var_path);
-        strcpy(var_details->var_name, chunk_details->var_name);
-        var_details->chunks = new chunks_t;
-        var_details->chunks_received=0;
-        file_details->vars[chunk_details->var_name]=var_details;
-    } else {
-//        if (DEBUG > 3) printf("var_details already exist for %s\n", chunk_details->var_name);
-    }
-    aggregation_chunk_t *chunk=new aggregation_chunk_t;
-    chunk->details = chunk_details;
-    var_details->chunks->push_back(chunk);
-    var_details->chunks_received++;
-
-    return;
-}
-
-void destroy_chunk(aggregation_chunk_details_t *details)
-{
-    free(details->offset);
-    free(details->count);
-    for (int i=0;i<details->ndims;i++) {
-        free(details->offset_path[i]);
-        free(details->offset_name[i]);
-        free(details->count_path[i]);
-        free(details->count_name[i]);
-    }
-    free(details->offset_path);
-    free(details->offset_name);
-    free(details->count_path);
-    free(details->count_name);
-//    if (DEBUG > 3) printf("freeing details->buf(%p)\n", details->buf);
-    free(details->buf);
-    delete details;
-}
-
-void cleanup_aggregation_chunks(const int fd)
-{
-    file_details_t  *details=NULL;
-    var_map_iterator_t var_iter;
-    per_var_details_t *var_details=NULL;
-    aggregation_chunk_t *chunk=NULL;
-    chunks_iterator_t chunks_iter;
-    chunk_details_iterator_t component_iter;
-
-//    if (DEBUG > 3) printf("entered cleanup_aggregation_chunks\n");
-//    if (DEBUG > 3) printf("cleaning up - fd(%d)\n", fd);
-
-    details = open_file_map[fd];
-    if (details == NULL) {
-        return;
-    }
-//    var_iter = details->vars.begin();
-//    for (; var_iter != details->vars.end(); ++var_iter) {
-//        var_details = var_iter->second;
-//        if (var_details != NULL) {
-//            if (DEBUG > 3) printf("var_details first(%p) second(%s)\n", var_iter->first, var_details->var_name);
-//        } else {
-//            if (DEBUG > 3) printf("var_details is NULL\n");
-//        }
-//    }
-    var_iter = details->vars.begin();
-    for (; var_iter != details->vars.end();) {
-        var_details = var_iter->second;
-        if (var_details != NULL) {
-//            cleanup_aggregation_chunks(fd, var_details->var_name);
-            chunks_iter = var_details->chunks->begin();
-            for (;chunks_iter != var_details->chunks->end(); ++chunks_iter) {
-                chunk = *chunks_iter;
-                component_iter = chunk->component_chunks.begin();
-                for (;component_iter != chunk->component_chunks.end(); ++component_iter) {
-//                    if (DEBUG > 3) printf("cleanup - destroying component\n");
-                    destroy_chunk(*component_iter);
-                }
-                chunk->component_chunks.clear();
-//                if (DEBUG > 3) printf("cleanup - destroying details\n");
-                destroy_chunk(chunk->details);
-                delete chunk;
-            }
-            var_details->chunks->clear();
-            var_details->chunks_received=0;
-            delete var_details;
-        } else {
-//            if (DEBUG > 3) printf("cannot cleanup - var_details is NULL\n");
-        }
-        details->vars.erase(var_iter++);
-    }
-//    details->vars.clear();
-
-    for(var_map_iterator_t vars_iter=details->vars.begin(); vars_iter!=details->vars.end(); ++vars_iter) {
-        per_var_details_t *pvd=vars_iter->second;
-        if (pvd != NULL) {
-            if (DEBUG > 3) printf("var_details first(%p) second(%s)\n", vars_iter->first, vars_iter->second->var_name);
-        } else {
-            if (DEBUG > 3) printf("var_details is NULL\n");
-        }
-    }
-}
-
-void cleanup_aggregation_chunks(const int fd, const char *var_name)
-{
-    file_details_t  *details=NULL;
-    aggregation_chunk_t *chunk=NULL;
-    chunks_iterator_t chunks_iter;
-    chunk_details_iterator_t component_iter;
-    var_map_iterator_t vars_iter;
-
-//    if (DEBUG > 3) printf("cleaning up - fd(%d) var_name(%s)\n", fd, var_name);
-
-    // for each variable, iterate over the chunks and destroy them
-
-    details = open_file_map[fd];
-
-    per_var_details_t *var_details = details->vars[var_name];
-    if (var_details != NULL) {
-        chunks_iter = var_details->chunks->begin();
-        for (;chunks_iter != var_details->chunks->end(); ++chunks_iter) {
-            chunk = *chunks_iter;
-            component_iter = chunk->component_chunks.begin();
-            for (;component_iter != chunk->component_chunks.end(); ++component_iter) {
-//                if (DEBUG > 3) printf("cleanup - destroying component\n");
-                destroy_chunk(*component_iter);
-            }
-            chunk->component_chunks.clear();
-//            if (DEBUG > 3) printf("cleanup - destroying details\n");
-            destroy_chunk(chunk->details);
-            delete chunk;
-        }
-        var_details->chunks->clear();
-        var_details->chunks_received=0;
-        delete var_details;
-    } else {
-//        if (DEBUG > 3) printf("cleanup failed - var_details is NULL (%s)\n", var_name);
-    }
-
-    var_map_iterator_t iter=details->vars.find(var_name);
-    if (iter != details->vars.end()) {
-//        if (DEBUG > 3) printf("erasing var_details with iter\n");
-        details->vars.erase(iter);
-    } else {
-//        if (DEBUG > 3) printf("cannot erase var_details with iter.  var_details not found.\n");
-    }
-
-}
-
-static void recursive_print_chunk(aggregation_chunk_details_t *details, int offset, int *index, int current_dim)
-{
-    int my_offset=0;
-    char tmp_str[20];
-    char out_str[1024];
-    int remaining=1023;
-
-    if (current_dim < details->ndims-1) {
-        for (int i=0;i<details->count[current_dim];i++) {
-            my_offset = index[current_dim];
-            for (int i=current_dim+1;i<details->ndims;i++) {
-                my_offset *= details->count[i];
-            }
-
-            index[current_dim+1]=0;
-            recursive_print_chunk(details, offset+my_offset, index, current_dim+1);
-            index[current_dim] += details->atype_size;
-        }
-        //if (DEBUG > 3) printf("-----------------------------\n");
-    } else {
-        if (details->buf == NULL) {
-            if (DEBUG > 3) printf("details->buf == NULL\n");
-        } else {
-            out_str[0]='\0';
-            for (int i=0;i<details->count[current_dim];i++) {
-                my_offset = offset+index[current_dim];
-
-//                if (i==0) if (DEBUG > 3) printf("[%d][%d][%d] (my_offset==%d)\n", index[0], index[1], index[2], my_offset);
-                if ((details->atype == adios_byte) || (details->atype == adios_unsigned_byte)) {
-                    sprintf(tmp_str, "%c, ", *(char *)(((char *)details->buf) + my_offset));
-                }
-                else if (details->atype == adios_short || details->atype == adios_unsigned_short) {
-                    sprintf(tmp_str, "%hx, ", *(short *)(((char *)details->buf) + my_offset));
-                }
-                else if (details->atype == adios_integer || details->atype == adios_unsigned_integer) {
-                    sprintf(tmp_str, "%x, ", *(int *)(((char *)details->buf) + my_offset));
-                }
-                else if (details->atype == adios_long || details->atype == adios_unsigned_long) {
-                    sprintf(tmp_str, "%lx, ", *(int *)(((char *)details->buf) + my_offset));
-                }
-                else if (details->atype == adios_real) {
-                    sprintf(tmp_str, "%f, ", *(float *)(((char *)details->buf) + my_offset));
-                }
-                else if (details->atype == adios_double) {
-                    sprintf(tmp_str, "%f, ", *(double *)(((char *)details->buf) + my_offset));
-                }
-                strncat(out_str, tmp_str, remaining);
-                remaining -= strlen(out_str);
-
-                index[current_dim] += details->atype_size;
-            }
-//            if (DEBUG > 3) printf("[%d][%d][%d] (my_offset==%d)\n", index[0], index[1], index[2], my_offset);
-            if (DEBUG > 3) printf("%s\n", out_str);
-        }
-    }
-}
-
-void print_chunk(aggregation_chunk_details_t *details)
-{
-    int *index=(int *)calloc(details->ndims, sizeof(int));
-    char tmp_str[20];
-    char out_str[1024];
-    int remaining=1023;
-
-    if (DEBUG > 3) printf("+++++++++++++++++++++++++++++\n");
-
-    if (DEBUG > 3) printf("fd==%d\n", details->fd);
-    if (DEBUG > 3) printf("var_path==%s\n", details->var_path);
-    if (DEBUG > 3) printf("var_name==%s\n", details->var_name);
-    if (DEBUG > 3) printf("ndims==%d\n", details->ndims);
-    if (DEBUG > 3) printf("len==%ld\n", details->len);
-    if (DEBUG > 3) printf("num_elements==%d\n", details->num_elements);
-    out_str[0]='\0';
-    remaining=1023;
-    for (int i=0;(i<details->ndims) && (remaining>0);i++) {
-        sprintf(tmp_str, "%ld,", details->offset[i]);
-        strncat(out_str, tmp_str, remaining);
-        remaining -= strlen(tmp_str);
-    }
-    if (DEBUG > 3) printf("offset[]==%s\n", out_str);
-    out_str[0]='\0';
-    remaining=1023;
-    for (int i=0;(i<details->ndims) && (remaining>0);i++) {
-        sprintf(tmp_str, "%ld,", details->count[i]);
-        strncat(out_str, tmp_str, remaining);
-        remaining -= strlen(tmp_str);
-    }
-    if (DEBUG > 3) printf("count[]==%s\n", out_str);
-    if (DEBUG > 3) printf("buf==%p\n", details->buf);
-
-//    int offset=0;
-//    int current_dim=0;
-//    recursive_print_chunk(details, offset, index, current_dim);
-    if (DEBUG > 3) printf("+++++++++++++++++++++++++++++\n");
-
-    free(index);
-}
-
-void print_chunk(aggregation_chunk_t *c)
-{
-    if (c->details == NULL) {
-        if (DEBUG > 3) printf("chunk has no details.  perhaps it was aggregated into another chunk.\n");
-        return;
-    }
-    print_chunk(c->details);
-}
-
-static void recursive_copy_chunk(aggregation_chunk_details_t *src,
-                                 aggregation_chunk_details_t *dst,
-                                 int src_offset,
-                                 int dst_offset,
-                                 int *src_index,
-                                 int *dst_index,
-                                 int current_dim)
-{
-    int my_src_offset=0;
-    int my_dst_offset=0;
-
-    if (current_dim < src->ndims-1) {
-        for (int i=0;i<src->count[current_dim];i++) {
-            my_src_offset = src_index[current_dim];
-            my_dst_offset = dst_index[current_dim];
-//            if (DEBUG > 3) printf("join_offset(%d) offset_diff[%d](%d)\n",
-//                    join_offset, current_dim, src->offset[current_dim] - dst->offset[current_dim]);
-            my_dst_offset += ((src->offset[current_dim] - dst->offset[current_dim]) * src->atype_size);
-            for (int j=current_dim+1;j<src->ndims;j++) {
-                my_src_offset *= src->count[j];
-                my_dst_offset *= dst->count[j];
-            }
-
-            src_index[current_dim+1]=0;
-            dst_index[current_dim+1]=0;
-            recursive_copy_chunk(src, dst, src_offset+my_src_offset, dst_offset+my_dst_offset,
-                                 src_index, dst_index, current_dim+1);
-            src_index[current_dim] += src->atype_size;
-            dst_index[current_dim] += dst->atype_size;
-        }
-    } else {
-        dst_offset += ((src->offset[current_dim] - dst->offset[current_dim]) * src->atype_size);
-        memcpy(((char *)dst->buf) + dst_offset,
-               ((char *)src->buf) + src_offset,
-               src->count[current_dim]*src->atype_size);
-    }
-}
-
-static void recursive_aggregate_chunks(aggregation_chunk_t *src1,
-                                       aggregation_chunk_t *src2,
-                                       aggregation_chunk_t *dst)
-{
-    int *src_index=(int *)calloc(src1->details->ndims, sizeof(int));
-    int *dst_index=(int *)calloc(dst->details->ndims, sizeof(int));
-    int src_offset=0;
-    int dst_offset=0;
-    int current_dim=0;
-
-    memset(src_index, 0, src1->details->ndims*sizeof(int));
-    memset(dst_index, 0, dst->details->ndims*sizeof(int));
-    recursive_copy_chunk(src1->details, dst->details, src_offset, dst_offset, src_index, dst_index, current_dim);
-    memset(src_index, 0, src2->details->ndims*sizeof(int));
-    memset(dst_index, 0, dst->details->ndims*sizeof(int));
-    recursive_copy_chunk(src2->details, dst->details, src_offset, dst_offset, src_index, dst_index, current_dim);
-
-    free(src_index);
-    free(dst_index);
-}
-
-static void copy_chunk(aggregation_chunk_details_t *src,
-                       aggregation_chunk_details_t *dst)
-{
-    int *src_index=(int *)calloc(src->ndims, sizeof(int));
-    int *dst_index=(int *)calloc(dst->ndims, sizeof(int));
-    int src_offset=0;
-    int dst_offset=0;
-    int current_dim=0;
-
-    memset(src_index, 0, src->ndims*sizeof(int));
-    memset(dst_index, 0, dst->ndims*sizeof(int));
-    recursive_copy_chunk(src, dst, src_offset, dst_offset, src_index, dst_index, current_dim);
-
-    free(src_index);
-    free(dst_index);
-}
-
-aggregation_chunk_t *aggregate_chunks(aggregation_chunk_t *c1,
-                                      aggregation_chunk_t *c2,
-                                      int join_dim)
-{
-    aggregation_chunk_t *out=new aggregation_chunk_t;
-
-    //if (DEBUG > 3) printf("entered aggregate_chunks\n");
-
-    assert(c1->details->ndims == c2->details->ndims);
-    assert(out != NULL);
-
-    out->details = new aggregation_chunk_details_t;
-
-    out->details->fd           = c1->details->fd;
-    strcpy(out->details->var_path, c1->details->var_path);
-    strcpy(out->details->var_name, c1->details->var_name);
-    out->details->ndims        = c1->details->ndims;
-//    out->details->buf          = calloc(c1->details->len+c2->details->len, c1->details->atype_size);
-    out->details->buf          = NULL;
-    out->details->atype        = c1->details->atype;
-    out->details->len          = c1->details->len+c2->details->len;
-    out->details->atype     = c1->details->atype;
-    out->details->num_elements = c1->details->num_elements+c2->details->num_elements;
-    out->details->atype_size   = c1->details->atype_size;
-    out->details->offset_path  = (char **)calloc(c1->details->ndims, sizeof(char *));
-    out->details->offset_name  = (char **)calloc(c1->details->ndims, sizeof(char *));
-    out->details->offset       = (uint64_t *)calloc(c1->details->ndims, sizeof(uint64_t));
-    out->details->count_path   = (char **)calloc(c1->details->ndims, sizeof(char *));
-    out->details->count_name   = (char **)calloc(c1->details->ndims, sizeof(char *));
-    out->details->count        = (uint64_t *)calloc(c1->details->ndims, sizeof(uint64_t));
-
-    for (int i=0;i<c1->details->ndims;i++) {
-        out->details->offset_path[i]  = strdup(c1->details->offset_path[i]);
-        out->details->offset_name[i]  = strdup(c1->details->offset_name[i]);
-        out->details->count_path[i]   = strdup(c1->details->count_path[i]);
-        out->details->count_name[i]   = strdup(c1->details->count_name[i]);
-    }
-    memcpy(out->details->offset, c1->details->offset, c1->details->ndims*sizeof(uint64_t));
-    memcpy(out->details->count, c1->details->count, c1->details->ndims*sizeof(uint64_t));
-    out->details->count[join_dim] += c2->details->count[join_dim];
-
-//    recursive_aggregate_chunks(c1, c2, out);
-
-    if (c1->component_chunks.size() > 0) {
-        out->component_chunks.merge(c1->component_chunks);
-        c1->component_chunks.clear();
-        destroy_chunk(c1->details);
-    } else {
-        out->component_chunks.push_back(c1->details);
-    }
-    c1->details = NULL;
-    if (c2->component_chunks.size() > 0) {
-        out->component_chunks.merge(c2->component_chunks);
-        c2->component_chunks.clear();
-        destroy_chunk(c2->details);
-    } else {
-        out->component_chunks.push_back(c2->details);
-    }
-    c2->details = NULL;
-
-    assert(out != NULL);
-
-    //if (DEBUG > 3) printf("finished\n");
-
-    return(out);
-}
-
-/*
- * Aggregate a particular variable in the file.
- *
- * Aggregation rules:
- *  - dimension count must be equal
- *  - strides must be equal
- *  - counts on matching faces must be equal
- *  -
- *
- */
-int try_aggregation(const int fd, const char *var_name)
-{
-    int aggregation_success=FALSE;
-
-    file_details_t  *file_details=NULL;
-    per_var_details_t *var_details=NULL;
-    aggregation_chunk_t *base_chunk=NULL;
-    aggregation_chunk_t *candidate_chunk=NULL;
-    aggregation_chunk_t *new_chunk=NULL;
-    chunks_iterator_t base_iter, candidate_iter;
-    int *offset_diff;
-    chunk_location_count_t chunk_location_count;
-    int dim_with_movement=-1;
-
-    chunks_t agg_chunks;
-
-    int failed=FALSE;
-
-    file_details = open_file_map[fd];
-    if (file_details == NULL) {
-//        if (DEBUG > 3) printf("agg failed for %s: file_details==NULL\n", var_name);
-        return(aggregation_success);
-    }
-    var_details = file_details->vars[var_name];
-    if (var_details == NULL) {
-//        if (DEBUG > 3) printf("agg failed for %s: var_details==NULL\n", var_name);
-        return(aggregation_success);
-    }
-    if (var_details->chunks->size() < 2) {
-//        if (DEBUG > 3) printf("returning with chunk count(%d)\n", var_details->chunks->size());
-        return(aggregation_success);
-    }
-    if (DEBUG > 3) printf("chunk count(%d)\n", var_details->chunks->size());
-
-
-    if (DEBUG > 3) printf("trying aggregation - fd(%d) var_name(%s)\n", fd, var_name);
-
-    var_details->chunks->sort(compare_chunks_for_aggregation);
-
-    if (DEBUG > 4) {
-        printf("*****************\n");
-        printf("start aggregation (begin list)\n");
-        printf("*****************\n");
-        int chunk_count;
-        aggregation_chunk_details_t **chunks = get_chunks(fd, var_name, &chunk_count);
-        for (int i=0;i<chunk_count;i++) {
-            print_chunk(chunks[i]);
-        }
-        free(chunks);
-        printf("*****************\n");
-        printf("start aggregation (end list)\n");
-        printf("*****************\n");
-    }
-
-    int success_this_pass=TRUE;
-    while (success_this_pass==TRUE) {
-        success_this_pass=FALSE;
-
-//        if (DEBUG > 3) printf("top: while loop\n");
-
-
-        base_iter = var_details->chunks->begin();
-        base_chunk = *base_iter;
-        offset_diff=new int[base_chunk->details->ndims];
-        for (;base_iter != var_details->chunks->end(); ++base_iter) {
-//            if (DEBUG > 3) printf("top: base_iter loop\n");
-
-            base_chunk = *base_iter;
-
-            //if (base_chunk != NULL)      print_chunk(base_chunk);
-
-            // look for a chunk that can be aggregated to the base chunk
-            candidate_iter = base_iter;
-            candidate_iter++;
-            for (;candidate_iter != var_details->chunks->end(); ++candidate_iter) {
-//                if (DEBUG > 3) printf("top: candidate_iter loop\n");
-
-                candidate_chunk = *candidate_iter;
-
-                //if (candidate_chunk != NULL) print_chunk(candidate_chunk);
-
-                failed=FALSE;
-
-                if (base_chunk->details->ndims != candidate_chunk->details->ndims) {
-                    continue;
-                }
-//                if (candidate_chunk->details->offset[0] != base_chunk->details->offset[0]) {
-//                    continue;
-//                }
-                for (int i=0; i<base_chunk->details->ndims; i++) {
-                    offset_diff[i] = candidate_chunk->details->offset[i] - base_chunk->details->offset[i];
-                }
-                if (failed) continue;
-
-                chunk_location_count.ahead_count=0;
-                chunk_location_count.behind_count=0;
-                chunk_location_count.same_count=0;
-                chunk_location_count.no_match_count=0;
-                int agg_dims=base_chunk->details->ndims; /* the number of dimensions to aggregate */
-                for (int i=0; i<agg_dims; i++) {
-                    if ((offset_diff[i] < 0) && (-offset_diff[i] == candidate_chunk->details->count[i])) {
-                        // the candidate is "behind/below" and touching the base chunk in this dimension
-                        chunk_location_count.behind_count++;
-                        dim_with_movement=i;
-                    } else if ((offset_diff[i] > 0) && (offset_diff[i] == base_chunk->details->count[i])) {
-                        // the candidate is "ahead of/above" and touching the base chunk in this dimension
-                        chunk_location_count.ahead_count++;
-                        dim_with_movement=i;
-                    } else if (offset_diff[i] == 0) {
-                        // the candidate is "equal to" the base chunk in this dimension
-                        chunk_location_count.same_count++;
-                    } else {
-                        // the candidate and the base chunk don't match in this dimension
-                        chunk_location_count.no_match_count++;
-                    }
-                }
-
-#ifdef DEBUG
-                /*
-                 * These tests can be interesting, but are not required to get the job done.
-                 */
-                if (chunk_location_count.no_match_count > 0) {
-                    // no matching face found.  can't aggregate.
-                    continue;
-                }
-
-                if (chunk_location_count.same_count == base_chunk->ndims) {
-                    // base and candidate have same offset.  bad?  can't aggregate.
-                    continue;
-                }
-
-                if (chunk_location_count.ahead_count > 1) {
-                    // movement in more than one direction
-                    continue;
-                }
-                if (chunk_location_count.behind_count > 1) {
-                    // movement in more than one direction
-                    continue;
-                }
-                if ((chunk_location_count.ahead_count > 0)  &&
-                        (chunk_location_count.behind_count > 0)) {
-                    // movement in more than one direction
-                    continue;
-                }
-
-                if ((chunk_location_count.ahead_count == 0)  &&
-                        (chunk_location_count.behind_count == 0)) {
-                    // possible movement, but the chunks don't touch
-                    continue;
-                }
-#endif
-
-                // check that the matching faces have the same dimensions
-                for (int i=0; i<base_chunk->details->ndims; i++) {
-                    if ((i != dim_with_movement) &&
-                        (base_chunk->details->count[i] != candidate_chunk->details->count[i])) {
-                        failed=TRUE;
-                        break;
-                    }
-                }
-                if (failed) continue;
-
-                /*
-                 * Do NOT uncomment these print_chunk() lines in production code.
-                 * They are *very* slow even if the debug level is set low and
-                 * nothing is being logged.
-                 */
-//                netcdf_debug_level=LOG_ALL;
-//                if (DEBUG > 3) printf("*****************\n");
-//                if (DEBUG > 3) printf("base chunk\n");
-//                if (DEBUG > 3) printf("*****************\n");
-//                if (base_chunk != NULL)      print_chunk(base_chunk);
-//                if (DEBUG > 3) printf("*****************\n");
-//                if (DEBUG > 3) printf("candidate chunk\n");
-//                if (DEBUG > 3) printf("*****************\n");
-//                if (candidate_chunk != NULL) print_chunk(candidate_chunk);
-//                netcdf_debug_level=old;
-
-                if ((chunk_location_count.ahead_count == 1)  &&
-                        (chunk_location_count.behind_count == 0) &&
-                        (chunk_location_count.same_count == agg_dims-1)) {
-                    // aggregation is base + candidate
-                    new_chunk = aggregate_chunks(base_chunk, candidate_chunk, dim_with_movement);
-                } else if ((chunk_location_count.ahead_count == 0)  &&
-                        (chunk_location_count.behind_count == 1) &&
-                        (chunk_location_count.same_count == agg_dims-1)) {
-                    // aggregation is candidate + base
-                    new_chunk = aggregate_chunks(candidate_chunk, base_chunk, dim_with_movement);
-                } else {
-                    // chunks aren't aligned
-                    //if (DEBUG > 3) printf("**********\nchunks are not aligned\n**********\n");
-                    continue;
-                }
-
-                assert(new_chunk != NULL);
-
-                /*
-                 * Do NOT uncomment these print_chunk() lines in production code.
-                 * They are *very* slow even if the debug level is set low and
-                 * nothing is being logged.
-                 */
-//                netcdf_debug_level=LOG_ALL;
-//                if (DEBUG > 3) printf("*****************\n");
-//                if (DEBUG > 3) printf("new chunk\n");
-//                if (DEBUG > 3) printf("*****************\n");
-//                if (new_chunk != NULL)       print_chunk(new_chunk);
-//                netcdf_debug_level=old;
-
-                var_details->chunks->remove(base_chunk);
-                var_details->chunks->remove(candidate_chunk);
-                delete base_chunk;
-                delete candidate_chunk;
-
-                agg_chunks.push_back(new_chunk);
-
-                aggregation_success = TRUE;
-                success_this_pass = TRUE;
-
-                break;
-            }
-            if (success_this_pass == TRUE) break;
-        }
-        chunks_iterator_t agg_iter = agg_chunks.begin();
-        for (;agg_iter != agg_chunks.end();agg_iter++) {
-            var_details->chunks->push_back(*agg_iter);
-        }
-        agg_chunks.clear();
-
-        delete[] offset_diff;
-    }
-
-    if (DEBUG > 4) {
-        printf("*****************\n");
-        printf("end aggregation (begin list)\n");
-        printf("*****************\n");
-        int chunk_count;
-        aggregation_chunk_details_t **chunks = get_chunks(fd, var_name, &chunk_count);
-        for (int i=0;i<chunk_count;i++) {
-            print_chunk(chunks[i]);
-        }
-        free(chunks);
-        printf("*****************\n");
-        printf("end aggregation (end list)\n");
-        printf("*****************\n");
-    }
-
-//    netcdf_debug_level=LOG_ALL;
-    chunks_iterator_t dst_iter=var_details->chunks->begin();
-    for(;dst_iter != var_details->chunks->end();dst_iter++) {
-        chunk_details_iterator_t component_iter=(*dst_iter)->component_chunks.begin();
-        if (((*dst_iter)->details->buf == NULL) && ((*dst_iter)->details->len > 0)) {
-            (*dst_iter)->details->buf = (char *)malloc((*dst_iter)->details->len);
-//            if (DEBUG > 3) printf("allocated dst_iter->details->buf(%p), len(%ld)\n",
-//                    (*dst_iter)->details->buf,
-//                    (*dst_iter)->details->len);
-        } else {
-//            if (DEBUG > 3) printf("did not allocate dst_iter->details->buf(%p)\n", (*dst_iter)->details->buf);
-        }
-        for(;component_iter != (*dst_iter)->component_chunks.end();component_iter++) {
-            //if (DEBUG > 3) printf("copying component\n");
-            copy_chunk(*component_iter, (*dst_iter)->details);
-            //if (DEBUG > 3) printf("destroying component\n");
-            destroy_chunk(*component_iter);
-        }
-        (*dst_iter)->component_chunks.clear();
-    }
-//    netcdf_debug_level=old;
-
-//    netcdf_debug_level=LOG_ALL;
-    //if (DEBUG > 3) printf("*****************\n");
-    //if (DEBUG > 3) printf("chunks after aggregation\n");
-    //if (DEBUG > 3) printf("*****************\n");
-//    base_iter = var_details->chunks->begin();
-//    for (;base_iter != var_details->chunks->end(); ++base_iter) {
-//        base_chunk = *base_iter;
-//        if (base_chunk != NULL)
-//            print_chunk(base_chunk);
-//    }
-//    netcdf_debug_level=old;
-
-    return(aggregation_success);
-}
-
-/*
- * Aggregate all variables in the file.
- *
- */
-int try_aggregation(const int fd)
-{
-    int aggregation_success=FALSE;
-
-    file_details_t    *file_details=NULL;
-    var_map_iterator_t var_iter;
-    per_var_details_t *var_details=NULL;
-
-    if (DEBUG > 3) printf("entered try_aggregation - fd(%d)\n", fd);
-
-    file_details = open_file_map[fd];
-    if (file_details == NULL) {
-        return(aggregation_success);
-    }
-    var_iter = file_details->vars.begin();
-    for (; var_iter != file_details->vars.end(); var_iter++) {
-        var_details = var_iter->second;
-        if (var_details == NULL) {
-//            if (DEBUG > 3) printf("var_details==NULL.  continuing\n");
-            continue;
-        } else {
-//            if (DEBUG > 3) printf("aggregating var_name(%s)\n", var_details->var_name);
-            while(try_aggregation(fd, var_details->var_name) == TRUE);
-        }
-    }
-
-    aggregation_success = TRUE;
-
-    return(aggregation_success);
-}
-
-int aggregate_data_ready_to_write(const int fd, const char *var_name)
-{
-//    file_details_t *details = open_file_map[fd];
-//    int chunks_needed=0;
-
-//    if (details->num_participants > 0) {
-//        chunks_needed = details->num_participants;
-//    } else {
-//        chunks_needed = details->participants->size();
-//    }
-//
-//    if (details->vars[var_name]->chunks_received == chunks_needed) {
-//        return TRUE;
-//    }
-
-    return FALSE;
-}
-
-int cache_data_ready_to_write(const int fd, const char *var_name)
-{
-//    file_details_t *details = open_file_map[fd];
-//    int chunks_needed=0;
-
-//    if (details->num_participants > 0) {
-//        chunks_needed = details->num_participants;
-//    } else {
-//        chunks_needed = details->participants->size();
-//    }
-//
-//    if (details->vars[var_name]->chunks_received == chunks_needed) {
-//        return TRUE;
-//    }
-
-    return FALSE;
-}
-
-aggregation_chunk_details_t **get_chunks(const int fd, const char *var_name, int *chunk_count)
-{
-    file_details_t *details=NULL;
-    per_var_details_t *var_details=NULL;
-    aggregation_chunk_details_t **chunks=NULL;
-    chunks_iterator_t iter;
-
-    if (DEBUG > 3) printf("entered get_chunks - fd(%d) var_name(%s)\n", fd, var_name);
-
-    *chunk_count=0;
-
-    details = open_file_map[fd];
-    if (details == NULL) {
-        return(NULL);
-    }
-    var_details = details->vars[var_name];
-    if (var_details == NULL) {
-        return(NULL);
-    }
-
-    *chunk_count = details->vars[var_name]->chunks->size();
-
-    if (DEBUG > 3) printf("found %d chunks to return\n", *chunk_count);
-
-    if (*chunk_count == 0) {
-        return(NULL);
-    }
-    chunks = (aggregation_chunk_details_t **)malloc(*chunk_count*sizeof(aggregation_chunk_details_t *));
-
-    var_details->chunks->sort(compare_chunks_for_caching);
-
-    iter = var_details->chunks->begin();
-    for (int i=0;iter != var_details->chunks->end(); ++iter,i++) {
-        chunks[i] = (*iter)->details;
-//        print_chunk(chunks[i]);
-    }
-
-    //if (DEBUG > 3) printf("finished\n");
-
-    return(chunks);
-}
-
-aggregation_chunk_details_t **get_chunks(const int fd, int *chunk_count)
-{
-    file_details_t  *details=NULL;
-    var_map_iterator_t var_iter;
-    per_var_details_t *var_details=NULL;
-    aggregation_chunk_details_t **chunks=NULL;
-    chunks_iterator_t chunks_iter;
-
-    if (DEBUG > 3) printf("entered get_chunks - fd(%d)\n", fd);
-
-    *chunk_count=0;
-
-    details = open_file_map[fd];
-    if (details == NULL) {
-        return(NULL);
-    }
-    var_iter = details->vars.begin();
-    for (; var_iter != details->vars.end(); ++var_iter) {
-        var_details = var_iter->second;
-        *chunk_count += var_details->chunks->size();
-    }
-
-    if (DEBUG > 3) printf("found %d chunks to return\n", *chunk_count);
-
-    if (*chunk_count == 0) {
-        return(NULL);
-    }
-    chunks = (aggregation_chunk_details_t **)malloc(*chunk_count*sizeof(aggregation_chunk_details_t *));
-
-    int i=0;
-    var_iter = details->vars.begin();
-    for (; var_iter != details->vars.end(); var_iter++) {
-        var_details = var_iter->second;
-        var_details->chunks->sort(compare_chunks_for_caching);
-        chunks_iter = var_details->chunks->begin();
-        for (;chunks_iter != var_details->chunks->end(); ++chunks_iter,i++) {
-            chunks[i] = (*chunks_iter)->details;
-//            print_chunk(chunks[i]);
-        }
-    }
-
-    //if (DEBUG > 3) printf("finished\n");
-
-    return(chunks);
-}
diff --git a/src/nssi/aggregation.h b/src/nssi/aggregation.h
deleted file mode 100644
index 4c25a2c..0000000
--- a/src/nssi/aggregation.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * aggregation.h
- *
- *  Created on: Mar 9, 2009
- *      Author: thkorde
- */
-
-#ifndef AGGREGATION_H_
-#define AGGREGATION_H_
-
-//#include "adios.h"
-#include "adios_types.h"
-//#include "adios_internals.h"
-
-#include "adios_nssi_args.h"
-
-struct aggregation_chunk_details_t {
-    int  fd;
-    char var_path[ADIOS_PATH_MAX];
-    char var_name[ADIOS_PATH_MAX];
-    int  ndims;
-
-    void     *buf;          /* the data */
-    uint64_t  len;          /* length of buf in bytes */
-    int       num_elements; /* number of datatype elements in buf (len/atype_size) */
-
-    enum ADIOS_DATATYPES atype; /* adios type of data in buf*/
-    int                  atype_size;
-
-    char    **offset_path;
-    char    **offset_name;
-    uint64_t *offset;     /* starting corner (eg. 0,0,0 is the origin of a cube) */
-    char    **count_path;
-    char    **count_name;
-    uint64_t *count;      /* num elements in each dimension (eg. 3,3,3 is a cube of size 3) */
-};
-typedef struct aggregation_chunk_details_t aggregation_chunk_details_t;
-
-int use_aggregation(const int fd);
-int use_caching(const int fd);
-int use_collective(const int fd);
-int use_independent(const int fd);
-int use_direct(const int fd);
-void add_file(const int fd, const write_type write_type);
-void add_chunk(aggregation_chunk_details_t *chunk);
-void cleanup_aggregation_chunks(const int fd);
-void cleanup_aggregation_chunks(const int fd, const char *var_name);
-int try_aggregation(const int fd);
-int try_aggregation(const int fd, const char *var_name);
-int aggregate_data_ready_to_write(const int fd, const char *var_name);
-int cache_data_ready_to_write(const int fd, const char *var_name);
-aggregation_chunk_details_t **get_chunks(const int fd, int *chunk_count);
-aggregation_chunk_details_t **get_chunks(const int fd, const char *var_name, int *chunk_count);
-void print_chunk(aggregation_chunk_details_t *c);
-
-
-
-#endif /* AGGREGATION_H_ */
diff --git a/src/nssi/io_timer.h b/src/nssi/io_timer.h
deleted file mode 100644
index da41182..0000000
--- a/src/nssi/io_timer.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * io_timer.h
- *
- *  Created on: Apr 20, 2009
- *      Author: thkorde
- */
-
-#ifndef IO_TIMER_H_
-#define IO_TIMER_H_
-
-#if defined(USE_TIMERS)
-#define Start_Timer(timer) { timer = MPI_Wtime(); }
-#define Stop_Timer(name, timer)  { timer = MPI_Wtime() - timer; printf("(%d) %s Time = %10.8f\n", __LINE__, name, timer); }
-#define Func_Timer(name, f) { if (global_rank==0) { double callTime; Start_Timer(callTime); f; Stop_Timer(name, callTime); } else { f; } }
-#else
-#define Start_Timer(timer)  {}
-#define Stop_Timer(name, timer)   {}
-#define Func_Timer(name, f) { f; }
-#endif
-
-#if defined(USE_TIMERS) && defined(USE_TIMER_BARRIERS)
-#define Timer_Barrier(comm) { MPI_Barrier(comm); }
-#else
-#define Timer_Barrier(comm) {}
-#endif
-
-#endif /* IO_TIMER_H_ */
diff --git a/src/nssi/nssi_coupling_server.cpp b/src/nssi/nssi_coupling_server.cpp
deleted file mode 100644
index ba9b418..0000000
--- a/src/nssi/nssi_coupling_server.cpp
+++ /dev/null
@@ -1,1703 +0,0 @@
-/**  @file main.c
- *
- *   @brief Driver for the LWFS name server.
- *
- *   @author Ron Oldfield (raoldfi\@sandia.gov).
- *   $Revision: 1264 $.
- *   $Date: 2007-02-27 15:30:26 -0700 (Tue, 27 Feb 2007) $.
- */
-
-
-#ifndef __STDC_CONSTANT_MACROS
-#define __STDC_CONSTANT_MACROS
-#endif
-
-#include "config.h"
-
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/mman.h>
-
-#include "adios.h"
-
-#ifdef HAVE_NSSI
-#ifdef HAVE_PORTALS
-#include "nssi_ptls.h"
-#endif
-#ifdef HAVE_INFINIBAND
-#include "nssi_ib.h"
-#endif
-#include "nssi_server.h"
-#include "nssi_logger.h"
-
-#include "adios_nssi_args.h"
-#include "adios_nssi_config.h"
-#endif
-
-#include "io_timer.h"
-
-#include <mpi.h>
-#include <algorithm>
-#include <map>
-#include <list>
-
-using namespace std;
-
-
-
-#ifdef __LIBCATAMOUNT__
-#define ntohs(value) 0
-#endif
-
-
-static int global_rank=-1;
-static int DEBUG=0;
-
-
-struct var_details_t {
-    char var_path[ADIOS_PATH_MAX];
-    char var_name[ADIOS_PATH_MAX];
-    int  ndims;
-    int8_t is_scalar;
-
-    uint64_t  cache_offset; /* offset into the timestep cache_buffer where the var data can be found */
-    char     *cache_ptr;    /* address of var data (== cache_buffer+cache_offset) */
-    uint64_t  len;          /* var data length in bytes */
-    uint64_t  num_elements; /* number of datatype elements in buf (len/atype_size) */
-
-    enum ADIOS_DATATYPES atype; /* adios type of data in buf*/
-    int32_t              atype_size;
-
-    char    **offset_path;
-    char    **offset_name;
-    uint64_t *offset;     /* starting corner (eg. 0,0,0 is the origin of a cube) */
-    char    **count_path;
-    char    **count_name;
-    uint64_t *count;      /* num elements in each dimension (eg. 3,3,3 is a cube of size 3) */
-    char    **global_path;
-    char    **global_name;
-    uint64_t *global;      /* num elements in each dimension (eg. 3,3,3 is a cube of size 3) */
-
-    var_details_t() {
-        var_path[0]='\0';
-        var_name[0]='\0';
-        is_scalar=TRUE;
-        ndims=0;
-        cache_offset=0;
-        cache_ptr=NULL;
-        len=0;
-        num_elements=0;
-        atype=adios_unknown;
-        atype_size=0;
-        offset_path=NULL;
-        offset_name=NULL;
-        offset=NULL;
-        count_path=NULL;
-        count_name=NULL;
-        count=NULL;
-        global_path=NULL;
-        global_name=NULL;
-        global=NULL;
-    }
-};
-struct var_details_lt
-{
-    bool operator()(const char* vn1, const char* vn2) const
-    {
-        if (DEBUG>2) printf("var_details_lt(vn1=%s ; vn2=%s)\n",
-                vn1, vn2);
-
-        if (strcmp(vn1, vn2) <0) return TRUE;
-
-        return FALSE;
-    }
-};
-
-/* Map of variable details */
-typedef map<char*, var_details_t*, var_details_lt> var_details_map_t;
-typedef map<char*, var_details_t*, var_details_lt>::iterator var_details_map_iterator_t;
-typedef pair<char*, var_details_t*> var_details_map_pair_t;
-static pthread_mutex_t var_details_map_mutex=PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-static pthread_cond_t  var_details_map_cond =PTHREAD_COND_INITIALIZER;
-
-typedef list<char*> var_details_list_t;
-typedef list<char*>::iterator var_details_list_iterator_t;
-
-
-struct file_timestep_t {
-    int32_t  timestep;
-    int8_t   is_complete;
-    int8_t   is_locked;
-    uint64_t group_size;
-    char    *cache_buffer;
-    int64_t  cache_size;
-    int64_t  bytes_left;
-
-    var_details_map_t vars_map;
-    var_details_list_t vars_list;
-
-    file_timestep_t(int32_t ts) {
-        timestep=ts;
-        is_complete=FALSE;
-        is_locked=FALSE;
-        group_size=0;
-        cache_buffer=NULL;
-        cache_size=0;
-    }
-};
-
-/* list of timesteps */
-typedef list<file_timestep_t*> file_timestep_list_t;
-typedef list<file_timestep_t*>::iterator file_timestep_list_iterator_t;
-static pthread_mutex_t file_timestep_list_mutex=PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-static pthread_cond_t  file_timestep_list_cond =PTHREAD_COND_INITIALIZER;
-
-
-/* Need a struct to encapsulate open file info.
- */
-struct open_file {
-    char    writer_id[ADIOS_PATH_MAX];
-    char    reader_id[ADIOS_PATH_MAX];
-    char    gname[ADIOS_PATH_MAX];
-    char    ofname[ADIOS_PATH_MAX];
-    char    omode[2];
-    int64_t ofdesc;
-    int8_t  is_open;
-    int64_t current_timestep;
-    int64_t last_written_timestep;
-    file_timestep_list_t timesteps;
-
-    open_file(const char *name) {
-        strcpy(ofname, name);
-        ofdesc=-1;
-        current_timestep=0;
-        last_written_timestep=0;
-        is_open=FALSE;
-    }
-    open_file(const char *name, const int64_t desc) {
-        strcpy(ofname, name);
-        ofdesc=desc;
-        current_timestep=0;
-        last_written_timestep=0;
-        is_open=FALSE;
-    }
-};
-struct open_file_lt
-{
-    bool operator()(const char* ofn1, const char* ofn2) const
-    {
-        if (DEBUG>2) printf("open_file_lt(ofn1=%s ; ofn2=%s)\n",
-                ofn1, ofn2);
-
-        if (strcmp(ofn1, ofn2) <0) return TRUE;
-
-        return FALSE;
-    }
-};
-
-/* Map of open files */
-static map<char*, open_file*, open_file_lt> open_file_map;
-typedef map<char*, open_file*, open_file_lt>::iterator open_file_map_iterator_t;
-typedef pair<char*, open_file*> open_file_map_pair_t;
-
-
-static map<int64_t, open_file*> open_filedesc_map;
-typedef map<int64_t, open_file*>::iterator open_filedesc_map_iterator_t;
-typedef pair<int64_t, open_file*> open_filedesc_map_pair_t;
-
-
-static pthread_mutex_t open_file_map_mutex=PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-static pthread_cond_t  open_file_map_cond =PTHREAD_COND_INITIALIZER;
-
-
-
-/* -------------------- PRIVATE FUNCTIONS ---------- */
-
-void open_file_printall(char *prefix)
-{
-    open_file *of=NULL;
-    open_file_map_iterator_t iter=open_file_map.begin();
-    while (iter != open_file_map.end()) {
-        char *key=iter->first;
-        of=iter->second;
-        if (DEBUG>5) printf("%s: myrank(%d): open_file(key=%s ; of=%p ; of->ofname=%s ; of->ofdesc=%ld)\n",
-                prefix, global_rank, key, of, of->ofname, of->ofdesc);
-
-        iter++;
-    }
-}
-
-open_file *open_file_add(char *fname)
-{
-    open_file *of=NULL;
-
-    if (DEBUG>2) printf("open_file_add(fname=%s)\n",
-            fname);
-
-    char *key=strdup(fname);
-
-    of = new open_file(fname);
-    of->ofdesc = (int64_t)of;
-    open_file_map[key]=of;
-    open_filedesc_map[of->ofdesc]=of;
-
-    open_file_printall("open_file_add");
-
-    return(of);
-}
-open_file *open_file_get(char *fname)
-{
-    open_file *of=NULL;
-
-    open_file_printall("open_file_get(by fname)");
-
-    open_file_map_iterator_t iter=open_file_map.find(fname);
-    if (iter != open_file_map.end()) {
-        of=iter->second;
-    }
-
-    return(of);
-}
-open_file *open_file_get(int64_t fd)
-{
-    open_file *of=NULL;
-
-    open_file_printall("open_file_get(by fd)");
-
-    open_filedesc_map_iterator_t iter=open_filedesc_map.find(fd);
-    if (iter != open_filedesc_map.end()) {
-        of=iter->second;
-    }
-
-    return(of);
-}
-void open_file_del(char *fname)
-{
-    open_file *of=open_file_get(fname);
-
-    if (of!=NULL) {
-        open_filedesc_map.erase(of->ofdesc);
-    }
-
-    open_file_map.erase(fname);
-}
-
-file_timestep_t *timestep_get_current(open_file *of)
-{
-    file_timestep_t *ts=NULL;
-    file_timestep_list_iterator_t iter=of->timesteps.begin();
-    for(;iter != of->timesteps.end();iter++) {
-        if ((*iter)->timestep == of->current_timestep) {
-            ts=*iter;
-            break;
-        }
-    }
-    return(ts);
-}
-file_timestep_t *timestep_get(open_file *of, uint64_t ts_num)
-{
-    file_timestep_t *ts=NULL;
-    file_timestep_list_iterator_t iter=of->timesteps.begin();
-    for(;iter != of->timesteps.end();iter++) {
-        if ((*iter)->timestep == ts_num) {
-            ts=*iter;
-            break;
-        }
-    }
-    return(ts);
-}
-
-void var_details_add(struct open_file *of, var_details_t *vd)
-{
-    file_timestep_t *ts=NULL;
-    ts = timestep_get_current(of);
-
-    char *key=strdup(vd->var_name);
-
-    ts->vars_map[key]=vd;
-    ts->vars_list.push_back(key);
-}
-var_details_t *var_details_get(struct open_file *of, char *vname)
-{
-    file_timestep_t *ts=NULL;
-    var_details_t *vd=NULL;
-
-    ts = timestep_get_current(of);
-    var_details_map_iterator_t iter=ts->vars_map.find(vname);
-    if (iter != ts->vars_map.end()) {
-        vd=iter->second;
-    }
-
-    return(vd);
-}
-var_details_t *var_details_get(struct open_file *of, uint64_t ts_num, char *vname)
-{
-    file_timestep_t *ts=NULL;
-    var_details_t *vd=NULL;
-
-    ts = timestep_get(of, ts_num);
-    var_details_map_iterator_t iter=ts->vars_map.find(vname);
-    if (iter != ts->vars_map.end()) {
-        vd=iter->second;
-    }
-
-    return(vd);
-}
-void var_details_del(struct open_file *of, char *vname)
-{
-    file_timestep_t *ts=NULL;
-    ts = timestep_get_current(of);
-    ts->vars_map.erase(vname);
-}
-
-
-
-int grank, gsize;
-
-MPI_Comm comm_self=MPI_COMM_SELF;
-MPI_Comm comm_world=MPI_COMM_WORLD;
-
-
-/**
- * The next 3 utility functions are lifted from IOR.
- */
-/******************************************************************************/
-/*
- * Extract key/value pair from hint string.
- */
-
-void
-ExtractHint(char * settingVal,
-            char * valueVal,
-            char * hintString)
-{
-    char * settingPtr,
-         * valuePtr,
-         * tmpPtr1,
-         * tmpPtr2;
-
-    settingPtr = (char *)strtok(hintString, "=");
-    valuePtr = (char *)strtok(NULL, " \t\r\n");
-    tmpPtr1 = settingPtr;
-    tmpPtr2 = (char *)strstr(settingPtr, "MPIIO_HINT__");
-    if (tmpPtr1 == tmpPtr2) {
-        settingPtr += strlen("MPIIO_HINT__");
-    }
-    strcpy(settingVal, settingPtr);
-    strcpy(valueVal, valuePtr);
-} /* ExtractHint() */
-
-
-/******************************************************************************/
-/*
- * Set hints for MPIIO, HDF5, or NCMPI.
- */
-#define MAX_HINT_STR 1024
-void
-SetHints(MPI_Info * mpiHints, char * hintsFileName)
-{
-    char           hintString[MAX_HINT_STR],
-                   settingVal[MAX_HINT_STR],
-                   valueVal[MAX_HINT_STR];
-    extern char ** environ;
-    int            i;
-    FILE         * fd;
-
-    /*
-     * This routine checks for hints from the environment and/or from the
-     * hints files.  The hints are of the form:
-     * 'MPIIO_HINT__<hint>=<value>', <hint> is the full name of the hint
-     * to be set, and <value> is the hint value.
-     * E.g., 'setenv MPIIO_HINT__panfs_concurrent_write 1'
-     * or 'MPIIO_HINT__panfs_concurrent_write=1' in the hints file.
-     */
-    MPI_Info_create(mpiHints);
-
-    /* get hints from environment */
-    for (i = 0; environ[i] != NULL; i++) {
-        /* if this is an IOR_HINT, pass the hint to the info object */
-        if (strncmp(environ[i], "MPIIO_HINT", strlen("MPIIO_HINT")) == 0) {
-            strcpy(hintString, environ[i]);
-            ExtractHint(settingVal, valueVal, hintString);
-            MPI_Info_set(*mpiHints, settingVal, valueVal);
-        }
-    }
-
-    /* get hints from hints file */
-    if (strcmp(hintsFileName, "") != 0) {
-
-        /* open the hint file */
-        fd = fopen(hintsFileName, "r");
-        if (fd == NULL) {
-            printf("cannot open hints file\n");
-        } else {
-            /* iterate over hints file */
-            while(fgets(hintString, MAX_HINT_STR, fd) != NULL) {
-                if (strncmp(hintString, "MPIIO_HINT", strlen("MPIIO_HINT")) == 0) {
-                    ExtractHint(settingVal, valueVal, hintString);
-                    MPI_Info_set(*mpiHints, settingVal, valueVal);
-                }
-            }
-            /* close the hints files */
-            if (fclose(fd) != 0) printf("cannot close hints file\n");
-        }
-    }
-} /* SetHints() */
-
-
-/******************************************************************************/
-/*
- * Show all hints (key/value pairs) in an MPI_Info object.
- */
-
-void ShowHints(MPI_Info * mpiHints)
-{
-    char key[MPI_MAX_INFO_VAL],
-         value[MPI_MAX_INFO_VAL];
-    int  flag,
-         i,
-         nkeys;
-
-    MPI_Info_get_nkeys(*mpiHints, &nkeys);
-
-    for (i = 0; i < nkeys; i++) {
-        MPI_Info_get_nthkey(*mpiHints, i, key);
-        MPI_Info_get(*mpiHints, key, MPI_MAX_INFO_VAL-1, value, &flag);
-        printf("mpiHint[%d]: %s = %s\n", i, key, value);
-    }
-} /* ShowHints() */
-
-
-int32_t getTypeSize(
-        enum ADIOS_DATATYPES type,
-        void *val)
-{
-    switch (type)
-    {
-    case adios_byte:
-    case adios_unsigned_byte:
-        return 1;
-
-    case adios_string:
-        return strlen ((char *) val);
-
-    case adios_short:
-    case adios_unsigned_short:
-        return 2;
-
-    case adios_integer:
-    case adios_unsigned_integer:
-        return 4;
-
-    case adios_real:
-        return 4;
-
-    case adios_long:
-    case adios_unsigned_long:
-        return 8;
-
-    case adios_double:
-        return 8;
-
-    case adios_long_double:
-        return 16;
-
-    case adios_complex:
-        return 2 * 4;
-
-    case adios_double_complex:
-        return 2 * 8;
-
-    default:
-        return -1;
-    }
-}
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int adios_nssi_filter_is_anon_dim(
-        int fd,
-        const char *dimname);
-extern void adios_nssi_filter_set_anon_dim(
-        int fd,
-        const char *dimname,
-        const uint64_t dimvalue);
-
-#ifdef __cplusplus
-}
-#endif
-int write_cache(const char *client_id, int8_t free_memory)
-{
-    int rc=0;
-
-    int timestamps_written=0;
-
-    if (DEBUG>2) printf("myrank(%d): enter write_cache(client_id=%s)\n", grank, client_id);
-
-
-    open_file_map_iterator_t of_iter=open_file_map.begin();
-    for(;of_iter != open_file_map.end();of_iter++) {
-        open_file *of=of_iter->second;
-
-        if ((client_id != NULL) && (strcmp(client_id, of->writer_id)) != 0) {
-            fprintf(stdout, "flusher != writer - file(%s) client_id(%s) writer_id(%s)\n", of->ofname, client_id, of->writer_id);
-            continue;
-        }
-
-        int64_t fd;
-        if (DEBUG>3) printf("start adios_open\n");
-        if (DEBUG>3) printf("adios_open: using MPI_COMM_WORLD\n");
-        Func_Timer("adios_open", rc = adios_open(&fd, of->gname, of->ofname, of->omode, comm_world););
-        if (rc != 0) {
-            printf("Error opening file \"%s\": %d\n", of->ofname, rc);
-        }
-        if (DEBUG>3) printf("end adios_open\n");
-
-        file_timestep_list_iterator_t ts_iter=of->timesteps.begin();
-        while(ts_iter != of->timesteps.end()) {
-            var_details_t *vd=NULL;
-
-            file_timestep_t *ts=*ts_iter;
-
-            fprintf(stdout, "timestep - file(%s) timestep(%ld) is_locked(%d) is_complete(%d)\n",
-                    of->ofname, ts->timestep, ts->is_locked, ts->is_complete);
-            if (ts->is_locked == TRUE) {
-                /* a reader has this timestep locked */
-                fprintf(stdout, "timestep is locked - file(%s) timestep(%ld) reader_id(%s)\n", of->ofname, ts->timestep, of->reader_id);
-//                break;
-            }
-            if (ts->is_complete == FALSE) {
-                /* the writer has not finished this timestep */
-                fprintf(stdout, "timestep is NOT complete - file(%s) timestep(%ld)\n", of->ofname, ts->timestep);
-                break;
-            }
-
-            uint64_t total_size=0;
-            Func_Timer("adios_group_size", rc = adios_group_size(fd, ts->group_size, &total_size););
-            if (rc != 0) {
-                printf("adios_group_size failed: %d\n", rc);
-            }
-
-            var_details_list_iterator_t vd_list_iter=ts->vars_list.begin();
-            for(;vd_list_iter != ts->vars_list.end();vd_list_iter++) {
-                var_details_map_iterator_t vd_iter=ts->vars_map.find(*vd_list_iter);
-                if (vd_iter == ts->vars_map.end()) {
-                    fprintf(stdout, "couldn't find vname(%s) in the vd map\n", *vd_list_iter);
-                    continue;
-                }
-
-                vd = vd_iter->second;
-
-                if (!vd->is_scalar) {
-                    for(int i=0;i<vd->ndims;i++) {
-                        vd->offset[i]=0;
-                        if (DEBUG>3) printf("writing offset myrank(%d) vd(%d) vpath(%s) vname(%s) opath(%s) oname(%s) odata(%lu)\n",
-                                grank, i, vd->var_path, vd->var_name, vd->offset_path[i], vd->offset_name[i], vd->offset[i]);
-                        if (adios_nssi_filter_is_anon_dim(fd, vd->offset_name[i]) == TRUE) {
-                            if (DEBUG>2) printf("server_rank(%d) writing anon dim vname(%s)\n", global_rank, vd->offset_name[i]);
-                            adios_nssi_filter_set_anon_dim(fd, vd->offset_name[i], vd->offset[i]);
-                        } else {
-                            if (DEBUG>2) printf("server_rank(%d) writing aggregated offset vname(%s)\n", global_rank, vd->offset_name[i]);
-                            Func_Timer("adios_set_path_var", adios_set_path_var(fd, vd->offset_path[i], vd->offset_name[i]););
-                            Func_Timer("adios_write", adios_write(fd, vd->offset_name[i], &(vd->offset[i])););
-                        }
-                    }
-                    for(int i=0;i<vd->ndims;i++) {
-                        if (DEBUG>3) printf("writing count myrank(%d) vd(%d) vpath(%s) vname(%s) dpath(%s) dname(%s) ddata(%lu)\n",
-                                grank, i, vd->var_path, vd->var_name, vd->count_path[i], vd->count_name[i], vd->global[i]);
-                        if (adios_nssi_filter_is_anon_dim(fd, vd->count_name[i]) == TRUE) {
-                            if (DEBUG>2) printf("server_rank(%d) writing anon dim vname(%s)\n", global_rank, vd->count_name[i]);
-                            adios_nssi_filter_set_anon_dim(fd, vd->count_name[i], vd->global[i]);
-                        } else {
-                            if (DEBUG>2) printf("server_rank(%d) writing aggregated dim vname(%s)\n", global_rank, vd->global_name[i]);
-                            Func_Timer("adios_set_path_var", adios_set_path_var(fd, vd->count_path[i], vd->count_name[i]););
-                            Func_Timer("adios_write", adios_write(fd, vd->count_name[i], &(vd->global[i])););
-                        }
-                    }
-                }
-
-                if (DEBUG>3) printf("writing array myrank(%d) fd(%ld) vname(%s) vdata(%lu)\n", grank, fd, vd->var_name, *(uint64_t*)vd->cache_ptr);
-                if (DEBUG>2) printf("server_rank(%d) writing aggregated array vname(%s)\n", global_rank, vd->var_name);
-                Func_Timer("adios_set_path_var", adios_set_path_var(fd, vd->var_path, vd->var_name););
-                Func_Timer("adios_write", adios_write(fd, vd->var_name, vd->cache_ptr););
-            }
-
-            if ((free_memory==TRUE) && (ts->is_locked == FALSE)) {
-                /* release resources associated with the timestep */
-                var_details_map_iterator_t vd_iter=ts->vars_map.begin();
-                while(vd_iter != ts->vars_map.end()) {
-                    char *key=vd_iter->first;
-
-                    vd = vd_iter->second;
-                    for(int i=0;i<vd->ndims;i++) {
-                        if (vd->global_path != NULL) free(vd->global_path[i]);
-                        if (vd->global_name != NULL) free(vd->global_name[i]);
-                        if (vd->count_path != NULL) free(vd->count_path[i]);
-                        if (vd->count_name != NULL) free(vd->count_name[i]);
-                        if (vd->offset_path != NULL) free(vd->offset_path[i]);
-                        if (vd->offset_name != NULL) free(vd->offset_name[i]);
-                    }
-                    if (vd->global_path != NULL) free(vd->global_path);
-                    if (vd->global_name!= NULL) free(vd->global_name);
-                    if (vd->global != NULL) free(vd->global);
-                    if (vd->count_path != NULL) free(vd->count_path);
-                    if (vd->count_name != NULL) free(vd->count_name);
-                    if (vd->count != NULL) free(vd->count);
-                    if (vd->offset_path != NULL) free(vd->offset_path);
-                    if (vd->offset_name != NULL) free(vd->offset_name);
-                    if (vd->offset != NULL) free(vd->offset);
-
-                    ts->vars_map.erase(vd_iter++);
-
-                    free(key);
-                }
-                if (ts->cache_buffer != NULL) free(ts->cache_buffer);
-
-                ts->vars_list.clear();
-
-                delete ts;
-            }
-
-            timestamps_written++;
-            of->last_written_timestep=ts->timestep;
-
-            if ((free_memory==TRUE) && (ts->is_locked == FALSE)) {
-                of->timesteps.erase(ts_iter++);
-            } else {
-                ts_iter++;
-            }
-        }
-
-        Func_Timer("adios_close", adios_close(fd););
-    }
-
-    if (DEBUG>2) printf("myrank(%d): exit write_cache(client_id=%s)\n", grank, client_id);
-
-    return(timestamps_written);
-}
-
-/* -------------------- SERVER-SIDE STUBS ---------- */
-
-
-/**
- * @brief Open a netcdf dataset.
- *
- * Open an ADIOS dataset.
- */
-int nssi_coupling_open_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_open_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    char omode[2];
-    adios_open_res res;  /* this is what we send back to the client */
-    MPI_Info mpiHints = MPI_INFO_NULL;
-    int64_t fd=-1;
-    open_file *of=NULL;
-
-    memset(&res, 0, sizeof(res));
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_open_stub(%s, %d)\n", grank, args->fname, args->mode);
-
-//    SetHints(&mpiHints, "");
-//    ShowHints(&mpiHints);
-
-    of = open_file_get(args->fname);
-    if (DEBUG>3) printf("myrank(%d): nssi_coupling_open_stub(%s, %d)\n", grank, args->fname, args->mode);
-    if (of == NULL) {
-        of=open_file_add(args->fname);
-
-        strcpy(of->writer_id, args->client_id);
-        strcpy(of->gname, args->gname);
-    }
-    if (of->is_open == FALSE) {
-        of->omode[0]='\0';
-        of->omode[1]='\0';
-        switch(args->mode) {
-        case ADIOS_MODE_READ:
-            of->omode[0]='r';
-            break;
-        case ADIOS_MODE_WRITE:
-            of->omode[0]='w';
-            break;
-        case ADIOS_MODE_APPEND:
-            of->omode[0]='a';
-            break;
-        case ADIOS_MODE_UPDATE:
-            of->omode[0]='u';
-            break;
-        default:
-            break;
-        }
-        of->current_timestep++;
-        file_timestep_t *ts=new file_timestep_t(of->current_timestep);
-        of->timesteps.push_back(ts);
-
-        of->is_open=TRUE;
-    }
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_open_stub(%s, %d): fd=%ld, fd=%p\n", grank, args->fname, args->mode, of->ofdesc, of->ofdesc);
-
-    res.fd=of->ofdesc;
-
-cleanup:
-    /* send the ncid and return code back to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    return rc;
-}
-
-int flush_unlocked_timesteps(void)
-{
-    return(write_cache(NULL, TRUE));
-}
-
-int nssi_coupling_group_size_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_group_size_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    uint64_t total_size=0;
-    open_file *of=NULL;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_group_size_stub(fd=%ld, pg_size=%ld)\n", grank, args->fd, args->data_size);
-
-    of=open_file_get(args->fd);
-    if (of == NULL) {
-        printf("nssi_coupling_group_size_stub failed: file not open(fd=%ld)\n", args->fd);
-        rc=-1;
-    } else {
-        file_timestep_t *current_ts=timestep_get_current(of);
-        if (current_ts == NULL) {
-            printf("nssi_coupling_group_size_stub failed: could not get current timestep(fd=%ld)\n", args->fd);
-            rc=-1;
-        } else {
-            if (DEBUG>2) printf("myrank(%d): creating timestep cache (of=%p ; ts=%p ; timestep=%d)\n",
-                    grank, of, current_ts, current_ts->timestep);
-
-            current_ts->group_size=args->data_size;
-            current_ts->cache_size=args->data_size;
-            current_ts->bytes_left=args->data_size;
-            current_ts->cache_buffer=(char *)malloc(args->data_size);
-            while(current_ts->cache_buffer == NULL) {
-                // insufficient memory to start a new timestep.  check if there are unlocked timesteps to flush.
-                if (flush_unlocked_timesteps() == FALSE) {
-                    // there are no timesteps to flush.  fail.
-                    rc=-1;
-                    break;
-                }
-                // retry
-                current_ts->cache_buffer=(char *)malloc(args->data_size);
-            }
-            if (DEBUG>2) printf("myrank(%d): timestep cache (of=%p ; ts=%p ; timestep=%d ; cache_size=%ld ; buffer=%p)\n",
-                    grank, of, current_ts, current_ts->timestep, current_ts->cache_size, current_ts->cache_buffer);
-        }
-    }
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_group_size_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_coupling_close_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_close_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    open_file *of=NULL;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_close_stub(%ld, %s)\n", grank, args->fd, args->fname);
-
-    of=open_file_get(args->fd);
-    if (of == NULL) {
-        printf("nssi_coupling_close_stub failed: file not open(fd=%ld)\n", args->fd);
-        rc=-1;
-    } else {
-        file_timestep_t *current_ts=timestep_get_current(of);
-        if (current_ts == NULL) {
-            printf("nssi_coupling_close_stub failed: could not get current timestep(fd=%ld)\n", args->fd);
-            rc=-1;
-        } else {
-            current_ts->is_complete=TRUE;
-        }
-
-        of->is_open=FALSE;
-    }
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_close_stub(%ld, %s)\n", grank, args->fd, args->fname);
-
-    return rc;
-}
-
-int nssi_coupling_read_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_read_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_read_stub(%ld)\n", grank, args->fd);
-
-    // ENOTSUP - use read API
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_read_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-static void recursive_copy_chunk_in(char *src,
-                                    var_details_t *vd,
-                                    uint64_t src_offset,
-                                    uint64_t dst_offset,
-                                    uint64_t *src_index,
-                                    uint64_t *dst_index,
-                                    int current_dim)
-{
-    uint64_t my_src_offset=0;
-    uint64_t my_dst_offset=0;
-
-    if (current_dim < vd->ndims-1) {
-        for (int i=0;i<vd->count[current_dim];i++) {
-            my_src_offset = src_index[current_dim];
-            my_dst_offset = dst_index[current_dim];
-//            if (DEBUG > 3) printf("src_offset[%d](%lu)\n", current_dim, vd->offset[current_dim]);
-            my_dst_offset += (vd->offset[current_dim] * vd->atype_size);
-            for (int j=current_dim+1;j<vd->ndims;j++) {
-                my_src_offset *= vd->count[j];
-                my_dst_offset *= vd->global[j];
-            }
-
-            src_index[current_dim+1]=0;
-            dst_index[current_dim+1]=0;
-            recursive_copy_chunk_in(src, vd, src_offset+my_src_offset, dst_offset+my_dst_offset,
-                                    src_index, dst_index, current_dim+1);
-            src_index[current_dim] += vd->atype_size;
-            dst_index[current_dim] += vd->atype_size;
-        }
-    } else {
-        dst_offset += (vd->offset[current_dim] * vd->atype_size);
-        memcpy(vd->cache_ptr + dst_offset,
-               src + src_offset,
-               vd->count[current_dim]*vd->atype_size);
-    }
-}
-
-static void copy_chunk_in(char *src,
-                          var_details_t *vd)
-{
-    uint64_t *src_index=(uint64_t *)calloc(vd->ndims, sizeof(uint64_t));
-    uint64_t *dst_index=(uint64_t*)calloc(vd->ndims, sizeof(uint64_t));
-    uint64_t src_offset=0;
-    uint64_t dst_offset=0;
-    int current_dim=0;
-
-    memset(src_index, 0, vd->ndims*sizeof(uint64_t));
-    memset(dst_index, 0, vd->ndims*sizeof(uint64_t));
-    recursive_copy_chunk_in(src, vd, src_offset, dst_offset, src_index, dst_index, current_dim);
-
-    free(src_index);
-    free(dst_index);
-}
-
-static void recursive_copy_chunk_out(char *dst,
-                                     var_details_t *vd,
-                                     uint64_t dst_offset,
-                                     uint64_t src_offset,
-                                     uint64_t *dst_index,
-                                     uint64_t *src_index,
-                                     int current_dim)
-{
-    uint64_t my_dst_offset=0;
-    uint64_t my_src_offset=0;
-
-    if (current_dim < vd->ndims-1) {
-        for (int i=0;i<vd->count[current_dim];i++) {
-            my_dst_offset = dst_index[current_dim];
-            my_src_offset = src_index[current_dim];
-//            if (DEBUG > 3) printf("dst_offset[%d](%lu)\n", current_dim, vd->offset[current_dim]);
-            my_src_offset += (vd->offset[current_dim] * vd->atype_size);
-            for (int j=current_dim+1;j<vd->ndims;j++) {
-                my_dst_offset *= vd->count[j];
-                my_src_offset *= vd->global[j];
-            }
-
-            dst_index[current_dim+1]=0;
-            src_index[current_dim+1]=0;
-            recursive_copy_chunk_out(dst, vd, dst_offset+my_dst_offset, src_offset+my_src_offset,
-                                     dst_index, src_index, current_dim+1);
-            dst_index[current_dim] += vd->atype_size;
-            src_index[current_dim] += vd->atype_size;
-        }
-    } else {
-        src_offset += (vd->offset[current_dim] * vd->atype_size);
-        memcpy(dst + dst_offset,
-               vd->cache_ptr + src_offset,
-               vd->count[current_dim]*vd->atype_size);
-    }
-}
-
-static void copy_chunk_out(char *dst,
-                           var_details_t *vd)
-{
-    uint64_t *dst_index=(uint64_t *)calloc(vd->ndims, sizeof(uint64_t));
-    uint64_t *src_index=(uint64_t*)calloc(vd->ndims, sizeof(uint64_t));
-    uint64_t dst_offset=0;
-    uint64_t src_offset=0;
-    int current_dim=0;
-
-    memset(dst_index, 0, vd->ndims*sizeof(uint64_t));
-    memset(src_index, 0, vd->ndims*sizeof(uint64_t));
-    recursive_copy_chunk_out(dst, vd, dst_offset, src_offset, dst_index, src_index, current_dim);
-
-    free(dst_index);
-    free(src_index);
-}
-
-int nssi_coupling_write_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_write_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    adios_write_res res;
-    char vpathname[ADIOS_PATH_MAX];
-    int pathlen;
-    char *v=NULL;
-    int i=0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_write_stub(fd=%ld, vsize=%ld)\n", grank, args->fd, args->vsize);
-
-    open_file *of=open_file_get(args->fd);
-    file_timestep_t *ts=timestep_get_current(of);
-
-    if (DEBUG>2) printf("myrank(%d): timestep cache (of=%p ; ts=%p ; timestep=%d ; cache_size=%ld ; bytes_left=%ld ; buffer=%p)\n",
-            grank, of, ts, ts->timestep, ts->cache_size, ts->bytes_left, ts->cache_buffer);
-
-    v=(char *)malloc(args->vsize);
-
-    Func_Timer("nssi_get_data", rc = nssi_get_data(caller, v, args->vsize, data_addr););
-    if (rc != NSSI_OK) {
-        printf("Could not get var data on client\n");
-        goto cleanup;
-    }
-
-    if (DEBUG>3) printf("server_rank(%d) vname(%s) vsize(%ld) is_scalar(%d) writer_rank(%ld)\n",
-            global_rank, args->vname, args->vsize, args->is_scalar, args->writer_rank);
-
-    if (!args->is_scalar) {
-        if (DEBUG>2) printf("server_rank(%d) caching non-scalar vname(%s) vsize(%ld)\n", global_rank, args->vname, args->vsize);
-        if (DEBUG>3) printf("allocated v(%p), len(%ld)\n", v, args->vsize);
-
-        uint64_t write_offset=1;
-        uint64_t write_size=1;
-        var_details_t *vd=NULL;
-
-        vd = var_details_get(of, args->vname);
-        if (vd == NULL) {
-            if (DEBUG>3) printf("************\nvar_details NOT found for %s\n************\n", args->vname);
-
-            vd = new var_details_t;
-
-            vd->is_scalar=FALSE;
-
-//            vd->fd = args->fd;
-            strcpy(vd->var_path, args->vpath);
-            strcpy(vd->var_name, args->vname);
-            vd->ndims = args->offsets.offsets_len;
-
-            vd->num_elements = 1;
-            vd->global_path = (char **)calloc(args->gdims.gdims_len, sizeof(char *));
-            vd->global_name = (char **)calloc(args->gdims.gdims_len, sizeof(char *));
-            vd->global  = (uint64_t *)calloc(args->gdims.gdims_len, sizeof(uint64_t));;
-            for (int i=0;i<args->gdims.gdims_len;i++) {
-                vd->global_path[i] = strdup(args->gdims.gdims_val[i].vpath);
-                vd->global_name[i] = strdup(args->gdims.gdims_val[i].vname);
-                vd->global[i] = args->gdims.gdims_val[i].vdata;
-
-                vd->num_elements *= args->gdims.gdims_val[i].vdata;
-            }
-
-            vd->offset_path = (char **)calloc(args->offsets.offsets_len, sizeof(char *));
-            vd->offset_name = (char **)calloc(args->offsets.offsets_len, sizeof(char *));
-            vd->offset = (uint64_t *)calloc(args->offsets.offsets_len, sizeof(uint64_t));
-            for (int i=0;i<args->offsets.offsets_len;i++) {
-                vd->offset_path[i] = strdup(args->offsets.offsets_val[i].vpath);
-                vd->offset_name[i] = strdup(args->offsets.offsets_val[i].vname);
-                vd->offset[i] = args->offsets.offsets_val[i].vdata;
-            }
-
-            vd->count_path = (char **)calloc(args->ldims.ldims_len, sizeof(char *));
-            vd->count_name = (char **)calloc(args->ldims.ldims_len, sizeof(char *));
-            vd->count  = (uint64_t *)calloc(args->ldims.ldims_len, sizeof(uint64_t));;
-            for (int i=0;i<args->ldims.ldims_len;i++) {
-                vd->count_path[i] = strdup(args->ldims.ldims_val[i].vpath);
-                vd->count_name[i] = strdup(args->ldims.ldims_val[i].vname);
-                vd->count[i] = args->ldims.ldims_val[i].vdata;
-            }
-
-            vd->atype      = (enum ADIOS_DATATYPES)args->atype;
-            vd->atype_size = getTypeSize(vd->atype, v);
-            vd->len        = vd->num_elements * vd->atype_size;
-
-            vd->cache_offset = ts->cache_size-ts->bytes_left;
-            vd->cache_ptr    = ts->cache_buffer+vd->cache_offset;
-
-            ts->bytes_left  -= vd->len;
-
-            var_details_add(of, vd);
-
-            if (DEBUG > 3) printf("********** ts->cache_size(%lu)-ts->bytes_left(%lu)==vd->cache_offset(%lu)\n",
-                     ts->cache_size, ts->bytes_left, vd->cache_offset);
-            if (DEBUG > 3) printf("********** vd->num_elements(%lu)*vd->atype_size(%u)==vd->len(%lu)\n",
-                     vd->num_elements, vd->atype_size, vd->len);
-        }
-
-        if (DEBUG > 3) printf("********** ts->cache_size(%lu) ;  vd->cache_offset(%lu) ; vd->cache_buffer(%p) ; vd->cache_ptr(%p)\n",
-                 ts->cache_size, vd->cache_offset, ts->cache_buffer, vd->cache_ptr);
-
-        for (int i=0;i<args->offsets.offsets_len;i++) {
-            vd->offset[i] = args->offsets.offsets_val[i].vdata;
-            write_offset *= args->offsets.offsets_val[i].vdata;
-
-            if (DEBUG > 3) printf("********** var_name(%s) ;  vd->offset[%d](%lu)\n",
-                     vd->var_name, i, vd->offset[i]);
-        }
-        write_offset *= vd->atype_size;
-
-        for (int i=0;i<args->ldims.ldims_len;i++) {
-            vd->count[i] = args->ldims.ldims_val[i].vdata;
-            write_size *= args->ldims.ldims_val[i].vdata;
-
-            if (DEBUG > 3) printf("********** var_name(%s) ;  vd->count[%d](%lu)\n",
-                     vd->var_name, i, vd->count[i]);
-        }
-        write_size *= vd->atype_size;
-
-        /* sanity checks */
-        if (write_size != args->vsize) {
-            printf("write size conflict: write_size(%lu) != args->vsize(%lu)\n",
-                    write_size, args->vsize);
-        }
-        if (write_offset+write_size > vd->len) {
-            printf("variable overflow: write_offset(%lu)+write_size(%lu)=(%lu) > vd->len(%lu)\n",
-                    write_offset, write_size, write_offset+write_size, vd->len);
-        }
-        if (vd->cache_offset+write_size > ts->cache_size) {
-            printf("cache overflow: vd->cache_offset(%lu)+write_size(%lu)=(%lu) > ts->cache_size(%lu)\n",
-                    vd->cache_offset, write_size, vd->cache_offset+write_size, ts->cache_size);
-            abort();
-        }
-
-        if (DEBUG > 3) printf("********** write_size(%lu) ;  write_offset(%lu)\n",
-                 write_size, write_offset);
-
-        copy_chunk_in(v, vd);
-
-    } else {
-        if (DEBUG>2) printf("server_rank(%d) writing scalar vname(%s) vsize(%ld)\n", global_rank, args->vname, args->vsize);
-
-        uint64_t write_offset=1;
-        uint64_t write_size=1;
-        var_details_t *vd=NULL;
-
-        vd = var_details_get(of, args->vname);
-        if (vd == NULL) {
-            if (DEBUG>3) printf("************\nvar_details NOT found for %s\n************\n", args->vname);
-
-            vd = new var_details_t;
-
-            vd->is_scalar=TRUE;
-
-//            vd->fd = args->fd;
-            strcpy(vd->var_path, args->vpath);
-            strcpy(vd->var_name, args->vname);
-
-            vd->ndims = 0;
-            vd->num_elements = 1;
-
-            vd->atype      = (enum ADIOS_DATATYPES)args->atype;
-            vd->atype_size = getTypeSize(vd->atype, v);
-            vd->len        = vd->num_elements * vd->atype_size;
-
-            vd->cache_offset = ts->cache_size-ts->bytes_left;
-            vd->cache_ptr    = ts->cache_buffer+vd->cache_offset;
-
-            ts->bytes_left  -= vd->len;
-
-            var_details_add(of, vd);
-        }
-
-        write_offset = 0;
-        write_size   = vd->atype_size;
-
-        /* sanity checks */
-        if (write_size != args->vsize) {
-            printf("write size conflict: write_size(%lu) != args->vsize(%lu)\n",
-                    write_size, args->vsize);
-        }
-        if (write_offset+write_size > vd->len) {
-            printf("variable overflow: write_offset(%lu)+write_size(%lu)=(%lu) > vd->len(%lu)\n",
-                    write_offset, write_size, write_offset+write_size, vd->len);
-        }
-        if (vd->cache_offset+write_size > ts->cache_size) {
-            printf("cache overflow: vd->cache_offset(%lu)+write_size(%lu)=(%lu) > ts->cache_size(%lu)\n",
-                    vd->cache_offset, write_size, vd->cache_offset+write_size, ts->cache_size);
-        }
-
-        memcpy(vd->cache_ptr+write_offset, v, write_size);
-
-    }
-
-    free(v);
-
-    res.bytes_written=args->vsize;
-
-cleanup:
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_write_stub(fd=%ld, vsize=%ld)\n", grank, args->fd, args->vsize);
-
-    return rc;
-}
-
-int nssi_coupling_start_calc_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_start_calc_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_start_calc_stub(%ld)\n", grank, args->fd);
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_start_calc_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_coupling_stop_calc_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_stop_calc_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_stop_calc_stub(%ld)\n", grank, args->fd);
-
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_stop_calc_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_coupling_end_iter_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_end_iter_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_end_iter_stub(%ld)\n", grank, args->fd);
-
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_end_iter_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_coupling_finalize_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_finalize_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_finalize_stub(%s)\n", grank, args->client_id);
-
-
-//    write_cache(args->client_id);
-
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_finalize_stub(%s)\n", grank, args->client_id);
-
-    return rc;
-}
-
-/**
- * @brief Open a netcdf dataset.
- *
- * Open an ADIOS dataset.
- */
-int nssi_coupling_read_fopen_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_read_fopen_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    char omode[2];
-    adios_open_res res;  /* this is what we send back to the client */
-    MPI_Info mpiHints = MPI_INFO_NULL;
-    int64_t fd=-1;
-    open_file *of=NULL;
-
-    memset(&res, 0, sizeof(res));
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_read_fopen_stub(%s, %d)\n", grank, args->fname, args->requested_timestep);
-
-//    SetHints(&mpiHints, "");
-//    ShowHints(&mpiHints);
-
-    of = open_file_get(args->fname);
-    if (DEBUG>3) printf("myrank(%d): nssi_coupling_read_fopen_stub(%s, %d)\n", grank, args->fname, args->requested_timestep);
-    if (of == NULL) {
-        res.fd=-1; /* the requested file is not currently in core.  out of core not supported.  return error. */
-        goto cleanup;
-    }
-
-    file_timestep_t *ts=timestep_get(of, args->requested_timestep);
-    if (ts == NULL) {
-        res.fd=-1; /* the requested timestep is not currently in core.  out of core not supported.  return error. */
-        goto cleanup;
-    } else {
-        if ((ts->is_complete==TRUE) && (ts->is_locked==FALSE)) {
-            strcpy(of->reader_id, args->client_id);
-            ts->is_locked=TRUE;
-            if (DEBUG>3) printf("nssi_coupling_read_fopen_stub(%s, %d): timestep is complete and locked\n", grank, args->fname, args->requested_timestep, of->ofdesc, of->ofdesc);
-        }
-    }
-
-    res.fd=of->ofdesc;
-
-cleanup:
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_read_fopen_stub(%s, %d): fd=%ld\n", grank, args->fname, args->requested_timestep, res.fd);
-
-    /* send the ncid and return code back to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    return rc;
-}
-
-int nssi_coupling_read_fclose_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_read_fclose_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    open_file *of=NULL;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_read_fclose_stub(%ld, %s)\n", grank, args->fd, args->fname);
-
-    of=open_file_get(args->fd);
-    if (of == NULL) {
-        printf("nssi_coupling_read_fclose_stub failed: file not open(fd=%ld)\n", args->fd);
-        rc=-1;
-    } else {
-        file_timestep_t *ts=timestep_get(of, args->open_timestep);
-        if (ts == NULL) {
-            printf("nssi_coupling_read_fclose_stub failed: could not find timestep(fd=%ld, ts_num=%lu)\n", args->fd, args->open_timestep);
-            rc=-1;
-        } else {
-            if(strcmp(of->reader_id, args->client_id) == 0) {
-                of->reader_id[0]='\0';
-                ts->is_locked=FALSE;
-            } else {
-                printf("nssi_coupling_read_fclose_stub failed: timestep(fd=%ld, ts_num=%lu) fopen by different client (me=%s,opener=%s)\n",
-                        args->fd, args->open_timestep, args->client_id, of->reader_id);
-                rc=-1;
-            }
-        }
-    }
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_read_fclose_stub(%ld, %s)\n", grank, args->fd, args->fname);
-
-    return rc;
-}
-
-int nssi_coupling_read_get_vartype_size_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_read_get_vartype_size_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    open_file *of=NULL;
-    adios_read_get_vartype_size_res res;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_read_get_vartype_size_stub(%ld)\n", grank, args->fd);
-
-    of=open_file_get(args->fd);
-    if (of == NULL) {
-        printf("nssi_coupling_read_get_vartype_size_stub failed: file not open(fd=%ld)\n", args->fd);
-        rc=-1;
-    } else {
-        file_timestep_t *ts=timestep_get(of, args->open_timestep);
-        if (ts == NULL) {
-            printf("nssi_coupling_read_get_vartype_size_stub failed: could not find timestep(fd=%ld, ts_num=%lu)\n",
-                    args->fd, args->open_timestep);
-            rc=-1;
-        } else {
-            if ((strcmp(of->reader_id, args->client_id) == 0) && (ts->is_locked==TRUE)) {
-                var_details_t *vd=var_details_get(of, args->open_timestep, args->vname);
-                if (vd == NULL) {
-                    printf("nssi_coupling_read_get_vartype_size_stub failed: could not find variable(fd=%ld, ts_num=%lu, varname=%s)\n",
-                            args->fd, args->open_timestep, args->vname);
-                    rc=-1;
-                } else {
-                    res.vartype_size=vd->atype_size;
-                }
-            } else {
-                printf("nssi_coupling_read_get_vartype_size_stub failed: timestep(fd=%ld, ts_num=%lu) fopen by different client (me=%s,opener=%s)\n",
-                        args->fd, args->open_timestep, args->client_id, of->reader_id);
-                rc=-1;
-            }
-        }
-    }
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_read_get_vartype_size_stub(fd=%ld res.vartype_size=%lu)\n",
-            grank, args->fd, res.vartype_size);
-
-    return rc;
-}
-
-int nssi_coupling_read_read_var_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_read_read_var_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    open_file *of=NULL;
-    adios_read_read_var_res res;
-
-    char *v=NULL;
-
-    res.bytes_read=-1;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_coupling_read_read_var_stub(%ld)\n", grank, args->fd);
-
-    of=open_file_get(args->fd);
-    if (of == NULL) {
-        printf("nssi_coupling_read_read_var_stub failed: file not open(fd=%ld)\n", args->fd);
-        rc=-1;
-    } else {
-        file_timestep_t *ts=timestep_get(of, args->open_timestep);
-        if (ts == NULL) {
-            printf("nssi_coupling_read_read_var_stub failed: could not find timestep(fd=%ld, ts_num=%lu)\n", args->fd, args->open_timestep);
-            rc=-1;
-        } else {
-            if ((strcmp(of->reader_id, args->client_id) == 0) && (ts->is_locked==TRUE)) {
-                uint64_t read_size=1;
-                var_details_t *vd=var_details_get(of, args->open_timestep, args->vname);
-
-                for (int i=0;i<vd->ndims;i++) {
-                    vd->offset[i] = args->offsets[i];
-
-                    if (DEBUG > 3) printf("********** var_name(%s) ;  vd->offset[%d](%lu)\n",
-                             vd->var_name, i, vd->offset[i]);
-                }
-                for (int i=0;i<vd->ndims;i++) {
-                    vd->count[i] = args->counts[i];
-                    read_size *= args->counts[i];
-
-                    if (DEBUG > 3) printf("********** var_name(%s) ;  vd->count[%d](%lu) ;  vd->globals[%d](%lu)\n",
-                             vd->var_name, i, vd->count[i], i, vd->global[i]);
-                }
-                int8_t is_scalar=FALSE;
-                if (read_size==1) {
-                    is_scalar=TRUE;
-                }
-                read_size *= vd->atype_size;
-
-                /* sanity checks */
-                if (read_size != args->max_read) {
-                    printf("read size conflict: read_size(%lu) != args->max_read(%lu)\n",
-                            read_size, args->max_read);
-                }
-                if (vd->cache_offset+read_size > ts->cache_size) {
-                    printf("cache overflow: vd->cache_offset(%lu)+read_size(%lu)=(%lu) > ts->cache_size(%lu)\n",
-                            vd->cache_offset, read_size, vd->cache_offset+read_size, ts->cache_size);
-                    abort();
-                }
-
-                if (DEBUG > 3) printf("********** read_size(%lu)\n", read_size);
-
-                v=(char*)malloc(read_size);
-                if (is_scalar==TRUE) {
-                    memcpy(v, vd->cache_ptr, read_size);
-                } else {
-                    copy_chunk_out(v, vd);
-                }
-
-                Func_Timer("nssi_put_data", rc = nssi_put_data(caller, v, read_size, data_addr, -1););
-                if (rc != NSSI_OK) {
-                    printf("Could not put var data on client\n");
-                    goto cleanup;
-                }
-
-                res.bytes_read=read_size;
-
-            } else {
-                printf("nssi_coupling_read_read_var_stub failed: timestep(fd=%ld, ts_num=%lu) fopen by different client (me=%s,opener=%s)\n",
-                        args->fd, args->open_timestep, args->client_id, of->reader_id);
-                rc=-1;
-            }
-        }
-    }
-
-cleanup:
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    if (v) free(v);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_coupling_read_read_var_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-/* -------- END SERVER-SIDE STUBS -------------- */
-
-int nssi_coupling_server_init(const char *adios_config_file)
-{
-    int rc=NSSI_OK;
-
-    if (DEBUG>3) printf("start adios_init(%s)\n", adios_config_file);
-    rc = adios_init(adios_config_file);
-    if (rc != 1) {
-        printf("adios_init() failed: %d\n", rc);
-        return(-1);
-    }
-    if (DEBUG>3) printf("end adios_init(%s)\n", adios_config_file);
-
-
-    /* register server stubs */
-    NSSI_REGISTER_SERVER_STUB(ADIOS_OPEN_OP,       nssi_coupling_open_stub,       adios_open_args,       adios_open_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_GROUP_SIZE_OP, nssi_coupling_group_size_stub, adios_group_size_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_READ_OP,       nssi_coupling_read_stub,       adios_read_args,       adios_read_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_WRITE_OP,      nssi_coupling_write_stub,      adios_write_args,      adios_write_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_END_ITER_OP,   nssi_coupling_end_iter_stub,   adios_end_iter_args,   void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_START_CALC_OP, nssi_coupling_start_calc_stub, adios_start_calc_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_STOP_CALC_OP,  nssi_coupling_stop_calc_stub,  adios_stop_calc_args,  void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_CLOSE_OP,      nssi_coupling_close_stub,      adios_close_args,      void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_FINALIZE_OP,   nssi_coupling_finalize_stub,   adios_finalize_args,   void);
-
-    NSSI_REGISTER_SERVER_STUB(ADIOS_READ_FOPEN_OP,            nssi_coupling_read_fopen_stub,            adios_read_fopen_args,            adios_read_fopen_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_READ_FCLOSE_OP,           nssi_coupling_read_fclose_stub,           adios_read_fclose_args,           void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_READ_GET_VARTYPE_SIZE_OP, nssi_coupling_read_get_vartype_size_stub, adios_read_get_vartype_size_args, adios_read_get_vartype_size_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_READ_READ_VAR_OP,         nssi_coupling_read_read_var_stub,         adios_read_read_var_args,         adios_read_read_var_res);
-
-    return 0;
-}
-
-
-
-static void generate_contact_info(nssi_remote_pid *myid)
-{
-    nssi_remote_pid *all_pids=NULL;
-    int rank, np;
-    char contact_path[1024];
-
-    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-    //printf("rank (%d)\n", rank);
-
-    if (rank==0) {
-        MPI_Comm_size(MPI_COMM_WORLD, &np);
-        all_pids=(nssi_remote_pid *)malloc(np*sizeof(nssi_remote_pid));
-    }
-    MPI_Gather(myid, sizeof(nssi_remote_pid), MPI_BYTE,
-               all_pids, sizeof(nssi_remote_pid), MPI_BYTE,
-               0, MPI_COMM_WORLD);
-    if (rank==0) {
-        char *contact_file=getenv("ADIOS_NSSI_CONTACT_INFO");
-        if (contact_file==NULL) {
-            printf("ADIOS_NSSI_CONTACT_INFO env var is undefined.\n");
-            free(all_pids);
-            return;
-        }
-//        sprintf(contact_path, "%s.%04d", contact_file, rank);
-        sprintf(contact_path, "%s.tmp", contact_file);
-        if (DEBUG>3) printf("creating temp contact file (%s)\n", contact_path);
-        FILE *f=fopen(contact_path, "w");
-        if (f==NULL) {
-            perror("fopen");
-        }
-        for (int i=0;i<np;i++) {
-            fprintf(f, "%u@%u@%s@%u\n",
-                    all_pids[i].nid, all_pids[i].pid,
-                    all_pids[i].hostname, (unsigned int)ntohs(all_pids[i].port));
-        }
-//        fprintf(f, "%u@%u@%s@%u\n",
-//                myid->nid, myid->pid,
-//                myid->hostname, (unsigned int)ntohs(myid->port));
-        fclose(f);
-        if (DEBUG>3) printf("renaming temp contact file (%s) to contact file (%s)\n", contact_path, contact_file);
-        rename(contact_path, contact_file);
-        free(all_pids);
-    }
-    MPI_Barrier(MPI_COMM_WORLD);
-}
-
-
-/**
- * @brief The LWFS xfer-server.
- */
-int main(int argc, char **argv)
-{
-    int rc = NSSI_OK;
-
-    nssi_service nssi_svc;
-//    log_level debug_level;
-    char logfile[1024];
-    int rank, np;
-
-    MPI_Init(&argc, &argv);
-    MPI_Comm_rank(MPI_COMM_WORLD, &global_rank);
-    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-    MPI_Comm_size(MPI_COMM_WORLD, &np);
-    grank=rank;
-    gsize=np;
-
-    /* options that can be overriden by the command-line */
-    bool daemon_flag = false;
-    int verbose = 5;  /* default debug_level */
-    int num_threads = 0;
-    int server_pid = 128;   /* process ID of the server */
-    int server_port = 7728; /* TCP port of the server */
-
-    memset(&nssi_svc, 0, sizeof(nssi_service));
-
-    /* initialize and enable logging */
-//    if (args_info.logfile_arg != NULL) {
-//        sprintf(logfile, "%s.%04d", "nssi_coupling_server.log", rank);
-//        logger_init((log_level)verbose, logfile);
-//    } else {
-//        logger_init((log_level)verbose, NULL);
-//    }
-//    netcdf_debug_level=(log_level)(log_level)args_info.verbose_arg;
-//    debug_level = (log_level)args_info.verbose_arg;
-
-//    logger_init((log_level)verbose, NULL);
-
-    if (daemon_flag) {
-        nssi_daemonize();
-    }
-
-#ifdef HAVE_PORTALS
-    nssi_ptl_init(PTL_IFACE_SERVER, server_pid);
-    rc = nssi_rpc_init(NSSI_RPC_PTL, NSSI_RPC_XDR);
-    if (rc != NSSI_OK) {
-        printf("could not init rpc: %s\n",
-                nssi_err_str(rc));
-        return rc;
-    }
-    nssi_remote_pid myid;
-    memset(&myid, 0, sizeof(nssi_remote_pid));
-    nssi_ptl_get_id(&myid);
-    generate_contact_info(&myid);
-#endif
-#ifdef HAVE_INFINIBAND
-    memset(&nssi_svc.req_addr.match_id, 0, sizeof(nssi_remote_pid));
-    strcpy(nssi_svc.req_addr.match_id.hostname, args_info.server_addr_arg);
-    nssi_svc.req_addr.match_id.port = args_info.server_port_arg;
-
-    nssi_ib_init(&nssi_svc);
-    rc = nssi_rpc_init(NSSI_RPC_IB, NSSI_RPC_XDR);
-    if (rc != NSSI_OK) {
-        printf("could not init rpc: %s\n",
-                nssi_err_str(rc));
-        return rc;
-    }
-    generate_contact_info(&nssi_svc.req_addr.match_id);
-#endif
-
-    if (DEBUG>3) printf("Initialize staging service\n");
-
-    /* initialize the lwfs service */
-    rc = nssi_service_init(0, NSSI_SHORT_REQUEST_SIZE, &nssi_svc);
-    if (rc != NSSI_OK) {
-        printf("could not init nssi_svc: %s\n",
-                nssi_err_str(rc));
-        return -1;
-    }
-
-    /* initialize staging service */
-    rc = nssi_coupling_server_init(argv[1]);
-
-    /* start processing requests */
-    nssi_svc.max_reqs = -1;
-    rc = nssi_service_start(&nssi_svc, num_threads);
-    if (rc != NSSI_OK) {
-        printf("exited nssi_svc: %s\n",
-                nssi_err_str(rc));
-    }
-
-    flush_unlocked_timesteps();
-
-    adios_finalize(rank);
-
-    /* shutdown the nssi_svc */
-    if (DEBUG>3) printf("shutting down service library\n");
-    nssi_service_fini(&nssi_svc);
-
-    nssi_rpc_fini();
-
-    MPI_Finalize();
-
-    return rc;
-}
diff --git a/src/nssi/nssi_staging_server.cpp b/src/nssi/nssi_staging_server.cpp
deleted file mode 100644
index a263755..0000000
--- a/src/nssi/nssi_staging_server.cpp
+++ /dev/null
@@ -1,853 +0,0 @@
-/**  @file main.c
- *
- *   @brief Driver for the LWFS name server.
- *
- *   @author Ron Oldfield (raoldfi\@sandia.gov).
- *   $Revision: 1264 $.
- *   $Date: 2007-02-27 15:30:26 -0700 (Tue, 27 Feb 2007) $.
- */
-
-
-#ifndef __STDC_CONSTANT_MACROS
-#define __STDC_CONSTANT_MACROS
-#endif
-
-#include "config.h"
-
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/mman.h>
-
-#include "adios.h"
-
-#ifdef HAVE_NSSI
-#ifdef HAVE_PORTALS
-#include "nssi_ptls.h"
-#endif
-#ifdef HAVE_INFINIBAND
-#include "nssi_ib.h"
-#endif
-#include "nssi_server.h"
-#include "nssi_logger.h"
-
-#include "adios_nssi_args.h"
-#include "adios_nssi_config.h"
-#endif
-
-#include "io_timer.h"
-#include "aggregation.h"
-
-#include <mpi.h>
-#include <algorithm>
-#include <map>
-
-using namespace std;
-
-
-
-#ifdef __LIBCATAMOUNT__
-#define ntohs(value) 0
-#endif
-
-
-/* Need a struct to encapsulate open file info.
- */
-struct open_file {
-    char    ofname[ADIOS_PATH_MAX];
-    int64_t ofdesc;
-
-    open_file(const char *name) {
-        strcpy(ofname, name);
-        ofdesc=-1;
-    }
-    open_file(const char *name, const int64_t desc) {
-        strcpy(ofname, name);
-        ofdesc=desc;
-    }
-};
-/* Need a comparison operator to pass into the open_file_map
- */
-struct open_file_lt
-{
-    bool operator()(const struct open_file &of1, const struct open_file &of2) const
-    {
-//        log_debug(rpc_debug_level, "cqp1.qp_num == %u", cqp1.qp_num);
-//        log_debug(rpc_debug_level, "cqp2.qp_num == %u", cqp2.qp_num);
-
-        if (strcmp(of1.ofname, of2.ofname) <0) return TRUE;
-
-        return FALSE;
-    }
-};
-
-/* Map of open files */
-static map<struct open_file, int64_t, open_file_lt> open_file_map;
-typedef map<struct open_file, int64_t, open_file_lt>::iterator open_file_map_iterator_t;
-typedef pair<struct open_file, int64_t> open_file_map_pair_t;
-static pthread_mutex_t open_file_map_mutex=PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-static pthread_cond_t  open_file_map_cond =PTHREAD_COND_INITIALIZER;
-
-
-static int global_rank=-1;
-static int DEBUG=0;
-
-
-/* -------------------- PRIVATE FUNCTIONS ---------- */
-void open_file_add(char *fname, int64_t fd)
-{
-    open_file_map[fname]=fd;
-}
-
-int64_t open_file_get(char *fname)
-{
-    open_file of(fname);
-    int64_t fd=-1;
-
-    open_file_map_iterator_t iter=open_file_map.find(of);
-    if (iter != open_file_map.end()) {
-        fd=iter->second;
-    }
-
-    return(fd);
-}
-void open_file_del(char *fname)
-{
-    open_file_map_iterator_t iter;
-    open_file of(fname);
-
-    open_file_map.erase(of);
-}
-
-
-
-int grank, gsize;
-
-MPI_Comm comm_self=MPI_COMM_SELF;
-MPI_Comm comm_world=MPI_COMM_WORLD;
-
-
-/**
- * The next 3 utility functions are lifted from IOR.
- */
-/******************************************************************************/
-/*
- * Extract key/value pair from hint string.
- */
-
-void
-ExtractHint(char * settingVal,
-            char * valueVal,
-            char * hintString)
-{
-    char * settingPtr,
-         * valuePtr,
-         * tmpPtr1,
-         * tmpPtr2;
-
-    settingPtr = (char *)strtok(hintString, "=");
-    valuePtr = (char *)strtok(NULL, " \t\r\n");
-    tmpPtr1 = settingPtr;
-    tmpPtr2 = (char *)strstr(settingPtr, "MPIIO_HINT__");
-    if (tmpPtr1 == tmpPtr2) {
-        settingPtr += strlen("MPIIO_HINT__");
-    }
-    strcpy(settingVal, settingPtr);
-    strcpy(valueVal, valuePtr);
-} /* ExtractHint() */
-
-
-/******************************************************************************/
-/*
- * Set hints for MPIIO, HDF5, or NCMPI.
- */
-#define MAX_HINT_STR 1024
-void
-SetHints(MPI_Info * mpiHints, char * hintsFileName)
-{
-    char           hintString[MAX_HINT_STR],
-                   settingVal[MAX_HINT_STR],
-                   valueVal[MAX_HINT_STR];
-    extern char ** environ;
-    int            i;
-    FILE         * fd;
-
-    /*
-     * This routine checks for hints from the environment and/or from the
-     * hints files.  The hints are of the form:
-     * 'MPIIO_HINT__<hint>=<value>', <hint> is the full name of the hint
-     * to be set, and <value> is the hint value.
-     * E.g., 'setenv MPIIO_HINT__panfs_concurrent_write 1'
-     * or 'MPIIO_HINT__panfs_concurrent_write=1' in the hints file.
-     */
-    MPI_Info_create(mpiHints);
-
-    /* get hints from environment */
-    for (i = 0; environ[i] != NULL; i++) {
-        /* if this is an IOR_HINT, pass the hint to the info object */
-        if (strncmp(environ[i], "MPIIO_HINT", strlen("MPIIO_HINT")) == 0) {
-            strcpy(hintString, environ[i]);
-            ExtractHint(settingVal, valueVal, hintString);
-            MPI_Info_set(*mpiHints, settingVal, valueVal);
-        }
-    }
-
-    /* get hints from hints file */
-    if (strcmp(hintsFileName, "") != 0) {
-
-        /* open the hint file */
-        fd = fopen(hintsFileName, "r");
-        if (fd == NULL) {
-            printf("cannot open hints file\n");
-        } else {
-            /* iterate over hints file */
-            while(fgets(hintString, MAX_HINT_STR, fd) != NULL) {
-                if (strncmp(hintString, "MPIIO_HINT", strlen("MPIIO_HINT")) == 0) {
-                    ExtractHint(settingVal, valueVal, hintString);
-                    MPI_Info_set(*mpiHints, settingVal, valueVal);
-                }
-            }
-            /* close the hints files */
-            if (fclose(fd) != 0) printf("cannot close hints file\n");
-        }
-    }
-} /* SetHints() */
-
-
-/******************************************************************************/
-/*
- * Show all hints (key/value pairs) in an MPI_Info object.
- */
-
-void ShowHints(MPI_Info * mpiHints)
-{
-    char key[MPI_MAX_INFO_VAL],
-         value[MPI_MAX_INFO_VAL];
-    int  flag,
-         i,
-         nkeys;
-
-    MPI_Info_get_nkeys(*mpiHints, &nkeys);
-
-    for (i = 0; i < nkeys; i++) {
-        MPI_Info_get_nthkey(*mpiHints, i, key);
-        MPI_Info_get(*mpiHints, key, MPI_MAX_INFO_VAL-1, value, &flag);
-        printf("mpiHint[%d]: %s = %s\n", i, key, value);
-    }
-} /* ShowHints() */
-
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int adios_nssi_filter_is_anon_dim(
-        int fd,
-        const char *dimname);
-extern void adios_nssi_filter_set_anon_dim(
-        int fd,
-        const char *dimname,
-        const uint64_t dimvalue);
-
-#ifdef __cplusplus
-}
-#endif
-
-void agg_and_write(const int64_t fd)
-{
-    if (DEBUG>2) printf("myrank(%d): enter agg_and_write(fd=%ld)\n", grank, fd);
-
-    Func_Timer("try_aggregation", try_aggregation(fd););  // aggregate all varids in this file
-
-    int chunk_count=0;
-    aggregation_chunk_details_t **chunks = get_chunks(fd, &chunk_count);
-
-    for (int j=0;j<chunk_count;j++) {
-        aggregation_chunk_details_t *chunk = chunks[j];
-
-        // write all offsets for clients rank to update adios internals
-        for(int i=0;i<chunk->ndims;i++) {
-            uint64_t value=0;
-            if (DEBUG>3) printf("writing myrank(%d) chunk(%d) vpath(%s) vname(%s) opath(%s) oname(%s) odata(%lu)\n",
-                    grank, j, chunk->var_path, chunk->var_name, chunk->offset_path[i], chunk->offset_name[i], chunk->offset[i]);
-            if (adios_nssi_filter_is_anon_dim(chunk->fd, chunk->offset_name[i]) == TRUE) {
-                adios_nssi_filter_set_anon_dim(chunk->fd, chunk->offset_name[i], chunk->offset[i]);
-            } else {
-                if (DEBUG>2) printf("server_rank(%d) writing aggregated offset vname(%s)\n", global_rank, chunk->offset_name[i]);
-                Func_Timer("adios_set_path_var", adios_set_path_var(chunk->fd, chunk->offset_path[i], chunk->offset_name[i]););
-                Func_Timer("adios_write", adios_write(chunk->fd, chunk->offset_name[i], &(chunk->offset[i])););
-            }
-        }
-        for(int i=0;i<chunk->ndims;i++) {
-            uint64_t value=0;
-            if (DEBUG>3) printf("writing myrank(%d) chunk(%d) vpath(%s) vname(%s) dpath(%s) dname(%s) ddata(%lu)\n",
-                    grank, j, chunk->var_path, chunk->var_name, chunk->count_path[i], chunk->count_name[i], chunk->count[i]);
-            if (adios_nssi_filter_is_anon_dim(chunk->fd, chunk->count_name[i]) == TRUE) {
-                adios_nssi_filter_set_anon_dim(chunk->fd, chunk->count_name[i], chunk->count[i]);
-            } else {
-                if (DEBUG>2) printf("server_rank(%d) writing aggregated dim vname(%s)\n", global_rank, chunk->count_name[i]);
-                Func_Timer("adios_set_path_var", adios_set_path_var(chunk->fd, chunk->count_path[i], chunk->count_name[i]););
-                Func_Timer("adios_write", adios_write(chunk->fd, chunk->count_name[i], &(chunk->count[i])););
-            }
-        }
-
-        if (DEBUG>3) printf("writing myrank(%d) vname(%s)\n", grank, chunk->var_name);
-        if (DEBUG>2) printf("server_rank(%d) writing aggregated array vname(%s)\n", global_rank, chunk->var_name);
-        Func_Timer("adios_set_path_var", adios_set_path_var(chunk->fd, chunk->var_path, chunk->var_name););
-        Func_Timer("adios_write", adios_write(chunk->fd, chunk->var_name, chunk->buf););
-
-//        cleanup_aggregation_chunks(fd, chunk->var_name);
-    }
-
-    cleanup_aggregation_chunks(fd);
-
-    if (DEBUG>2) printf("myrank(%d): exit agg_and_write(fd=%ld)\n", grank, fd);
-
-    return;
-}
-
-/* -------------------- SERVER-SIDE STUBS ---------- */
-
-
-/**
- * @brief Open a netcdf dataset.
- *
- * Open an ADIOS dataset.
- */
-int nssi_staging_open_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_open_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    char omode[2];
-    adios_open_res res;  /* this is what we send back to the client */
-    MPI_Info mpiHints = MPI_INFO_NULL;
-
-    int64_t fd;
-
-    memset(&res, 0, sizeof(res));
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_open_stub(%s, %d)\n", grank, args->fname, args->mode);
-
-//    SetHints(&mpiHints, "");
-//    ShowHints(&mpiHints);
-
-    fd = open_file_get(args->fname);
-    if (DEBUG>3) printf("myrank(%d): nssi_staging_open_stub(%s, %d) open_file_get()==%d\n", grank, args->fname, args->mode, fd);
-    if (fd == -1) {
-        omode[0]='\0';
-        omode[1]='\0';
-        switch(args->mode) {
-        case ADIOS_MODE_READ:
-            omode[0]='r';
-            break;
-        case ADIOS_MODE_WRITE:
-            omode[0]='w';
-            break;
-        case ADIOS_MODE_APPEND:
-            omode[0]='a';
-            break;
-        case ADIOS_MODE_UPDATE:
-            omode[0]='u';
-            break;
-        default:
-            break;
-        }
-
-        if (DEBUG>3) printf("start adios_open\n");
-        if (args->use_single_server==TRUE) {
-            if (DEBUG>3) printf("adios_open: using MPI_COMM_SELF\n");
-            Func_Timer("adios_open", rc = adios_open(&fd, args->gname, args->fname, omode, comm_self););
-        } else {
-            if (DEBUG>3) printf("adios_open: using MPI_COMM_WORLD\n");
-            Func_Timer("adios_open", rc = adios_open(&fd, args->gname, args->fname, omode, comm_world););
-        }
-        if (rc != 0) {
-            printf("Error opening file \"%s\": %d\n", args->fname, rc);
-            goto cleanup;
-        }
-        if (DEBUG>3) printf("end adios_open\n");
-
-        open_file_add(args->fname, fd);
-
-        add_file(fd, WRITE_CACHING_COLLECTIVE);
-    }
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_open_stub(%s, %d): fd=%ld, fd=%p\n", grank, args->fname, args->mode, fd, fd);
-
-    res.fd=fd;
-
-cleanup:
-    /* send the ncid and return code back to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    return rc;
-}
-
-int nssi_staging_group_size_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_group_size_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    uint64_t total_size=0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_group_size_stub(fd=%ld, pg_size=%ld)\n", grank, args->fd, args->data_size);
-
-    Func_Timer("adios_group_size", rc = adios_group_size(args->fd, args->data_size, &total_size););
-    if (rc != 0) {
-        printf("adios_group_size failed: %d\n", rc);
-    }
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_group_size_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_staging_close_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_close_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_close_stub(%ld, %s)\n", grank, args->fd, args->fname);
-
-    agg_and_write(args->fd);
-
-    Func_Timer("adios_close", adios_close(args->fd););
-
-    open_file_del(args->fname);
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_close_stub(%ld, %s)\n", grank, args->fd, args->fname);
-
-    return rc;
-}
-
-int nssi_staging_read_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_read_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    adios_read_res res;
-    char vpathname[ADIOS_PATH_MAX];
-    int pathlen;
-    char *v=NULL;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_read_stub(%ld)\n", grank, args->fd);
-
-//    pathlen=strlen(args->vpath);
-//    if (args->vpath[pathlen-1]=='/') {
-//        sprintf(vpathname, "%s%s", args->vpath, args->vname);
-//    } else {
-//        sprintf(vpathname, "%s/%s", args->vpath, args->vname);
-//    }
-
-
-    for (int i=0;i<args->offsets.offsets_len;i++) {
-        uint64_t *odata=(uint64_t *)malloc(sizeof(uint8_t));
-        *odata = args->offsets.offsets_val[i].vdata;
-        Func_Timer("adios_set_path_var", adios_set_path_var(args->fd, args->offsets.offsets_val[i].vpath, args->offsets.offsets_val[i].vname););
-        Func_Timer("adios_read", adios_read(args->fd, args->offsets.offsets_val[i].vname, odata, 8););
-    }
-    for (int i=0;i<args->ldims.ldims_len;i++) {
-        uint64_t *ddata=(uint64_t *)malloc(sizeof(uint8_t));
-        *ddata = args->ldims.ldims_val[i].vdata;
-        Func_Timer("adios_set_path_var", adios_set_path_var(args->fd, args->ldims.ldims_val[i].vpath, args->ldims.ldims_val[i].vname););
-        Func_Timer("adios_read", adios_read(args->fd, args->ldims.ldims_val[i].vname, ddata, 8););
-    }
-
-    v=(char *)calloc(args->max_read, 1);
-
-    Func_Timer("adios_set_path_var", adios_set_path_var(args->fd, args->vpath, args->vname););
-    Func_Timer("adios_read", adios_read(args->fd, args->vname, v, args->max_read););
-
-    res.bytes_read=args->max_read;
-
-    Func_Timer("nssi_put_data", rc = nssi_put_data(caller, v, res.bytes_read, data_addr, -1););
-    if (rc != NSSI_OK) {
-        printf("Could not put var data on client\n");
-        goto cleanup;
-    }
-
-cleanup:
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_read_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_staging_write_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_write_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-    adios_write_res res;
-    char vpathname[ADIOS_PATH_MAX];
-    int pathlen;
-    char *v=NULL;
-    int i=0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_write_stub(fd=%ld, vsize=%ld)\n", grank, args->fd, args->vsize);
-
-//    pathlen=strlen(args->vpath);
-//    if (args->vpath[pathlen-1]=='/') {
-//        sprintf(vpathname, "%s%s", args->vpath, args->vname);
-//    } else {
-//        sprintf(vpathname, "%s/%s", args->vpath, args->vname);
-//    }
-
-    v=(char *)malloc(args->vsize);
-
-    Func_Timer("nssi_get_data", rc = nssi_get_data(caller, v, args->vsize, data_addr););
-    if (rc != NSSI_OK) {
-        printf("Could not get var data on client\n");
-        goto cleanup;
-    }
-
-    if (DEBUG>3) printf("server_rank(%d) vname(%s) vsize(%ld) is_scalar(%d) writer_rank(%ld)\n", global_rank, args->vname, args->vsize, args->is_scalar, args->writer_rank);
-
-    if (!args->is_scalar) {
-        if (DEBUG>2) printf("server_rank(%d) caching non-scalar vname(%s) vsize(%ld)\n", global_rank, args->vname, args->vsize);
-        if (DEBUG>3) printf("allocated v(%p), len(%ld)\n", v, args->vsize);
-        aggregation_chunk_details_t *chunk=NULL;
-        chunk = new aggregation_chunk_details_t;
-        chunk->fd = args->fd;
-        strcpy(chunk->var_path, args->vpath);
-        strcpy(chunk->var_name, args->vname);
-        chunk->ndims = args->offsets.offsets_len;
-        chunk->buf = v;
-        chunk->atype = (enum ADIOS_DATATYPES)args->atype;
-        chunk->len   = args->vsize;
-        chunk->num_elements = 1;
-        for (int i=0;i<args->ldims.ldims_len;i++) {
-            chunk->num_elements *= args->ldims.ldims_val[i].vdata;
-        }
-        chunk->offset_path = (char **)calloc(args->offsets.offsets_len, sizeof(char *));
-        chunk->offset_name = (char **)calloc(args->offsets.offsets_len, sizeof(char *));
-        chunk->offset = (uint64_t *)calloc(args->offsets.offsets_len, sizeof(uint64_t));
-        for (int i=0;i<args->offsets.offsets_len;i++) {
-            chunk->offset_path[i] = strdup(args->offsets.offsets_val[i].vpath);
-            chunk->offset_name[i] = strdup(args->offsets.offsets_val[i].vname);
-            chunk->offset[i] = args->offsets.offsets_val[i].vdata;
-        }
-        chunk->count_path = (char **)calloc(args->ldims.ldims_len, sizeof(char *));
-        chunk->count_name = (char **)calloc(args->ldims.ldims_len, sizeof(char *));
-        chunk->count  = (uint64_t *)calloc(args->ldims.ldims_len, sizeof(uint64_t));;
-        for (int i=0;i<args->ldims.ldims_len;i++) {
-            chunk->count_path[i] = strdup(args->ldims.ldims_val[i].vpath);
-            chunk->count_name[i] = strdup(args->ldims.ldims_val[i].vname);
-            chunk->count[i] = args->ldims.ldims_val[i].vdata;
-        }
-        add_chunk(chunk);
-
-    } else {
-        if (DEBUG>2) printf("server_rank(%d) writing scalar vname(%s) vsize(%ld)\n", global_rank, args->vname, args->vsize);
-        Func_Timer("adios_set_path_var", adios_set_path_var(args->fd, args->vpath, args->vname););
-        Func_Timer("adios_write", adios_write(args->fd, args->vname, v););
-
-        free(v);
-    }
-
-    res.bytes_written=args->vsize;
-
-cleanup:
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, &res, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_write_stub(fd=%ld, vsize=%ld)\n", grank, args->fd, args->vsize);
-
-    return rc;
-}
-
-int nssi_staging_start_calc_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_start_calc_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_start_calc_stub(%ld)\n", grank, args->fd);
-
-    agg_and_write(args->fd);
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_start_calc_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_staging_stop_calc_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_stop_calc_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_stop_calc_stub(%ld)\n", grank, args->fd);
-
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_stop_calc_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_staging_end_iter_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_end_iter_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_end_iter_stub(%ld)\n", grank, args->fd);
-
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_end_iter_stub(%ld)\n", grank, args->fd);
-
-    return rc;
-}
-
-int nssi_staging_finalize_stub(
-        const unsigned long request_id,
-        const nssi_remote_pid *caller,
-        const adios_finalize_args *args,
-        const nssi_rma *data_addr,
-        const nssi_rma *res_addr)
-{
-    int rc = 0;
-
-    if (DEBUG>2) printf("myrank(%d): enter nssi_staging_finalize_stub(%s)\n", grank, args->client_id);
-
-    /*
-     *
-     * do nothing
-     *
-     */
-
-    /* send result to client */
-    rc = nssi_send_result(caller, request_id, rc, NULL, res_addr);
-
-    if (DEBUG>2) printf("myrank(%d): exit nssi_staging_finalize_stub(%s)\n", grank, args->client_id);
-
-    return rc;
-}
-
-/* -------- END SERVER-SIDE STUBS -------------- */
-
-int nssi_staging_server_init(const char *adios_config_file)
-{
-    int rc=NSSI_OK;
-
-    if (DEBUG>3) printf("start adios_init(%s)\n", adios_config_file);
-    rc = adios_init(adios_config_file);
-    if (rc != 1) {
-        printf("adios_init() failed: %d\n", rc);
-        return(-1);
-    }
-    if (DEBUG>3) printf("end adios_init(%s)\n", adios_config_file);
-
-
-    /* register server stubs */
-    NSSI_REGISTER_SERVER_STUB(ADIOS_OPEN_OP, nssi_staging_open_stub, adios_open_args, adios_open_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_GROUP_SIZE_OP, nssi_staging_group_size_stub, adios_group_size_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_READ_OP, nssi_staging_read_stub, adios_read_args, adios_read_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_WRITE_OP, nssi_staging_write_stub, adios_write_args, adios_write_res);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_END_ITER_OP, nssi_staging_end_iter_stub, adios_end_iter_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_START_CALC_OP, nssi_staging_start_calc_stub, adios_start_calc_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_STOP_CALC_OP, nssi_staging_stop_calc_stub, adios_stop_calc_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_CLOSE_OP, nssi_staging_close_stub, adios_close_args, void);
-    NSSI_REGISTER_SERVER_STUB(ADIOS_FINALIZE_OP, nssi_staging_finalize_stub, adios_finalize_args, void);
-
-    return 0;
-}
-
-
-
-static void generate_contact_info(nssi_remote_pid *myid)
-{
-    nssi_remote_pid *all_pids=NULL;
-    int rank, np;
-    char contact_path[1024];
-
-    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-    //printf("rank (%d)\n", rank);
-
-    if (rank==0) {
-        MPI_Comm_size(MPI_COMM_WORLD, &np);
-        all_pids=(nssi_remote_pid *)malloc(np*sizeof(nssi_remote_pid));
-    }
-    MPI_Gather(myid, sizeof(nssi_remote_pid), MPI_BYTE,
-               all_pids, sizeof(nssi_remote_pid), MPI_BYTE,
-               0, MPI_COMM_WORLD);
-    if (rank==0) {
-        char *contact_file=getenv("ADIOS_NSSI_CONTACT_INFO");
-        if (contact_file==NULL) {
-            printf("ADIOS_NSSI_CONTACT_INFO env var is undefined.\n");
-            free(all_pids);
-            return;
-        }
-//        sprintf(contact_path, "%s.%04d", contact_file, rank);
-        sprintf(contact_path, "%s", contact_file);
-        if (DEBUG>3) printf("creating contact file (%s)\n", contact_path);
-        FILE *f=fopen(contact_path, "w");
-        if (f==NULL) {
-            perror("fopen");
-        }
-        for (int i=0;i<np;i++) {
-            fprintf(f, "%u@%u@%s@%u\n",
-                    all_pids[i].nid, all_pids[i].pid,
-                    all_pids[i].hostname, (unsigned int)ntohs(all_pids[i].port));
-        }
-//        fprintf(f, "%u@%u@%s@%u\n",
-//                myid->nid, myid->pid,
-//                myid->hostname, (unsigned int)ntohs(myid->port));
-        fclose(f);
-        free(all_pids);
-    }
-    MPI_Barrier(MPI_COMM_WORLD);
-}
-
-
-/**
- * @brief The LWFS xfer-server.
- */
-int main(int argc, char **argv)
-{
-    int rc = NSSI_OK;
-
-    nssi_service nssi_svc;
-//    log_level debug_level;
-    char logfile[1024];
-    int rank, np;
-
-    MPI_Init(&argc, &argv);
-    MPI_Comm_rank(MPI_COMM_WORLD, &global_rank);
-    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-    MPI_Comm_size(MPI_COMM_WORLD, &np);
-    grank=rank;
-    gsize=np;
-
-    /* options that can be overriden by the command-line */
-    bool daemon_flag = false;
-    int verbose = 5;  /* default debug_level */
-    int num_threads = 0;
-    int server_pid = 128;   /* process ID of the server */
-    int server_port = 7728; /* TCP port of the server */
-
-    memset(&nssi_svc, 0, sizeof(nssi_service));
-
-    /* initialize and enable logging */
-//    if (args_info.logfile_arg != NULL) {
-//        sprintf(logfile, "%s.%04d", "nssi_staging_server.log", rank);
-//        logger_init((log_level)verbose, logfile);
-//    } else {
-//        logger_init((log_level)verbose, NULL);
-//    }
-//    netcdf_debug_level=(log_level)(log_level)args_info.verbose_arg;
-//    debug_level = (log_level)args_info.verbose_arg;
-
-//    logger_init((log_level)verbose, NULL);
-
-    if (daemon_flag) {
-        nssi_daemonize();
-    }
-
-#ifdef HAVE_PORTALS
-    nssi_ptl_init(PTL_IFACE_SERVER, server_pid);
-    rc = nssi_rpc_init(NSSI_RPC_PTL, NSSI_RPC_XDR);
-    if (rc != NSSI_OK) {
-        printf("could not init rpc: %s\n",
-                nssi_err_str(rc));
-        return rc;
-    }
-    nssi_remote_pid myid;
-    memset(&myid, 0, sizeof(nssi_remote_pid));
-    nssi_ptl_get_id(&myid);
-    generate_contact_info(&myid);
-#endif
-#ifdef HAVE_INFINIBAND
-    memset(&nssi_svc.req_addr.match_id, 0, sizeof(nssi_remote_pid));
-    strcpy(nssi_svc.req_addr.match_id.hostname, args_info.server_addr_arg);
-    nssi_svc.req_addr.match_id.port = args_info.server_port_arg;
-
-    nssi_ib_init(&nssi_svc);
-    rc = nssi_rpc_init(NSSI_RPC_IB, NSSI_RPC_XDR);
-    if (rc != NSSI_OK) {
-        printf("could not init rpc: %s\n",
-                nssi_err_str(rc));
-        return rc;
-    }
-    generate_contact_info(&nssi_svc.req_addr.match_id);
-#endif
-
-    if (DEBUG>3) printf("Initialize staging service\n");
-
-    /* initialize the lwfs service */
-    rc = nssi_service_init(0, NSSI_SHORT_REQUEST_SIZE, &nssi_svc);
-    if (rc != NSSI_OK) {
-        printf("could not init nssi_svc: %s\n",
-                nssi_err_str(rc));
-        return -1;
-    }
-
-    /* initialize staging service */
-    rc = nssi_staging_server_init(argv[1]);
-
-    /* start processing requests */
-    nssi_svc.max_reqs = -1;
-    rc = nssi_service_start(&nssi_svc, num_threads);
-    if (rc != NSSI_OK) {
-        printf("exited nssi_svc: %s\n",
-                nssi_err_str(rc));
-    }
-
-    adios_finalize(rank);
-
-    /* shutdown the nssi_svc */
-    if (DEBUG>3) printf("shutting down service library\n");
-    nssi_service_fini(&nssi_svc);
-
-    nssi_rpc_fini();
-
-    MPI_Finalize();
-
-    return rc;
-}
diff --git a/src/public/adios.h b/src/public/adios.h
index 3977505..87ccc44 100644
--- a/src/public/adios.h
+++ b/src/public/adios.h
@@ -33,6 +33,7 @@ extern "C" {
 // Only processes of the provided communicator can later participate
 // in any adios activity
 int adios_init (const char * config, MPI_Comm comm);
+int adios_is_initialized(void);
 
 int adios_finalize (int mype);
 
@@ -84,12 +85,15 @@ int adios_close (int64_t fd_p);
 // ADIOS No-XML API's
 int adios_init_noxml (MPI_Comm comm);
 
-// To allocate ADIOS buffer
+// To allocate ADIOS buffer OBSOLETE
 int adios_allocate_buffer (
         enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_alloc_when,
         uint64_t buffer_size
         );
 
+// To set maximum buffer size for each adios_open()...adios_close() operation.
+void adios_set_max_buffer_size (uint64_t max_buffer_size_MB);
+
 // To declare a ADIOS group
 int adios_declare_group (int64_t * id, 
                          const char * name,
@@ -124,6 +128,14 @@ int64_t adios_define_var (int64_t group_id,
 // for the next output step.
 int adios_delete_vardefs (int64_t id);
 
+// Return the expected size (in bytes) of a defined variable.
+// It is simply the product of local dimensions and byte-size of type.
+// It works only if the variable is defined with numeric dimensions or
+// the dimension variables are already written with adios_write().
+// Input is id returned by adios_define_var().
+// Returns 0 on error, check adios_errno for error code
+uint64_t adios_expected_var_size (int64_t var_id);
+
 // To set the transform method for a variable just defined 
 // var_id is the value returned by adios_define_var
 // returns adios_errno (0=OK)
@@ -145,7 +157,7 @@ int adios_define_attribute_byvalue (int64_t group,
                             const char * path, 
                             enum ADIOS_DATATYPES type,
                             int  nelems,
-                            void * values
+                            const void * values
                            );
 
 int adios_delete_attrdefs (int64_t id);
diff --git a/src/public/adios_error.h b/src/public/adios_error.h
index 0a62e8a..9f49ddd 100644
--- a/src/public/adios_error.h
+++ b/src/public/adios_error.h
@@ -72,6 +72,7 @@ enum ADIOS_ERRCODES {
     err_invalid_type_attr               = -70,
     err_invalid_value_attr              = -71,
     err_histogram_error                 = -72,
+    err_invalid_type_as_dimension       = -73,
 
     // Write method errors
     err_invalid_file_mode               = -100,
@@ -152,6 +153,7 @@ enum ADIOS_ERRCODES {
     err_unsupported_selection                 = -401, // unsupported selection
     err_invalid_query_value                   = -402, // value passed in expression is invalid
     err_incompatible_queries                  = -403, // cannot combine two queries
+    err_invalid_selection                     = -404, // something wrong with the selection object
 
     // Miscellaneous
     err_fgr                                   = -900, // FGR lib error
diff --git a/src/public/adios_query.h b/src/public/adios_query.h
index c703193..875386c 100644
--- a/src/public/adios_query.h
+++ b/src/public/adios_query.h
@@ -7,15 +7,13 @@ extern "C" {
 
 #include "adios_read.h"
 
-//#define ADIOS_QUERY_METHOD_COUNT  2
-
-//int gCurrentTimeStep;
 
 enum ADIOS_QUERY_METHOD 
 {
-    ADIOS_QUERY_METHOD_FASTBIT = 0,
-    ADIOS_QUERY_METHOD_ALACRITY = 1,
-    ADIOS_QUERY_METHOD_UNKNOWN = 2,
+    ADIOS_QUERY_METHOD_MINMAX   = 0,
+    ADIOS_QUERY_METHOD_FASTBIT  = 1,
+    ADIOS_QUERY_METHOD_ALACRITY = 2,
+    ADIOS_QUERY_METHOD_UNKNOWN  = 3,
     ADIOS_QUERY_METHOD_COUNT = ADIOS_QUERY_METHOD_UNKNOWN
 };
     
@@ -66,9 +64,53 @@ typedef struct {
 
     int hasParent;
     int deleteSelectionWhenFreed;
+
+    int estimate; // 0 => the query engine does candidate check; 1 => no candidate check, leading to more results
 } ADIOS_QUERY;
    
 
+enum ADIOS_QUERY_RESULT_STATUS 
+{
+    ADIOS_QUERY_RESULT_ERROR = -1,
+    ADIOS_QUERY_NO_MORE_RESULTS  = 0,
+    ADIOS_QUERY_HAS_MORE_RESULTS = 1
+};
+
+typedef struct {
+    enum ADIOS_QUERY_METHOD         method_used; 
+    enum ADIOS_QUERY_RESULT_STATUS  status;
+    int                             nselections; // number of ADIOS_SELECTION entries in returned array
+    ADIOS_SELECTION                *selections;  // single array of ADIOS_SELECTION (structs)
+    uint64_t                        npoints;     // total number of data points returned in point selections
+    /* 
+       if result is from: ADIOS_QUERY_RESULT *result = adios_query_evaluate(...)
+       then  result->selections[i] is a struct, not a pointer  
+
+       FASTBIT and ALACRITY returns an array of selections, whose type is ADIOS_SELECTION_POINTS
+           Points are 1D local offsets in the bounding box returned in result->selection[i].u.points.container.
+           Read operations can be performed directly on such selections.
+           Number of points that satisfy the query = npoints =
+                   = SUM(result->selection[i].u.points.npoints, i=0,..,nselections-1)
+           adios_selection_points_1DtoND() can be used to convert 1D offsets to N-D points
+           Delete the selection and the result by calling:
+              for (i=0; i < result->nselections; i++) {
+                  free (result->selections[i].u.points.points);
+              }
+              free (result->selections);
+              free (result);
+       MINMAX returns multiple selections, each of them is of type ADIOS_SELECTION_WRITEBLOCK
+           Block id of the Nth returned writeblock selection = result->selection[N].u.block.index
+           npoints is 0.
+           Delete all selections at once then the result itself by calling  
+              free (result->selections);
+              free (result);
+
+       The extra read function adios_query_read_boundingbox() works on all of these selections.
+     */
+} ADIOS_QUERY_RESULT;
+
+
+
 #ifndef __INCLUDED_FROM_FORTRAN_API__
 
 /* functions */
@@ -78,12 +120,12 @@ int adios_query_is_method_available(enum ADIOS_QUERY_METHOD method);
 ADIOS_QUERY* adios_query_create (ADIOS_FILE* f, 
                                  ADIOS_SELECTION* queryBoundary,
                                  const char* varName,
-                                 enum ADIOS_PREDICATE_MODE op,
+                                 enum ADIOS_PREDICATE_MODE queryOp,
                                  const char* value); 
 
 
 ADIOS_QUERY* adios_query_combine (ADIOS_QUERY* q1, 
-                                  enum ADIOS_CLAUSE_OP_MODE operator,		    
+                                  enum ADIOS_CLAUSE_OP_MODE combineOp,
                                   ADIOS_QUERY* q2);
 
 /* 
@@ -117,10 +159,10 @@ int64_t adios_query_estimate (ADIOS_QUERY* q, int timeStep);
  * 
  * IN:  q               query
  *      timestep        timestep of interest
- *	batchSize       max size of results to return of this call
+ *      batchSize       max size of results to return of this call
  *      outputBoundary  query results will be mapped to this selection
- *	                outputBoundary must match the selections used when construct the query
- *			if NULL, then will use the first selection used in query
+ *                      outputBoundary must match the selections used when construct the query
+ * if NULL, then will use the first selection used in query
  * OUT: queryResult     list of points
  *                      NULL if no result      
  * RETURN:  -1: error
@@ -129,15 +171,43 @@ int64_t adios_query_estimate (ADIOS_QUERY* q, int timeStep);
  *
  */
 
-int  adios_query_evaluate (ADIOS_QUERY* q, 
-			   ADIOS_SELECTION* outputBoundary,// must supply to get results
-			   int timestep,
-			   uint64_t batchSize, // limited by maxResult
-			   ADIOS_SELECTION** queryResult);
+ADIOS_QUERY_RESULT * adios_query_evaluate (
+                         ADIOS_QUERY* q,
+                         ADIOS_SELECTION* outputBoundary, // must supply to get results
+                         int timestep,
+                         uint64_t batchSize // limit on number of blocks/points returned at once
+                     );
+
+/*
+ * Reading functions
+ */
+
+/* Read in data of 'varname' for all selections in 'selections' for timestep
+ * and copy them into 'data' which has a bounding box selection.
+ * If a data point falls outside the bounding box, it will not be copied.
+ * Memory for each query selection is allocated and freed automatically in this function.
+ * Memory for 'data' should be allocated by the user and cover the 'bb' boundingbox.
+ * Query should be evaluated before calling this function and 'selections' and 'nselections'
+ * should come from ADIOS_QUERY_RESULT, although not necessarily all of them.
+ * Returns 0 on success, and the adios_errno value on any error.
+ */
+int adios_query_read_boundingbox (
+        ADIOS_FILE *f,
+        ADIOS_QUERY *q,
+        const char *varname,
+        int timestep,
+        unsigned int nselections,
+        ADIOS_SELECTION *selections,
+        ADIOS_SELECTION *bb,
+        void *data
+   );
 
 
 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);
+
 #endif /* __INCLUDED_FROM_FORTRAN_API__ */
 
 #ifdef __cplusplus
diff --git a/src/public/adios_read_ext.h b/src/public/adios_read_ext.h
index 22e14d8..f1a301a 100644
--- a/src/public/adios_read_ext.h
+++ b/src/public/adios_read_ext.h
@@ -16,6 +16,11 @@
 #include "adios_read_v2.h"
 #include "adios_selection.h"
 
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* An opaque type defining a particular view of the data.
  * Currently, there are only two possible values: LOGICAL_DATA_VIEW and PHYSICAL_DATA_VIEW 
  */
@@ -131,4 +136,8 @@ int adios_read_get_dimension_order (ADIOS_FILE *);
 
 #endif  /*__INCLUDED_FROM_FORTRAN_API__*/
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* ADIOS_READ_EXT_H_ */
diff --git a/src/public/adios_read_v2.h b/src/public/adios_read_v2.h
index 6f2f4a9..8359997 100644
--- a/src/public/adios_read_v2.h
+++ b/src/public/adios_read_v2.h
@@ -12,6 +12,7 @@
 #define __ADIOS_READ_VER2_H__
 
 #include <stdint.h>
+#include <inttypes.h>
 
 #include "adios_version.h"
 #include "adios_mpi.h"
@@ -125,6 +126,8 @@ struct _ADIOS_VARINFO {
         int      * nblocks;         /* Number of blocks that comprise this variable in a step
                                        It is an array of 'nsteps' integers                            */
         int        sum_nblocks;     /* Number of all blocks of all steps, the sum of the nblocks array*/
+        int        nattrs;          /* Number of attributes with the name <variable_fullpath>/<name>  */
+        int      * attr_ids;        /* Attribute ids in an array, use fp->attr_namelist[<id>] for names */
         ADIOS_VARSTAT  *statistics; /* Statistics, retrieved in separate call: adios_inq_var_stat()   */
         ADIOS_VARBLOCK *blockinfo;  /* Spatial arrangement of written blocks, 
                                        retrieved in separate call: adios_inq_var_blockinfo()       
diff --git a/src/public/adios_selection.h b/src/public/adios_selection.h
index 98bbdde..07a0c38 100644
--- a/src/public/adios_selection.h
+++ b/src/public/adios_selection.h
@@ -38,6 +38,8 @@ extern "C" {
 /* Types used in the API */
 /*************************/
 
+typedef struct ADIOS_SELECTION_STRUCT  ADIOS_SELECTION;
+
 /* Type of selection */
 enum ADIOS_SELECTION_TYPE {
     ADIOS_SELECTION_BOUNDINGBOX  = 0,   /* Contiguous block of data defined by offsets and counts in each dimension */
@@ -57,11 +59,18 @@ typedef struct {
 /* A list of points.
  * It is a 1D array of indices, linearized for all dimension
  *     (e.g.  [i1,j1,k1,i2,j2,k2,...,in,jn,kn] for n points in a 3D space.
+ * If a container selection is given, points are relative coordinates/offsets in the
+ * container box/writeblock.
+ * 1D offsets in N-dimensional container are allowed. Such selections are returned by
+ * FASTBIT and ALACRITY query method. File reading is supported for such selections.
+ * adios_selection_points_1DtoND() can be used to convert 1D to N-D points.
  */
 typedef struct { 
     int       ndim;
+    int       _free_points_on_delete;     // user provided points are not copied, won't free either
     uint64_t  npoints;
     uint64_t *points;
+    ADIOS_SELECTION *container_selection; // a writeblock, a bounding box, or NULL
 } ADIOS_SELECTION_POINTS_STRUCT;
 
 /* A selected block produced by a writer
@@ -97,8 +106,7 @@ typedef struct {
 /** Selection for reading a subset of a variable. 
  *   A selection is an additive list of bounding boxes and point-sets 
  */
-/*typedef struct ADIOS_SELECTION_STRUCT  ADIOS_SELECTION; */
-typedef struct { 
+struct ADIOS_SELECTION_STRUCT  {
        enum ADIOS_SELECTION_TYPE    type; /* Type of selection */
        union {
             ADIOS_SELECTION_BOUNDINGBOX_STRUCT bb;
@@ -106,8 +114,8 @@ typedef struct {
             ADIOS_SELECTION_WRITEBLOCK_STRUCT block;
             ADIOS_SELECTION_AUTO_STRUCT autosel;
        } u;
-       /*ADIOS_SELECTION             *next;*/
-} ADIOS_SELECTION;
+       //ADIOS_SELECTION             *next;
+};
 
 #ifndef __INCLUDED_FROM_FORTRAN_API__
 
@@ -181,6 +189,16 @@ ADIOS_SELECTION* adios_selection_hyperslab (uint64_t ndim, uint64_t *start, uint
   */
 void adios_selection_delete (ADIOS_SELECTION *selection);
 
+/* Convert one selection of 1D point offsets in a bounding box,
+ * returned by FASTBIT and ALACRITY query methods, to N-dimensional points.
+ * This function works only if there is a bounding box in pointsinbox1D->u.points.container!
+ * It allocates memory for the result selection, after which the original can be freed.
+ * Return:
+ * If global==0, the points will be relative to the container, if not, the points will be
+ * global coordinates (container's starting offsets added to each point) and result's container
+ * will be NULL.
+ */
+ADIOS_SELECTION * adios_selection_points_1DtoND (ADIOS_SELECTION * pointsinbox1D, int global);
 
 #endif  /*__INCLUDED_FROM_FORTRAN_API__*/
 
diff --git a/src/public/adios_types.h b/src/public/adios_types.h
index 2c0676e..3ebc079 100644
--- a/src/public/adios_types.h
+++ b/src/public/adios_types.h
@@ -48,6 +48,7 @@ enum ADIOS_BUFFER_ALLOC_WHEN {ADIOS_BUFFER_ALLOC_UNKNOWN
                              ,ADIOS_BUFFER_ALLOC_LATER
                              };
 
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/public/adios_version.h b/src/public/adios_version.h
index 39ca8e3..f059aa9 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.9.0"
+#define ADIOS_VERSION "1.10.0"
 #define ADIOS_VERSION_MAJOR 1
-#define ADIOS_VERSION_MINOR 9
+#define ADIOS_VERSION_MINOR 10
 #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 "9"
+#define ADIOS_VERSION_MINOR_STRING "10"
 #define ADIOS_VERSION_PATCH_STRING "0"
 
 /* BP File format version
diff --git a/src/query/Makefile.plugins b/src/query/Makefile.plugins
index 872abc3..33cf981 100644
--- a/src/query/Makefile.plugins
+++ b/src/query/Makefile.plugins
@@ -1,3 +1,4 @@
+query_method_SOURCES += query/query_minmax.c
 if HAVE_FASTBIT
 query_method_SOURCES += query/query_fastbit.c
 query_method_SOURCES += query/fastbit_adios.c
diff --git a/src/query/Makefile.plugins.cmake b/src/query/Makefile.plugins.cmake
index 3987d6e..03253d9 100644
--- a/src/query/Makefile.plugins.cmake
+++ b/src/query/Makefile.plugins.cmake
@@ -1,3 +1,5 @@
+set(query_method_SOURCES ${query_method_SOURCES} query/query_minmax.c)
+
 if(HAVE_FASTBIT)
 set(query_method_SOURCES ${query_method_SOURCES} query/query_fastbit.c)
 set(query_method_SOURCES ${query_method_SOURCES} query/fastbit_adios.c)
diff --git a/src/query/adios_query.c b/src/query/adios_query.c
index 127bf92..a1e2b24 100644
--- a/src/query/adios_query.c
+++ b/src/query/adios_query.c
@@ -2,24 +2,24 @@
 #include "common_query.h"
 
 int adios_query_is_method_available(enum ADIOS_QUERY_METHOD method) {
-	return common_query_is_method_available(method);
+    return common_query_is_method_available(method);
 }
 
 ADIOS_QUERY* adios_query_create(ADIOS_FILE* f, 
-				ADIOS_SELECTION* queryBoundary,
-				const char* varName,
-				enum ADIOS_PREDICATE_MODE op,
-				const char* value)
+                ADIOS_SELECTION* queryBoundary,
+                const char* varName,
+                enum ADIOS_PREDICATE_MODE queryOp,
+                const char* value)
 {
-  return common_query_create(f, queryBoundary, varName, op, value);
+  return common_query_create(f, queryBoundary, varName, queryOp, value);
 }
-					
+
 
 ADIOS_QUERY* adios_query_combine(ADIOS_QUERY* q1, 
-				 enum ADIOS_CLAUSE_OP_MODE operator,		    
-				 ADIOS_QUERY* q2)
+                 enum ADIOS_CLAUSE_OP_MODE combineOperator,
+                 ADIOS_QUERY* q2)
 {
-  return common_query_combine(q1, operator, q2);
+  return common_query_combine(q1, combineOperator, q2);
 }
 
 void adios_query_set_method (ADIOS_QUERY* q, enum ADIOS_QUERY_METHOD method) 
@@ -39,13 +39,27 @@ void adios_query_set_timestep(int timeStep)
   return common_query_set_timestep(timeStep);
 }
 */
-int  adios_query_evaluate(ADIOS_QUERY* q, 
-			  ADIOS_SELECTION* outputBoundary,
-			  int timeStep, 
-			  uint64_t batchSize, // limited by maxResult
-			  ADIOS_SELECTION** queryResult)
+ADIOS_QUERY_RESULT * adios_query_evaluate(ADIOS_QUERY* q, 
+              ADIOS_SELECTION* outputBoundary,
+              int timeStep,
+              uint64_t batchSize)
+{
+  return common_query_evaluate(q, outputBoundary, timeStep,  batchSize);
+}
+
+
+int adios_query_read_boundingbox (
+        ADIOS_FILE *f,
+        ADIOS_QUERY *q,
+        const char *varname,
+        int timestep,
+        unsigned int nselections,
+        ADIOS_SELECTION *selections,
+        ADIOS_SELECTION *bb,
+        void *data
+   )
 {
-  return common_query_evaluate(q, outputBoundary, timeStep,  batchSize, queryResult);
+    return common_query_read_boundingbox (f, q, varname, timestep, nselections, selections, bb, data);
 }
 
 void adios_query_free(ADIOS_QUERY* q)
diff --git a/src/query/adios_query_hooks.c b/src/query/adios_query_hooks.c
index b13422d..44bc157 100644
--- a/src/query/adios_query_hooks.c
+++ b/src/query/adios_query_hooks.c
@@ -35,6 +35,7 @@ void adios_query_hooks_init (struct adios_query_hooks_struct ** t)
       (*t) [i].adios_query_finalize_fn = 0;
     }
 
+    ASSIGN_FNS(minmax, ADIOS_QUERY_METHOD_MINMAX);
 #ifdef ALACRITY
     ASSIGN_FNS(alac, ADIOS_QUERY_METHOD_ALACRITY);
 #endif
diff --git a/src/query/adios_query_hooks.h b/src/query/adios_query_hooks.h
index ffb173e..dcb539a 100644
--- a/src/query/adios_query_hooks.h
+++ b/src/query/adios_query_hooks.h
@@ -7,16 +7,17 @@
 #define FORWARD_DECLARE(a) \
   int     adios_query_##a##_can_evaluate(ADIOS_QUERY* q); \
   int64_t adios_query_##a##_estimate(ADIOS_QUERY* q, int timeStep);			\
-  int     adios_query_##a##_evaluate(ADIOS_QUERY* q, int timeStep, uint64_t batchSize, ADIOS_SELECTION* outputBoundry, ADIOS_SELECTION** result); \
+  int     adios_query_##a##_evaluate(ADIOS_QUERY* q, int timeStep, uint64_t batchSize, ADIOS_SELECTION* outputBoundry, ADIOS_QUERY_RESULT * result); \
   int     adios_query_##a##_free(ADIOS_QUERY* q); \
   int     adios_query_##a##_finalize();
 
+FORWARD_DECLARE(minmax)
 FORWARD_DECLARE(fastbit)
 FORWARD_DECLARE(alac)
 
 typedef int      (* ADIOS_QUERY_FREE_FN) (ADIOS_QUERY* q);
 typedef int      (* ADIOS_QUERY_FINALIZE_FN) ();
-typedef int      (* ADIOS_QUERY_EVALUATE_FN) (ADIOS_QUERY* q, int timeStep, uint64_t batchSize, ADIOS_SELECTION* o, ADIOS_SELECTION** result);
+typedef int      (* ADIOS_QUERY_EVALUATE_FN) (ADIOS_QUERY* q, int timeStep, uint64_t batchSize, ADIOS_SELECTION* o, ADIOS_QUERY_RESULT * result);
 typedef int64_t  (* ADIOS_QUERY_ESTIMATE_FN) (ADIOS_QUERY* q, int timeStep);
 typedef int  (* ADIOS_QUERY_CAN_EVALUATE_FN) (ADIOS_QUERY* q);
 
diff --git a/src/query/adios_query_mod.f90 b/src/query/adios_query_mod.f90
index 22f4605..e336d65 100644
--- a/src/query/adios_query_mod.f90
+++ b/src/query/adios_query_mod.f90
@@ -24,6 +24,7 @@ module adios_query_mod
     !
     ! ADIOS Query method                                 
     !
+    integer, parameter :: ADIOS_QUERY_METHOD_MINMAX   = 0 
     integer, parameter :: ADIOS_QUERY_METHOD_FASTBIT  = 1 
     integer, parameter :: ADIOS_QUERY_METHOD_ALACRITY = 2 
 
diff --git a/src/query/adiosf_query.c b/src/query/adiosf_query.c
index 7a78f55..2803150 100644
--- a/src/query/adiosf_query.c
+++ b/src/query/adiosf_query.c
@@ -6,7 +6,8 @@
 
 #define __INCLUDED_FROM_FORTRAN_API__
 #include "public/adios_read_v2.h"
-#include "common_query.h"
+#include "public/adios_error.h"
+#include "query/common_query.h"
 #include "core/futils.h"
 
 
@@ -18,6 +19,7 @@ extern "C"  /* prevent C++ name mangling */
   #include "FC.h"
 #endif
 
+extern int adios_errno;
 
 
 int FC_FUNC_(adios_query_is_method_available_f2c,ADIOS_QUERY_IS_METHOD_AVAILABLE_F2C) (int *method)
@@ -89,13 +91,12 @@ void FC_FUNC_(adios_query_evaluate,ADIOS_QUERY_EVALUATE) (
         int      * err
         )
 {
-    ADIOS_SELECTION * result;
-    int ret;
-    *err = common_query_evaluate( (ADIOS_QUERY*)*q, 
+    ADIOS_QUERY_RESULT * result;
+    result = common_query_evaluate( (ADIOS_QUERY*)*q, 
                                   (ADIOS_SELECTION*) *sel_outputboundary,
                                   *timestep, 
-                                  *batchsize, 
-                                  &result);
+                                  *batchsize);
+    *err = result->status;
     if (!*err) {
         *sel_result = (int64_t)result;
     } else {
@@ -103,6 +104,32 @@ void FC_FUNC_(adios_query_evaluate,ADIOS_QUERY_EVALUATE) (
     }
 }
 
+
+void FC_FUNC_(adios_query_read_boundingbox,ADIOS_QUERY_READ_BOUNDINGBOX) (
+        int64_t *f,
+        int64_t *q,
+        char *varname,
+        int *timestep,
+        int *nselections,
+        int64_t *selections,
+        int64_t *bb,
+        void *data,
+        int *err,
+        int varname_size
+   )
+{
+    char * buf1 = 0;
+    buf1 = futils_fstr_to_cstr (varname, varname_size);
+
+    if (buf1 != 0) {
+        *err = common_query_read_boundingbox ((ADIOS_FILE*)*f, (ADIOS_QUERY*)*q,
+                buf1, *timestep, *nselections, (ADIOS_SELECTION *)*selections, (ADIOS_SELECTION *)*bb, data);
+    } else {
+        *err = adios_errno;
+    }
+}
+
+
 void FC_FUNC_(adios_query_free,ADIOS_QUERY_FREE) (int64_t* q)
 {
     common_query_free((ADIOS_QUERY*)*q);
diff --git a/src/query/common_query.c b/src/query/common_query.c
index e12ed98..5b8ffed 100644
--- a/src/query/common_query.c
+++ b/src/query/common_query.c
@@ -8,15 +8,17 @@
 #include "adios_query_hooks.h"
 #include "public/adios_error.h"
 #include "core/common_read.h"
+#include "core/a2sel.h"
 #include "core/adios_logger.h"
 #include "query_utils.h"
 static struct adios_query_hooks_struct * query_hooks = 0;
 
 static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* sel, 
-			     uint64_t* total_byte_size, uint64_t* dataSize, int timestep);
+                 uint64_t* total_byte_size, uint64_t* dataSize, int timestep);
 
 int isCompatible(ADIOS_QUERY* q1, ADIOS_QUERY* q2);
 
+#if 0
 static ADIOS_SELECTION* getAdiosDefaultBoundingBox(ADIOS_VARINFO* v) 
 {
   if (v->ndim == 0) {
@@ -41,9 +43,10 @@ static ADIOS_SELECTION* getAdiosDefaultBoundingBox(ADIOS_VARINFO* v)
     count[i] = v->dims[i];
   }   
 
-  ADIOS_SELECTION* result =  common_read_selection_boundingbox(v->ndim, start, count);
+  ADIOS_SELECTION* result =  a2sel_boundingbox(v->ndim, start, count);
   return result;
 }
+#endif
 
 static int query_hooks_initialized = 0;
 void common_query_init()
@@ -59,9 +62,9 @@ void common_query_finalize()
     if (query_hooks_initialized) {
         enum ADIOS_QUERY_METHOD m;
         for (m=0; m < ADIOS_QUERY_METHOD_COUNT; m++) {
-	  if (query_hooks[m].adios_query_finalize_fn != NULL) {
-	    query_hooks[m].adios_query_finalize_fn();
-	  }
+      if (query_hooks[m].adios_query_finalize_fn != NULL) {
+        query_hooks[m].adios_query_finalize_fn();
+      }
         }
         // Do not free query_hooks here because they are initialized only once
         // in common_query_init ---> adios_query_hooks_init()
@@ -70,10 +73,10 @@ void common_query_finalize()
 }
 
 int common_query_is_method_available(enum ADIOS_QUERY_METHOD method) {
-	if (method < 0 || method >= ADIOS_QUERY_METHOD_COUNT)
-		return 0;
-	else
-		return (query_hooks[method].adios_query_evaluate_fn != 0);
+    if (method >= ADIOS_QUERY_METHOD_COUNT)
+        return 0;
+    else
+        return (query_hooks[method].adios_query_evaluate_fn != 0);
 }
 
 void common_query_set_method (ADIOS_QUERY* q, enum ADIOS_QUERY_METHOD method) 
@@ -91,29 +94,29 @@ void common_query_set_method (ADIOS_QUERY* q, enum ADIOS_QUERY_METHOD method)
 // Choose a query method which can work on this query
 static enum ADIOS_QUERY_METHOD detect_and_set_query_method(ADIOS_QUERY* q)
 {
-	enum ADIOS_QUERY_METHOD m;
-	if (q->method != ADIOS_QUERY_METHOD_UNKNOWN) {
-		// Was set by user manually
-		return q->method;
-	}
-	// Look for a method that can evaluate this query
-	for (m=0; m < ADIOS_QUERY_METHOD_COUNT; m++) {
-		// without checking whether *evaluate_fn is defined,
-		// it causes crash when idx is not used for fastbit. (i.e. m=0, returns 0, m=1, crashes at "found = nullpoiint(q)"
-		if (query_hooks[m].adios_query_can_evaluate_fn == NULL) {
-		  continue;
-		}
-		int found = query_hooks[m].adios_query_can_evaluate_fn(q);
-		if (found) {
-		  // q->method = m;
-		  common_query_set_method(q, m);
-		  return m;
-		}
-	}
-	// return default that always works
-	//q->method = ADIOS_QUERY_METHOD_FASTBIT;
-	common_query_set_method(q, ADIOS_QUERY_METHOD_FASTBIT);
-	return ADIOS_QUERY_METHOD_FASTBIT;
+    enum ADIOS_QUERY_METHOD m;
+    if (q->method != ADIOS_QUERY_METHOD_UNKNOWN) {
+        // Was set by user manually
+        return q->method;
+    }
+    // Look for a method that can evaluate this query
+    for (m=0; m < ADIOS_QUERY_METHOD_COUNT; m++) {
+        // without checking whether *evaluate_fn is defined,
+        // it causes crash when idx is not used for fastbit. (i.e. m=0, returns 0, m=1, crashes at "found = nullpoiint(q)"
+        if (query_hooks[m].adios_query_can_evaluate_fn == NULL) {
+          continue;
+        }
+        int found = query_hooks[m].adios_query_can_evaluate_fn(q);
+        if (found) {
+          // q->method = m;
+          common_query_set_method(q, m);
+          return m;
+        }
+    }
+    // return default that always works
+    //q->method = ADIOS_QUERY_METHOD_FASTBIT;
+    common_query_set_method(q, ADIOS_QUERY_METHOD_FASTBIT);
+    return ADIOS_QUERY_METHOD_FASTBIT;
 }
 
 int adios_get_actual_timestep(ADIOS_QUERY* q, int timeStep)
@@ -151,33 +154,39 @@ static int adios_check_query_at_timestep(ADIOS_QUERY* q, int timeStep)
     if ((q->left == NULL) && (q->right == NULL)) 
     {      // leaf 
       if ((q->file == NULL) || (q->varName == NULL)) {
-	  log_error ("Query has no file or var info\n");
-	  return -1;
+      log_error ("Query has no file or var info\n");
+      return -1;
       }
 
       if ((q->file->is_streaming == 1) && (timeStep != 0)) {
-	adios_error(err_invalid_query_value, "TimeStep for streaming file should always be 0.\n");
-	return -1;
+    adios_error(err_invalid_query_value, "TimeStep for streaming file should always be 0.\n");
+    return -1;
       }
 
       if (q->file->is_streaming == 1) {
-	  timeStep = q->file->current_step;
+      timeStep = q->file->current_step;
       }
 
       if (q->varinfo != NULL) {
-	if (q->onTimeStep  == timeStep) {
-	  return timeStep; // returning call to get more values
-	}
+    if (q->onTimeStep  == timeStep) {
+      return timeStep; // returning call to get more values
+    }
       }
 
       ADIOS_VARINFO* v = common_read_inq_var(q->file, q->varName);
       if (v == NULL) {
-	adios_error (err_invalid_varname, "Query Invalid variable '%s':\n%s",
-		     q->varName, adios_get_last_errmsg());
-	return -1;
+    adios_error (err_invalid_varname, "Query Invalid variable '%s':\n%s",
+             q->varName, adios_get_last_errmsg());
+    return -1;
       }
+
       if (q->varinfo != NULL) {
-	common_read_free_varinfo(q->varinfo);
+          if (q->varinfo->blockinfo != NULL) {
+              // if varinfo had blockinfo for any reason, let's have it in
+              // the new step's varinfo too
+              common_read_inq_var_blockinfo(q->file, v);
+          }
+          common_read_free_varinfo(q->varinfo);
       }
       q->varinfo = v;
 
@@ -187,10 +196,10 @@ static int adios_check_query_at_timestep(ADIOS_QUERY* q, int timeStep)
 
       if (getTotalByteSize(q->file, v, q->sel, &total_byte_size, &dataSize, timeStep) < 0) {
         adios_error(err_incompatible_queries, "Unable to create query.");
-	return -1;
+    return -1;
       }
 
-      log_debug("%s, raw data size=%llu\n", q->condition, dataSize);
+      log_debug("%s, raw data size=%" PRIu64 "\n", q->condition, dataSize);
       //q->dataSlice = malloc(total_byte_size);
       q->dataSlice = 0;
       q->rawDataSize = dataSize;
@@ -201,13 +210,13 @@ static int adios_check_query_at_timestep(ADIOS_QUERY* q, int timeStep)
       int rightTimeStep = adios_check_query_at_timestep(q->right, timeStep);
 
       if ((rightTimeStep == -1) || (leftTimeStep == -1)) {
-	return -1;
+    return -1;
       }
       if (isCompatible(q->left, q->right) != 0) {
         adios_error (err_incompatible_queries, 
-		     "Found queries' selections are not compatible actual timestep: %d.\n", leftTimeStep);
+             "Found queries' selections are not compatible actual timestep: %d.\n", leftTimeStep);
 
-	return -1;
+    return -1;
       }
       q->rawDataSize = ((ADIOS_QUERY*)(q->left))->rawDataSize;
       return leftTimeStep;
@@ -237,7 +246,7 @@ void common_query_free(ADIOS_QUERY* q)
   }
 
   if (q->deleteSelectionWhenFreed) {
-    common_read_selection_delete(q->sel);
+    a2sel_free(q->sel);
   }
 
   // Only call a specialized free method if this query has been evaluated using
@@ -246,7 +255,7 @@ void common_query_free(ADIOS_QUERY* q)
   if (q->method != ADIOS_QUERY_METHOD_UNKNOWN) {
       assert(q->method < ADIOS_QUERY_METHOD_COUNT);
       if (query_hooks[q->method].adios_query_free_fn != NULL) {
-	query_hooks[q->method].adios_query_free_fn(q);
+    query_hooks[q->method].adios_query_free_fn(q);
       }
   }
 
@@ -254,7 +263,7 @@ void common_query_free(ADIOS_QUERY* q)
 }
 
 static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* sel, 
-			     uint64_t* total_byte_size, uint64_t* dataSize, int timestep)                             
+                 uint64_t* total_byte_size, uint64_t* dataSize, int timestep)
 {
   *total_byte_size = common_read_type_size (v->type, v->value);    
   *dataSize = 1; 
@@ -264,7 +273,7 @@ static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* s
     for (s=0; s<v->ndim; s++) {
          *total_byte_size *=v->dims[s];
          *dataSize *= v->dims[s];
-         //	log_debug(" dim %" PRIu64 "default count %" PRIu64 "\n", s, v->dims[s]);
+         //    log_debug(" dim %" PRIu64 "default count %" PRIu64 "\n", s, v->dims[s]);
     }
     return 0;
   }
@@ -279,16 +288,16 @@ static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* s
       int s=0;
 
       for (s=0; s<v->ndim; s++) {
-	   if (start[s]+count[s] > v->dims[s]) {
-	     log_error(" Invalid bounding box at %dth dim: start %" PRIu64 " + count %" PRIu64 " exceeds dim size: %" PRIu64 "\n", s, start[s], count[s], v->dims[s]);
-	     return -1;
-	   }
-	   *total_byte_size *=count[s];
-	   *dataSize *= count[s];
-//	   log_debug(" dim %" PRIu64 "count %" PRIu64 " \n", s, count[s]);
+       if (start[s]+count[s] > v->dims[s]) {
+         log_error(" Invalid bounding box at %dth dim: start %" PRIu64 " + count %" PRIu64 " exceeds dim size: %" PRIu64 "\n", s, start[s], count[s], v->dims[s]);
+         return -1;
+       }
+       *total_byte_size *=count[s];
+       *dataSize *= count[s];
+//       log_debug(" dim %" PRIu64 "count %" PRIu64 " \n", s, count[s]);
       }
       
-//	   log_debug("\tThe data size is = %" PRIu64 " \n", *dataSize);
+//       log_debug("\tThe data size is = %" PRIu64 " \n", *dataSize);
       break;
     }
   case ADIOS_SELECTION_POINTS:
@@ -307,31 +316,31 @@ static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* s
       int min = v->nblocks[0];
       int absBlockCounter = wb->index;
 
-      if (v->nsteps > 1) {	// all timesteps are known, can get abs
-	for (i=0; i<v->nsteps; i++) 
-	  {
-	    int nBlocksAtStep = v->nblocks[i];	  
-	    if (nBlocksAtStep < min) {
-	      min = nBlocksAtStep;
-	    }
-	    log_debug("\t\t   currstep=%d nblocks=%d\n", i, nBlocksAtStep);
-	    if (i < timestep) {
-	      absBlockCounter += nBlocksAtStep;
-	    }
-	  }
+      if (v->nsteps > 1) {    // all timesteps are known, can get abs
+    for (i=0; i<v->nsteps; i++)
+      {
+        int nBlocksAtStep = v->nblocks[i];
+        if (nBlocksAtStep < min) {
+          min = nBlocksAtStep;
+        }
+        log_debug("\t\t   currstep=%d nblocks=%d\n", i, nBlocksAtStep);
+        if (i < timestep) {
+          absBlockCounter += nBlocksAtStep;
+        }
+      }
       }
 
       if (wb->index > min) {
-	  log_error("Error: Unable to handle this block index %d over all the timesteps. Stop.\n", wb->index);
-	  return -1;
+      log_error("Error: Unable to handle this block index %d over all the timesteps. Stop.\n", wb->index);
+      return -1;
       }
 
       int j=0;
       for (j=0; j<v->ndim; j++)
-	{
+    {
           *total_byte_size *= v->blockinfo[absBlockCounter].count[j];
           *dataSize *= v->blockinfo[absBlockCounter].count[j];
-	}
+    }
 
       log_debug("\t\t   block %d, abs id:%d, bytes: %" PRIu64 ", size =  %" PRIu64 " \n", wb->index, absBlockCounter, *total_byte_size, *dataSize);
 
@@ -359,17 +368,17 @@ static void initialize(ADIOS_QUERY* result)
 
 
 ADIOS_QUERY* common_query_create(ADIOS_FILE* f, 
-				 ADIOS_SELECTION* queryBoundary,
-				 const char* varName,
-				 enum ADIOS_PREDICATE_MODE op,
-				 const char* value)
+                 ADIOS_SELECTION* queryBoundary,
+                 const char* varName,
+                 enum ADIOS_PREDICATE_MODE op,
+                 const char* value)
 {
     log_debug("[Is caller using Fortran?] %d\n", futils_is_called_from_fortran());
   //syncTimeStep(f);
     if (query_hooks == NULL) {
-	adios_error(err_operation_not_supported,
-		    "ADIOS Query Library Error: Query environment is not initialized.\n");
-	return NULL;
+    adios_error(err_operation_not_supported,
+            "ADIOS Query Library Error: Query environment is not initialized.\n");
+    return NULL;
         //exit(EXIT_FAILURE);
     }
 
@@ -380,7 +389,7 @@ ADIOS_QUERY* common_query_create(ADIOS_FILE* f,
         {
             adios_error (err_unsupported_selection, 
                     "Query create: selection type is not supported in queries. "
-                    "Choose either boundingbox, points or writeblock selection\n");	       
+                    "Choose either boundingbox, points or writeblock selection\n");
             return NULL;
         }
     }
@@ -394,17 +403,17 @@ ADIOS_QUERY* common_query_create(ADIOS_FILE* f,
         return NULL;
     }
 
-	// NOTE: No longer replacing default bounding box here; each query engine
-	// should handle q->sel == NULL by themselves, as this is a clearer indication
+    // NOTE: No longer replacing default bounding box here; each query engine
+    // should handle q->sel == NULL by themselves, as this is a clearer indication
     // to the query engine that the user is query the whole dataset rather than some
     // subset
-	//    int defaultBoundaryUsed = 0;
-	//    if (queryBoundary == NULL) {
-	//#ifdef ALACRITY
-	//        queryBoundary = getAdiosDefaultBoundingBox(v);
-	//        defaultBoundaryUsed = 1;
-	//#endif
-	//    }
+    //    int defaultBoundaryUsed = 0;
+    //    if (queryBoundary == NULL) {
+    //#ifdef ALACRITY
+    //        queryBoundary = getAdiosDefaultBoundingBox(v);
+    //        defaultBoundaryUsed = 1;
+    //#endif
+    //    }
 
     //
     // create selection string for fastbit
@@ -443,43 +452,42 @@ ADIOS_QUERY* common_query_create(ADIOS_FILE* f,
 
     return result;
 }
-			
-static int isSelectionCompatible(ADIOS_SELECTION* first, ADIOS_SELECTION* second)			  
-{
-  if ((first == NULL) || (second == NULL)) {
-    return 0;
-  }
 
-  switch (first->type) {
-  case  ADIOS_SELECTION_BOUNDINGBOX:    
-    if (second->type != ADIOS_SELECTION_BOUNDINGBOX) {
-        log_error("Error! Not supported: comparing bounding box to another type \n");
-	return -1;
+static int isSelectionCompatible(ADIOS_SELECTION* first, ADIOS_SELECTION* second)
+{
+    if ((first == NULL) || (second == NULL)) {
+        return 0;
     }
-    
-    return 0;
-  case ADIOS_SELECTION_POINTS:
-    if (second->type != ADIOS_SELECTION_POINTS) {
-        log_error("Error! Not supported: comparing adios points to another type \n");
-	return -1;
-    }
-    const ADIOS_SELECTION_POINTS_STRUCT *pt1 = &(first->u.points);
-    const ADIOS_SELECTION_POINTS_STRUCT *pt2 = &(second->u.points);
-    
-    if (pt1 -> npoints != pt2->npoints) {
-      log_error("Error! point selections have different size. %llu != %llu\n", pt1->npoints, pt2->npoints);
-      return -1;
+
+    switch (first->type) {
+        case  ADIOS_SELECTION_BOUNDINGBOX:
+            if (second->type != ADIOS_SELECTION_BOUNDINGBOX) {
+                log_error("Error! Not supported: comparing bounding box to another type \n");
+                return -1;
+            }
+            return 0;
+        case ADIOS_SELECTION_POINTS:
+            if (second->type != ADIOS_SELECTION_POINTS) {
+                log_error("Error! Not supported: comparing adios points to another type \n");
+                return -1;
+            }
+            const ADIOS_SELECTION_POINTS_STRUCT *pt1 = &(first->u.points);
+            const ADIOS_SELECTION_POINTS_STRUCT *pt2 = &(second->u.points);
+
+            if (pt1 -> npoints != pt2->npoints) {
+                log_error("Error! point selections have different size. %" PRIu64 " != %" PRIu64 "\n", pt1->npoints, pt2->npoints);
+                return -1;
+            }
+            return 1;
+        case ADIOS_SELECTION_WRITEBLOCK:
+            if (second->type != ADIOS_SELECTION_WRITEBLOCK) {
+                log_error("Error! Not supported: comparing adios blocks to another type \n");
+                return -1;
+            }
+            return 0;
+        default:
+            return 0;
     }
-    return 1;
-  case ADIOS_SELECTION_WRITEBLOCK:
-    if (second->type != ADIOS_SELECTION_WRITEBLOCK) {
-        log_error("Error! Not supported: comparing adios blocks to another type \n");
-	return -1;
-    }      
-    return 0;
-  default:
-    return 0;
-  }    
 }
 
 /* static uint64_t getVariableSize(ADIOS_VARINFO* v) 
@@ -495,33 +503,35 @@ static int isSelectionCompatible(ADIOS_SELECTION* first, ADIOS_SELECTION* second
 //
 // return 0 if yes.
 //
-int isCompatible(ADIOS_QUERY* q1, ADIOS_QUERY* q2) {
-  if ((q1->left == 0) && (q2->left == 0)) { // both are leaves
-    if (q1->rawDataSize != q2->rawDataSize) {
-      log_error("Error! Not supported: combining query with different sizes!\n");
-      return -1;
+int isCompatible(ADIOS_QUERY* q1, ADIOS_QUERY* q2)
+{
+    if ((q1->left == 0) && (q2->left == 0)) { // both are leaves
+        if (q1->rawDataSize != q2->rawDataSize) {
+            log_error(
+                    "Error! Not supported: combining query with different sizes!\n");
+            return -1;
+        }
+        if ((q1->sel != NULL) && (q2->sel != NULL)) {
+            return isSelectionCompatible(q1->sel, q2->sel);
+        }
+        // all other cases, as long as data sizes match, fastbit can work on it.
+        return 0;
     }
-    if ((q1->sel != NULL) && (q2->sel != NULL)) {
-      return isSelectionCompatible(q1->sel, q2->sel);
-    } 
-    // all other cases, as long as data sizes match, fastbit can work on it.
-    return 0;
-  }
 
-  if (q1->left != NULL) {
-    return isCompatible(q1->left, q2);
-  } 
+    if (q1->left != NULL) {
+        return isCompatible(q1->left, q2);
+    }
 
-  if (q2->left != NULL) {
-    return isCompatible(q1, q2->left);
-  }
-  
-  return 0;
+    if (q2->left != NULL) {
+        return isCompatible(q1, q2->left);
+    }
+
+    return 0;
 }
 
 ADIOS_QUERY* common_query_combine(ADIOS_QUERY* q1, 
-				  enum ADIOS_CLAUSE_OP_MODE operator,		    
-				  ADIOS_QUERY* q2)
+                  enum ADIOS_CLAUSE_OP_MODE operator,
+                  ADIOS_QUERY* q2)
 {
     // combine selection sel3 = q1.fastbitSelection & q2.fastbitSelection
     //create a new query (q1.cond :op: q2.cond, sel3);
@@ -535,7 +545,7 @@ ADIOS_QUERY* common_query_combine(ADIOS_QUERY* q1,
 
     if (isCompatible(q1, q2) != 0) {
         adios_error (err_incompatible_queries, 
-		     "Query combine: the two queries' selections are not compatible.\n");
+             "Query combine: the two queries' selections are not compatible.\n");
         return NULL;
     }
 
@@ -563,17 +573,17 @@ ADIOS_QUERY* common_query_combine(ADIOS_QUERY* q1,
 int64_t common_query_estimate(ADIOS_QUERY* q, int timestep)
 {
     if (q == NULL) {
-      return -1;
+        return -1;
     }
-    enum ADIOS_QUERY_METHOD m = detect_and_set_query_method (q);
+    enum ADIOS_QUERY_METHOD m = detect_and_set_query_method(q);
     if (query_hooks[m].adios_query_estimate_fn != NULL) {
-      int actualTimeStep = adios_check_query_at_timestep(q, timestep);
-      if (actualTimeStep == -1) {
-	return -1;
-      }
+        int actualTimeStep = adios_check_query_at_timestep(q, timestep);
+        if (actualTimeStep == -1) {
+            return -1;
+        }
 
-      return query_hooks[m].adios_query_estimate_fn(q, timestep);
-    }		
+        return query_hooks[m].adios_query_estimate_fn(q, timestep);
+    }
 
     log_debug("No estimate function was supported for method %d\n", m);
     return -1;
@@ -638,12 +648,12 @@ static int updateBlockSizeIfNeeded(ADIOS_QUERY* q, int timeStep)
             return -1;
         }
 
-	// // this is removed b/c if using read_open() instead of read_open_file(), then var->nstep will always be 1
+    // // this is removed b/c if using read_open() instead of read_open_file(), then var->nstep will always be 1
         //if (gCurrentTimeStep > q->varinfo->nsteps) {
-	//  log_error("The given timestep %d exceeds variable (id %d)'s nsteps. \n", gCurrentTimeStep, q->varinfo->varid);
-	//  return -1;
+    //  log_error("The given timestep %d exceeds variable (id %d)'s nsteps. \n", gCurrentTimeStep, q->varinfo->varid);
+    //  return -1;
         //}
-	//
+    //
         if (q->sel->type != ADIOS_SELECTION_WRITEBLOCK) {
             return 0;
         }
@@ -680,7 +690,8 @@ static int checkCompatibility(ADIOS_QUERY* q)
     return 0; // ok, no need to check  
 }
 */
-static ADIOS_VARBLOCK * computePGBounds(ADIOS_QUERY *q, int wbindex, int timestep, int *out_ndim) 
+static ADIOS_VARBLOCK * computePGBounds(ADIOS_QUERY *q, int wbindex,
+        int timestep, int *out_ndim)
 {
     if (!q->left && !q->right) {
         // In this case, we have reached a leaf query node, so directly
@@ -698,10 +709,11 @@ static ADIOS_VARBLOCK * computePGBounds(ADIOS_QUERY *q, int wbindex, int timeste
         // no variable name cited in the error, so perhaps better error handling would
         // be desirable in the future
         //const int abs_wbindex = adios_get_absolute_writeblock_index(q->varinfo, wbindex, timestep);
-	int abs_wbindex = wbindex;
-	if (q->varinfo->nsteps > 1) { // varinfo contains ALL timesteps, not just one step, so streaming mode files will not need call this func
-	  abs_wbindex = adios_get_absolute_writeblock_index(q->varinfo, wbindex, timestep);
-	}
+        int abs_wbindex = wbindex;
+        if (q->varinfo->nsteps > 1) { // varinfo contains ALL timesteps, not just one step, so streaming mode files will not need call this func
+            abs_wbindex = adios_get_absolute_writeblock_index(q->varinfo,
+                    wbindex, timestep);
+        }
 
         // Finally, return ndim and the varblock
         *out_ndim = q->varinfo->ndim;
@@ -711,20 +723,23 @@ static ADIOS_VARBLOCK * computePGBounds(ADIOS_QUERY *q, int wbindex, int timeste
         // ndim and varblock from that subtree directly, since there's
         // nothing to compare against
 
-        ADIOS_QUERY *present_subtree = q->left ? (ADIOS_QUERY*)q->left : (ADIOS_QUERY*)q->right;
+        ADIOS_QUERY *present_subtree =
+                q->left ? (ADIOS_QUERY*) q->left : (ADIOS_QUERY*) q->right;
         return computePGBounds(present_subtree, wbindex, timestep, out_ndim);
     } else {
         // In this final case, we have two subtrees, and we must compare
         // the resultant varblock from each one to ensure they are equal
         // before returning
 
-        ADIOS_QUERY *left = (ADIOS_QUERY *)q->left;
-        ADIOS_QUERY *right = (ADIOS_QUERY *)q->right;
+        ADIOS_QUERY *left = (ADIOS_QUERY *) q->left;
+        ADIOS_QUERY *right = (ADIOS_QUERY *) q->right;
 
         // Next, retrieve the ndim and varblock for each subtree
         int left_ndim, right_ndim;
-        ADIOS_VARBLOCK *left_vb = computePGBounds(left, wbindex, timestep, &left_ndim);
-        ADIOS_VARBLOCK *right_vb = computePGBounds(right, wbindex, timestep, &right_ndim);
+        ADIOS_VARBLOCK *left_vb = computePGBounds(left, wbindex, timestep,
+                &left_ndim);
+        ADIOS_VARBLOCK *right_vb = computePGBounds(right, wbindex, timestep,
+                &right_ndim);
 
         // If either subtree returns an invalid (NULL) varblock, fail immediately
         if (!left_vb || !right_vb) {
@@ -743,8 +758,8 @@ static ADIOS_VARBLOCK * computePGBounds(ADIOS_QUERY *q, int wbindex, int timeste
         // failing if any coordinate is not equal between the subtrees
         int i;
         for (i = 0; i < ndim; i++) {
-            if (left_vb->start[i] != right_vb->start[i] ||
-                    left_vb->count[i] != right_vb->count[i]) {
+            if (left_vb->start[i] != right_vb->start[i] || left_vb->count[i] != right_vb->count[i])
+            {
                 return NULL;
             }
         }
@@ -764,36 +779,44 @@ static ADIOS_SELECTION * convertWriteblockToBoundingBox(ADIOS_QUERY *q, ADIOS_SE
     int pg_ndim;
     ADIOS_VARBLOCK *pg_bounds = computePGBounds(q, wb->index, timestep, &pg_ndim);
     if (!pg_bounds)
-    	return NULL;
+        return NULL;
+
+    ADIOS_SELECTION *bb = a2sel_boundingbox(pg_ndim, pg_bounds->start, pg_bounds->count);
 
-    ADIOS_SELECTION *bb = common_read_selection_boundingbox(pg_ndim, pg_bounds->start, pg_bounds->count);
-							    
     return bb;
 }
 
-int common_query_evaluate(ADIOS_QUERY* q, 
-			  ADIOS_SELECTION* outputBoundary, 
-			  int timeStep, 
-			  uint64_t batchSize, // limited by maxResult
-			  ADIOS_SELECTION** result)
+ADIOS_QUERY_RESULT * common_query_evaluate(ADIOS_QUERY* q, 
+              ADIOS_SELECTION* outputBoundary,
+              int timeStep,
+              uint64_t batchSize)
 {  
-	double start = 0, end = 0;
+    ADIOS_QUERY_RESULT *result = (ADIOS_QUERY_RESULT *) calloc (1, sizeof(ADIOS_QUERY_RESULT));
+    assert (result);
+    /*result->method_used = ADIOS_QUERY_METHOD_UNKNOWN;
+    result->nselections = 0;
+    result->selections  = NULL;
+    result->npoints     = 0;
+    result->status      = ADIOS_QUERY_NO_MORE_RESULTS;*/
 #ifdef BREAKDOWN
-	start = dclock();
+    double start = 0, end = 0;
+    start = dclock();
 #endif
-  if (q == 0) {
-    log_debug("Error: empty query will not be evaluated!");
-    return -1;
-  }
+    if (q == 0) {
+        log_debug("Error: empty query will not be evaluated!");
+        return result;
+    }
     int actualTimeStep = adios_check_query_at_timestep(q, timeStep);
     if (actualTimeStep == -1) {
-      return -1;
+        result->status = ADIOS_QUERY_RESULT_ERROR;
+        return result;
     }
 
     /*
     if (checkCompatibility(q) != 0) {
       log_error("query components are not compatible at this time step.\n");
-      return -1;
+      result->status = ADIOS_QUERY_RESULT_ERROR;
+      return result;
     }
     */
     /*
@@ -801,11 +824,13 @@ int common_query_evaluate(ADIOS_QUERY* q,
         int updateResult = updateBlockSizeIfNeeded(q, timeStep);
         if (updateResult < 0) {
             log_error("Error with this timestep %d. Can not proceed. \n", timeStep);
-            return -1;
+            result->status = ADIOS_QUERY_RESULT_ERROR;
+            return result;
         }
         if (updateResult > 0) { // blocks were updated. check compatitibity
             if (checkCompatibility(q) <= 0) {
-                return -1;
+                result->status = ADIOS_QUERY_RESULT_ERROR;
+                return result;
             }
         }
     }
@@ -814,36 +839,54 @@ int common_query_evaluate(ADIOS_QUERY* q,
     if ((outputBoundary != NULL) && (outputBoundary->type == ADIOS_SELECTION_WRITEBLOCK)) {
         outputBoundary = convertWriteblockToBoundingBox(q, &outputBoundary->u.block, timeStep);
         if (!outputBoundary) {
-	  adios_error(err_invalid_argument,
-		      "Attempt to use writeblock output selection on a query where not "
-		      "all variables participating have the same varblock bounding box "
-		      "at that writeblock index (index = %d)\n",
-		      outputBoundary->u.block.index);
-	  return -1;
+            adios_error(err_invalid_argument,
+              "Attempt to use writeblock output selection on a query where not "
+              "all variables participating have the same varblock bounding box "
+              "at that writeblock index (index = %d)\n",
+              outputBoundary->u.block.index);
+            result->status = ADIOS_QUERY_RESULT_ERROR;
+            return result;
         }
         freeOutputBoundary = 1;
     }
 
     enum ADIOS_QUERY_METHOD m = detect_and_set_query_method (q);
 
-    if (query_hooks[m].adios_query_evaluate_fn != NULL) {
-      int retval = query_hooks[m].adios_query_evaluate_fn(q, timeStep, batchSize, outputBoundary, result);	      
-      if (freeOutputBoundary) common_read_selection_delete(outputBoundary);
-
-#ifdef BREAKDOWN
-      end = dclock();
-      printf("total time [frame + plugin + adios] : %f \n", end - start);
-#endif
-      return retval;
+    if (query_hooks[m].adios_query_evaluate_fn != NULL) 
+    {
+        query_hooks[m].adios_query_evaluate_fn(q, timeStep, batchSize, outputBoundary, result);
+        result->method_used = m;
+	if (freeOutputBoundary) a2sel_free(outputBoundary);
     } 
-    log_debug ("No selection method is supported for method: %d\n", m);
+    else 
+    { 
+        log_debug ("No selection method is supported for method: %d\n", m);
+        result->method_used = ADIOS_QUERY_METHOD_UNKNOWN;
+        result->status = ADIOS_QUERY_RESULT_ERROR;
+    }
 
 #ifdef BREAKDOWN
       end = dclock();
       printf("total time [frame + plugin + adios] : %f \n", end - start);
 #endif
 
-    return -1;
+    return result;
 }
 
 
+enum ADIOS_PREDICATE_MODE adios_query_getOp(const char* opStr)
+{
+  if ((strcmp(opStr, ">=") == 0) || (strcmp(opStr, "GE") == 0)) {
+    return ADIOS_GTEQ;
+  } else if ((strcmp(opStr, "<=") == 0) || (strcmp(opStr, "LE") == 0)) {
+    return ADIOS_LTEQ;
+  } else if ((strcmp(opStr, "<") == 0) || (strcmp(opStr, "LT") == 0)) {
+    return ADIOS_LT;
+  } else if ((strcmp(opStr, ">") == 0) || (strcmp(opStr, "GT") == 0)) {
+    return ADIOS_GT;
+  } else if ((strcmp(opStr, "=") == 0) || (strcmp(opStr, "EQ") == 0)) {
+    return ADIOS_EQ;
+  } else { // if (strcmp(opStr, "!=") == 0) {
+    return ADIOS_NE;
+  }
+}
diff --git a/src/query/common_query.h b/src/query/common_query.h
index 907ad57..3366210 100644
--- a/src/query/common_query.h
+++ b/src/query/common_query.h
@@ -6,6 +6,7 @@ extern "C" {
 #endif
 
 #include "public/adios_query.h"
+#include "core/futils.h"
 
 #define NO_EVAL_BEFORE -1
 
@@ -15,6 +16,8 @@ void common_query_init();
 //void common_query_set_method(enum ADIOS_QUERY_METHOD method);
 
 int common_query_is_method_available(enum ADIOS_QUERY_METHOD method);
+void common_query_set_method (ADIOS_QUERY* q, enum ADIOS_QUERY_METHOD method);
+int adios_get_actual_timestep(ADIOS_QUERY* q, int timeStep);
 
 ADIOS_QUERY* common_query_create(ADIOS_FILE* f, 				 
 				 ADIOS_SELECTION* queryBoundry,
@@ -31,11 +34,21 @@ int64_t common_query_estimate(ADIOS_QUERY* q, int timestep);
 
 //void common_query_set_timestep(int timeStep);
 
-int common_query_evaluate(ADIOS_QUERY* q, 
+ADIOS_QUERY_RESULT * common_query_evaluate(ADIOS_QUERY* q, 
 			  ADIOS_SELECTION* outputBoundry,
 			  int timestep,
-			  uint64_t batchSize, 
-			  ADIOS_SELECTION** result);
+			  uint64_t batchSize);
+
+int common_query_read_boundingbox (
+        ADIOS_FILE *f,
+        ADIOS_QUERY *q,
+        const char *varname,
+        int timestep,
+        unsigned int nselections,
+        ADIOS_SELECTION *selections,
+        ADIOS_SELECTION *bb,
+        void *data
+   );
 
 void common_query_free(ADIOS_QUERY* q);
 
@@ -43,6 +56,7 @@ void common_query_free(ADIOS_QUERY* q);
 // this function then calls all query methods' finalize
 void common_query_finalize();
   
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/query/common_query_read.c b/src/query/common_query_read.c
new file mode 100644
index 0000000..274ca6e
--- /dev/null
+++ b/src/query/common_query_read.c
@@ -0,0 +1,584 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <inttypes.h>
+#include <assert.h>
+
+#include "common_query.h"
+#include "adios_query_hooks.h"
+#include "public/adios_error.h"
+#include "core/common_read.h"
+#include "core/adios_logger.h"
+#include "core/util.h"
+#include "query_utils.h"
+
+/*static void print_points (char *indent, ADIOS_SELECTION_POINTS_STRUCT * pts)
+{
+    int d;
+    uint64_t n;
+    if (adios_verbose_level >= 4) {
+        log_debug ("%s Number of points: %" PRIu64 "\n", indent, pts->npoints);
+        for (n = 0; n < pts->npoints; ++n) {
+            log_debug_cont ("%s   point %" PRIu64 "\t(%" PRIu64, indent, n, pts->points[n*pts->ndim]);
+            for (d = 1; d < pts->ndim; ++d) {
+                log_debug_cont (", %" PRIu64, pts->points[n*pts->ndim+d]);
+            }
+            log_debug_cont(")\n");
+        }
+    }
+}*/
+
+// get the number of elements in a block (not size in bytes)
+// size in bytes = get_nelements(v,i) * adios_type_size (v->type, NULL)
+static uint64_t get_nelements (int ndim, uint64_t *dims)
+{
+    int i;
+    //int size = adios_type_size (v->type, NULL);
+    uint64_t size = 1;
+    for (i = 0; i < ndim; i++) {
+        size *= dims[i];
+    }
+    return size;
+}
+
+// get the size of a block in bytes
+/*
+static uint64_t get_blocksize_bytes (int ndim, uint64_t *dims, enum ADIOS_DATATYPES type)
+{
+    return adios_type_size (type, NULL) * get_nelements (ndim, dims);
+}
+*/
+
+/* Traverse the tree to find a varinfo structure for the variable. Return NULL if not found. */
+static ADIOS_VARINFO * adios_query_find_varinfo (ADIOS_FILE *f, ADIOS_QUERY *q, const char *varname)
+{
+    if (!q->left && !q->right) {
+        if (!strcmp(q->varName, varname) && f == q->file) {
+            return q->varinfo;
+        }
+    }
+    if (q->left) {
+       ADIOS_VARINFO *v = adios_query_find_varinfo (f, q->left, varname);
+       if (v)
+           return v;
+    }
+    if (q->right) {
+       ADIOS_VARINFO *v = adios_query_find_varinfo (f, q->right, varname);
+       if (v)
+           return v;
+    }
+    return NULL;
+}
+
+/* Calculate the 1D contiguous index position from the N dimensional coordinates.
+ * lcoords are assumed at this point, that they fall inside the
+ * {0..dims[0]} x ... x {0...dims[ndim-1]}  N-dimensional cube
+ */
+static uint64_t adios_query_calc_position (int ndim, uint64_t * dims, uint64_t * lcoords)
+{
+    int n;
+    uint64_t pos = lcoords[ndim-1];
+    uint64_t slice_size = dims[ndim-1];
+    for (n = ndim-2; n >= 0; n--) {
+        pos += lcoords[n] * slice_size;
+        slice_size *= dims[ndim-1];
+    }
+    return pos;
+}
+
+/* Copy data from pointvalues[i] to data[X], i=0..npoints-1, where
+ * X is calculated from the local position of the point in the bounding box.
+ * Copy only if the point falls inside the box.
+ */
+static void adios_query_copy_points_to_bb (
+                ADIOS_SELECTION_POINTS_STRUCT * pointsel,
+                uint64_t *wboffs,
+                char * pointvalues,
+                int elemsize,
+                ADIOS_SELECTION * bb,
+                char * data
+            )
+{
+    assert (bb->type == ADIOS_SELECTION_BOUNDINGBOX);
+    assert (pointsel->ndim == bb->u.bb.ndim);
+    assert (pointsel->ndim <= 32);
+    uint64_t npoints = pointsel->npoints;
+    int ndim = pointsel->ndim;
+    int d;
+    uint64_t n, coord_idx, coord;
+    int falls_outside;
+    uint64_t lcoords[32];
+
+    /*if (adios_verbose_level >= 4) {
+        log_debug ("%s: points:\n", __func__);
+        print_points("  ", pointsel);
+        log_debug ("   bb: { %" PRIu64 ":%" PRIu64, bb->u.bb.start[0], bb->u.bb.start[0]+bb->u.bb.count[0]-1);
+        for (d = 1; d < bb->u.bb.ndim; ++d) {
+            log_debug_cont (", %" PRIu64 ":%" PRIu64, bb->u.bb.start[d], bb->u.bb.start[d]+bb->u.bb.count[d]-1);
+        }
+        log_debug_cont("}\n");
+    }*/
+
+    /* Check if we need to boundary check each point: i.e. if bb is not fully contained in container box */
+    int contained = 1;
+    if (pointsel->container_selection && pointsel->container_selection->type == ADIOS_SELECTION_BOUNDINGBOX)
+    {
+
+        ADIOS_SELECTION_BOUNDINGBOX_STRUCT * contbb = &pointsel->container_selection->u.bb;
+        for (d=0; d < ndim; d++) {
+            if ( bb->u.bb.start[d] < contbb->start[d] ||
+                 contbb->start[d] + contbb->count[d] <  bb->u.bb.start[d]+bb->u.bb.count[d])
+            {
+                contained = 0;
+                break;
+            }
+        }
+    }
+
+
+    for (n=0; n < npoints; n++) {
+        // point coordinates = pointsel->u.points.points[n*ndim..(n+1)*ndim-1] into data[]
+        falls_outside = 0;
+        coord_idx = n*ndim;
+        for (d=0; d < ndim; d++) {
+            coord = pointsel->points[coord_idx]+wboffs[d];
+            if (!contained)
+            {
+                // check if point is in the box in the first place
+                log_debug ("   check point %" PRIu64 " dim %d (idx=%" PRIu64 ") = %" PRIu64 "\n", n, d, coord_idx, coord);
+
+                if (coord < bb->u.bb.start[d] || bb->u.bb.start[d]+bb->u.bb.count[d] <= coord) {
+                    falls_outside = 1;
+                    break;
+                }
+            }
+            // calculate the local point coordinate in bb
+            lcoords[d] = coord - bb->u.bb.start[d];
+            coord_idx++;
+        }
+        if (!falls_outside) {
+            // copy elemsize bytes from &pointvalues[n*elemsize] into data[X]
+            // where X is the local coordinate of point n in the boundingbox bb
+            coord_idx = adios_query_calc_position(ndim, bb->u.bb.count, lcoords);
+            memcpy (data+coord_idx*elemsize, pointvalues+n*elemsize, elemsize);
+        }
+    }
+}
+
+/* Copy data from block_data[] to bb_data[].
+ * 'block_data' has 'nelements' of data points of 'elemsize' bytes.
+ * Position of data in block is calculated from varinfo->blockinfo[block index] and block_start_offset.
+ * 'bb_data' is user allocated, assumed to cover the size of bounding box 'bb'.
+ * Copy only that portion that falls inside the bb box.
+ * block_start_offset is the starting position in the original writeblock from which 'block' contains 'nelements'
+ * data elements. It is used in calculating position in 'bb' but not in accessing data in 'block'.
+ */
+static void adios_query_copy_block_to_bb (ADIOS_VARINFO * vi, int block_index, char * block_data,
+        uint64_t nelements, int elemsize,
+        uint64_t block_start_offset,
+        ADIOS_SELECTION * bb, char * bb_data)
+{
+    assert (bb->type == ADIOS_SELECTION_BOUNDINGBOX);
+    assert (bb->u.bb.ndim > 0);
+    assert (bb->u.bb.ndim <= 32);
+    int ndim = bb->u.bb.ndim;
+
+    // FIXME: block_start_offset is not supported yet. The calculations below do not use it. New design of the copy
+    // algorithm is needed
+    if (block_start_offset > 0) {
+        log_error ("ADIOS QUERY ERROR: The %s function does not support partial writeblock "
+                "selecions yet. Demand implementation from the ADIOS developers.\n", __func__);
+        return;
+    }
+
+    // dimension and offset of current writeblock in global array
+    uint64_t *wboffs = vi->blockinfo[block_index].start;
+    uint64_t *wbdims = vi->blockinfo[block_index].count;
+
+#if 0
+    if (ndim == 1)
+    {
+        // 1D array, simple contiguous copy
+        // starting coordinate of writeblock in the bounding box is wboffs[]-offs[]
+        // will copy nelements data points from block[block_start..] -> data[bb_start]
+        uint64_t block_start = 0;
+        int64_t nelems = nelements;
+        int64_t bb_start = wboffs[0] + block_start_offset - bb->u.bb.start[0];
+        if (bb_start < 0) {
+            // outside of left side of bounding box
+            nelems += bb_start;    // decrease nelements
+            block_start -= bb_start;  // positive integer
+            bb_start = 0;
+        }
+        uint64_t bb_end = bb_start + nelems;
+        if (bb_start + nelems > bb->u.bb.count[0]) {
+            // reaching beyond the right side of the bounding box
+            nelems = bb->u.bb.count[0] - bb_start;
+        }
+        if (nelems > 0) {
+            memcpy (data+bb_start*elemsize, block+block_start*elemsize, nelems*elemsize);
+        }
+    }
+    else if (ndim == 2) // FIXME remove this incomplete branch
+    {
+        // calculate 'relative to original bounding box' coordinate from 'starting point in writeblock'
+        // starting coordinate of writeblock in the bounding box is wboffs[]-offs[]
+        int64_t i, j, j_min, j_max, pos, n;
+        // FIXME: incorrect starting point calculation with block_start_offset
+        i = wboffs[0] - bb->u.bb.start[0] + block_start_offset / wbdims[1];
+        j_min = wboffs[1] - bb->u.bb.start[1] + block_start_offset % wbdims[1];
+        j = j_min;
+
+        // calculate 1D position in output array
+        pos = i*bb->u.bb.count[1]+j_min;
+
+        // copy the elements from contiguous 'block' into 'data' in a non-contiguous manner
+        j_max = wboffs[1] - bb->u.bb.start[1] + wbdims[1]; // j runs [j_min,j_max)
+        n = 0;
+        while (n < nelements) {
+            //if (j==j_min) {
+            //    print ("rank %d: Copy %dth element to v1[%d,%d] (=v1[%lld])\n", rank, n, i, j, pos);
+            //}
+            memcpy (data+pos*elemsize, block+n*elemsize, (j_max-j)*elemsize);
+            n += j_max - j;
+            j = j_min;
+            i++;
+            pos = i*bb->u.bb.count[1]+j_min;
+        }
+    }
+    else {}
+#endif
+
+    /* check if there is any intersection */
+    int flag;
+    int i;
+    for (i = 0; i < ndim; i++)
+    {
+        flag =   (wboffs[i] >= bb->u.bb.start[i]
+                  && wboffs[i] < bb->u.bb.start[i] + bb->u.bb.count[i])
+              || (wboffs[i] <  bb->u.bb.start[i]
+                  && wboffs[i] + wbdims[i] > bb->u.bb.start[i] + bb->u.bb.count[i])
+              || (wboffs[i] + wbdims[i] > bb->u.bb.start[i]
+                  && wboffs[i] + wbdims[i] <= bb->u.bb.start[i] + bb->u.bb.count[i]);
+
+        if (!flag) {
+            return;
+        }
+    }
+
+    /* determine how many (fastest changing) dimensions of the block can we copy in one swoop */
+    uint64_t n_cont_elems = 1; // number of elements that can be contiguously copied
+    for (i = ndim - 1; i > -1; i--)
+    {
+        if (wboffs[i] == bb->u.bb.start[i] && wbdims[i] == bb->u.bb.count[i])
+        {
+            n_cont_elems *= wbdims[i];
+        }
+        else
+            break;
+    }
+    int hole_break = i;
+    log_debug ("%s: hole_break = %d\n", __func__, hole_break);
+
+    /* Handle different cases */
+    if (hole_break == -1)
+    {
+        /* The complete bb happens to be exactly the writeblock, and the entire writeblock.
+         * Just copy the block into the data (shifted by 'block_start_offset' elements)
+         * This is a rare case. FIXME: can we eliminate this?
+         */
+        assert (n_cont_elems == nelements + block_start_offset);
+        memcpy (bb_data+block_start_offset*elemsize, block_data, nelements*elemsize);
+    }
+    else if (hole_break == 0)
+    {
+        /* Block should not be copied entirely in the slowest changing dimension but
+         * we still need to copy only one contiguous block.
+         * Let's call the n-1 dimensional sub-block "row" here.
+         */
+        uint64_t block_nrows = 0; // number of "rows" in slowest dimension in block thats inside bb
+        uint64_t block_startrow = 0; // start copying from this "row" in block
+        uint64_t bb_startrow = 0; // starting "row" in bb to copy to
+
+        uint64_t x = bb->u.bb.start[0] + bb->u.bb.count[0];
+        if (wboffs[0] >= bb->u.bb.start[0])
+        {
+            // head of block is at or after the head of bb in dimension,
+            //  block may fit into bb fully, partially or not at all
+            block_startrow = 0;
+            bb_startrow = wboffs[0] - bb->u.bb.start[0];
+            if (wboffs[0] < x) {
+                // head of the writeblock is inside the bb
+                if (wboffs[0] + wbdims[0] > x)
+                {
+                    // the tail is outside of the target
+                    block_nrows = x - wboffs[0];
+                }
+                else
+                {
+                    // the whole block fits inside the bb
+                    block_nrows = wbdims[0];
+                }
+            }
+            else
+            {
+                // else the whole writeblock is outside of (after) bb so nothing to do
+                block_nrows = 0;
+            }
+        }
+        else
+        {
+            // head of block is outside (before) bb, may cover bb, partially cover or not at all
+            block_startrow = bb->u.bb.start[0] - wboffs[0];
+            bb_startrow = 0;
+            if (wboffs[0] + wbdims[0] > bb->u.bb.start[0])
+            {
+                // tail of block is inside bb, so there is coverage
+                if (wboffs[0] + wbdims[0] < x)
+                {
+                    // tail of block is inside bb, partial cover
+                    block_nrows = wboffs[0] + wbdims[0] - bb->u.bb.start[0];
+                }
+                else
+                {
+                    // block covers bb entirely
+                    block_nrows = bb->u.bb.count[0];
+                }
+            }
+            else
+            {
+                // else the whole writeblock is outside of (before) bb so nothing to do
+                block_nrows = 0;
+            }
+        }
+
+        log_debug ("%s: number of rows to copy = %" PRIu64 "\n", __func__, block_nrows);
+        if (block_nrows)
+        {
+            uint64_t slice_size = block_nrows * n_cont_elems * elemsize;
+            //uint64_t read_offset = block_startrow * n_cont_elems * elemsize;
+            uint64_t write_offset = bb_startrow * n_cont_elems * elemsize;
+            // write_offset += block_start_offset * elemsize; THIS IS WRONG
+            log_debug ("%s: Copy %" PRIu64 " bytes from block to bb at offset = %" PRIu64 "\n", __func__, slice_size, write_offset);
+            if (slice_size > 0) {
+                memcpy (bb_data + write_offset, block_data, slice_size);
+            }
+        }
+    }
+    else
+    {
+        /* Block should not be copied entirely in the more than one dimension (hole+1 dimensions) so
+         * we need to determine the largest contiguous block of the fastest N-hole-1 dimensions, and then
+         * the number of such blocks to copy in a loop.
+         */
+        uint64_t block_nrows[32]; // number of "rows" in each non-contiguous dimension in block thats inside bb
+        uint64_t block_startrow[32]; // start copying from this "row" in block
+        uint64_t bb_startrow[32]; // starting "row" in bb to copy to
+
+        memset(block_nrows, 0 , 32 * 8);
+        memset(block_startrow, 0 , 32 * 8);
+        memset(bb_startrow, 0 , 32 * 8);
+
+        uint64_t x;
+
+        for (i = 0; i < ndim; i++)
+        {
+            // for all dimension > hole, wboffs=bb.start and wbdims=bb.count, so
+            // the same code will fill block_nrow=wbdims and block_startrow=0
+            x = bb->u.bb.start[i] + bb->u.bb.count[i];
+            if (wboffs[i] >= bb->u.bb.start[i])
+            {
+                // head of block is at or after the head of bb in dimension,
+                //  block may fit into bb fully, partially or not at all
+                block_startrow[i] = 0;
+                bb_startrow[i] = wboffs[i] - bb->u.bb.start[i];
+                if (wboffs[i] < x) {
+                    // head of the writeblock is inside the bb
+                    if (wboffs[i] + wbdims[i] > x)
+                    {
+                        // the tail is outside of the target
+                        block_nrows[i] = x - wboffs[i];
+                    }
+                    else
+                    {
+                        // the whole block fits inside the bb
+                        block_nrows[i] = wbdims[i];
+                    }
+                }
+                else
+                {
+                    // else the whole writeblock is outside of (after) bb so nothing to do
+                    block_nrows[i] = 0;
+                }
+            }
+            else
+            {
+                // head of block is outside (before) bb, may cover bb, partially cover or not at all
+                block_startrow[i] = bb->u.bb.start[i] - wboffs[i];
+                bb_startrow[i] = 0;
+                if (wboffs[i] + wbdims[i] > bb->u.bb.start[i])
+                {
+                    // tail of block is inside bb, so there is coverage
+                    if (wboffs[0] + wbdims[i] < x)
+                    {
+                        // tail of block is inside bb, partial cover
+                        block_nrows[i] = wboffs[i] + wbdims[i] - bb->u.bb.start[i];
+                    }
+                    else
+                    {
+                        // block covers bb entirely
+                        block_nrows[i] = bb->u.bb.count[i];
+                    }
+                }
+                else
+                {
+                    // else the whole writeblock is outside of (before) bb so nothing to do
+                    block_nrows[i] = 0;
+                }
+            }
+        }
+
+        n_cont_elems = 1; // the contiguous piece in the fastest dimension(s) that we copy at once
+        uint64_t block_stride = 1;
+        uint64_t bb_stride = 1;
+
+        for (i = ndim - 1; i >= hole_break; i--)
+        {
+            n_cont_elems *= block_nrows[i];
+            bb_stride *= bb->u.bb.count[i];
+            block_stride *= wbdims[i];
+        }
+
+        log_debug ("%s: Block calculation:\n", __func__);
+        for (i = 0; i < ndim; i++)
+        {
+            log_debug ("   block_nrows[%d]=%" PRIu64 "\tblock_startrow[%d]=%" PRIu64 "\tbb_startrow=[%d]=%" PRIu64 "\n",
+                    i, block_nrows[i], i, block_startrow[i], i, bb_startrow[i]);
+            block_startrow[i] = 0;
+        }
+
+        uint64_t block_offset = 0; // not the same thing as block_start_offset!
+        uint64_t bb_offset = 0;
+
+        for (i = 0; i < ndim; i++)
+        {
+            block_offset = block_startrow[i] + block_offset * wbdims[i];
+            bb_offset = bb_startrow[i] + bb_offset * bb->u.bb.count[i];
+        }
+
+        log_debug ("%s: Copy from block to bb, cont_elems = %" PRIu64 ", block_stride = %" PRIu64 ", bb_stride = %" PRIu64 "\n",
+                __func__, n_cont_elems, block_stride, bb_stride);
+
+        adios_util_copy_data (bb_data
+                  ,block_data
+                  ,0
+                  ,hole_break
+                  ,block_nrows
+                  ,wbdims
+                  ,bb->u.bb.count
+                  ,bb_stride
+                  ,block_stride
+                  ,bb_offset
+                  ,block_offset
+                  ,n_cont_elems
+                  ,elemsize
+                  ,adios_flag_no
+                  ,vi->type
+                  );
+    }
+}
+
+
+int common_query_read_boundingbox (
+        ADIOS_FILE *f,
+        ADIOS_QUERY *q,
+        const char *varname,
+        int timestep,
+        unsigned int nselections,
+        ADIOS_SELECTION *selections,
+        ADIOS_SELECTION *bb,
+        void *data
+   )
+{
+    assert (q);
+    assert (f);
+    assert (varname);
+    assert (bb->type == ADIOS_SELECTION_BOUNDINGBOX);
+    assert (data);
+    if (nselections == 0 || selections == NULL)
+        return 0;
+    assert (selections[0].type == ADIOS_SELECTION_POINTS ||
+            selections[0].type == ADIOS_SELECTION_WRITEBLOCK);
+
+    // Get var's varinfo from query if it has already been created during query evaluation
+    int free_varinfo = 0;
+    ADIOS_VARINFO *vinfo = adios_query_find_varinfo (f, q, varname);
+    if (!vinfo) {
+        vinfo = adios_inq_var (f, varname);
+        free_varinfo = 1;
+    }
+    if (!vinfo) {
+        adios_error (err_corrupted_variable,
+                "Corrupted variable in file. Could not get information about variable %s.\n",
+                varname);
+        return adios_errno;
+    }
+    if (!vinfo->blockinfo) {
+        adios_inq_var_blockinfo(f, vinfo);
+    }
+
+    int elemsize = adios_type_size(vinfo->type, NULL);
+
+    int n;
+    for (n = 0; n < nselections; n++)
+    {
+        uint64_t nelements, element_offset;
+        if (selections[n].type == ADIOS_SELECTION_WRITEBLOCK) {
+            if (selections[n].u.block.is_sub_pg_selection) {
+                nelements = selections[n].u.block.nelements;
+                element_offset = selections[n].u.block.element_offset;
+            } else {
+                nelements = get_nelements(vinfo->ndim, vinfo->blockinfo[selections[n].u.block.index].count);
+                element_offset = 0;
+            }
+        } else {  // ADIOS_SELECTION_POINTS
+            nelements = selections[n].u.points.npoints;
+            element_offset = 0; // not used in this case at all
+        }
+
+        char *d = (char *) malloc (nelements * elemsize);
+        adios_schedule_read (f, &selections[n], varname, timestep, 1, d);
+        adios_perform_reads (f, 1);
+
+        // place data into user's allocated data described by the bounding box
+        if (selections[n].type == ADIOS_SELECTION_WRITEBLOCK)
+        {
+            adios_query_copy_block_to_bb(vinfo, selections[n].u.block.index, d,
+                    nelements, elemsize, element_offset, bb, data);
+        }
+        else // ADIOS_SELECTION_POINTS
+        {
+            uint64_t * wboffs = calloc (bb->u.bb.ndim, sizeof(uint64_t));
+            if (selections[n].u.points.container_selection &&
+                    selections[n].u.points.container_selection->type == ADIOS_SELECTION_WRITEBLOCK)
+            {
+                int i;
+                int blockidx = selections[n].u.points.container_selection->u.block.index;
+                for (i = 0; i < timestep-1; i++)
+                    blockidx += vinfo->nblocks[i];
+
+                for (i = 0; i < selections[n].u.points.ndim; ++i) {
+                    wboffs[i] = vinfo->blockinfo[blockidx].start[i];
+                }
+            }
+            adios_query_copy_points_to_bb(&(selections[n].u.points), wboffs, d, elemsize, bb, data);
+        }
+
+        free (d);
+    }
+
+    if (free_varinfo)
+        adios_free_varinfo(vinfo);
+    return 0;
+}
+
diff --git a/src/query/fastbit_adios.c b/src/query/fastbit_adios.c
index 742f937..d861201 100644
--- a/src/query/fastbit_adios.c
+++ b/src/query/fastbit_adios.c
@@ -1,8 +1,11 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <inttypes.h>
 #include "core/common_read.h"
 #include "core/adios_logger.h"
+#include "core/adios_clock.h"
+#include "core/a2sel.h"
 #include <iapi.h>
 
 #include "fastbit_adios.h"
@@ -28,6 +31,7 @@ void casestudyLogger_initPoints(CollectionPoint* p)
   p->_counter = 0;
 }
 
+
 void casestudyLogger_init() 
 {
   casestudyLogger_initPoints(&_bmsPoint);
@@ -88,9 +92,9 @@ extern void casestudyLogger_frame_print()
 extern void casestudyLogger_ends(const char* ref)
 {
   unsigned long endMillis = fastbit_adios_getCurrentTimeMillis();
-  unsigned long diffmillis = endMillis - _startMillis;
 
 #ifdef TIMESTUDY
+  unsigned long diffmillis = endMillis - _startMillis;
   unsigned long diffsec = diffmillis/1000;
   if (diffsec > 60) {
     unsigned long diffmin = diffsec/60;
@@ -105,9 +109,9 @@ extern void casestudyLogger_ends(const char* ref)
 extern void casestudyLogger_getRealtime(struct timespec* spec)
 {
 #ifdef CLOCK_MONOTONIC
-  clock_gettime(CLOCK_MONOTONIC, spec);
+  adios_clock_gettime(CLOCK_MONOTONIC, spec);
 #else
-  clock_gettime(CLOCK_REALTIME, spec);
+  adios_clock_gettime(CLOCK_REALTIME, spec);
 #endif
 }
 
@@ -117,7 +121,6 @@ extern void casestudyLogger_setPrefix(const char* prefix)
 
   unsigned long currMillis = fastbit_adios_getCurrentTimeMillis();
   unsigned long diffMillis = currMillis-_startMillis;
-  unsigned long diffsec = diffMillis/1000;
 
   unsigned long ministepMillis = currMillis - _milestoneMillis;
   if (_milestoneMillis == 0) {
@@ -126,6 +129,7 @@ extern void casestudyLogger_setPrefix(const char* prefix)
     
 
 #ifdef TIMESTUDY
+  unsigned long diffsec = diffMillis/1000;
   if (diffsec > 60) {
     unsigned long diffmin = diffsec/60;
     diffsec = diffsec - diffmin*60;
@@ -267,17 +271,7 @@ extern void casestudyLogger_bms_writeout(struct timespec* start,
 //
 long fastbit_adios_getCurrentTimeMillis() 
 {
-  time_t          s;  // Seconds
-  struct timespec spec;
-
-#ifdef CLOCK_MONOTONIC
-  clock_gettime(CLOCK_MONOTONIC, &spec);
-#else
-  clock_gettime(CLOCK_REALTIME, &spec);
-#endif
-  s  = spec.tv_sec;
-  long ms = round(spec.tv_nsec/1.0e6) + s*1000; // Convert nanoseconds to milliseconds
-  return ms;
+  return adios_gettime_ms();
 }
 
 
@@ -455,7 +449,6 @@ FastBitDataType fastbit_adios_util_getFastbitDataType(enum ADIOS_DATATYPES type)
     case adios_double:
       return FastBitDataTypeDouble;
       break;
-
     case adios_long_double:
     //sprintf (s, "%Lg", ((long double *) data)[idx]);
     case adios_complex:
@@ -520,7 +513,7 @@ uint64_t fastbit_adios_util_getBlockSize(ADIOS_VARINFO* v, int timestep, int rel
   for (j=0; j<v->ndim; j++) 
     {  
       blockSize *= v->blockinfo[k].count[j];
-      log_debug("%llu:%llu ", v->blockinfo[k].start[j], v->blockinfo[k].count[j]);
+      log_debug("%" PRIu64 ":%" PRIu64 " ", v->blockinfo[k].start[j], v->blockinfo[k].count[j]);
     }
   
   log_debug("]\n");
@@ -564,11 +557,11 @@ static const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int
       break;
       
     case adios_long:
-      sprintf (s, "%lld", ((int64_t *) data)[idx]);
+      sprintf (s, "%" PRId64, ((int64_t *) data)[idx]);
       break;
       
     case adios_unsigned_long:
-      sprintf (s, "%llu", ((uint64_t *) data)[idx]);
+      sprintf (s, "%" PRIu64, ((uint64_t *) data)[idx]);
       break;
       
     case adios_real:
@@ -596,6 +589,9 @@ static const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int
       sprintf (s, "(%lg, %lg)",
 	       ((double *) data)[2*idx], ((double *) data)[2*idx+1]);
       break;
+      //default:
+      // unable to handle
+      //break;
     }
 
   return s;
@@ -661,8 +657,8 @@ int fastbit_adios_util_readNoBMSFromIndexFile(ADIOS_FILE* idxFile, ADIOS_VARINFO
   uint64_t count_key[] = {keyV->dims[0]};
   uint64_t count_offset[] = {offsetV->dims[0]};
 
-  ADIOS_SELECTION* keySel = common_read_selection_boundingbox(keyV->ndim, start, count_key);
-  ADIOS_SELECTION* offsetSel = common_read_selection_boundingbox(offsetV->ndim, start, count_offset);
+  ADIOS_SELECTION* keySel = a2sel_boundingbox(keyV->ndim, start, count_key);
+  ADIOS_SELECTION* offsetSel = a2sel_boundingbox(offsetV->ndim, start, count_offset);
 
   // idx file has one timestep
   common_read_schedule_read(idxFile, keySel, keyVarName, 0, 1, NULL, *keys);
@@ -673,13 +669,13 @@ int fastbit_adios_util_readNoBMSFromIndexFile(ADIOS_FILE* idxFile, ADIOS_VARINFO
   *nk = keyV->dims[0];
   *no = offsetV->dims[0];
 
-  log_debug(" /key/offset data: length=%lld/%lld\n", *nk, *no);
+  log_debug(" /key/offset data: length=%" PRIu64 "/%" PRIu64 "\n", *nk, *no);
   
   //printData(*bms, bmsV->type, *nb);
-  common_read_selection_delete(keySel);
+  a2sel_free(keySel);
   common_read_free_varinfo(keyV);
 
-  common_read_selection_delete(offsetSel);
+  a2sel_free(offsetSel);
   common_read_free_varinfo(offsetV);
 
   return 0;
@@ -724,9 +720,10 @@ int fastbit_adios_util_readFromIndexFile(ADIOS_FILE* idxFile, ADIOS_VARINFO* v,
   uint64_t count_key[] = {keyV->dims[0]};
   uint64_t count_offset[] = {offsetV->dims[0]};
 
-  ADIOS_SELECTION* bmsSel = common_read_selection_boundingbox(bmsV->ndim, start, count_bms);
-  ADIOS_SELECTION* keySel = common_read_selection_boundingbox(keyV->ndim, start, count_key);
-  ADIOS_SELECTION* offsetSel = common_read_selection_boundingbox(offsetV->ndim, start, count_offset);
+  ADIOS_SELECTION* bmsSel = a2sel_boundingbox(bmsV->ndim, start, count_bms);
+  ADIOS_SELECTION* keySel = a2sel_boundingbox(keyV->ndim, start, count_key);
+  ADIOS_SELECTION* offsetSel = a2sel_boundingbox(offsetV->ndim, start, count_offset);
+
 
   // idx file has one timestep
   common_read_schedule_read(idxFile, bmsSel, bmsVarName, 0, 1, NULL, *bms);
@@ -739,16 +736,16 @@ int fastbit_adios_util_readFromIndexFile(ADIOS_FILE* idxFile, ADIOS_VARINFO* v,
   *no = offsetV->dims[0];
   *nb = bmsV->dims[0];
 
-  log_debug(" bms/key/offset data: length=%lld/%lld/%lld\n", *nb, *nk, *no);
+  log_debug(" bms/key/offset data: length=%" PRIu64 "/%" PRIu64 "/%" PRIu64 "\n", *nb, *nk, *no);
   
   //printData(*bms, bmsV->type, *nb);
-  common_read_selection_delete(bmsSel);
+  a2sel_free(bmsSel);
   common_read_free_varinfo(bmsV);
 
-  common_read_selection_delete(keySel);
+  a2sel_free(keySel);
   common_read_free_varinfo(keyV);
 
-  common_read_selection_delete(offsetSel);
+  a2sel_free(offsetSel);
   common_read_free_varinfo(offsetV);
 
   return 0;
@@ -768,7 +765,7 @@ or is lined as
   if (max > size) {
     max = size;
   }
-  log_debug("  \tfirst %d data out of %lld:[", max, size);
+  log_debug("  \tfirst %d data out of %" PRIu64 ":[", max, size);
   for (i=0; i<max; i++) {
     log_debug("%s ", value_to_string(type, data, i));
   }
diff --git a/src/query/fastbit_adios.h b/src/query/fastbit_adios.h
index 7008243..ec2716f 100644
--- a/src/query/fastbit_adios.h
+++ b/src/query/fastbit_adios.h
@@ -13,25 +13,7 @@ extern "C" {
 #include <iapi.h>
 
 #include "public/adios_query.h"
-
-#ifdef __MACH__
-#include <mach/mach_time.h>
-#define CLOCK_REALTIME 0
-#define CLOCK_MONOTONIC 0
-int clock_gettime(int clk_id, struct timespec *t){
-  mach_timebase_info_data_t timebase;
-  mach_timebase_info(&timebase);
-  uint64_t time;
-  time = mach_absolute_time();
-  double nseconds = ((double)time * (double)timebase.numer)/((double)timebase.denom);
-  double seconds = ((double)time * (double)timebase.numer)/((double)timebase.denom * 1e9);
-  t->tv_sec = seconds;
-  t->tv_nsec = nseconds;
-  return 0;
-}
-#else
-#include <time.h>
-#endif
+#include "query_utils.h"
 
 #include <math.h>
 
@@ -100,6 +82,27 @@ int fastbit_adios_util_readFromFastbitIndexFile (ADIOS_FILE* idxFile,
 					         uint32_t** bms, 
                                                  uint64_t* nb);
   
+  void casestudyLogger_print(CollectionPoint* p, const char* msg);
+  void casestudyLogger_starts(const char* ref);
+  void casestudyLogger_bms_print();
+  void casestudyLogger_idx_print();
+  void casestudyLogger_pro_print();
+  void casestudyLogger_frame_print();
+  void casestudyLogger_ends(const char* ref);
+  void casestudyLogger_getRealtime(struct timespec* spec);
+  void casestudyLogger_setPrefix(const char* prefix);
+  void casestudyLogger_frame_writeout(struct timespec* start, const char* desc);
+  void casestudyLogger_bms_writeout(struct timespec* start, const char* desc);
+  void casestudyLogger_pro_writeout(struct timespec* start, const char* desc);
+  void casestudyLogger_idx_writeout(struct timespec* start, const char* desc);
+  void casestudyLogger_init();				    
+  int fastbit_adios_util_readFromIndexFile(ADIOS_FILE* idxFile, ADIOS_VARINFO* v, int timestep, int blockNum, 
+					   double** keys, uint64_t* nk, int64_t** offsets, uint64_t* no,
+					   uint32_t** bms, uint64_t* nb);
+
+  uint64_t fastbit_adios_util_getBlockSize(ADIOS_VARINFO* v, int timestep, int relativeBlockIdx);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/query/query_alac.c b/src/query/query_alac.c
index 11e6ee8..f423618 100644
--- a/src/query/query_alac.c
+++ b/src/query/query_alac.c
@@ -15,10 +15,11 @@
 #include "public/adios_query.h"
 #include "public/adios_selection.h"
 #include "transforms/adios_transform_alacrity_common.h"
+#include "core/a2sel.h"
 #include "core/common_read.h"
 #include "common_query.h"
 #include "query_utils.h"
-//#include <alacrity.h>
+#include <alacrity.h>
 
 
 #ifdef ALACRITY
@@ -42,11 +43,30 @@ typedef struct{
 
 #define MAX_DIMS 32
 
+#define PFORDELTA_CHUNK_SIZE 128 // the chunk size of PFORDELTA 
+
 // This three variables are used for timing the transformer layer,
 // the reason of being global variables is because calling transformer layer APIs scatter
 // I have to sum every place that calls transformer layer
+double ckSpatialCheck = 0.0;
+double ckSetBitMap = 0.0; // timing is in the macro in which the pair of "#ifdef" and "#endif" can not be used
 #ifdef BREAKDOWN
-	double gTransformTime = 0.0, transStart =0, transEnd = 0;
+	double preparationTime = 0.0, preparationStart = 0;
+	double metaTotal = 0.0, metaStart=0.0;// timing metadata read
+	double idxTotal = 0.0, idxStart =0.0;  // timing index read
+	uint64_t idxReadSize = 0, dataReadSize =0; // in KB
+	double dataTotal = 0.0, dataStart =0.0; // timing low-order byte read
+	double procTotal = 0.0, procStart = 0.0; // timing for porc_write_block
+	double findPGTotal = 0.0, findPGStart = 0.0; // timing for porc_write_block
+	double candidateCheckTotal = 0.0, candidateCheckStart = 0.0;
+	double ckRids = 0.0, ckReconstituteStart= 0.0, ckReconstitute=0.0;
+	uint64_t ckTotalElm = 0;
+	double decodeTotal = 0.0, wholeDecodeTotal=0.0, decodeStart = 0.0, pgCTotal = 0.0, pgPartialTotal = 0.0; // timing for porc_write_block
+    double setRidTotal = 0.0, setRidStart = 0.0;
+    double alacPartitionMetaTotal=0.0, alacPartitionMetaStart = 0.0;
+    int numTouchedPGs = 0;
+    bin_id_t numTouchedBins =0;
+
 #endif
 
 /**** Funcs. that are internal funcs. ********/
@@ -116,8 +136,9 @@ void proc_write_block(int blockId, bool isPGCovered, ADIOS_VARTRANSFORM *ti, ADI
 		,uint64_t *srcstart, uint64_t *srccount, uint64_t *deststart, uint64_t *destcount
 		, ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/ , int Corder);
 
+void setBitsinBitMap(rid_t rid, ADIOS_ALAC_BITMAP * alacResultBitmap);
 
-inline void setBitsinBitMap(rid_t rid, ADIOS_ALAC_BITMAP * alacResultBitmap){
+void setBitsinBitMap(rid_t rid, ADIOS_ALAC_BITMAP * alacResultBitmap){
 	uint32_t word = (uint32_t) (rid >> 6);
 	if (word > alacResultBitmap->length){
 		printf("what a hell\n");
@@ -135,7 +156,7 @@ static uint8_t bits_in_char[256] = {
 #   define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2)
 		B6(0), B6(1), B6(1), B6(2)};
 
-static isInitialized = 0; // 0: the lookup table is not initialized ; 1 : the lookup table is initialized
+static int isInitialized = 0; // 0: the lookup table is not initialized ; 1 : the lookup table is initialized
 static unsigned char set_bit_count[65536];
 static unsigned char set_bit_position[65536][16];
 
@@ -159,18 +180,11 @@ void readTransformedElms(ADIOS_FILE* fp,ADIOS_VARINFO* vi
 		, int startStep, int numStep
 		, int blockId, uint64_t start_elem, uint64_t num_elems, int is_timestep_relative, void * outputData/*out*/){
 	ADIOS_SELECTION *sel = adios_selection_writeblock_bounded(blockId, start_elem, num_elems, is_timestep_relative);
-#ifdef BREAKDOWN
-	transStart = dclock();
-#endif
-
 	common_read_schedule_read_byid(fp, sel, vi->varid, startStep, numStep, NULL, outputData);
 	common_read_perform_reads(fp, 1);
 	// adios_selection_writeblock_bounded internally malloc data for adios_selection
 	// so I need to free it before the next usage
-	common_read_selection_delete(sel);
-#ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
-#endif
+	a2sel_free(sel);
 }
 
 void readBlockData(int gBlockId /*global block id */, ADIOS_QUERY * adiosQuery, int startStep,
@@ -180,13 +194,7 @@ void readBlockData(int gBlockId /*global block id */, ADIOS_QUERY * adiosQuery,
 	char * blockData = (char*) (*data);
 	blockData = (char *) malloc(sizeof(char) * dataElmSize * dataElmNum);
 	ADIOS_SELECTION *sel = adios_selection_writeblock_bounded(gBlockId, 0, dataElmNum, 0); // entire PG selection
-#ifdef BREAKDOWN
-	transStart = dclock();
-#endif
 	common_read_schedule_read_byid(adiosQuery->file, sel, varInfo->varid, startStep, 1, NULL, blockData);
-#ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
-#endif
 }
 void readIndexData(int blockId, uint64_t offsetSize /*in bytes*/
 		,uint64_t length /*in bytes*/, ADIOS_FILE* fp,ADIOS_VARINFO* vi
@@ -432,14 +440,19 @@ static inline rid_t ridConversionWithoutCheck(const rid_t rid/*relative to local
 /*
  * usage: this MACRO tightly depends on the usage context,
  * which requires the context to declare the exact variables
- */
+  */
 #define CHECK_ELEMENT(code) { \
 		for(el= 0; el < totalElm; el ++){              \
 			if ((code)){                               \
 				rid = decodeRids[el];                  \
-				if (ridConversionWithCheck(rid, srcstart,srccount, deststart,destcount, dim, &newRid, Corder)){  \
+				double tmps = dclock();                 \
+				bool flag = ridConversionWithCheck(rid, srcstart,srccount, deststart,destcount, dim, &newRid, Corder); \
+				ckSpatialCheck += (dclock()-tmps);     \
+				if (flag){  \
+					double tmps2 = dclock();           \
 					setBitsinBitMap(newRid, alacResultBitmap);       \
 					alacResultBitmap->numSetBits ++;   \
+					ckSetBitMap += (dclock() - tmps2);   \
 				}                                      \
 			}                                          \
 		}                                              \
@@ -512,12 +525,167 @@ int checkUnsupportedDataType(enum ADIOS_DATATYPES dataType) {
 	return !( (dataType == adios_real ) ||
 			 (dataType == adios_double) ) ;
 }
+
+
+void reconstituteElementsUint64T(const ALMetadata *meta, bin_id_t start_bin, bin_id_t end_bin,
+		                         char *start_bin_input, char *start_bin_output) {
+
+	const ALBinLayout * const bl = &meta->binLayout;
+	int insigbytes = alacrity_util_insigBytesCeil(meta);
+	int insigbits = (meta->elementSize << 3) - meta->significantBits;
+
+	uint64_t reconst_elem;
+	uint64_t high_mask;
+	uint64_t *next_output = (uint64_t*)start_bin_output;
+	char *next_input = (char*)start_bin_input;
+
+	// First reconstitute the values // Iterate through the bins backwards
+	bin_id_t bin = start_bin;
+	for (; bin < end_bin; bin++) {
+		const bin_offset_t off_start = bl->binStartOffsets[bin];
+		const bin_offset_t off_end = bl->binStartOffsets[bin + 1];
+
+		high_mask = ((uint64_t)bl->binValues[bin]) << insigbits;
+		// Iterate through the elements backwards
+		bin_offset_t off = off_start;
+		for (; off < off_end; off++) {
+			GET_BUFFER_ELEMENT(reconst_elem, next_input, insigbytes);
+			reconst_elem |= high_mask;
+			*next_output++ = reconst_elem;
+			next_input += insigbytes;
+		}
+	}
+}
+
+void reconstituteElementsUint32T(const ALMetadata *meta, bin_id_t start_bin, bin_id_t end_bin,
+		                         char *start_bin_input, char *start_bin_output) {
+
+	const ALBinLayout * const bl = &meta->binLayout;
+	int insigbytes = alacrity_util_insigBytesCeil(meta);
+	int insigbits = (meta->elementSize << 3) - meta->significantBits;
+
+	uint32_t reconst_elem;
+	uint32_t high_mask;
+	uint32_t *next_output = (uint32_t*)start_bin_output;
+	char *next_input = (char*)start_bin_input;
+
+	// First reconstitute the values // Iterate through the bins backwards
+	bin_id_t bin = start_bin;
+	for (; bin < end_bin; bin++) {
+		const bin_offset_t off_start = bl->binStartOffsets[bin];
+		const bin_offset_t off_end = bl->binStartOffsets[bin + 1];
+
+		high_mask = ((uint32_t)bl->binValues[bin]) << insigbits;
+		// Iterate through the elements backwards
+		bin_offset_t off = off_start;
+		for (; off < off_end; off++) {
+			GET_BUFFER_ELEMENT(reconst_elem, next_input, insigbytes);
+			reconst_elem |= high_mask;
+			*next_output++ = reconst_elem;
+			next_input += insigbytes;
+		}
+	}
+}
+
+void reconstituteElementsUint16T(const ALMetadata *meta, bin_id_t start_bin, bin_id_t end_bin,
+		                         char *start_bin_input, char *start_bin_output) {
+
+	const ALBinLayout * const bl = &meta->binLayout;
+	int insigbytes = alacrity_util_insigBytesCeil(meta);
+	int insigbits = (meta->elementSize << 3) - meta->significantBits;
+
+	uint16_t reconst_elem;
+	uint16_t high_mask;
+	uint16_t *next_output = (uint16_t*)start_bin_output;
+	char *next_input = (char*)start_bin_input;
+
+	// First reconstitute the values // Iterate through the bins backwards
+	bin_id_t bin = start_bin;
+	for (; bin < end_bin; bin++) {
+		const bin_offset_t off_start = bl->binStartOffsets[bin];
+		const bin_offset_t off_end = bl->binStartOffsets[bin + 1];
+
+		high_mask = ((uint16_t)bl->binValues[bin]) << insigbits;
+		// Iterate through the elements backwards
+		bin_offset_t off = off_start;
+		for (; off < off_end; off++) {
+			GET_BUFFER_ELEMENT(reconst_elem, next_input, insigbytes);
+			reconst_elem |= high_mask;
+			*next_output++ = reconst_elem;
+			next_input += insigbytes;
+		}
+	}
+}
+
+void reconstituteElementsUint8T(const ALMetadata *meta, bin_id_t start_bin, bin_id_t end_bin,
+		                         char *start_bin_input, char *start_bin_output) {
+
+	const ALBinLayout * const bl = &meta->binLayout;
+	int insigbytes = alacrity_util_insigBytesCeil(meta);
+	int insigbits = (meta->elementSize << 3) - meta->significantBits;
+
+	uint8_t reconst_elem;
+	uint8_t high_mask;
+	uint8_t *next_output = (uint8_t*)start_bin_output;
+	char *next_input = (char*)start_bin_input;
+
+	// First reconstitute the values // Iterate through the bins backwards
+	bin_id_t bin = start_bin;
+	for (; bin < end_bin; bin++) {
+		const bin_offset_t off_start = bl->binStartOffsets[bin];
+		const bin_offset_t off_end = bl->binStartOffsets[bin + 1];
+
+		high_mask = ((uint8_t)bl->binValues[bin]) << insigbits;
+		// Iterate through the elements backwards
+		bin_offset_t off = off_start;
+		for (; off < off_end; off++) {
+			GET_BUFFER_ELEMENT(reconst_elem, next_input, insigbytes);
+			reconst_elem |= high_mask;
+			*next_output++ = reconst_elem;
+			next_input += insigbytes;
+		}
+	}
+}
+
+/*
+ * reassemble the low-order byte & bin header value to the original value
+ * for lower-order bins ( [start_bin , end_bin) )
+ * I copied the implementation from the alacrity in order to profile the performance
+ */
+void reconstituteData2(const ALMetadata *meta, bin_id_t start_bin, bin_id_t end_bin,
+		                         char *start_bin_input, char *start_bin_output){
+	switch (meta->elementSize) {
+	case sizeof(uint64_t):
+		reconstituteElementsUint64T( meta, start_bin, end_bin, start_bin_input, start_bin_output);
+		break;
+	case sizeof(uint32_t):
+		reconstituteElementsUint32T( meta, start_bin, end_bin, start_bin_input, start_bin_output);
+		break;
+	case sizeof(uint16_t):
+		reconstituteElementsUint16T( meta, start_bin, end_bin, start_bin_input, start_bin_output);
+		break;
+	case sizeof(uint8_t):
+		reconstituteElementsUint8T( meta, start_bin, end_bin, start_bin_input, start_bin_output);
+		break;
+	default:
+		eprintf("Unsupported element size %d in %s\n", (int)meta->elementSize, __FUNCTION__);
+		assert(false);
+	}
+	return ;
+}
+
+
 int adios_alac_check_candidate(ALMetadata *partitionMeta, bin_id_t startBin, bin_id_t endBin , double hb, double lb
 		, uint64_t *srcstart, uint64_t *srccount, uint64_t *deststart, uint64_t *destcount, int dim
 		, ADIOS_QUERY * adiosQuery , const char *inputCurPtr /*index bytes of entire PG*/
 		, bool decoded  /*true: need decoding */ , char * lowOrderBytes /*low order bytes of from startBin to endBin*/
 		, enum ADIOS_DATATYPES dataType
 		,ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/, int Corder){
+
+#ifdef BREAKDOWN
+	candidateCheckStart = dclock();
+#endif
+
 	const ALBinLayout * bl = &(partitionMeta->binLayout);
 	/*assert(adiosQuery->_sel->type == ADIOS_SELECTION_BOUNDINGBOX);
 	const ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb = &(adiosQuery->_sel->u.bb);
@@ -536,9 +704,19 @@ int adios_alac_check_candidate(ALMetadata *partitionMeta, bin_id_t startBin, bin
 		decodeRids = (uint32_t *) inputCurPtr;
 	}
 
+#ifdef BREAKDOWN
+	ckTotalElm += totalElm;
+	ckRids += (dclock()- candidateCheckStart);
+	ckReconstituteStart = dclock();
+#endif
 	char * data = (char *) malloc(partitionMeta->elementSize*totalElm); // recovered data in bytes
-	reconstituteData(partitionMeta, startBin, endBin,
-										 lowOrderBytes, data);
+	// reconstituteData(partitionMeta, startBin, endBin, lowOrderBytes, data); //this takes quite amount of time when the data size is large
+
+	reconstituteData2(partitionMeta, startBin, endBin, lowOrderBytes, data);
+
+#ifdef BREAKDOWN
+	ckReconstitute += (dclock() - ckReconstituteStart);
+#endif
 	//Following variables are needed for the micros definition
 	rid_t newRid;
 	enum ADIOS_PREDICATE_MODE op = adiosQuery->predicateOp;
@@ -584,6 +762,11 @@ int adios_alac_check_candidate(ALMetadata *partitionMeta, bin_id_t startBin, bin
 	free(data);
 	if(decoded)
 		free(decodeRids);
+
+#ifdef BREAKDOWN
+	candidateCheckTotal += (dclock() - candidateCheckStart);
+#endif
+
 	return 0;
 
 }
@@ -704,12 +887,21 @@ void resolveQueryBoundary(ADIOS_QUERY *adiosQuery, double *hb, double *lb)
 char * readLowDataAmongBins(ALMetadata *partitionMeta, bin_id_t low_bin , bin_id_t hi_bin
 		, uint64_t lowDataByteStartPos,  ADIOS_QUERY * adiosQuery
 		, int blockId, int startStep, int numStep){
+#ifdef BREAKDOWN
+	dataStart = dclock();
+#endif
+
 	const uint64_t bin_read_len = ALGetDataBinOffset( partitionMeta, hi_bin) - ALGetDataBinOffset( partitionMeta, low_bin); // in bytes
 	uint64_t lowDataBinOffset = lowDataByteStartPos+ ALGetDataBinOffset( partitionMeta, low_bin); /*element offset*/;
 	// low order bytes from low_bin to hi_bin, ITS NOT entire low order byte
 	char * readData= (char *) calloc(bin_read_len, sizeof(char));
 	readLowOrderBytes(blockId,lowDataBinOffset, bin_read_len
 	         , adiosQuery->file, adiosQuery->varinfo, startStep, numStep, (void *)readData);
+
+#ifdef BREAKDOWN
+	dataTotal = dataTotal + (dclock()- dataStart);
+	dataReadSize += (bin_read_len/1024) ; // in KB
+#endif
 	return readData;
 }
 
@@ -717,16 +909,404 @@ char * readLowDataAmongBins(ALMetadata *partitionMeta, bin_id_t low_bin , bin_id
 char * readIndexAmongBins(ALMetadata *partitionMeta, bin_id_t low_bin , bin_id_t hi_bin
 		, uint64_t indexStartPos,  ADIOS_QUERY * adiosQuery
 		, int blockId, int startStep, int numStep){
+
+#ifdef BREAKDOWN
+	idxStart = dclock();
+#endif
+
 	const uint64_t bin_read_len = ALGetIndexBinOffset( partitionMeta, hi_bin) - ALGetIndexBinOffset( partitionMeta, low_bin); // in bytes
 	uint64_t lowDataBinOffset = indexStartPos+ ALGetIndexBinOffset( partitionMeta, low_bin); /*element offset*/;
 	// low order bytes from low_bin to hi_bin, ITS NOT entire low order byte
 	char * readData= (char *) calloc(bin_read_len, sizeof(char));
 	readLowOrderBytes(blockId,lowDataBinOffset, bin_read_len
 	         , adiosQuery->file, adiosQuery->varinfo, startStep, numStep, (void *)readData);
+#ifdef BREAKDOWN
+	idxTotal = idxTotal + (dclock()- idxStart);
+	idxReadSize += (bin_read_len/1024); // in KB
+#endif
+
 	return readData;
 }
 
 
+void set_consecutive_bits(uint64_t relativeRid, uint64_t ones , ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/) {
+	uint64_t * bitmap = alacResultBitmap->bits;
+	uint64_t slot,  pass_bits, leftMask , pass_mask;
+	uint64_t allOnesMask = (uint64_t) (~0); // must have casting, otherwise, will only generate 32 1s
+	// starting point: relativeRid,  number of 1 bits: srccount[ndim-1]
+	slot =  (relativeRid >> 6);
+	pass_bits = relativeRid & 0x3F;
+
+	/*************LITTLE ENDIAN : Significant bit goes to high address (right side)*******/
+	/*       0000  | 111111111              */
+	/*   pass_bits | */
+	pass_mask = allOnesMask << pass_bits;
+	if ( ones + pass_bits <= 64 ) { // the number of bits to be set in the same slot
+		/*     111111111111111 |  0000
+		 *                     | 64-ones-pass_bits
+		 */
+		leftMask = allOnesMask >> (64 - pass_bits - ones);
+		bitmap[slot] |= (leftMask & pass_mask);
+	}else { // if it has more than one slot bits to be set
+		bitmap[slot] |= pass_mask ; // the first slot
+		uint64_t leftOnes = ones - (64 - pass_bits);
+		uint64_t spanSlot = leftOnes >> 6 ; // left ones span the number of slots
+		uint64_t  remainOnes = leftOnes & 0x3F; // remaining ones
+		uint64_t s = 1;
+		for (s = 1; s <= spanSlot; ++ s) {
+			bitmap[slot + s] |= allOnesMask ; // slot+s in generally doesn't exceed the length of bitmap
+		}
+		if ( remainOnes > 0) {
+			 /*
+			  *       1111111 | 0000
+			  *    remain_ones|
+			  */
+			uint64_t remainMask = allOnesMask >> (64- remainOnes) ;
+			bitmap[slot + spanSlot +1 ] |= remainMask;
+		}
+
+	}
+
+	alacResultBitmap->numSetBits += ones;
+}
+
+
+/*  desstart     ,      destcount        ,,      srcstart (x)        , srccount
+ *   (2, 3)      ,       (5, 6)           ,      (4, 5)          ,   (2, 3 )       => (4 + 2 -1, 5+3-1) = (5, 7)
+ *    (2,3)___________________
+ *         |__|__|__|__|__|__|           (2,3) 0 | 1 | 2 | 3 | 4 | 5 |
+ *         |__|__|__|__|__|__|           (3,3) 6 | 7 | 8 | 9 | 10 | 11 |
+ *         |__|_x|__|__|__|__|           (4,3) 12| 13| 14
+ *         |__|__|__|__|__|__|
+ *         |__|__|__|_y|__|__|
+ *         |__|__|__|__|__|__|
+ *
+ *  // 1. calculate the first relative rids (4,5)
+ *         (4-2) * 6 + (5-3)* 1 -1 = 2* 6 + 2  = 14
+ *  // 2. calculate the next consecutive rids    ( 5,  5)  (5-2)*6 + (5-3)*1 = 18 + 2 = 20, so the delta = 6 (destcount[ndim-1])
+ *  // 3. locate the bit start position using relativeRid in the bitmap, and set consecutive 3 consecutive 1s ( 3= srccount[ndim-1])
+ *  // NOTE that length argument is not used at this point
+ */
+void setBits_for_wholePG_1_2_dim(uint64_t *srcstart, uint64_t *srccount, uint64_t *deststart, uint64_t *destcount,
+		int ndim, ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/) {
+
+	uint64_t relativeRid = 0;
+	uint64_t count = 1;
+	int dim = 0;
+	//1.calculate the first relativeRids (4,5)
+	while ( dim < ndim ) {
+		relativeRid += (srcstart[ndim - dim -1 ] - deststart[ndim - dim -1 ]) * count;
+		count *= destcount[ndim - dim -1 ];
+		dim ++;
+	}
+	//2. delta between any two consecutive rids
+	uint64_t delta = destcount[ndim -1 ] ; //count / destcount[0];
+	//2.2 times of how many relativeRids
+	uint64_t times = 1;
+	dim = 0;
+	while (dim < ndim - 1) {
+		times *= srccount[dim];
+		dim ++;
+	}
+	int j ;
+	uint64_t  ones = srccount[ndim -1 ]; // the number of 1s needs to be reflected in the bitmap
+
+	for ( j = 1; j <= times; ++ j) {
+		set_consecutive_bits(relativeRid, ones, alacResultBitmap);
+		relativeRid += delta;
+	}
+
+}
+
+
+/*
+ *
+0                                  1407
+0,0,0                          0,0,1407
+0,1,0                          0,1,1407
+...
+0,1079                         0,1079,1407
+
+              relativeRid, delta, times, ones
+uint64_t zero [4] = {0, 1408, 50000, 400};
+ *
+0,0,0     0,0,399
+0,1,0     0,1,399      --- 400 -> delta
+...
+0,249,0   0,249,399
+
+1,0,0     1,0,399   --- 1080*1408 = 1520640 => gap
+1,1,0     1,1,399
+..
+1,249,0   1,249,399
+
+...
+
+199,0,0   199,0,399
+199,1,0	  199,1,399
+..
+199,249,0  199,249,399
+ *
+ */
+void setBits_for_wholePG_3_dim(uint64_t *srcstart, uint64_t *srccount, uint64_t *deststart, uint64_t *destcount,
+		int ndim, ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/) {
+
+	uint64_t relativeRid = 0, tmpRid = 0;
+	uint64_t count = 1;
+	int dim = 0;
+	//1.calculate the first relativeRids
+	while ( dim < ndim ) {
+		relativeRid += (srcstart[ndim - dim -1 ] - deststart[ndim - dim -1 ]) * count;
+		count *= destcount[ndim - dim -1 ];
+		dim ++;
+	}
+	//2. delta between any two consecutive rids
+	uint64_t delta = destcount[ndim -1 ] , gap = destcount[1]*destcount[2];
+
+	int i = 0, j = 0 ;
+	uint64_t  ones = srccount[ndim -1 ]; // the number of 1s needs to be reflected in the bitmap
+
+	for (i=0; i < srccount[0]; i++) {
+	   tmpRid = relativeRid;
+	   for (j=0; j < srccount[1]; j ++ ) {
+		   set_consecutive_bits(tmpRid,ones, alacResultBitmap);
+		   tmpRid += destcount[2];
+	   }
+	   relativeRid += gap; // move to another dimension, need to calculate the jump again
+	}
+}
+
+
+uint64_t getRealBitNum(ADIOS_ALAC_BITMAP * alacResultBitmap) {
+
+	uint64_t kk = 0, count = 0, pcount = 0;
+	uint64_t * p_bitmap = alacResultBitmap->bits;
+	for (; kk < alacResultBitmap->length; kk++) {
+
+			count =  bits_in_char [p_bitmap[kk] & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >>  8) & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >> 16) & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >> 24) & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >> 32) & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >> 40) & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >> 48) & 0xff]
+								   +  bits_in_char [(p_bitmap[kk] >> 56) & 0xff]
+								   ;
+		 pcount += count;
+	}
+	return pcount;
+}
+
+
+
+void deltaBitSetsWithPGCoveredCorderIn3D(
+		 uint32_t *input /*decoded detla list, with first element as frame of reference and the rest values are detlas*/
+		, uint32_t inputLength
+		, uint64_t *srcstart //PG region dimension
+		, uint64_t *srccount
+		, uint64_t *srcboundary //[ srccount[2], srccount[2]*srccount[1], srccount[2]*srccount[1]*srccount[0]
+		, uint64_t *deststart //region dimension of Selection box
+		, uint64_t *destcount
+		, uint64_t *destboundary // [destcount[2], destcount[2]*destcount[1], destcount[2]*destcount[1]*destcount[0]
+		, int ndim
+		,ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/
+		) {
+
+	uint32_t x = 0;
+
+	for (x = 0; x < inputLength ; x += PFORDELTA_CHUNK_SIZE) { // perform for every pfordetal chunk (128 elements)
+		uint32_t realSize = x + PFORDELTA_CHUNK_SIZE >= inputLength ? inputLength - x : PFORDELTA_CHUNK_SIZE ;
+		uint32_t first_rid_val = input[x];
+		int i;
+		uint64_t deltaCoordPG[ndim], coordRegion[ndim]; // coordinate in pg context
+
+		// First convert the RID in the src box to first_coordinates in the dest box
+		ridToCoordinates(ndim, 1, first_rid_val, srccount, deltaCoordPG);
+		for (i = 0; i < ndim; i++){
+			coordRegion[i] = deltaCoordPG[i] + srcstart[i] - deststart[i];
+		}
+
+		// Then, convert the coordinates in the dest box back to an RID
+		uint32_t relativeRid = 0;
+		for (i = 0; i < ndim; i++){
+			relativeRid *= destcount[i];
+			relativeRid  += coordRegion[i];
+		}
+
+		uint32_t word = (uint32_t) (relativeRid >> 6);
+		alacResultBitmap->bits[word]
+					|= (1LL << (relativeRid & 0x3F));
+
+		uint32_t j = x+1, r = 0; // skip the first frame of the reference NOTE: j = x + 1
+		//results[r++] = relativeRid;
+		uint32_t nextRelativeRid = 0;
+		for ( j = x + 1; j < x + realSize ; ++ j ) {
+			uint32_t delta = input[j];
+			uint64_t nextDim = delta + deltaCoordPG[ 2 ];
+			//update first_coordinate with detal
+			if (  nextDim < srcboundary[ 2]  ) { // have to be ndim (=3) specific , srcboundary[2]= srccount[2]
+				nextRelativeRid = relativeRid + delta;
+				deltaCoordPG[2 ] = nextDim; // along with the coordinates
+			}else  if (deltaCoordPG[1] * srccount[2] + nextDim < srcboundary[1]) { // srcboundary[1] = srccount[2]*srccount[1]
+				uint64_t inc = nextDim / srccount[2];  // increment dimension
+				uint64_t co2 = nextDim % srccount[2]; // it is the new dim number
+				if ( co2 > deltaCoordPG[2]) {
+					nextRelativeRid = relativeRid +  inc * destboundary[2] + (co2 - deltaCoordPG[2]) ;
+				}else {
+					nextRelativeRid = relativeRid +  inc * destboundary[2] - (deltaCoordPG[2] - co2) ;
+				}
+				deltaCoordPG[2] = co2;  // along with the coordinates
+			    deltaCoordPG[1] += inc;
+			}else {
+				uint64_t nextDim2 = (deltaCoordPG[1] * srcboundary[2] + nextDim);
+				uint64_t inc0 =  nextDim2 / srcboundary[1];  // this is the delta dimsion on the highest dimension
+				uint64_t remain0 = nextDim2 % srcboundary[1];
+				uint64_t coord1 = remain0 / srcboundary[2];  //they are the new dim number
+				uint64_t coord2 = remain0 % srcboundary[2];
+				if (coord1 > deltaCoordPG[1]) { // we deal with unsign data type, it doesn't have sign
+					if ( coord2 > deltaCoordPG[2]) {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] +  (coord1 - deltaCoordPG[1]) * destboundary[2] + (coord2 - deltaCoordPG[2]) ;
+					}else {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] +  (coord1 - deltaCoordPG[1]) * destboundary[2] - (deltaCoordPG[2] - coord2) ;
+					}
+
+				}else {
+					if ( coord2 > deltaCoordPG[2]) {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] -  (deltaCoordPG[1] - coord1 ) * destboundary[2] + (coord2 - deltaCoordPG[2]) ;
+					}else {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] -  (deltaCoordPG[1] - coord1 ) * destboundary[2] - (deltaCoordPG[2] - coord2) ;
+					}
+				}
+				deltaCoordPG[0] +=inc0;
+				deltaCoordPG[1] = coord1;
+				deltaCoordPG[2] = coord2;
+			}
+
+			relativeRid = nextRelativeRid;  // update the relativeRid
+
+			word = (uint32_t) (relativeRid >> 6);
+			alacResultBitmap->bits[word] |= (1LL << (relativeRid & 0x3F));
+			//results[r++] = relativeRid;
+
+		}
+	}
+}
+
+
+
+
+
+void deltaBitSetsWithPGPartialCoveredCorderIn3D(
+		 uint32_t *input /*decoded detla list, with first element as frame of reference and the rest values are detlas*/
+		, uint32_t inputLength
+		, uint64_t *srcstart //PG region dimension
+		, uint64_t *srccount
+		, uint64_t *srcboundary //[ srccount[2], srccount[2]*srccount[1], srccount[2]*srccount[1]*srccount[0]
+		, uint64_t *deststart //region dimension of Selection box
+		, uint64_t *destcount
+		, uint64_t *destboundary // [destcount[2], destcount[2]*destcount[1], destcount[2]*destcount[1]*destcount[0]
+		, int ndim
+		,ADIOS_ALAC_BITMAP * alacResultBitmap /*OUT*/
+		) {
+	uint32_t x = 0;
+		uint64_t destend [ndim] ;
+		destend[0] = deststart[0] + destcount[0] -1 ; destend[1] = deststart[1] + destcount[1] -1 ; destend[2] = deststart[2] + destcount[2] -1 ;
+	for (x = 0; x < inputLength ; x += PFORDELTA_CHUNK_SIZE) {
+		uint32_t realSize = x + PFORDELTA_CHUNK_SIZE >= inputLength ? inputLength - x : PFORDELTA_CHUNK_SIZE ;
+
+		uint32_t first_rid_val = input[x];
+		int i;
+		uint64_t deltaCoordPG[ndim], coordRegion[ndim], tmpCoord[ndim]; // coordinate in pg context
+
+		// First convert the RID in the src box to first_coordinates in the dest box
+		ridToCoordinates(ndim, 1, first_rid_val, srccount, deltaCoordPG);
+		for (i = 0; i < ndim; i++){
+			coordRegion[i] = deltaCoordPG[i] + srcstart[i] - deststart[i];
+		}
+		// the first rid is not in the bounding box, then, the entire chunk is not as well
+		if ( coordRegion[0] < deststart[0] || coordRegion[0] > destend[0] ) continue  ;
+		if ( coordRegion[1] < deststart[1] || coordRegion[1] > destend[1] ) continue  ;
+		if ( coordRegion[2] < deststart[2] || coordRegion[2] > destend[2] ) continue  ;
+
+		// Then, convert the coordinates in the dest box back to an RID
+		uint32_t relativeRid = 0;
+		for (i = 0; i < ndim; i++){
+			relativeRid *= destcount[i];
+			relativeRid  += coordRegion[i];
+		}
+
+		uint32_t word = (uint32_t) (relativeRid >> 6);
+		alacResultBitmap->bits[word]
+					|= (1LL << (relativeRid & 0x3F));
+
+		uint32_t j = x + 1, r = 0; // skip the first frame of the reference
+		//results[r++] = relativeRid;
+		uint32_t nextRelativeRid = 0;
+		for ( j = x + 1; j < x + realSize ; ++ j ) {
+			uint32_t delta = input[j];
+			uint64_t nextDim = delta + deltaCoordPG[ 2 ];
+			//update first_coordinate with detal
+			if (  nextDim < srcboundary[ 2]  ) { // have to be ndim (=3) specific , srcboundary[2]= srccount[2]
+				nextRelativeRid = relativeRid + delta;
+				deltaCoordPG[2 ] = nextDim; // along with the coordinates
+			}else  if (deltaCoordPG[1] * srccount[2] + nextDim < srcboundary[1]) { // srcboundary[1] = srccount[2]*srccount[1]
+				uint64_t inc = nextDim / srccount[2];  // increment dimension
+				uint64_t co2 = nextDim % srccount[2]; // it is the new dim number
+				if ( co2 > deltaCoordPG[2]) {
+					nextRelativeRid = relativeRid +  inc * destboundary[2] + (co2 - deltaCoordPG[2]) ;
+				}else {
+					nextRelativeRid = relativeRid +  inc * destboundary[2] - (deltaCoordPG[2] - co2) ;
+				}
+				deltaCoordPG[2] = co2;  // along with the coordinates
+			    deltaCoordPG[1] += inc;
+			}else {
+				uint64_t nextDim2 = (deltaCoordPG[1] * srcboundary[2] + nextDim);
+				uint64_t inc0 =  nextDim2 / srcboundary[1];  // this is the delta dimsion on the highest dimension
+				uint64_t remain0 = nextDim2 % srcboundary[1];
+				uint64_t coord1 = remain0 / srcboundary[2];  //they are the new dim number
+				uint64_t coord2 = remain0 % srcboundary[2];
+				if (coord1 > deltaCoordPG[1]) { // we deal with unsign data type, it doesn't have sign
+					if ( coord2 > deltaCoordPG[2]) {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] +  (coord1 - deltaCoordPG[1]) * destboundary[2] + (coord2 - deltaCoordPG[2]) ;
+					}else {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] +  (coord1 - deltaCoordPG[1]) * destboundary[2] - (deltaCoordPG[2] - coord2) ;
+					}
+
+				}else {
+					if ( coord2 > deltaCoordPG[2]) {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] -  (deltaCoordPG[1] - coord1 ) * destboundary[2] + (coord2 - deltaCoordPG[2]) ;
+					}else {
+						nextRelativeRid = relativeRid + inc0 * destboundary[1] -  (deltaCoordPG[1] - coord1 ) * destboundary[2] - (deltaCoordPG[2] - coord2) ;
+					}
+				}
+				deltaCoordPG[0] +=inc0;
+				deltaCoordPG[1] = coord1;
+				deltaCoordPG[2] = coord2;
+			}
+
+			relativeRid = nextRelativeRid;  // update the relativeRid
+
+			tmpCoord[0] = deltaCoordPG[0] + srcstart[0] - deststart[0];
+//			tmpCoord[0] = deltaCoordPG[0] + srcstart[0] ;
+			if ( tmpCoord[0] <  deststart[0] || tmpCoord[0] > destend[0]) continue ;
+			tmpCoord[1] = deltaCoordPG[1] + srcstart[1] - deststart[1];
+//			tmpCoord[1] = deltaCoordPG[1] + srcstart[1] ;
+			if ( tmpCoord[1] <  deststart[1] || tmpCoord[1] > destend[1]) continue ;
+			tmpCoord[2] = deltaCoordPG[2] + srcstart[2] - deststart[2];
+//			tmpCoord[2] = deltaCoordPG[2] + srcstart[2] ;
+			if ( tmpCoord[2] <  deststart[2] || tmpCoord[2] > destend[2]) continue ;
+
+			word = (uint32_t) (relativeRid >> 6);
+			alacResultBitmap->bits[word] |= (1LL << (relativeRid & 0x3F));
+//			results[r++] = relativeRid;
+
+		}
+	}
+
+}
+
+
+
 void proc_write_block(int gBlockId /*its a global block id*/, bool isPGCovered, ADIOS_VARTRANSFORM *ti, ADIOS_QUERY * adiosQuery, int startStep, bool estimate
 		, ALUnivariateQuery * alacQuery , double lb , double hb
 		,uint64_t *srcstart, uint64_t *srccount, uint64_t *deststart, uint64_t *destcount
@@ -747,14 +1327,15 @@ void proc_write_block(int gBlockId /*its a global block id*/, bool isPGCovered,
 	adios_transform_alacrity_metadata *alac_metadata = (adios_transform_alacrity_metadata *) malloc(sizeof(adios_transform_alacrity_metadata));
 
 #ifdef BREAKDOWN
-	transStart = dclock();
+	metaStart = dclock();
 #endif
 
 	//the metadata order is alacrity meta, alacrity index, alacrity LoB, raw data (original data)
 	read_alacrity_transform_metadata(tmeta.length, tmeta.content, alac_metadata);
 	//It now assumes LoB along with OD (original data)
 #ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
+	metaTotal = metaTotal + (dclock()- metaStart);
+	alacPartitionMetaStart = dclock();
 #endif
 
 	//TODO: offset of each PG should be included
@@ -767,155 +1348,332 @@ void proc_write_block(int gBlockId /*its a global block id*/, bool isPGCovered,
 	readPartitionMeta(gBlockId, alac_metadata->meta_size,adiosQuery->file, varInfo
 					,startStep,numStep,&partitionMeta);
 
+#ifdef BREAKDOWN
+	//printf("read partition meta %d with size %"PRIu64"\n", gBlockId, alac_metadata->meta_size);
+	alacPartitionMetaTotal += dclock() - alacPartitionMetaStart;
+#endif
 
-
-	const uint8_t insigbytes = insigBytesCeil(&partitionMeta);
+	const uint8_t insigbytes = alacrity_util_insigBytesCeil(&partitionMeta);
 
 	//2. find touched bin
 	bin_id_t low_bin, hi_bin;
-	_Bool are_bins_touched = findBinRange1C(&partitionMeta, alacQuery, &low_bin,
-			&hi_bin);
-
-	if (are_bins_touched) {
-
-		//3. load index size
-		uint64_t indexStartPos =  alac_metadata->index_offset ;
-		char * index = readIndexAmongBins(&partitionMeta
-									, low_bin,  hi_bin, indexStartPos, adiosQuery, gBlockId, startStep, numStep);
-		char * input_index = index;
-		const ALBinLayout * bl = &(partitionMeta.binLayout);
-		ALIndex* indexPtr = &index;
-		//TODO: distinguish the offset btw two bins for compressed and uncompressed index
-		// is the offset byte-level or element-level?
-		if (partitionMeta.indexMeta.indexForm == ALInvertedIndex) {
-			// indexes are inverted indexes that are not compressed,  we build bitmaps for each rid;
-			//element offset, instead of byte element
-			uint64_t resultCount = bl->binStartOffsets[hi_bin] - bl->binStartOffsets[low_bin];
-
-			if (estimate) {
+	_Bool are_bins_touched = findBinRange1C(&partitionMeta, alacQuery, &low_bin, &hi_bin);
+
+	if (!are_bins_touched) {
+		FREE(alac_metadata);
+		return ;
+	}
+
+	const ALBinLayout * bl = &(partitionMeta.binLayout);
+
+
+#ifdef BREAKDOWN
+	numTouchedBins  += (hi_bin - low_bin);
+
+	printf("****Touched PG[%d]: the # of total bins[%"PRIu32"] & touched bins [%"PRIu32"], each touched bin has element #: [", gBlockId, bl->numBins , (hi_bin- low_bin));
+
+	bin_id_t bin ;
+	for ( bin = low_bin; bin < hi_bin; bin++) {
+		printf("%"PRIu32",", bl->binStartOffsets[bin+1] - bl->binStartOffsets[bin]);
+	}
+	printf("]\n");
+#endif
+
+	bool fullyContained = false;
+	if (hi_bin - low_bin == bl->numBins) {
+
+		// with regards to the 3th & 4th arguments,  they are 0 or 1, false or true. You want per-block statistics, so call with (fp, vi, 0, 1) arguments
+		common_read_inq_var_stat(adiosQuery->file, varInfo, 0, 1); // retrieve the statistics structure per-block
+
+#ifdef BREAKDOWN
+		printf("****Touched PG[%d] has all bins retrieved \n", gBlockId);
+		printf("****Touched PG[%d] is fully covered by the selection region [%d] \n", gBlockId, isPGCovered);
+		printf("****Var info has statistics: [%s]  \n", varInfo->statistics != NULL ? "yes" : "no");
+#endif
+
+		if (isPGCovered && varInfo->statistics && varInfo->statistics->blocks) {
+				ADIOS_VARSTAT *stat = varInfo->statistics;
+				double min =  *(double*)stat->blocks->mins[gBlockId];
+				double max =  *(double*)stat->blocks->maxs[gBlockId];
+				fullyContained =  (lb <= min && hb >= max) ;
+		#ifdef BREAKDOWN
+			    printf("*****PG [%d] is fully contained [%s], min [%f], max [%f], query low bound [%f], and query high bound [%f] \n ", gBlockId, fullyContained ? "true": "false", min, max, lb, hb);
+		#endif
+		}
+	}
+
+	//3. load index size
+	uint64_t indexStartPos =  alac_metadata->index_offset ;
+	char * index = readIndexAmongBins(&partitionMeta
+								, low_bin,  hi_bin, indexStartPos, adiosQuery, gBlockId, startStep, numStep);
+	char * input_index = index;
+	ALIndex* indexPtr = &index;
+
+
+	//TODO: distinguish the offset btw two bins for compressed and uncompressed index
+	// is the offset byte-level or element-level?
+	if (partitionMeta.indexMeta.indexForm == ALInvertedIndex) {
+		// indexes are inverted indexes that are not compressed,  we build bitmaps for each rid;
+		//element offset, instead of byte element
+		uint64_t resultCount = bl->binStartOffsets[hi_bin] - bl->binStartOffsets[low_bin];
+		if (estimate || fullyContained) {
+
+if ( fullyContained ) {
+#ifdef BREAKDOWN
+		    printf("*****PG [%d] is fully contained in both spatial and value selections, we set all bits at once without doing ALACRITY process\n ", gBlockId);
+#endif
+}
+
+			 // fullyContained: since this PG is fully contained in the spatial selection as well as in the value constraint, we now just set the entire bitmap, without doing the ALACRITY process
+			setRidToBits(isPGCovered, srcstart, srccount, deststart, destcount, ndim
+					, (rid_t *)index, resultCount, alacResultBitmap,Corder);
+		} else {
+			uint64_t lowByteStartPos2 = alac_metadata->lob_offset;
+			rid_t * decodedRid = (rid_t *) index;
+
+			// It touches at least 3 bins, so, we need to check RIDs that are in first and last bins
+			if (hi_bin - low_bin > 2) {
+				bin_offset_t lowBinElm = bl->binStartOffsets[low_bin + 1] - bl->binStartOffsets[low_bin];
+				uint64_t hiBinElm = bl->binStartOffsets[hi_bin] - bl->binStartOffsets[hi_bin-1];
+
+				// low boundary bin
+				char * lobLowBin= readLowDataAmongBins(&partitionMeta
+													,low_bin, low_bin+1,  lowByteStartPos2, adiosQuery, gBlockId, startStep, numStep);
+				adios_alac_check_candidate(&partitionMeta, low_bin, low_bin+1 , hb, lb
+						, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , (char*) decodedRid /*index bytes of entire PG*/
+						, false  /*don't need decoding*/ , lobLowBin, varInfo->type
+						,alacResultBitmap /*OUT*/,Corder);
+				decodedRid += lowBinElm;
+				FREE(lobLowBin);
+
+				uint64_t innerElm = resultCount- lowBinElm - hiBinElm;
+
+#ifdef BREAKDOWN
+setRidStart = dclock();
+#endif
 				setRidToBits(isPGCovered, srcstart, srccount, deststart, destcount, ndim
-						, (rid_t *)index, resultCount, alacResultBitmap,Corder);
+											, decodedRid, innerElm, alacResultBitmap,Corder);
+
+#ifdef BREAKDOWN
+setRidTotal += (dclock() - setRidStart);
+#endif
+				decodedRid  +=  innerElm;
+
+				// high boundary bin
+				char * lobHighBin= readLowDataAmongBins(&partitionMeta
+								  					,hi_bin-1, hi_bin,  lowByteStartPos2, adiosQuery, gBlockId, startStep, numStep);
+
+				adios_alac_check_candidate(&partitionMeta, hi_bin-1, hi_bin , hb, lb
+						, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , (char *)decodedRid
+						, false , lobHighBin, varInfo->type
+						,alacResultBitmap /*OUT*/,Corder);
+				FREE(lobHighBin);
+
+			} else { // for 1 or 2 bins touched, we need to check all RIDs
 
-			} else {
-				uint64_t lowByteStartPos2 = alac_metadata->lob_offset;
 				char * lowOrderBytes2  = readLowDataAmongBins(&partitionMeta
-										,low_bin, hi_bin,  lowByteStartPos2, adiosQuery, gBlockId, startStep, numStep);
+													,low_bin, hi_bin,  lowByteStartPos2, adiosQuery, gBlockId, startStep, numStep);
 				char *lowOrderPtr2 = lowOrderBytes2; // temporary pointer
-				rid_t * decodedRid = (rid_t *) index;
-
-				// It touches at least 3 bins, so, we need to check RIDs that are in first and last bins
-				if (hi_bin - low_bin > 2) {
-					bin_offset_t lowBinElm = bl->binStartOffsets[low_bin + 1] - bl->binStartOffsets[low_bin];
-					uint64_t hiBinElm = bl->binStartOffsets[hi_bin] - bl->binStartOffsets[hi_bin-1];
-					// low boundary bin
-					adios_alac_check_candidate(&partitionMeta, low_bin, low_bin+1 , hb, lb
-							, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , (char*) decodedRid /*index bytes of entire PG*/
-							, false  /*don't need decoding*/ , lowOrderPtr2, varInfo->type
-							,alacResultBitmap /*OUT*/,Corder);
-					decodedRid += lowBinElm;
-
-					uint64_t innerElm = resultCount- lowBinElm - hiBinElm;
-					setRidToBits(isPGCovered, srcstart, srccount, deststart, destcount, ndim
-												, decodedRid, innerElm, alacResultBitmap,Corder);
-					decodedRid  +=  innerElm;
-
-					lowOrderPtr2 += (( bl->binStartOffsets[hi_bin-1] - bl->binStartOffsets[low_bin]) * insigbytes);
-					// high boundary bin
-					adios_alac_check_candidate(&partitionMeta, hi_bin-1, hi_bin , hb, lb
-							, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , (char *)decodedRid
-							, false , lowOrderPtr2, varInfo->type
-							,alacResultBitmap /*OUT*/,Corder);
-
-				} else { // for 1 or 2 bins touched, we need to check all RIDs
-					adios_alac_check_candidate(&partitionMeta, low_bin, hi_bin  , hb, lb
-							, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , (char*)decodedRid
-							, false , lowOrderPtr2, varInfo->type
-							,alacResultBitmap /*OUT*/,Corder);
-				}
-
+				adios_alac_check_candidate(&partitionMeta, low_bin, hi_bin  , hb, lb
+						, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , (char*)decodedRid
+						, false , lowOrderPtr2, varInfo->type
+						,alacResultBitmap /*OUT*/,Corder);
 				FREE(lowOrderBytes2);
-
 			}
 
-		}else if (partitionMeta.indexMeta.indexForm == ALCompressedInvertedIndex) {
-			const uint64_t *compBinStartOffs = partitionMeta.indexMeta.u.ciim.indexBinStartOffsets;
-			uint64_t binCompressedLen;
-			const char *inputCurPtr = input_index;
 
-			if (estimate) {
-				// Now compress each bin in turn
+
+		}
+
+	}else if (partitionMeta.indexMeta.indexForm == ALCompressedInvertedIndex) {
+		const uint64_t *compBinStartOffs = partitionMeta.indexMeta.u.ciim.indexBinStartOffsets;
+		uint64_t binCompressedLen;
+		const char *inputCurPtr = input_index;
+
+		if (estimate || fullyContained) {
+			 // fullyContained: since this PG is fully contained in the spatial selection as well as in the value constraint, we now just set the entire bitmap, without doing the ALACRITY process
+			// Now compress each bin in turn
+if ( fullyContained ) {
+#ifdef BREAKDOWN
+			printf("*****PG [%d] is fully contained in both spatial and value selections, we set all bits at once without doing ALACRITY process\n ", gBlockId);
+#endif
+}
+
+#ifdef BREAKDOWN
+double deS = dclock();
+uint64_t beforeBits = alacResultBitmap->numSetBits;
+#endif
+
+		if ( ndim <= 2 ) {
+				setBits_for_wholePG_1_2_dim(srcstart, srccount /*PG region dimension*/ ,
+						deststart, destcount /*region dimension of Selection box*/
+						, ndim, alacResultBitmap);
+		}else if ( ndim == 3) {
+				setBits_for_wholePG_3_dim(srcstart, srccount /*PG region dimension*/ ,
+						deststart, destcount /*region dimension of Selection box*/
+						, ndim, alacResultBitmap);
+		}else {  // the setBits_for_wholePG is hard to be generalized to any dimension.
+				 // basically, if there is a ndim, we have to have ndim-1 for-loops inside of the function
 				bin_id_t bin ;
 				for ( bin = low_bin; bin < hi_bin; bin++) {
 					binCompressedLen = compBinStartOffs[bin + 1] - compBinStartOffs[bin];
 					uint32_t decodedElm = ALDecompressRIDtoSelBox(isPGCovered , inputCurPtr, binCompressedLen
 							, srcstart, srccount /*PG region dimension*/ , deststart, destcount /*region dimension of Selection box*/
-							, ndim , &(alacResultBitmap->bits));
+							, ndim , (void **)&(alacResultBitmap->bits));
 					inputCurPtr += binCompressedLen;
 					alacResultBitmap->numSetBits += decodedElm;
 				}
+		}
+#ifdef BREAKDOWN
+//uint64_t realBit = getRealBitNum(alacResultBitmap);
+//if(ndim == 3)
+//printf("BitSet block_id: %d  srcstart: %"PRIu64" %"PRIu64" %"PRIu64" srccount: %"PRIu64" %"PRIu64" %"PRIu64" deststart: %"PRIu64" %"PRIu64" %"PRIu64" destcount: [%"PRIu64" %"PRIu64" %"PRIu64"] bits_before: %"PRIu64" bits_after: %"PRIu64" real_bit: %"PRIu64" exist: %s bits_add: %"PRIu64"\n"
+//			, gBlockId, srcstart[0],  srcstart[1], srcstart[2], srccount[0], srccount[1], srccount[2], deststart[0], deststart[1], deststart[2], destcount[0], destcount[1], destcount[2], beforeBits, alacResultBitmap->numSetBits, realBit, realBit == alacResultBitmap->numSetBits ? "true" : "false", alacResultBitmap->numSetBits - beforeBits );
+
+double dt= dclock() - deS;
+wholeDecodeTotal += dt;
+decodeTotal += dt;
+#endif
 
-			}else{
-				// element count of touched bins, which is also the count of low order data
-				uint64_t lowByteStartPos = alac_metadata->lob_offset;
-				char * lowOrderBytes  = readLowDataAmongBins(&partitionMeta
-						, low_bin,  hi_bin, lowByteStartPos , adiosQuery, gBlockId, startStep, numStep);
-				char *lowOrderPtr = lowOrderBytes; // temporary pointer
+		}else{
+			// element count of touched bins, which is also the count of low order data
+			uint64_t lowByteStartPos = alac_metadata->lob_offset;
 
-				// It touches at least 3 bins, so, we need to check RIDs that are in first and last bins
-				if (hi_bin - low_bin > 2) {
-					// low boundary bin, compressed byte offset
-					binCompressedLen = compBinStartOffs[low_bin + 1] - compBinStartOffs[low_bin];
 
-					adios_alac_check_candidate(&partitionMeta, low_bin, low_bin+1 , hb, lb
-							, srcstart, srccount, deststart, destcount, ndim,  adiosQuery  , inputCurPtr /*index bytes of entire PG*/
-							, true  /*need decoding*/ , lowOrderPtr /*it points to the start of `low_bin` */, varInfo->type
-							,alacResultBitmap /*OUT*/,Corder);
-					inputCurPtr += binCompressedLen;
+			// It touches at least 3 bins, so, we need to check RIDs that are in first and last bins
+			if (hi_bin - low_bin > 2) {
+				// low boundary bin, compressed byte offset
+				binCompressedLen = compBinStartOffs[low_bin + 1] - compBinStartOffs[low_bin];
+
+				// low boundary bin
+				char * lobLowBin= readLowDataAmongBins(&partitionMeta
+													,low_bin, low_bin+1,  lowByteStartPos, adiosQuery, gBlockId, startStep, numStep);
+				adios_alac_check_candidate(&partitionMeta, low_bin, low_bin+1 , hb, lb
+						, srcstart, srccount, deststart, destcount, ndim,  adiosQuery  , inputCurPtr /*index bytes of entire PG*/
+						, true  /*need decoding*/ , lobLowBin /*it points to the start of `low_bin` */, varInfo->type
+						,alacResultBitmap /*OUT*/,Corder);
+				inputCurPtr += binCompressedLen;
+				FREE(lobLowBin);
+
 
-					bin_id_t innerlowBin = low_bin + 1;
-					bin_id_t innerHiBin = hi_bin -1;
-					bin_id_t bin;
-					// Now compress each bin in turn
-					for ( bin = innerlowBin; bin < innerHiBin; bin++) {
-						binCompressedLen = compBinStartOffs[bin + 1] - compBinStartOffs[bin];
-
-						uint32_t decodedElm = ALDecompressRIDtoSelBox(isPGCovered
-								, inputCurPtr, binCompressedLen
-								, srcstart, srccount //PG region dimension
-								, deststart, destcount //region dimension of Selection box
-								, ndim , &(alacResultBitmap->bits));
-						alacResultBitmap->numSetBits += decodedElm;
-						inputCurPtr += binCompressedLen;
+				bin_id_t innerlowBin = low_bin + 1;
+				bin_id_t innerHiBin = hi_bin -1;
+				bin_id_t bin;
+
+
+/*				if ( ndim == 3 && Corder == 1) {
+
+						uint64_t * destboundary = (uint64_t *) malloc(sizeof(uint64_t)*ndim);
+						destboundary[0]  = destcount[0] * destcount[1]* destcount[2]; destboundary[1] = destcount [1]* destcount[2]; destboundary[2] = destcount[2];
+						uint64_t * srcboundary = (uint64_t *) malloc(sizeof(uint64_t)*ndim);
+						srcboundary[0] = srccount[0] * srccount[1]*srccount[2]; srcboundary [1] = srccount[1]*srccount[2]; srcboundary[2] = srccount[2];
+						bin_offset_t binLen, totalBinLen = 0;
+						if (isPGCovered) {
+
+#ifdef BREAKDOWN
+double pgC= dclock();
+#endif
+							for ( bin = innerlowBin; bin < innerHiBin; bin++) {
+								binCompressedLen = compBinStartOffs[bin + 1] - compBinStartOffs[bin];
+								binLen = bl->binStartOffsets[bin + 1] - bl->binStartOffsets[bin];
+								rid_t *output_index = malloc(binLen * sizeof(rid_t));
+								rid_t *outputCurPtr = output_index;
+								uint64_t beforeBits = alacResultBitmap->numSetBits;
+								ALDecompressDeltas(inputCurPtr, binCompressedLen, outputCurPtr, &binLen);
+								deltaBitSetsWithPGCoveredCorderIn3D(outputCurPtr, binLen, srcstart, srccount
+								,srcboundary, deststart, destcount, destboundary, ndim, alacResultBitmap);
+								alacResultBitmap->numSetBits += binLen;
+								totalBinLen += binLen;
+								inputCurPtr += binCompressedLen;
+								free(output_index);
+
+							}
+
+#ifdef BREAKDOWN
+				double pgcTmpTotal = (dclock() - pgC);
+				pgCTotal += pgcTmpTotal;
+				decodeTotal += pgcTmpTotal;
+#endif
+						}else {
+
+#ifdef BREAKDOWN
+				double pgPartialC= dclock();
+#endif
+								for ( bin = innerlowBin; bin < innerHiBin; bin++) {
+									binCompressedLen = compBinStartOffs[bin + 1] - compBinStartOffs[bin];
+									binLen = bl->binStartOffsets[bin + 1] - bl->binStartOffsets[bin];
+									rid_t *output_index = malloc(binLen * sizeof(rid_t));
+									rid_t *outputCurPtr = output_index;
+
+								ALDecompressDeltas(inputCurPtr, binCompressedLen, outputCurPtr, &binLen);
+								deltaBitSetsWithPGPartialCoveredCorderIn3D(outputCurPtr, binLen, srcstart, srccount
+								,srcboundary, deststart, destcount, destboundary, ndim, alacResultBitmap);
+									alacResultBitmap->numSetBits += binLen;
+									inputCurPtr += binCompressedLen;
+									free(output_index);
+								}
+#ifdef BREAKDOWN
+				double pgTmpPartialTotal = (dclock() - pgPartialC);
+				pgPartialTotal += pgTmpPartialTotal ;
+				decodeTotal += pgTmpPartialTotal;
+#endif
 					}
+					free(destboundary);
+					free(srcboundary);
+				} else {*/
+								// Now compress each bin in turn
+								for ( bin = innerlowBin; bin < innerHiBin; bin++) {
+									binCompressedLen = compBinStartOffs[bin + 1] - compBinStartOffs[bin];
 
-					// high boundary bin
-					binCompressedLen = compBinStartOffs[hi_bin]- compBinStartOffs[hi_bin-1];
-					// point to the low order byte of one bin before hi_bin
-					lowOrderPtr += (( bl->binStartOffsets[hi_bin-1] - bl->binStartOffsets[low_bin]) * insigbytes);
-					adios_alac_check_candidate(&partitionMeta, hi_bin-1, hi_bin , hb, lb
-							, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , inputCurPtr /*index bytes of entire PG*/
-							, true  /*need decoding*/ , lowOrderPtr /*low order bytes of entire PG*/, varInfo->type
-							,alacResultBitmap /*OUT*/,Corder);
-					inputCurPtr += binCompressedLen;
+#ifdef BREAKDOWN
+decodeStart= dclock();
+#endif
+									uint32_t decodedElm = ALDecompressRIDtoSelBox(isPGCovered
+											, inputCurPtr, binCompressedLen
+											, srcstart, srccount //PG region dimension
+											, deststart, destcount //region dimension of Selection box
+											, ndim , (void**)&(alacResultBitmap->bits));
+#ifdef BREAKDOWN
+decodeTotal += dclock() - decodeStart;
+#endif
+									alacResultBitmap->numSetBits += decodedElm;
+									inputCurPtr += binCompressedLen;
+								}
 
-				} else { // for 1 or 2 bins touched, we need to check all RIDs
+			//	}
 
-					adios_alac_check_candidate(&partitionMeta, low_bin, hi_bin , hb, lb
-							, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , inputCurPtr /*index bytes of entire PG*/
-							, true , lowOrderPtr, varInfo->type
-							,alacResultBitmap /*OUT*/,Corder);
-				}
 
+
+				// high boundary bin
+				binCompressedLen = compBinStartOffs[hi_bin]- compBinStartOffs[hi_bin-1];
+				char * lobHighBin= readLowDataAmongBins(&partitionMeta
+												  					,hi_bin-1, hi_bin,  lowByteStartPos, adiosQuery, gBlockId, startStep, numStep);
+
+				adios_alac_check_candidate(&partitionMeta, hi_bin-1, hi_bin , hb, lb
+						, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , inputCurPtr /*index bytes of entire PG*/
+						, true  /*need decoding*/ , lobHighBin /*low order bytes of entire PG*/, varInfo->type
+						,alacResultBitmap /*OUT*/,Corder);
+				inputCurPtr += binCompressedLen;
+				FREE(lobHighBin);
+
+			} else { // for 1 or 2 bins touched, we need to check all RIDs
+				char * lowOrderBytes  = readLowDataAmongBins(&partitionMeta
+								, low_bin,  hi_bin, lowByteStartPos , adiosQuery, gBlockId, startStep, numStep);
+				char *lowOrderPtr = lowOrderBytes; // temporary pointer
+				adios_alac_check_candidate(&partitionMeta, low_bin, hi_bin , hb, lb
+						, srcstart, srccount, deststart, destcount, ndim,  adiosQuery , inputCurPtr /*index bytes of entire PG*/
+						, true , lowOrderPtr, varInfo->type
+						,alacResultBitmap /*OUT*/,Corder);
 				FREE(lowOrderBytes);
 			}
-		} else {
-			printf("index form %d in alacrity is not supported", partitionMeta.indexMeta.indexForm);
-			exit(EXIT_FAILURE);
+
+
 		}
-		FREE(input_index);
-	}else {
-//		printf("there is no touched bin for constraint \n");
+	} else {
+		printf("index form %d in alacrity is not supported", partitionMeta.indexMeta.indexForm);
+		exit(EXIT_FAILURE);
 	}
+	FREE(input_index);
 
 	FREE(alac_metadata);
 
@@ -926,6 +1684,8 @@ void proc_write_block(int gBlockId /*its a global block id*/, bool isPGCovered,
 
 
 
+
+
 /*
  * PG selection, [startPG, endPG)
  */
@@ -939,20 +1699,38 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 
 	double lb , hb ;
     resolveQueryBoundary(adiosQuery, &hb, &lb); // query constraints
-	//printf("constraint: %s\n", adiosQuery->_condition);
+	//printf("constraint: %s\n", adiosQuery->condition);
 
 	ADIOS_VARINFO * varInfo = adiosQuery->varinfo;
 
 #ifdef BREAKDOWN
-	gTransformTime = 0;
-	transStart = dclock();
+	printf("**************************\n");
+	printf("process %s constraint \n", adiosQuery->condition);
+	// initialization
+	preparationTime = 0;
+	numTouchedBins =0;
+	numTouchedPGs = 0;
+	findPGTotal =0;
+	procTotal = 0;
+	metaTotal =0;
+	alacPartitionMetaTotal =0;
+	idxTotal =0;
+	idxReadSize = 0;
+	dataTotal =0;
+	dataReadSize = 0;
+	candidateCheckTotal = 0;
+	ckRids = 0; ckReconstitute = 0; ckSpatialCheck = 0; ckSetBitMap = 0;
+
+	decodeTotal =0;
+	wholeDecodeTotal=0;
+	pgCTotal = 0;
+	pgPartialTotal = 0;
+	setRidTotal =0;
+	preparationStart = dclock();
 #endif
 	adios_read_set_data_view(adiosQuery->file, LOGICAL_DATA_VIEW); // switch to the transform view,
  	ADIOS_VARTRANSFORM *ti = adios_inq_var_transform(adiosQuery->file, varInfo); // this func. will fill the blockinfo field
 
-#ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
-#endif
 
 	int startStep = timeStep, numStep = 1;
 	uint64_t totalElm = adiosQuery->rawDataSize; // no matter bounding box or writeblock selection, the rawDataSize has been calculated in the common query layer
@@ -976,6 +1754,9 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 
 	const int Corder = !futils_is_called_from_fortran(); // Use the dimension order of the caller; the common read layer will also mimic this order
 
+#ifdef BREAKDOWN
+	preparationTime += (dclock() - preparationStart) ;
+#endif
 	/*********** doQuery ***************
 	 *
 	 * 1. Open partition  [locate offsets of meta, data, and index for the partition]
@@ -992,10 +1773,6 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
          static uint64_t ZERO[32] = { 0 };
 		 destcount = varInfo->dims;   deststart = ZERO;
 
-#ifdef BREAKDOWN
-	transStart = dclock();
-#endif
-
          if (varInfo->blockinfo == NULL) {
         	 adios_read_set_data_view(adiosQuery->file, LOGICAL_DATA_VIEW);
              common_read_inq_var_blockinfo(adiosQuery->file, varInfo);
@@ -1004,10 +1781,6 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 		adios_read_set_data_view(adiosQuery->file, PHYSICAL_DATA_VIEW);
 		ADIOS_VARTRANSFORM *ti = adios_inq_var_transform(adiosQuery->file, varInfo);
 
-#ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
-#endif
-
 		int totalPG = varInfo->nblocks[timeStep];
 		int blockId, j;
 
@@ -1063,17 +1836,18 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 #endif
 
 
-#ifdef BREAKDOWN
-	transStart = dclock();
-#endif
 		adios_read_set_data_view(adiosQuery->file, PHYSICAL_DATA_VIEW);
 		ADIOS_VARTRANSFORM *ti = adios_inq_var_transform(adiosQuery->file, varInfo);
-		ADIOS_PG_INTERSECTIONS* intersectedPGs = adios_find_intersecting_pgs( adiosQuery->file, varInfo->varid, adiosQuery->sel, timeStep, numStep);
 
 #ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
+	findPGStart = dclock();
 #endif
+		ADIOS_PG_INTERSECTIONS* intersectedPGs = adios_find_intersecting_pgs( adiosQuery->file, varInfo->varid, adiosQuery->sel, timeStep, numStep);
 
+#ifdef BREAKDOWN
+	findPGTotal += dclock() - findPGStart;
+	numTouchedPGs = intersectedPGs->npg;
+#endif
 		int totalPG = intersectedPGs->npg;
 		int blockId, j;
 
@@ -1095,8 +1869,15 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 			srccount = pgBB->count;
 			// blockId = pg.blockidx; // pg.blockidx is relative block id           //	blockId = pg.blockidx_in_timestep ;
 			if (ti->transform_type == adios_get_transform_type_by_uid("ncsu-alacrity")) {
+#ifdef BREAKDOWN
+	  procStart = dclock();
+#endif
 				proc_write_block(pg.blockidx,isPGCovered,ti, adiosQuery,startStep,estimate,&alacQuery,lb,hb
 						,srcstart, srccount, deststart, destcount,alacResultBitmap,Corder	);
+#ifdef BREAKDOWN
+	  procTotal = procTotal + (dclock() - procStart);
+#endif
+
 			}else {
 				char * blockData  = NULL;
 				uint64_t totalElm = 1;
@@ -1125,16 +1906,9 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 		bool isPGCovered = true; // because they are same bounding boxes, they are fully contained
 
 		if (ti->transform_type == adios_get_transform_type_by_uid("ncsu-alacrity")){
-
-#ifdef BREAKDOWN
-	transStart = dclock();
-#endif
 			adios_read_set_data_view(adiosQuery->file, PHYSICAL_DATA_VIEW); // switch to the transform view,
 			ADIOS_VARTRANSFORM *ti = adios_inq_var_transform(adiosQuery->file, varInfo); // this func. will fill the blockinfo field
 
-#ifdef BREAKDOWN
-	gTransformTime += (dclock() - transStart) ;
-#endif
 			proc_write_block(globalBlockId,isPGCovered,ti, adiosQuery,startStep,estimate,&alacQuery,lb,hb
 					,srcstart, srccount, deststart, destcount,alacResultBitmap,Corder	);
 		}else {
@@ -1163,7 +1937,27 @@ ADIOS_ALAC_BITMAP* adios_alac_uniengine(ADIOS_QUERY * adiosQuery, int timeStep,
 	adios_read_set_data_view(adiosQuery->file, LOGICAL_DATA_VIEW);
 
 #ifdef BREAKDOWN
-	printf("ADIOS(transformer layer) read time: %f \n", gTransformTime);
+	printf("Preparation time: %f \n", preparationTime);
+	printf("Total # of touched PGs: %d \n", numTouchedPGs);
+	printf("Sum touched bin # in all touched PGs: %"PRIu32"\n", numTouchedBins);
+	printf("Find total # of PGs touched by the bounding box in the query: %f \n", findPGTotal);
+	printf("One PG processing (Proc write block) time : %f \n", procTotal);
+	printf("The following time should approximately sum up to one PG processing time \n");
+	printf("===>Total time of reading alacrity metadata: %f \n", metaTotal);
+	printf("===>Total time of reading partition meta in Alacrity metadata: %f \n", alacPartitionMetaTotal);
+	printf("===>Total index read time : %f \n", idxTotal);
+	printf("===>Total index read size (in KB): %"PRIu64"\n", idxReadSize);
+	printf("===>Total low-order bytes read time : %f \n", dataTotal);
+	printf("===>Total low-order bytes read size (in KB): %"PRIu64"\n", dataReadSize);
+	printf("===>Candidate check total time: %f (below times should sum up to this)\n", candidateCheckTotal);
+	printf("======>The number of total elements/Rids examined in Candidate check: %"PRIu64"\n", ckTotalElm);
+	printf("======>Rids Decoded (if compressed) in Candidate check %f \n", ckRids);
+	printf("======>Reconstitute data in Candidate check %f \n", ckReconstitute);
+	printf("======>Spatial check (whether in the BB) in Candidate check %f \n", ckSpatialCheck);
+	printf("======>Set bitmaps after pass the spatial check in Candidate check %f \n", ckSetBitMap);
+	printf("===>Decode compressed RIDs to bitmap (optional, only applied to compressed indexes): %f %f %f %f %f \n", decodeTotal, wholeDecodeTotal,  pgCTotal , pgPartialTotal, decodeTotal - wholeDecodeTotal - pgCTotal - pgPartialTotal);
+	printf("===>Set every RID in the bitmap (optional, only applied to uncompressed indexes): %f \n", setRidTotal);
+
 #endif
 	return alacResultBitmap;
 }
@@ -1176,7 +1970,8 @@ static void dump_bitmap_word(FILE *stream, uint64_t word, int nbits) {
 		bitstr[i] = bit ? '1' : '0';
 	}
 	bitstr[nbits] = 0;
-	fprintf(stream, bitstr);
+	fprintf(stream, "%s", bitstr);
+
 }
 
 static void dump_bitmap(FILE *stream, ADIOS_ALAC_BITMAP *bitmap) {
@@ -1214,13 +2009,19 @@ ADIOS_ALAC_BITMAP * adios_alac_process(ADIOS_QUERY* q, int timestep,
 		return result;
 	}
 
-	if (q->left)
+	if (q->left) {
 		lbitmap = adios_alac_process((ADIOS_QUERY*) q->left, timestep, estimate);
+		result = q->left;
+	}
 
-	if (q->right)
+	if (q->right) {
 		rbitmap = adios_alac_process((ADIOS_QUERY*) q->right, timestep, estimate);
+		result = q->right;
+	}
 
-	result = adios_alac_bitsOp(lbitmap, rbitmap, q->combineOp);
+	if (q->left && q->right) {
+	    result = adios_alac_bitsOp(lbitmap, rbitmap, q->combineOp);
+	}
 
 #ifdef ADIOS_ALAC_QUERY_DEBUG
 	fprintf(stderr, "op %s = ", (q->combineOp == ADIOS_QUERY_OP_AND ? "AND" : "OR"));
@@ -1231,6 +2032,82 @@ ADIOS_ALAC_BITMAP * adios_alac_process(ADIOS_QUERY* q, int timestep,
 }
 
 
+
+/*
+ * it was previously adios_query_alac_retrieval_pointsNd which returns coordinates within query bounding box,
+ * now, for the minmax branch, it returns offsets within the query bounding box
+ */
+void adios_query_alac_retrieval_offset( ADIOS_ALAC_BITMAP *b, uint64_t retrieval_size
+		, ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb , uint64_t *points /*OUT*/, int Corder ){
+	int d = 0, td;
+	uint64_t start_pos = 0;
+	if (!isLastConvRidInit(b))
+		start_pos =	b->lastConvRid  / 64;
+
+	uint64_t * p_bitmap = b->bits;
+	uint64_t pidx = 0, off = start_pos, retrieveCount = 0;
+	uint64_t reconstct_rid;
+	uint64_t coordinates[MAX_DIMS];
+#ifdef RIDBUG
+	printf("reconstrcuted RID relative to timestep : ");
+#endif
+	while (off < b->length ){
+		uint16_t * temp = (uint16_t *) &(p_bitmap[off]); // 2 bytes (unsigned short int)  = 16 bits
+		uint64_t offset_long_int = off * 64; // original index offset ; // 4 bytes (unsigned long int )= 64 bit
+		uint64_t offset;
+		int j , m;
+		for (j = 0; j < 4; j++) {
+			offset = offset_long_int + j * 16; // here, 16 is used because temp is 16bits (unsigned short int) pointer
+			// set_bit_count for each 2 bytes, the number of 1
+			/*
+			 * *******|               64 bits                 | => final_result_bitmap []
+			 * *******| 16 bits | 16 bits | 16 bits | 16 bits | => temp[]
+			 */
+
+			for (m = 0; m < set_bit_count[temp[j]]  ; m++) {
+				reconstct_rid = offset+ set_bit_position[temp[j]][m];
+#ifdef RIDBUG
+				printf("%"PRIu64", ", reconstct_rid);
+#endif
+				if (!isLastConvRidInit(b)) {
+					if (reconstct_rid > b->lastConvRid) { // skip the RIDs in the 16-bits part
+						points[pidx++] = reconstct_rid; // this is the change, reconstct_rid is offset
+						/*ridToCoordinates(bb->ndim, Corder, reconstct_rid, bb->count, coordinates );
+						for (d = 0; d < bb->ndim; d ++){
+							points[pidx++] = bb->start[d] + coordinates[d];
+						}*/
+						retrieveCount++;
+					}
+				}else { // lastConvRid == realElmSize+1 represents the initial state
+					// in which the RID recovering has not started yet
+					points[pidx++] = reconstct_rid; // this is the change, reconstct_rid is offset
+
+					/*ridToCoordinates(bb->ndim, Corder, reconstct_rid, bb->count, coordinates);
+					for (d = 0; d < bb->ndim; d ++){
+						points[pidx++] = bb->start[d] + coordinates[d];
+					}*/
+					retrieveCount++;
+				}
+
+				if (retrieveCount == retrieval_size){
+					b->lastConvRid = reconstct_rid; 					 // updated the status
+
+#ifdef RIDBUG
+		printf("\n");
+#endif
+					return ;
+				}
+			}
+		}
+		off ++;
+	}
+
+#ifdef RIDBUG
+		printf("\n");
+#endif
+}
+
+
 //void adios_query_alac_init() {} // not used
 
 void adios_query_alac_retrieval_pointsNd( ADIOS_ALAC_BITMAP *b, uint64_t retrieval_size
@@ -1300,24 +2177,54 @@ void adios_query_alac_retrieval_pointsNd( ADIOS_ALAC_BITMAP *b, uint64_t retriev
 #endif
 }
 
-static ADIOS_SELECTION * adios_query_build_results_boundingbox(ADIOS_ALAC_BITMAP *b, uint64_t retrieval_size, ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb, int Corder) {
+/*
+ * it was adios_query_build_results_boundingbox, i copy it for the minmax branch change, which returns the offets within bounding box, rather than the coordinates
+ */
+static ADIOS_SELECTION * adios_query_build_offsets_boundingbox(ADIOS_ALAC_BITMAP *b, uint64_t retrieval_size,
+                                                               ADIOS_SELECTION *box, int Corder)
+{
+
+    ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb = &(box->u.bb);
+    int ndim = 1 ; // offset is 1 dimensional data
+    const uint64_t dataSize = retrieval_size * (ndim);
+    uint64_t *points = (uint64_t *)(malloc(dataSize * sizeof(uint64_t)));
+    adios_query_alac_retrieval_offset(b,retrieval_size, bb, points,Corder);
+
+    return a2sel_points(ndim, retrieval_size, points, box, 1);
+}
+
+
+static ADIOS_SELECTION * adios_query_build_results_boundingbox(ADIOS_ALAC_BITMAP *b, uint64_t retrieval_size,
+                                                               ADIOS_SELECTION *box, int Corder)
+{
+    ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb = &(box->u.bb);
 	const uint64_t dataSize = retrieval_size * (bb->ndim);
 	uint64_t *points = (uint64_t *)(malloc(dataSize * sizeof(uint64_t)));
 	adios_query_alac_retrieval_pointsNd(b,retrieval_size, bb, points,Corder);
 
-	return common_read_selection_points(bb->ndim, retrieval_size, points);
+	return a2sel_points(bb->ndim, retrieval_size, points, box, 1);
 }
 
+
 void adios_query_alac_build_results(
 		uint64_t retrieval_size, ADIOS_SELECTION* outputBoundry, ADIOS_ALAC_BITMAP *b,
-		ADIOS_VARINFO *varinfo, ADIOS_SELECTION ** queryResult, int Corder)
+		ADIOS_VARINFO *varinfo,  ADIOS_QUERY_RESULT* adiosQueryResult /*ADIOS_SELECTION ** queryResult*/ , int Corder)
 {
 
 	//last bounding box / points supplied by user
 	switch (outputBoundry->type) {
 	case ADIOS_SELECTION_BOUNDINGBOX: {
 		ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb = &(outputBoundry->u.bb);
-		*queryResult = adios_query_build_results_boundingbox(b, retrieval_size, bb,Corder);
+		ADIOS_SELECTION *box_copy = a2sel_boundingbox(bb->ndim, bb->start, bb->count);
+
+#ifdef ALACRITY_EVAL_1D_POINTS
+		adiosQueryResult->selections = adios_query_build_offsets_boundingbox(b, retrieval_size, box_copy, Corder);
+#else
+		adiosQueryResult->selections = adios_query_build_results_boundingbox(b, retrieval_size, box_copy, Corder);
+#endif
+        adiosQueryResult ->nselections = 1 ;
+        adiosQueryResult -> npoints = retrieval_size ;
+        adiosQueryResult ->method_used = ADIOS_QUERY_METHOD_ALACRITY;
 		break;
 	}
 	case ADIOS_SELECTION_WRITEBLOCK : {
@@ -1341,7 +2248,6 @@ void adios_query_alac_build_results(
 	}
 }
 
-
 int adios_query_alac_can_evaluate(ADIOS_QUERY* q)
 {
 	int is_alac = 0;
@@ -1406,9 +2312,10 @@ int adios_query_alac_evaluate(ADIOS_QUERY* q,
                    int timestep,
 			       uint64_t batchSize, // limited by maxResult
 			       ADIOS_SELECTION* outputBoundry,
-			       ADIOS_SELECTION** queryResult)
+				   //ADIOS_SELECTION** result
+				   	ADIOS_QUERY_RESULT* adiosQueryResult)
 {
-	double alacStart = 0, alacEnd = 0;
+	double alacStart = 0, bimapToCoordinates= 0;
 
 #ifdef BREAKDOWN
 	alacStart = dclock();
@@ -1421,7 +2328,7 @@ int adios_query_alac_evaluate(ADIOS_QUERY* q,
 
 	ADIOS_ALAC_BITMAP* b;
 	if (q->onTimeStep != absoluteTimestep) { // if this is the first call to evaluate the query for a new timestep
-		b = adios_alac_process(q, timestep, false);
+		b = adios_alac_process(q, timestep, q->estimate);
 		initLastConvRid(b);
 		q->maxResultsDesired =  calSetBitsNum(b);
 		q->resultsReadSoFar = 0;
@@ -1432,7 +2339,8 @@ int adios_query_alac_evaluate(ADIOS_QUERY* q,
 	}
 	uint64_t retrievalSize = q->maxResultsDesired - q->resultsReadSoFar;
 	if (retrievalSize <= 0) {
-		(*queryResult) = NULL;
+		//(*queryResult) = NULL;
+		adiosQueryResult ->status = ADIOS_QUERY_NO_MORE_RESULTS;
 		FreeALACBITMAP(b);
 		//q->onTimeStep = NO_EVAL_BEFORE;
 		//printf(":: ==> no more results to fetch\n");
@@ -1443,7 +2351,17 @@ int adios_query_alac_evaluate(ADIOS_QUERY* q,
 	}
 
 	const int Corder = !futils_is_called_from_fortran(); // Use the dimension order of the caller; the common read layer will also mimic this order
-	adios_query_alac_build_results(retrievalSize, outputBoundry, b, q->varinfo, queryResult, Corder);
+#ifdef BREAKDOWN
+	bimapToCoordinates = dclock();
+#endif
+
+	adios_query_alac_build_results(retrievalSize, outputBoundry, b, q->varinfo, adiosQueryResult, Corder);
+
+#ifdef BREAKDOWN
+	printf("Time of converting the final resultant bitmap to coordinates: %f \n", dclock() - bimapToCoordinates );
+#endif
+
+
 	// b->lastConvRid is updated in the above func., so the bitmap serializing function has to wait until the above function is finished
 	q->queryInternal = convertALACBitmapTomemstream(b);
 
@@ -1455,11 +2373,12 @@ int adios_query_alac_evaluate(ADIOS_QUERY* q,
 	q->resultsReadSoFar += retrievalSize;
 
 #ifdef BREAKDOWN
-	alacEnd= dclock();
-	printf("time [alac plugin + adios] : %f \n", alacEnd - alacStart);
+	printf("Total Time [alac plugin + adios] : %f \n", dclock() - alacStart);
 #endif
 
-	return q->resultsReadSoFar < q->maxResultsDesired;
+	int moreResults =  q->resultsReadSoFar < q->maxResultsDesired;
+	adiosQueryResult ->status = moreResults == 1 ? ADIOS_QUERY_HAS_MORE_RESULTS : ADIOS_QUERY_NO_MORE_RESULTS;
+	return moreResults ;
 }
 
 int adios_query_alac_free_one_node(ADIOS_QUERY* query){
@@ -1475,15 +2394,22 @@ int adios_query_alac_free_one_node(ADIOS_QUERY* query){
 }
 
 int adios_query_alac_free(ADIOS_QUERY* query) {
-
-	// free the tree in a bottom-to-up manner
+    /*
+       Do not free the tree in a bottom-to-up manner
+       because every query piece is supposed to be freed
+       by the user one by one
+    */
+    if (query == NULL)
+        return 0;
+    adios_query_alac_free_one_node (query);
+    /*
 	if (query->left == NULL && query->right == NULL) {
 		return adios_query_alac_free_one_node(query);
 	}else if  (query->right){
 		return adios_query_alac_free(query->right);
 	}else if (query->left) {
 		return adios_query_alac_free(query->left);
-	}
+	}*/
 
 	return 1;
 }
diff --git a/src/query/query_fastbit.c b/src/query/query_fastbit.c
index 16fd959..c8b56b7 100644
--- a/src/query/query_fastbit.c
+++ b/src/query/query_fastbit.c
@@ -2,15 +2,20 @@
    
 #include <stdio.h>
 #include <stdlib.h>
+#include <inttypes.h>
 #include <string.h>
 #include "core/common_read.h"
 #include "core/adios_logger.h"
+#include "core/futils.h"
+#include "core/a2sel.h"
 #include "fastbit_adios.h"
+#include "common_query.h"
 #include <iapi.h>
 #include <math.h>
 
 #define BITARRAY
 #define INT_BIT 32
+//#define RETURN_ONE_DIM
 
 #define BITMASK(b) (1 << ((b) % INT_BIT))
 #define BITSLOT(b) ((b) / INT_BIT)
@@ -26,6 +31,7 @@ int64_t getPosInVariable(const ADIOS_VARINFO* v, int n, uint64_t* spatialCoordin
 void getHandleFromBlockAtLeafQuery(int timeStep, int blockIdx, ADIOS_FILE* idxFile, ADIOS_QUERY* q, uint64_t blockSize);
 
 FastBitSelectionHandle createHandle(ADIOS_QUERY* q, const char* registeredArrayName);
+int mEvaluateTestFullRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep);
 
 static inline void scan_r2(int dim, const uint64_t* const dimSize, uint64_t pos,  uint64_t * const result, uint64_t* const scan_start, int d, uint64_t curr0, uint64_t base)
 {
@@ -518,12 +524,13 @@ static int adios_bmreader(void *ctx, uint64_t start,uint64_t count, uint32_t *bu
   uint64_t bms_start[] = {start};
   uint64_t bms_count[] = {count};
 
-  ADIOS_SELECTION* bmsSel = common_read_selection_boundingbox(bmsV->ndim, bms_start, bms_count);
+  ADIOS_SELECTION* bmsSel = a2sel_boundingbox(bmsV->ndim, bms_start, bms_count);
   // idx file has one timestep
   common_read_schedule_read(itn->_idxFile, bmsSel, itn->_bmsVarName, 0, 1, NULL, buf);
   common_read_perform_reads(itn->_idxFile,1);
   common_read_free_varinfo(bmsV);
-  common_read_selection_delete(bmsSel);
+
+  a2sel_free(bmsSel);
 
   //casestudyLogger_bms_writeout(&startT, 
   casestudyLogger_bms_writeout(&startT, "bmreader_adv visited ");
@@ -621,6 +628,7 @@ void clear_fastbit_internal(ADIOS_QUERY* query)
   
   if (query->hasParent == 0) {
     fastbit_selection_free(s->_handle); 
+    s->_handle = NULL;
   }   
 
   //s = NULL;
@@ -631,18 +639,50 @@ void clear_fastbit_internal(ADIOS_QUERY* query)
 void clear_fastbit_internal_recursive(ADIOS_QUERY* query) 
 {
   clear_fastbit_internal(query);
+
+  /*
   if (query->hasParent != 0) {
-    fastbit_selection_free( ((FASTBIT_INTERNAL*)(query->queryInternal))->_handle); 
+    if (((FASTBIT_INTERNAL*)(query->queryInternal))->_handle != NULL) {
+      fastbit_selection_free( ((FASTBIT_INTERNAL*)(query->queryInternal))->_handle); 
+    }
   }
+*/
  
   if (query->left != NULL) {
-    clear_fastbit_internal(query->left);
+    clear_fastbit_internal_recursive(query->left);
   }
   if (query->right != NULL) {
-    clear_fastbit_internal(query->right);
+    clear_fastbit_internal_recursive(query->right);
   }
 }
 
+void clean_fastbit_trace(ADIOS_QUERY* q) 
+{
+
+  if (q == NULL) {
+    return;
+  }
+
+  clear_fastbit_internal_recursive(q);
+  /*
+  if (q->left == NULL) {
+      free (((FASTBIT_INTERNAL*)(q->queryInternal))->_bms); ((FASTBIT_INTERNAL*)(q->queryInternal))->_bms = NULL; 
+      free (((FASTBIT_INTERNAL*)(q->queryInternal))->_keys); ((FASTBIT_INTERNAL*)(q->queryInternal))->_keys = NULL; 
+      free (((FASTBIT_INTERNAL*)(q->queryInternal))->_offsets); ((FASTBIT_INTERNAL*)(q->queryInternal))->_offsets = NULL; 
+      free (((FASTBIT_INTERNAL*)(q->queryInternal))->_offsets); ((FASTBIT_INTERNAL*)(q->queryInternal))->_offsets = NULL; 
+      fastbit_selection_free(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle);
+      return;
+  }
+
+  ADIOS_QUERY* lq = (ADIOS_QUERY*)(q->left);
+  ADIOS_QUERY* rq = (ADIOS_QUERY*)(q->right);
+
+  clean_fastbit_trace(lq);
+  clean_fastbit_trace(rq);
+
+  */
+}
+
 
 void assertValue(char* input, char* endptr) {
   if (*endptr != '\0')  
@@ -1068,7 +1108,7 @@ void locateBlockFromPack(uint64_t currPosInPack, uint64_t* absBlockIdx, uint64_t
   if (currPosInPack > packIncrementByBlock[packSize-1]) {
       *absBlockIdx=-1;
       *posInBlock = -1;
-      printf(" ERROR: %llu th element will not be found  in pack starting at block:%llu", currPosInPack, *absBlockIdx);
+      printf(" ERROR: %" PRIu64 " th element will not be found  in pack starting at block:%" PRIu64, currPosInPack, *absBlockIdx);
   }
 
   uint64_t packStarts = *absBlockIdx;
@@ -1126,7 +1166,7 @@ int identifyBlockInPack(uint64_t* packIncrementByBlock, uint64_t currPosInPack,
 void sort(uint64_t* coordinateArray, uint64_t arraySize,  uint64_t* packIncrementByBlock, uint64_t* starts, uint64_t* counts, int* relativeBlockIds, int packSize)
 {
   int i=0;
-  int whichBlock;
+  //int whichBlock;
   uint64_t arrayCounter = 0;
 
   for (i=0; i<packSize; i++) {
@@ -1300,7 +1340,7 @@ void bitMapBack(uint32_t* bitSlice, uint32_t* resultSlice, ADIOS_VARINFO* var, u
 
  //
  //
-void setBitArray(ADIOS_VARINFO* var, uint32_t* bitSlice, int64_t* coordinateArray, uint64_t count, uint64_t adjustment,
+void setBitArray(ADIOS_VARINFO* var, uint32_t* bitSlice, uint64_t* coordinateArray, uint64_t count, uint64_t adjustment,
 		 uint64_t* regionStart, uint64_t* regionCount, uint64_t eleStarts, uint64_t eleEnds)
 {
   uint64_t knownSize = eleEnds+1; // at most this many elements. + 1 is due to C arrays starts at 0. 
@@ -1312,7 +1352,7 @@ void setBitArray(ADIOS_VARINFO* var, uint32_t* bitSlice, int64_t* coordinateArra
  
   int k=0;
   for (k=0; k<count; k++) {
-    int64_t currPosInVar = coordinateArray[k] + adjustment;
+    uint64_t currPosInVar = coordinateArray[k] + adjustment;
     if (currPosInVar < knownSize) {
       bitarray_setbit(hitsSlice, currPosInVar);
     }
@@ -1321,7 +1361,7 @@ void setBitArray(ADIOS_VARINFO* var, uint32_t* bitSlice, int64_t* coordinateArra
   bitarray_and(hitsSlice, bbSlice,  resultSlice, BITNSLOTS(knownSize));      
  
   // ok
-  int n = bitarray_countHits(resultSlice, BITNSLOTS(knownSize));      
+  //int n = bitarray_countHits(resultSlice, BITNSLOTS(knownSize));      
 
   
   free(bbSlice);
@@ -1357,7 +1397,8 @@ void setBitArray0(ADIOS_VARINFO* var, uint32_t* bitSlice, int64_t* coordinateArr
 void checkHits(ADIOS_VARINFO* v, ADIOS_QUERY* q, uint64_t boxStart, uint64_t* regionStart, uint64_t* regionCount, uint64_t eleStarts, uint64_t eleEnds)
 {
       uint64_t count = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 	
-      int64_t  coordinateArray[count];
+      //uint64_t  coordinateArray[count];				
+      uint64_t* coordinateArray = malloc(count*sizeof(uint64_t));
       fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, count, 0);      
       
       // set bits
@@ -1371,6 +1412,7 @@ void checkHits(ADIOS_VARINFO* v, ADIOS_QUERY* q, uint64_t boxStart, uint64_t* re
       ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle = 0;
 
       casestudyLogger_setPrefix(" summarized evaluation for bb");  
+      free(coordinateArray);
 }
 
 int mEvaluateBBRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep, uint64_t* regionStart, uint64_t* regionCount)
@@ -1415,23 +1457,23 @@ int mEvaluateBBRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int t
   eleEnds = getPosInVariable(v, v->ndim, end, 0);      
   
 
-  ADIOS_VARINFO* packVar = common_read_inq_var (idxFile, "elements");
+  //ADIOS_VARINFO* packVar = common_read_inq_var (idxFile, "elements");
   uint64_t recommended_index_ele = 0;
   common_read_schedule_read (idxFile, NULL, "elements",           0, 1, NULL, &recommended_index_ele);
   common_read_perform_reads(idxFile, 1);
 
   //printf("dataSize from: %llu to %llu, elements = %lu\n", eleStarts, eleEnds, recommended_index_ele);
 
-  uint64_t start[v->ndim], count[v->ndim];
+  uint64_t start[v->ndim];//, count[v->ndim];
   uint64_t split = totalEle/recommended_index_ele;
-  uint32_t* bitSlice = NULL;
+  // uint32_t* bitSlice = NULL;
 
   int64_t eleBoxStarts = -1; 
   if (split == 0) {
       // index is on the whole timestep
       getHandle(timeStep, 0, idxFile,  q,  totalEle);
       checkHits(v, q, 0, regionStart, regionCount, eleStarts, eleEnds); 
-      return;
+      return 0;
   } else {
       int boxCounter = 0;
       while (startRef < v->dims[0]) {
@@ -1459,13 +1501,14 @@ int mEvaluateBBRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int t
 	  getHandle(timeStep, start[0], idxFile, q, boxSize);	  
 	
 	  // has to call evaluate before calling either register_selection_as_bit_array() or extend_bit_array()
-	  uint64_t countMe = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 
+	  //uint64_t countMe = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 
 	  
 	  if (boxCounter == 0) {
 	    fastbit_iapi_register_selection_as_bit_array(bitsArrayName, ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle);
 	  } else {
 	    fastbit_iapi_extend_bit_array_with_selection(bitsArrayName, ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle);
 	  }
+	  clean_fastbit_trace(q);	  
 	}
       
 	boxCounter++;
@@ -1478,6 +1521,7 @@ int mEvaluateBBRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int t
   ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle = h;
 
   checkHits(v, q, eleBoxStarts, regionStart, regionCount, eleStarts, eleEnds); 
+  return 0;
 }
 
 
@@ -1486,7 +1530,8 @@ void checkHitsDefault(ADIOS_QUERY* q)
 {
   uint64_t resultCount = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 	
 
-  int64_t  coordinateArray[resultCount];
+  //uint64_t  coordinateArray[resultCount];
+  uint64_t* coordinateArray = malloc(resultCount*sizeof(uint64_t));
   fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, resultCount, 0);      
   casestudyLogger_setPrefix(" got coordinates bb");
 
@@ -1507,7 +1552,7 @@ void checkHitsDefault(ADIOS_QUERY* q)
   ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle = 0;
 
   casestudyLogger_setPrefix(" summarized evaluation for bb");  
-
+  free(coordinateArray);
 }
  //
  // 
@@ -1521,7 +1566,7 @@ int mEvaluateTestFullRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
   uint64_t s = 0;
   uint64_t startRef = 0;
 
-  ADIOS_VARINFO* packVar = common_read_inq_var (idxFile, "elements");
+  //ADIOS_VARINFO* packVar = common_read_inq_var (idxFile, "elements");
   uint64_t recommended_index_ele = 0;
   common_read_schedule_read (idxFile, NULL, "elements",           0, 1, NULL, &recommended_index_ele);
   common_read_perform_reads(idxFile, 1);
@@ -1531,7 +1576,7 @@ int mEvaluateTestFullRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
   uint64_t start[getFirstLeaf(q)->varinfo->ndim], count[getFirstLeaf(q)->varinfo->ndim];
   uint64_t split = q->rawDataSize/recommended_index_ele;
   //uint32_t* bitSlice = bitarray_create(q->rawDataSize);
-  uint32_t* bitSlice = NULL;
+  //uint32_t* bitSlice = NULL;
   ADIOS_VARINFO* v = getFirstLeaf(q)->varinfo;
 
   if (split == 0) {
@@ -1539,7 +1584,7 @@ int mEvaluateTestFullRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
       getHandle(timeStep, 0, idxFile,  q,  dataSize);
 
       checkHitsDefault(q);
-      return;
+      return 0;
   } else {
       int boxCounter = 0;
       while (startRef < v->dims[0]) {
@@ -1563,15 +1608,17 @@ int mEvaluateTestFullRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
 	//
 	getHandle(timeStep, start[0], idxFile, q, boxSize);
 	
-	// has to call evaluate before calling either register_selection_as_bit_array() or extend_bit_array()
-	uint64_t countMe = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 
-
+	// MUST call evaluate before calling either register_selection_as_bit_array() or extend_bit_array()
+	/*uint64_t countMe = */fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 
+	
 	if (boxCounter == 0) {
 	  fastbit_iapi_register_selection_as_bit_array(bitsArrayName, ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle);
 	} else {
 	  fastbit_iapi_extend_bit_array_with_selection(bitsArrayName, ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle);
 	}
-      
+
+	clean_fastbit_trace(q);
+	
 	boxCounter++;
       }
   }
@@ -1581,9 +1628,12 @@ int mEvaluateTestFullRangeFancyQueryOnWhole(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
   ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle = h;
 
   checkHitsDefault(q);
+  return 0;
 }
 
 
+
+/*
  // with fancy query, on leaf node
 int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
 {
@@ -1615,7 +1665,8 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
       // index is on the whole timestep
       getHandleFromBlockAtLeafQuery(timeStep, 0, idxFile,  q,  q->rawDataSize);
       uint64_t count = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 	
-      int64_t  coordinateArray[count];
+      //uint64_t  coordinateArray[count];
+      uint64_t* coordinateArray = malloc(count*sizeof(uint64_t));
       fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, count, 0);      
       
       int k=0;
@@ -1635,7 +1686,8 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
       ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle = 0;
       
       casestudyLogger_setPrefix(" summarized evaluation for bb");  
-      return;
+      free(coordinateArray);
+      return 0;
   } else {
       int boxCounter = 0;
       while (startRef < q->varinfo->dims[0]) {
@@ -1656,24 +1708,6 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
 	}
 	
 	getHandleFromBlockAtLeafQuery(timeStep, start[0], idxFile,  q,  boxSize);
-	/*
-	// index is on box identified by start/count
-	uint64_t resultCount = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 	
-	int64_t  coordinateArray[resultCount];
-	fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, resultCount, 0);      
-	
-	int64_t startPosInVar = getPosInVariable(q->varinfo, q->varinfo->ndim, start, 0);
-	printf("result count=%lu, startPos=%lld, (%llu, %llu, %llu) \n", resultCount, startPosInVar, start[0], start[1], start[2]);
-	
-	int k=0;
-	// set bits
-	for (k=0; k<resultCount; k++) {
-	  int64_t currPosInBlock = coordinateArray[k]+startPosInVar;
-	  if (currPosInBlock >= 0) {
-	    bitarray_setbit(bitSlice, currPosInBlock);
-	  }
-	} 
-	*/
 	
 	// has to call evaluate before calling either register_selection_as_bit_array() or extend_bit_array()
 	uint64_t countMe = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 
@@ -1683,6 +1717,8 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
 	} else {
 	  fastbit_iapi_extend_bit_array_with_selection(bitsArrayName, ((FASTBIT_INTERNAL*)(q->queryInternal))->_handle);
 	}
+
+	clean_fastbit_trace(q);
       
 	boxCounter++;
       }
@@ -1695,7 +1731,8 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
 
   uint64_t resultCount = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 	
   //printf("resultCount = %llu\n", resultCount);
-  int64_t  coordinateArray[resultCount];
+  //  uint64_t  coordinateArray[resultCount];
+  uint64_t* coordinateArray = malloc(resultCount*sizeof(uint64_t));
   fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, resultCount, 0);      
   casestudyLogger_setPrefix(" got coordinates bb");
 
@@ -1721,7 +1758,7 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
     } 
   }
 
-
+  free(coordinateArray);
   free(q->dataSlice);
   q->dataSlice = bitSlice;
   
@@ -1732,7 +1769,7 @@ int mEvaluateTestFullRange(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeStep)
   casestudyLogger_setPrefix(" summarized evaluation for bb");
   
 }
-
+*/
 
 //
 // idx can be based on (m)ultiple blocks
@@ -1762,7 +1799,7 @@ int mEvaluateWithIdxOnBBoxWithBitArrayOnVar(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
     casestudyLogger_setPrefix(" start scanning");
     char casestudyLoggerPrefix[30];
     
-    ADIOS_VARINFO* packVar = common_read_inq_var (idxFile, "pack");
+    //ADIOS_VARINFO* packVar = common_read_inq_var (idxFile, "pack");
     int packSize = -1;
     common_read_schedule_read (idxFile, NULL, "pack",           0, 1, NULL, &packSize);
     common_read_perform_reads(idxFile, 1);
@@ -1807,13 +1844,14 @@ int mEvaluateWithIdxOnBBoxWithBitArrayOnVar(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
 	    return -1;
 	}
 	
-	sprintf(casestudyLoggerPrefix, "block:%llu", currBlockIdx);
+	sprintf(casestudyLoggerPrefix, "block:%" PRIu64, currBlockIdx);
 	casestudyLogger_setPrefix(casestudyLoggerPrefix);
 	
 	struct timespec evalStartT; casestudyLogger_getRealtime(&evalStartT);	
 	uint64_t count = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 	
 
-	int64_t  coordinateArray[count];
+	//uint64_t  coordinateArray[count];
+	uint64_t* coordinateArray = malloc(count*sizeof(uint64_t));
 	fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, count, 0);      
 
 	casestudyLogger_pro_writeout(&evalStartT, "fastbitevaluated");	
@@ -1868,6 +1906,7 @@ int mEvaluateWithIdxOnBBoxWithBitArrayOnVar(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
 	//casestudyLogger_frame_writeout(&frameStartT, "block processed");
 	casestudyLogger_frame_writeout(&frameStartT, "block processed");
 	log_debug("----\n");
+	free(coordinateArray);
     }
     
     casestudyLogger_setPrefix(" blocksProcessedIndividually!");
@@ -1883,6 +1922,7 @@ int mEvaluateWithIdxOnBBoxWithBitArrayOnVar(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
  
     casestudyLogger_setPrefix(" summarized evaluation for bb");
     //fastbit_adios_util_checkNotNull(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, bitsArrayName);
+    return 0;
 }
 //
 // for index that based on one block 
@@ -1952,7 +1992,7 @@ int evaluateWithIdxOnBBoxWithBitArrayOnVar0(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
 	return -1;
       }
 
-      sprintf(casestudyLoggerPrefix, "block:%llu", currBlockIdx);
+      sprintf(casestudyLoggerPrefix, "block:%" PRIu64, currBlockIdx);
       casestudyLogger_setPrefix(casestudyLoggerPrefix);
 
       struct timespec evalStartT;
@@ -1960,7 +2000,8 @@ int evaluateWithIdxOnBBoxWithBitArrayOnVar0(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
 
       uint64_t count = fastbit_selection_evaluate(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle); 
 
-      int64_t  coordinateArray[count];
+      //uint64_t  coordinateArray[count];
+      uint64_t* coordinateArray = malloc(count*sizeof(uint64_t));
       fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, count, 0);      
 
       casestudyLogger_pro_writeout(&evalStartT, "fastbitevaluated");
@@ -2018,6 +2059,7 @@ int evaluateWithIdxOnBBoxWithBitArrayOnVar0(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
       //casestudyLogger_frame_writeout(&frameStartT, "block processed");
       casestudyLogger_pro_writeout(&frameStartT, "block processed");
       log_debug("----\n");
+      free(coordinateArray);
     }
 
     casestudyLogger_setPrefix(" blocksProcessedIndividually!");
@@ -2033,6 +2075,7 @@ int evaluateWithIdxOnBBoxWithBitArrayOnVar0(ADIOS_FILE* idxFile, ADIOS_QUERY* q,
  
     casestudyLogger_setPrefix(" summarized evaluation for bb");
     //fastbit_adios_util_checkNotNull(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, bitsArrayName);
+    return 0;
 }
 
 
@@ -2321,7 +2364,7 @@ int evaluateWithIdxOnBoundingBox(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeSt
 	return -1;
       }
 
-      sprintf(casestudyLoggerPrefix, "block:%llu", currBlockIdx);
+      sprintf(casestudyLoggerPrefix, "block:%" PRIu64, currBlockIdx);
       casestudyLogger_setPrefix(casestudyLoggerPrefix);
 
       struct timespec evalStartT;
@@ -2338,7 +2381,8 @@ int evaluateWithIdxOnBoundingBox(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeSt
       }
 #else
       //i = currBlockIdx-blockStart;
-      uint64_t  coordinateArray[count];
+      //uint64_t  coordinateArray[count];
+      uint64_t* coordinateArray = malloc(count*sizeof(uint64_t));
       fastbit_selection_get_coordinates(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, coordinateArray, count, 0);      
 
       casestudyLogger_pro_writeout(&evalStartT, "fastbitevaluated");
@@ -2363,7 +2407,7 @@ int evaluateWithIdxOnBoundingBox(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeSt
 	    currPos = getRelativeIdx(currPosInBlock, v, bb, absBlockIdx, timeStep);
 	}
 
-	log_debug("%lld th in block[%d],   =>  in actual box %lld  \n", currPosInBlock, absBlockIdx, currPos);
+	log_debug("%" PRIu64 "th in block[%d],   =>  in actual box %" PRId64 "\n", currPosInBlock, absBlockIdx, currPos);
 	if (currPos >= 0) {
             #ifdef BITARRAY
 	    bitarray_setbit(bitSlice, currPos);
@@ -2376,6 +2420,7 @@ int evaluateWithIdxOnBoundingBox(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeSt
 #endif
       //casestudyLogger_setPrefix(" block processed");
       log_debug("----\n");
+      free(coordinateArray);
     }
 
     casestudyLogger_setPrefix(" blocksProcessedIndividually ");
@@ -2412,6 +2457,7 @@ int evaluateWithIdxOnBoundingBox(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeSt
     casestudyLogger_setPrefix(" summarized evaluation for bb");
     //fastbit_adios_util_checkNotNull(((FASTBIT_INTERNAL*)(q->queryInternal))->_handle, bitsArrayName);
   }
+  return 0;
 }
 
 FastBitSelectionHandle createHandle(ADIOS_QUERY* q, const char* registeredArrayName)
@@ -2419,7 +2465,7 @@ FastBitSelectionHandle createHandle(ADIOS_QUERY* q, const char* registeredArrayN
   FastBitDataType  dataType = fastbit_adios_util_getFastbitDataType(q->varinfo->type);
   FastBitCompareType compareOp = fastbit_adios_util_getFastbitCompareType(q->predicateOp);
 
-  uint64_t dataSize = q->rawDataSize;
+  //uint64_t dataSize = q->rawDataSize;
 
   char* endptr;
   double vv = strtod(q->predicateValue, &endptr);
@@ -2451,11 +2497,6 @@ void getHandleFromBlockAtLeafQuery(int timeStep, int blockIdx, ADIOS_FILE* idxFi
     
     ADIOS_FILE* dataFile = q->file;
 
-    /*
-    // read data from dataFile
-    ADIOS_SELECTION* box = common_read_selection_writeblock(blockIdx);
-    common_read_inq_var_blockinfo(dataFile, v);
-    */
     if (v->blockinfo == NULL) {
       common_read_inq_var_blockinfo(dataFile, v);
     }
@@ -2491,8 +2532,8 @@ void getHandleFromBlockAtLeafQuery(int timeStep, int blockIdx, ADIOS_FILE* idxFi
       // no idx for this variable, read from file:
       free(q->dataSlice);
       q->dataSlice = malloc(common_read_type_size(v->type, v->value)*blockSize);
-      
-      ADIOS_SELECTION* box = common_read_selection_writeblock(blockIdx);   
+
+      ADIOS_SELECTION* box = a2sel_writeblock(blockIdx);
       common_read_inq_var_blockinfo(dataFile, v);        
 
       int errorCode = 0;
@@ -2513,7 +2554,7 @@ void getHandleFromBlockAtLeafQuery(int timeStep, int blockIdx, ADIOS_FILE* idxFi
       FastBitCompareType compareOp = fastbit_adios_util_getFastbitCompareType(q->predicateOp);
 
       setQueryInternal(q, compareOp, dataType, blockSize, blockDataName);
-      common_read_selection_delete(box);
+      a2sel_free(box);
       return;
     }
 
@@ -2557,7 +2598,7 @@ void printQueryData(ADIOS_QUERY* q, FastBitDataType dataType, int timeStep) {
   uint64_t dataSize = q->rawDataSize;
   int j;
   int batchSize = 31;
-  log_debug ("::\t %s At timestep: %d datasize=%llu \n\t\t   raw data:  [", q->condition, timeStep, dataSize);
+  log_debug ("::\t %s At timestep: %d datasize=%" PRIu64 " \n\t\t   raw data:  [", q->condition, timeStep, dataSize);
   for (j = 0; j < dataSize; j++) {
     if ((j < batchSize) || ((dataSize -j) < batchSize)) {
       if ((j % 10) == 0) {
@@ -2570,7 +2611,7 @@ void printQueryData(ADIOS_QUERY* q, FastBitDataType dataType, int timeStep) {
       } else if (dataType == FastBitDataTypeUInt) {
 	log_debug("%d ", ((uint32_t  *)(q->dataSlice))[j]);
       } else if (dataType == FastBitDataTypeULong) {
-	log_debug("%lld ", ((uint64_t  *)(q->dataSlice))[j]);
+	log_debug("%" PRIu64 " ", ((uint64_t  *)(q->dataSlice))[j]);
       } else {
 	//log_debug("\t%g ", ((uint32_t *)(q->_dataSlice))[j]);
 	log_debug(" *  ");
@@ -2727,10 +2768,10 @@ void blockSelectionFastbitHandle(ADIOS_FILE* idxFile, ADIOS_QUERY* q, int timeSt
 
 void getHandle(int timeStep, int blockIdx, ADIOS_FILE* idxFile, ADIOS_QUERY* q, uint64_t blockSize) 
 {
-  ADIOS_FILE* dataFile = q->file;
+  //ADIOS_FILE* dataFile = q->file;
   ADIOS_VARINFO* v = q->varinfo;
 
-  FastBitSelectionHandle result = NULL;
+  //FastBitSelectionHandle result = NULL;
   if (v == NULL) {
     getHandle(timeStep, blockIdx, idxFile, q->left, blockSize);
     getHandle(timeStep, blockIdx, idxFile, q->right, blockSize);
@@ -2760,7 +2801,7 @@ int64_t  applyIndexIfExists (ADIOS_QUERY* q, int timeStep)
   // call fastbit_estimate_num_hits(selection)
   ADIOS_QUERY* leaf = getFirstLeaf(q);
   ADIOS_FILE* f = leaf->file;
-  const char* basefileName = f->path;
+  //const char* basefileName = f->path;
 
   int64_t result = -1;
 
@@ -2944,7 +2985,7 @@ int64_t call_fastbit_evaluate(ADIOS_QUERY* q, int timeStep, uint64_t _maxResult)
     numHits = bitarray_countHits(q->dataSlice, BITNSLOTS(q->rawDataSize));
   }
 
-  log_debug(":: ==> fastbit_evaluate() num of hits found for [%s] = %lld, at timestep %d \n", q->condition, numHits, timeStep);  
+  log_debug(":: ==> fastbit_evaluate() num of hits found for [%s] = %" PRId64 ", at timestep %d \n", q->condition, numHits, timeStep);  
 
   //casestudyLogger_ends("evaluatingFastbit");
 
@@ -2970,7 +3011,7 @@ void printOneSpatialCoordinate(int dim, uint64_t* spatialCoordinates)
       int k;
       log_debug(" spatial = [");
       for (k=0; k<dim; k++) {
-	log_debug("%lld ", spatialCoordinates[k]);
+	log_debug("%" PRIu64 " ", spatialCoordinates[k]);
       }
       log_debug("]\n");
 
@@ -3000,6 +3041,258 @@ void printOneSpatialCoordinate(int dim, uint64_t* spatialCoordinates)
   log_debug("\n");
 }
 
+
+//
+// use blocks as subcontainers
+//
+
+typedef struct vector {
+  uint64_t *items;
+  int capacity;
+  int actualSize;
+} vector;
+
+void vector_init(vector *v)
+{
+  v->capacity = 1000;
+  v->actualSize = 0;
+  v->items = malloc(sizeof(uint64_t) * v->capacity);
+}
+
+int vector_size(vector *v)
+{
+  return v->actualSize;
+}
+
+static void vector_resize(vector *v, int capacity)
+{
+  uint64_t *items = (uint64_t*)(realloc(v->items, sizeof(uint64_t) * capacity));
+  if (items) {
+    v->items = items;
+    v->capacity = capacity;
+  }
+}
+
+void vector_pushback(vector *v, uint64_t item)
+{
+  if (v->capacity == v->actualSize)
+     vector_resize(v, v->capacity * 2);
+  v->items[v->actualSize++] = item;
+}
+
+void vector_delete(vector *v)
+{
+  free(v->items);
+}
+
+int getEasyBlockId(ADIOS_SELECTION_POINTS_STRUCT* pts, int which,  uint64_t* blockMultiplier, uint64_t* blockDims)
+{
+  int i=0;
+  int result = 0;
+  for (i=0; i<pts->ndim; i++) {
+    int curr = pts->points[which* (pts->ndim)+i]/blockDims[i];
+    result += curr * blockMultiplier[i];
+  }
+  return result;
+}
+
+int minmaxtestBlocks(ADIOS_VARINFO *varinfo, ADIOS_SELECTION_POINTS_STRUCT* pts,  ADIOS_SELECTION** containers)
+{
+  uint64_t i,j,k;
+  uint64_t numBlocksByDim[pts->ndim], blockMultiplier[pts->ndim];
+  for (i=0; i<pts->ndim; i++) {
+    numBlocksByDim[i] = varinfo->dims[i]/varinfo->blockinfo[0].count[i];
+  }
+
+  for (i=0; i<pts->ndim; i++) {
+    blockMultiplier[i] = 1;
+    for (j=i+1; j<pts->ndim; j++) {
+      blockMultiplier[i] *= numBlocksByDim[j];
+    }
+  }
+
+
+  int firstBlock=0; 
+  int lastBlock = varinfo->sum_nblocks;
+
+
+  uint64_t counter[lastBlock-firstBlock+1];  
+  vector vv[lastBlock-firstBlock+1];  
+  // initialize
+  for (i=firstBlock; i<=lastBlock; i++) {
+      counter[i-firstBlock] = 0;
+      vector_init(&vv[i-firstBlock]);
+  }
+
+  int allbids[pts->npoints];
+  for (i=0; i<pts->npoints; i++) {
+    int bid = getEasyBlockId(pts, i,  blockMultiplier, varinfo->blockinfo[0].count);
+    vector_pushback(&vv[bid-firstBlock], i);
+    counter[bid-firstBlock] ++;
+    allbids[i] = bid; // store for later use
+  }
+
+  uint64_t numTouchedBlocks=0;
+  for (i=firstBlock; i<=lastBlock; i++) {
+    if (counter[i-firstBlock] > 0) {
+      numTouchedBlocks++;
+    }
+  }
+  
+  *containers = malloc(numTouchedBlocks * sizeof(ADIOS_SELECTION));   
+  uint64_t cc=0;
+  for (i=firstBlock; i<=lastBlock; i++) {    
+      if (counter[i-firstBlock] == 0) {
+	continue;
+      }
+      int s=0;
+      uint64_t* ptsInBlock = calloc(counter[i-firstBlock]*pts->ndim, sizeof(uint64_t));
+#ifdef NEVER
+      for (j=0; j<pts->npoints; j++) {
+	if (allbids[j] == i) {
+	  for (k=0; k<pts->ndim; k++) {
+	    ptsInBlock[s*(pts->ndim)+k] = pts->points[j*(pts->ndim)+k]-varinfo->blockinfo[i].start[k];
+	    //printf("    %ld  - %ld = %ld\n", pts->points[j*(pts->ndim)+k],varinfo->blockinfo[i].start[k], pts->points[j*(pts->ndim)+k]-varinfo->blockinfo[i].start[k]);
+	  }
+	  s++;
+	}
+      }
+#else
+      for (j=0; j<vv[i-firstBlock].actualSize; j++) {
+	  uint64_t s = vv[i-firstBlock].items[j];
+	  for (k=0; k<pts->ndim; k++) {
+	    ptsInBlock[j*(pts->ndim)+k] = pts->points[s*(pts->ndim)+k]-varinfo->blockinfo[i].start[k];
+	  }
+      }
+#endif
+
+      ADIOS_SELECTION* sel = a2sel_points (pts->ndim, counter[i-firstBlock], ptsInBlock, a2sel_writeblock(i), 1);
+      (*containers)[cc++] = *sel; 
+  }
+
+  for (i=firstBlock; i<=lastBlock; i++) {
+    vector_delete(&vv[i-firstBlock]);
+  }
+
+  return cc;
+}
+
+
+
+
+ //
+ //slice along 0th dimention with first block size
+ //
+uint64_t* minmaxtestSlice(ADIOS_SELECTION* bbox, ADIOS_QUERY* q, uint64_t* coordinates, uint64_t retrivalSize, int timeStep, uint64_t* ptsSize, ADIOS_SELECTION** containers)
+{
+  int i; 
+  int sheet = 1;
+ 
+  uint64_t* bbstart = NULL;
+  uint64_t* bbcount = NULL;
+  int bbdim = 0;
+  if (bbox != NULL) {
+     if (bbox->type != ADIOS_SELECTION_BOUNDINGBOX) {      
+       return NULL;
+     }
+     const ADIOS_SELECTION_BOUNDINGBOX_STRUCT *bb = &(bbox->u.bb);
+     if (bb->ndim <= 1) {
+       return NULL;
+     }
+     
+     for (i=1; i<bb->ndim; i++) {
+       sheet *= bb->count[i];
+     }
+     bbcount = bb->count;
+     bbdim = bb->ndim;
+  } else {
+     ADIOS_QUERY* firstLeaf = getFirstLeaf(q);
+     if (firstLeaf->varinfo->ndim <= 1) {
+       return NULL;
+     }
+     
+     for (i=1; i<firstLeaf->varinfo->ndim; i++) {
+       sheet *= firstLeaf->varinfo->dims[i];
+     }
+     bbcount = firstLeaf->varinfo->dims;
+     bbdim = firstLeaf->varinfo->ndim;
+  }
+  
+  //printf("sheet = %ld \n", sheet);
+
+  uint64_t range = coordinates[retrivalSize-1] - coordinates[0];
+  uint64_t nLayers=getFirstLeaf(q)->varinfo->blockinfo[0].count[0];
+  //uint64_t gap = sheet*11;  
+  uint64_t gap = sheet*nLayers;  
+
+  if (range < gap) {
+    printf("As is.\n");
+    return NULL;
+  }
+
+  // bbox is of size gap
+  uint64_t bbid=coordinates[0]/(gap);
+  uint64_t sid;
+
+  //uint64_t diff=0;
+  //printf("check point. i=0, value=%ld, sid=%ld\n",  coordinates[0], bbid);
+
+  uint64_t checkpoints[range/sheet+2];
+  uint64_t checkpointCounter = 0;
+  checkpoints[0] = 0;
+  
+  for (i=1; i<=retrivalSize-1; i++) {
+    sid=coordinates[i]/(gap);
+    if (sid > bbid) {
+      checkpoints[++checkpointCounter] = i-1;
+      checkpoints[++checkpointCounter] = i;
+      printf("check point. i=%d, value=%" PRIu64 ", sid=%" PRIu64 " bbid=%" PRIu64 " checkpointCounter=%" PRIu64 "\n", i, coordinates[i], sid, bbid, checkpointCounter);
+      bbid = sid;
+    } else {
+      //checkpoints[checkpointCounter+1] = i;
+    }
+  }  
+
+  checkpoints[++checkpointCounter] = i-1;
+
+  printf("check point. i=%d, value=%" PRIu64 ", checkpointCounter=%" PRIu64 "\n", i-1, coordinates[i-1],  checkpointCounter);
+  if (checkpointCounter == 1) {
+    // should return by max ele
+    return NULL;
+  } 
+
+  
+  uint64_t total = 0;
+  uint64_t* result = malloc((checkpointCounter+1) * sizeof(uint64_t));
+
+  *containers = malloc((checkpointCounter+1)/2 * sizeof(ADIOS_SELECTION));
+  for (i=0; i<checkpointCounter+1; i++) {
+    result[i] = checkpoints[i];
+    if (i % 2 == 1) {
+      total += checkpoints[i] - checkpoints[i-1]+1;
+      //printf("i=%ld, %ld to %ld, uptodate: %ld, sid: %ld, %ld \n", i, checkpoints[i-1], checkpoints[i], total, coordinates[checkpoints[i]]/(gap), coordinates[checkpoints[i-1]]/(gap));
+
+      uint64_t* currCounter = malloc(bbdim*sizeof(uint64_t));
+      uint64_t* currStart = malloc(bbdim*sizeof(uint64_t));
+      currCounter[0] = nLayers;
+      currStart[0] = nLayers * (coordinates[checkpoints[i]]/(gap));
+
+      int k;
+      for (k=1; k<bbdim; k++) {
+	currCounter[k] = bbcount[k];
+	currStart[k] = 0;
+      }
+      
+      //printf("      [%ld, %ld, %ld] to [%ld. %ld, %ld]\n", currStart[0], currStart[1], currStart[2], currCounter[0], currCounter[1], currCounter[2]);
+      ADIOS_SELECTION* c = a2sel_boundingbox(bbdim, currStart, currCounter);
+      (*containers)[(i-1)/2] = *c;
+    }
+  }
+  
+  *ptsSize = checkpointCounter+1;
+  return result;   
+}
+
 ADIOS_SELECTION* getSpatialCoordinatesDefault(ADIOS_VARINFO* var, uint64_t* coordinates, uint64_t retrivalSize, int timeStep)
 {
   uint64_t arraySize = retrivalSize * (var->ndim);
@@ -3014,8 +3307,7 @@ ADIOS_SELECTION* getSpatialCoordinatesDefault(ADIOS_VARINFO* var, uint64_t* coor
     
     fillUp(var->ndim, spatialCoordinates, i, pointArray, isFortranClient);
   }
-  ADIOS_SELECTION* result =  common_read_selection_points(var->ndim, retrivalSize, pointArray);
-  //free(pointArray); // user has to free this
+  ADIOS_SELECTION* result =  a2sel_points(var->ndim, retrivalSize, pointArray, NULL, 1);
   return result;
 }
 
@@ -3041,8 +3333,7 @@ ADIOS_SELECTION* getSpatialCoordinates(ADIOS_SELECTION* outputBoundary, uint64_t
 
 	   fillUp(bb->ndim, spatialCoordinates, i, pointArray, 0); // already fortran coordinates from posToSpace(.. isFortranClient ..)
       }
-      ADIOS_SELECTION* result =  common_read_selection_points(bb->ndim, retrivalSize, pointArray);    
-      //free(pointArray); // user has to free this
+      ADIOS_SELECTION* result =  a2sel_points(bb->ndim, retrivalSize, pointArray, NULL, 1);
       return result;
       break;
     }
@@ -3058,8 +3349,7 @@ ADIOS_SELECTION* getSpatialCoordinates(ADIOS_SELECTION* outputBoundary, uint64_t
 	getCoordinateFromPoints(coordinates[i], points, spatialCoordinates);
 	fillUp(points->ndim, spatialCoordinates, i, pointArray, isFortranClient);
       }
-      ADIOS_SELECTION* result = common_read_selection_points(points->ndim, retrivalSize, pointArray);	      
-      //free(pointArray); // user has to free this
+      ADIOS_SELECTION* result = a2sel_points(points->ndim, retrivalSize, pointArray, NULL, 1);
       return result;
       //printOneSpatialCoordinate(points->ndim, spatialCoordinates);      
       
@@ -3084,7 +3374,7 @@ ADIOS_SELECTION* getSpatialCoordinates(ADIOS_SELECTION* outputBoundary, uint64_t
 	   //fillUp(v->ndim, spatialCoordinates, i, pointArray, isFortranClient); 
 	   fillUp(v->ndim, spatialCoordinates, i, pointArray, 0); // already fortran coordinates from posToSpace(.. isFortranClient ..)
       }
-      ADIOS_SELECTION* result = common_read_selection_points(v->ndim, retrivalSize, pointArray);
+      ADIOS_SELECTION* result = a2sel_points(v->ndim, retrivalSize, pointArray, NULL, 1);
       //free(pointArray); // user has to free this
       return result;
       break;      
@@ -3110,7 +3400,8 @@ int  adios_query_fastbit_evaluate(ADIOS_QUERY* q,
 				  int incomingTimestep,
 				  uint64_t batchSize, 
 				  ADIOS_SELECTION* outputBoundary, 
-				  ADIOS_SELECTION** result)
+				  //ADIOS_SELECTION** result)
+				  ADIOS_QUERY_RESULT* queryResult)
 {
   casestudyLogger_init();
   casestudyLogger_starts("queryArrived. initfastbit");
@@ -3136,7 +3427,7 @@ int  adios_query_fastbit_evaluate(ADIOS_QUERY* q,
   int timeStep = adios_get_actual_timestep(q, incomingTimestep);
 
   call_fastbit_evaluate(q, timeStep, 0);
-  log_debug("::\t max=%llu  lastRead=%llu batchsize=%llu\n", q->maxResultsDesired, q->resultsReadSoFar, batchSize);
+  log_debug("::\t max=%" PRIu64 "  lastRead=%" PRIu64 " batchsize=%" PRIu64 "\n", q->maxResultsDesired, q->resultsReadSoFar, batchSize);
 
   uint64_t retrivalSize = q->maxResultsDesired - q->resultsReadSoFar;
   if (retrivalSize == 0) {
@@ -3148,6 +3439,12 @@ int  adios_query_fastbit_evaluate(ADIOS_QUERY* q,
       retrivalSize = batchSize;
   }
 
+  ADIOS_QUERY* firstLeaf = getFirstLeaf(q);
+  if ((firstLeaf == NULL) || (firstLeaf->varinfo == NULL)) {
+    log_error(":: Error: unable to get a valid first leaf! Exit. \n");
+    return -1;
+  }
+
   //uint64_t coordinates[retrivalSize];
   uint64_t* coordinates = (uint64_t*) calloc(retrivalSize, sizeof(uint64_t));
   if (coordinates == 0) {
@@ -3167,29 +3464,108 @@ int  adios_query_fastbit_evaluate(ADIOS_QUERY* q,
 
   q->resultsReadSoFar += retrivalSize;
   
+#ifdef RETURN_ONE_DIM
+  queryResult->selections = a2sel_points(1, retrivalSize, coordinates);
+#else // return N-Dim
   if (outputBoundary == 0) {
-    ADIOS_QUERY* firstLeaf = getFirstLeaf(q);
-    if ((firstLeaf == NULL) || (firstLeaf->varinfo == NULL)) {
-	log_error(":: Error: unable to get a valid first leaf! Exit. \n");
-	free(coordinates);
-	return -1;
-      }
     if (firstLeaf->sel == NULL) {
-      *result = getSpatialCoordinatesDefault(firstLeaf->varinfo, coordinates, retrivalSize, timeStep);
+      queryResult->selections = getSpatialCoordinatesDefault(firstLeaf->varinfo, coordinates, retrivalSize, timeStep);
     } else {
-      *result = getSpatialCoordinates(firstLeaf->sel, coordinates, retrivalSize, firstLeaf->varinfo, timeStep);
+	queryResult->selections = getSpatialCoordinates(firstLeaf->sel, coordinates, retrivalSize, firstLeaf->varinfo, timeStep);
     }
   } else {
     //*result = getSpatialCoordinates(outputBoundary, coordinates, retrivalSize);
     // variable needs to be in place to handle the block information
     // not sure wheather this is well defined case of combined query?! but the first varibale will be used for block information calculation
-    *result = getSpatialCoordinates(outputBoundary, coordinates, retrivalSize, getFirstLeaf(q)->varinfo, timeStep);
+    queryResult->selections = getSpatialCoordinates(outputBoundary, coordinates, retrivalSize, getFirstLeaf(q)->varinfo, timeStep);     
+  }
+#endif
 
-    free(coordinates);
-    if (*result == 0) {
-      return -1;
+  if (queryResult->selections != NULL) {
+      queryResult->npoints = queryResult->selections[0].u.points.npoints;
+      queryResult->nselections = 1; // default
+  } else {
+      queryResult->npoints = 0;
+  }
+
+  if (getFirstLeaf(q)->varinfo->blockinfo == NULL) {
+    common_read_inq_var_blockinfo(getFirstLeaf(q)->file, getFirstLeaf(q)->varinfo);
+  }
+
+  ADIOS_SELECTION* multiSets = NULL;
+  uint64_t minmaxStart = fastbit_adios_getCurrentTimeMillis();
+  int nsets = minmaxtestBlocks(getFirstLeaf(q)->varinfo, &(queryResult->selections[0].u.points),  &multiSets);
+  uint64_t minmaxEnd = fastbit_adios_getCurrentTimeMillis();
+  //printf("    minmax block took: %ld millisecs = %ld sec", minmaxEnd-minmaxStart, (minmaxEnd-minmaxStart)/1000);
+  //free(queryResult->selections->u.points.points);
+  a2sel_free(queryResult->selections);
+  //free(queryResult->selections);
+  queryResult->selections = multiSets;
+  queryResult->nselections = nsets;
+
+  free(coordinates);
+  coordinates = NULL;
+
+
+
+
+  /*
+  printf(" --> \n");
+  uint64_t partsSize = 0;
+  ADIOS_SELECTION* containers = NULL;
+
+  uint64_t* parts = minmaxtestSlice(outputBoundary, q,  coordinates, retrivalSize, timeStep, &partsSize, &containers);
+  if ((parts != NULL) && (partsSize > 1)) {
+    multiSets = (ADIOS_SELECTION*)(malloc(partsSize * sizeof(ADIOS_SELECTION)));
+    int i, j,k, counter=0;
+    uint64_t* pts = queryResult->selections->u.points.points;    
+    int ndim = firstLeaf->varinfo->ndim;
+
+    for (i=1; i<partsSize; i=i+2) {      
+      uint64_t bundleSize = parts[i]-parts[i-1] + 1;
+#ifdef RETURN_ONE_DIM
+      uint64_t* currPts = (uint64_t*) calloc(bundleSize, sizeof(uint64_t));
+      uint64_t offset= containers[(i-1)/2].u.bb.start[0] * 1408 * 1080;
+
+      for (j=0; j<bundleSize; j++) {
+	currPts[j] = pts[j+counter] - offset;
+      }
+      printf(".... ..... ..... TEMP .... .... QUICK OFFSET .... idx = %d, bundle: %llu offset= %lu, start %llu, end %llu\n", (i-1)/2, bundleSize, offset, currPts[0], currPts[bundleSize-1]);
+      multiSets[(i-1)/2] = *(a2sel_points(1, bundleSize, currPts));
+      //multiSets[(i-1)/2] = *(a2sel_points(1, bundleSize, pts+counter));
+      counter += bundleSize;
+#else
+      uint64_t* currPts = (uint64_t*)calloc(bundleSize*ndim, sizeof(uint64_t));
+      for (j=0; j<bundleSize; j++) {
+	  for (k=0; k<ndim; k++) {
+	    currPts[j*ndim+k] = pts[j*ndim+k+counter] - containers[(i-1)/2].u.bb.start[k];
+	  }
+      }
+      //multiSets[(i-1)/2] = *(a2sel_points(ndim, bundleSize, pts+counter));
+      multiSets[(i-1)/2] = *(a2sel_points(ndim, bundleSize, currPts));
+      counter += bundleSize * ndim;
+#endif
+
+      multiSets[(i-1)/2].u.points.container_selection = &containers[(i-1)/2];
+      //free(containers);
     }
+
+    free(queryResult->selections);
+    queryResult->selections = multiSets;
+    queryResult->nselections = (partsSize)/2;
+    free(parts);
+    free(coordinates);
+    coordinates = NULL;
+  }
+  */
+  //printf(" <-- \n");
+#ifdef RETURN_ONE_DIM
+  // used directly in return 1-D pts, client should free
+#else
+  if (coordinates != NULL) {
+    free(coordinates); 
   }
+#endif
   casestudyLogger_frame_writeout(&startT, "bitarrayGetHits");
 
   // print results
@@ -3228,7 +3604,7 @@ void  adios_query_fastbit_free(ADIOS_QUERY* query)
   free(query->predicateValue);
   free(query->condition);
   
-  //adios_selection_delete(query->_sel);
+  //a2sel_free(query->_sel);
   common_read_free_varinfo(query->varinfo);
 
   // can free _queryInternal only once
@@ -3247,13 +3623,15 @@ void  adios_query_fastbit_free(ADIOS_QUERY* query)
   FASTBIT_INTERNAL* s = (FASTBIT_INTERNAL*)(query->queryInternal);  
   if (query->hasParent == 0) {
     if ((s!= NULL) && (s->_idxFile != NULL)) {
-      common_read_close(s->_idxFile);
+        common_read_close(s->_idxFile);
     }
   }
 
   clear_fastbit_internal(query);
   free(query->queryInternal);
 
+  //fastbit_iapi_free_all();
+
 }
 
 
@@ -3312,7 +3690,7 @@ void createBox(ADIOS_VARINFO* v, char* dimDef, uint64_t* start, uint64_t* count)
     return;
   }
   
-  const char* comma = ",";
+ //const char* comma = ",";
 
   // int column=-1, columnStarts=-1, columnEnds=0;
 
@@ -3396,22 +3774,6 @@ void createBox(ADIOS_VARINFO* v, char* dimDef, uint64_t* start, uint64_t* count)
 }
 */
 
-enum ADIOS_PREDICATE_MODE getOp(const char* opStr) 
-{
-  if ((strcmp(opStr, ">=") == 0) || (strcmp(opStr, "GE") == 0)) {
-    return ADIOS_GTEQ;
-  } else if ((strcmp(opStr, "<=") == 0) || (strcmp(opStr, "LE") == 0)) {
-    return ADIOS_LTEQ;
-  } else if ((strcmp(opStr, "<") == 0) || (strcmp(opStr, "LT") == 0)) {
-    return ADIOS_LT;
-  } else if ((strcmp(opStr, ">") == 0) || (strcmp(opStr, "GT") == 0)) {
-    return ADIOS_GT;
-  } else if ((strcmp(opStr, "=") == 0) || (strcmp(opStr, "EQ") == 0)) {
-    return ADIOS_EQ;
-  } else { // if (strcmp(opStr, "!=") == 0) {
-    return ADIOS_NE;
-  }
-}
 
 /*
 ADIOS_QUERY* getQuery(const char* condition, ADIOS_FILE* f) 
@@ -3466,11 +3828,11 @@ ADIOS_QUERY* getQuery(const char* condition, ADIOS_FILE* f)
 
     createBox(v, dimDef, start, count);
 
-    ADIOS_SELECTION* sel =adios_selection_boundingbox (v->ndim, start, count);
+    ADIOS_SELECTION* sel =a2sel_boundingbox (v->ndim, start, count);
     
     common_read_free_varinfo(v);
 
-    ADIOS_QUERY* q = adios_query_create(f, varName, sel, getOp(opStr), valueStr);
+    ADIOS_QUERY* q = adios_query_create(f, varName, sel, adios_query_getOp(opStr), valueStr);
 
 
     free(valueStr);free(opStr);free(varStr);free(varName);free(str);
diff --git a/src/query/query_minmax.c b/src/query/query_minmax.c
new file mode 100644
index 0000000..f52c768
--- /dev/null
+++ b/src/query/query_minmax.c
@@ -0,0 +1,769 @@
+/*
+ * query_minmax.c
+ *
+ *  Created on: Jan 2016
+ *      Author: Norbert Podhorszki
+ */
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <float.h>
+#include "public/adios_error.h"
+#include "public/adios_read_ext.h"
+#include "public/adios_query.h"
+#include "public/adios_selection.h"
+#include "core/common_read.h"
+#include "core/adios_logger.h"
+#include "common_query.h"
+#include "query_utils.h"
+#include "config.h"  // HAVE_STRTOLD
+
+
+typedef struct {
+    int nblocks;
+    char *blocks;  // 0-1 boolean flag for each writeblock, 1=matches query
+    int is_outputBoundary_set; // did we set outputBoundary
+    ADIOS_SELECTION *outputBoundary; // remember output selection from first eval call (for one step)
+    ADIOS_SELECTION *rightmostsel; // rightmost leaf's selection saved at top, from can_evaluate()
+
+    int current_blockid; // end of last evaluation (remember it to be able 
+                         // to continue in consecutive evaluate calls)
+} MINMAX_INTERNAL;
+
+static void create_internal (ADIOS_QUERY *q)
+{
+    if (q->queryInternal == NULL) {
+        MINMAX_INTERNAL* internal = calloc (1, sizeof(MINMAX_INTERNAL));
+        q->queryInternal = (void *)internal;
+    }
+}
+
+static void free_internal (ADIOS_QUERY *q)
+{
+    if (q->queryInternal != NULL) {
+        MINMAX_INTERNAL* qi = (MINMAX_INTERNAL*) q->queryInternal;
+        if (qi->blocks)
+            free (qi->blocks);
+        free (qi);
+        q->queryInternal = NULL;
+    }
+}
+
+#define INTERNAL(q) ((MINMAX_INTERNAL*) (q->queryInternal))
+
+static void internal_alloc_blocks (ADIOS_QUERY*q, int nblocks)
+{
+    assert (q->queryInternal); 
+    MINMAX_INTERNAL* qi = (MINMAX_INTERNAL*)(q->queryInternal);
+    qi->nblocks = nblocks;
+    qi->blocks = calloc (nblocks, sizeof(char));
+    assert (qi->blocks);
+}
+
+
+
+
+#define COMPARE_VALUES(v1,op,v2) {  \
+    switch (op) {                   \
+        case ADIOS_LT:              \
+            return (v1 < v2);       \
+            break;                  \
+        case ADIOS_LTEQ:            \
+            return (v1 <= v2);      \
+            break;                  \
+        case ADIOS_GT:              \
+            return (v1 > v2);       \
+            break;                  \
+        case ADIOS_GTEQ:            \
+            return (v1 >= v2);      \
+            break;                  \
+        case ADIOS_EQ:              \
+            return (v1 == v2);      \
+            break;                  \
+        case ADIOS_NE:              \
+            return (v1 != v2);      \
+            break;                  \
+    }                               \
+}
+
+#if HAVE_STRTOLD
+#  define  LONGDOUBLE long double
+#  define  STRTOLONGDOUBLE(x,y) strtold(x,y)
+#else
+#  define  LONGDOUBLE double
+#  define  STRTOLONGDOUBLE(x,y) strtod(x,y)
+#endif
+
+/* Compare two values with 'op', where one value comes in as string, the other is
+   hidden behind a void* pointer and its type depends on the adios 'type'
+   returns 1 if the comparison is true, 0 otherwise
+ */
+static int compare_values (void *v_pred, enum ADIOS_PREDICATE_MODE op, void *v_void, enum ADIOS_DATATYPES vartype)
+{
+    signed long long v1_int, v2_int;
+    unsigned long long v1_uint, v2_uint;
+    double v1_real, v2_real;
+    LONGDOUBLE v1_ld, v2_ld;
+
+    switch (vartype) 
+    {
+        case adios_unsigned_byte:
+            v2_uint = (unsigned long long) *((unsigned char *) v_void);
+            break;
+        case adios_byte:
+            v2_int = (signed long long) *((signed char *) v_void);
+            break;
+        case adios_unsigned_short:
+            v2_uint = (unsigned long long) *((unsigned short *) v_void);
+            break;
+        case adios_short:
+            v2_int = (signed long long) *((signed short *) v_void);
+            break;
+        case adios_unsigned_integer:
+            v2_uint = (unsigned long long) *((unsigned int *) v_void);
+            break;
+        case adios_integer:
+            v2_int = (signed long long) *((signed int *) v_void);
+            break;
+        case adios_unsigned_long:
+            v2_uint = *((unsigned long long *) v_void);
+            break;
+        case adios_long:
+            v2_int =  *((signed long long *) v_void);
+            break;
+        case adios_real:
+            v2_real = (double) *((float *) v_void);
+            break;
+        case adios_double:
+            v2_real = (double) *((double *) v_void);
+            break;
+        case adios_long_double:
+            v2_ld = *((LONGDOUBLE *) v_void);
+            break;
+
+        case adios_complex:
+            //fprintf(outf,(f ? format : "(%g,i%g)"), ((float *) data)[2*item], ((float *) data)[2*item+1]);
+        case adios_double_complex:
+            //fprintf(outf,(f ? format : "(%g,i%g)" ), ((double *) data)[2*item], ((double *) data)[2*item+1]);
+        default:
+            return 0;
+            break;
+    } // end switch
+
+    switch (vartype) 
+    {
+        case adios_unsigned_byte:
+        case adios_unsigned_short:
+        case adios_unsigned_integer:
+        case adios_unsigned_long:
+            v1_uint = *(unsigned long long *) v_pred;
+            COMPARE_VALUES (v1_uint, op, v2_uint)
+            break;
+
+        case adios_byte:
+        case adios_short:
+        case adios_integer:
+        case adios_long:
+            v1_int = *(signed long long *) v_pred;
+            COMPARE_VALUES (v1_int, op, v2_int)
+            break;
+
+        case adios_real:
+        case adios_double:
+            v1_real = *(double *) v_pred;
+            COMPARE_VALUES (v1_real, op, v2_real)
+            break;
+
+        case adios_long_double:
+            v1_ld = *(LONGDOUBLE *) v_pred;
+            COMPARE_VALUES (v1_ld, op, v2_ld)
+            break;
+
+        case adios_complex:
+        case adios_double_complex:
+        default:
+            return 0;
+            break;
+    } // end switch
+    return 0;
+}
+
+static void * string_to_value (char *v_str, enum ADIOS_DATATYPES vartype)
+{
+    void * retval;
+    static signed long long v_int;
+    static unsigned long long v_uint;
+    static double v_real;
+    LONGDOUBLE v_ld;
+    switch (vartype) 
+    {
+        case adios_unsigned_byte:
+        case adios_unsigned_short:
+        case adios_unsigned_integer:
+        case adios_unsigned_long:
+            v_uint = strtoll (v_str, NULL, 10);
+            retval = &v_uint;
+            break;
+
+        case adios_byte:
+        case adios_short:
+        case adios_integer:
+        case adios_long:
+            v_int = strtoll (v_str, NULL, 10);
+            retval = &v_int;
+            break;
+
+        case adios_real:
+        case adios_double:
+            v_real = strtod (v_str,NULL);
+            retval = &v_real;
+            break;
+
+        case adios_long_double:
+            v_ld = STRTOLONGDOUBLE(v_str,NULL);
+            retval = &v_ld;
+            break;
+
+        case adios_complex:
+        case adios_double_complex:
+        default:
+            return 0;
+            break;
+    } // end switch
+    return retval;
+}
+
+/*
+ * evaluate a single query item (Variable PredicateOP Value) 
+ * In: blocks array flag has 1s which writeblocks have to be checked
+ *     *sel is the selection used in other part of the query tree 
+ * Return the number of matches
+ */
+
+static int minmax_evaluate_node (ADIOS_QUERY* q, int timestep, int nblocks, char * blocks, ADIOS_SELECTION **sel, bool estimate) 
+{
+    // LEAF NODE: evaluate this
+    int nmatches = 0;
+    int i;
+   
+    // varinfo contains blocks for many timesteps, we need the index where the current timestep starts
+    int block_start_idx = 0; 
+    for (i = 0; i < timestep; i++) {
+        // FIXME: this may be incorrect for variables that are not written at every timestep into the file
+        block_start_idx += q->varinfo->nblocks[i];
+    }
+    
+    // sanity check
+    assert (q->varinfo);
+    assert (q->varinfo->blockinfo);
+    assert (q->varinfo->statistics);
+    assert (q->varinfo->statistics->blocks);
+    assert (nblocks == q->varinfo->nblocks[timestep]);
+
+    // speed up for special case when selection is a single writeblock
+    int loop_start = 0;
+    int loop_end = nblocks;
+    if (q->sel && q->sel->type == ADIOS_SELECTION_WRITEBLOCK) 
+    {
+        int index = (q->sel->u.block.is_absolute_index ? 
+                     q->sel->u.block.index - block_start_idx :
+                     q->sel->u.block.index);
+        assert (index > 0);
+        assert (index < nblocks);
+        memset (blocks, 0, nblocks);
+        blocks [ index ] = 1;
+        loop_start = index;
+        loop_end = index+1;
+    }
+
+    void * pred_val = string_to_value (q->predicateValue, q->varinfo->type);
+
+    for (i=loop_start; i < loop_end; i++) 
+    {    
+        if (blocks[i] && q->sel && *sel != q->sel)
+        {
+            // if selection is different from previously used selection (in the query tree), then we
+            // have to do boundary checks again here
+            if (q->sel->type == ADIOS_SELECTION_BOUNDINGBOX) 
+            { 
+                if (q->varinfo->global) 
+                {
+                    ADIOS_SELECTION_BOUNDINGBOX_STRUCT bb = q->sel->u.bb;
+                    uint64_t *pg_start = q->varinfo->blockinfo[i+block_start_idx].start;
+                    uint64_t *pg_count = q->varinfo->blockinfo[i+block_start_idx].count;
+                    int k;
+                    for (k = 0; k < bb.ndim; k++) {
+                        if (bb.start[k]+bb.count[k] <= pg_start[k] ||
+                            pg_start[k]+pg_count[k] <= bb.start[k] )
+                            blocks[i] = 0;
+                    }
+                } 
+                else
+                { // what do we do for non-global arrays?
+                }
+            }
+            /* see speed up above 
+            else if (q->sel->type == ADIOS_SELECTION_WRITEBLOCK) 
+            {
+                int index = (q->sel->u.block.is_absolute_index ? 
+                        q->sel->u.block.index - block_start_idx :
+                        q->sel->u.block.index);
+                if (i != index)
+                    blocks[i] = 0;
+            }*/
+        }
+
+        if (blocks[i])  // block is still in boundary
+        {
+            // check the formula finally
+            switch (q->predicateOp) 
+            {
+                case ADIOS_LT: 
+                    //blocks[i] = (v > q->varinfo->statistics->blocks->mins[i+block_start_idx]);
+                    blocks[i] = compare_values (pred_val, ADIOS_GT, q->varinfo->statistics->blocks->mins[i+block_start_idx], q->varinfo->type);
+                    break;
+                case ADIOS_LTEQ:
+                    //blocks[i] = (v >= q->varinfo->statistics->blocks->mins[i+block_start_idx]);
+                    blocks[i] = compare_values (pred_val, ADIOS_GTEQ, q->varinfo->statistics->blocks->mins[i+block_start_idx], q->varinfo->type);
+                    break;
+                case ADIOS_GT:
+                    //blocks[i] = (v < q->varinfo->statistics->blocks->maxs[i+block_start_idx]);
+                    blocks[i] = compare_values (pred_val, ADIOS_LT, q->varinfo->statistics->blocks->maxs[i+block_start_idx], q->varinfo->type);
+                    break;
+                case ADIOS_GTEQ:
+                    //blocks[i] = (v <= q->varinfo->statistics->blocks->maxs[i+block_start_idx]);
+                    blocks[i] = compare_values (pred_val, ADIOS_LTEQ, q->varinfo->statistics->blocks->maxs[i+block_start_idx], q->varinfo->type);
+                    break;
+                case ADIOS_EQ:
+                    // we MAY have a match in block if the predicate value falls inside of the min..max range
+                    //blocks[i] = (v >= q->varinfo->statistics->blocks->mins[i+block_start_idx] &&
+                    //             v <= q->varinfo->statistics->blocks->maxs[i+block_start_idx]); 
+                    blocks[i] = compare_values (pred_val, ADIOS_GTEQ, q->varinfo->statistics->blocks->mins[i+block_start_idx], q->varinfo->type);
+                    blocks[i] = compare_values (pred_val, ADIOS_LTEQ, q->varinfo->statistics->blocks->maxs[i+block_start_idx], q->varinfo->type);
+                    break;
+                case ADIOS_NE:
+                    // we only know for sure that the block is not a match if all elements
+                    // are the same (min=max) and the predicate value is that same value
+                    //blocks[i] = !(v == q->varinfo->statistics->blocks->mins[i+block_start_idx] &&
+                    //              v == q->varinfo->statistics->blocks->maxs[i+block_start_idx]); 
+                    blocks[i] = !(compare_values (pred_val, ADIOS_EQ, q->varinfo->statistics->blocks->mins[i+block_start_idx], q->varinfo->type) &&
+                                  compare_values (pred_val, ADIOS_EQ, q->varinfo->statistics->blocks->maxs[i+block_start_idx], q->varinfo->type));
+                    break;
+            }
+        }
+
+        if (blocks[i])  // block is still matching after evaluation
+        {
+            nmatches++;
+        }
+    }
+
+
+    // update selection going out and up the tree
+    *sel = q->sel;
+    return nmatches;
+}
+
+/*
+ * Evaluate the (sub)query on blocks that are still in play (blocks_in)
+ * Return new blocks flag array that still match after evaluating the subquery.
+ * Also speed up a bit by passing the selection from the previous query node, and if it's
+ * the same as for the current query node then boundary check is skipped.
+ * At top level, it should be called with a full-1 blocks flag array, as the routine filters out
+ * non matches. 
+ * At top level, it should be called with a <pointer to a NULL ADIOS_SELECTION*> so that *sel==NULL.
+ * At top level return, the number of matches is returned and blocks contain the flags sporadically.
+ */
+static int minmax_process_rec(ADIOS_QUERY* q, int timestep, int nblocks, char * blocks, ADIOS_SELECTION **sel, bool estimate) 
+{
+    int nmatches = 0;
+    if (q->left == NULL && q->right == NULL) {
+        //LEAF NODE: evaluate this
+        nmatches = minmax_evaluate_node (q, timestep, nblocks, blocks, sel, estimate);
+        return nmatches;
+    }
+
+    // combine nodes: evaluate subqueries
+    char *rightblocks = blocks;
+    int rn, ln;
+    if (q->left) {
+        ln = minmax_process_rec((ADIOS_QUERY*) q->left, timestep, nblocks, blocks, sel, estimate);
+    } else {
+        ln = nblocks; // fake value to pass the condition in the right side (AND & 0 skips right side)
+    }
+
+    if (q->right) {
+
+        if (q->combineOp == ADIOS_QUERY_OP_OR) {
+            // OR operation needs a separate flag array for the right side subquery
+            rightblocks = malloc (nblocks * sizeof(char));
+            memset (rightblocks, 1, nblocks);
+        } else {
+            // AND operation simply passes the result flag array from left to right
+            rightblocks = blocks;
+        }
+
+        if ( q->combineOp != ADIOS_QUERY_OP_AND || ln > 0) {
+            rn = minmax_process_rec((ADIOS_QUERY*) q->right, timestep, nblocks, rightblocks, sel, estimate);
+        } else {
+            rn = 0; // skip evaluating right side since left produced already zero results
+        }
+
+        if (q->combineOp == ADIOS_QUERY_OP_OR) {
+            // OR operation needs to merge the two arrays with OR 
+            int i;
+            nmatches = 0;
+            for (i = 0; i < nblocks; i++) {
+                blocks[i] |= rightblocks[i];
+                if (blocks[i])
+                    nmatches++;
+            }
+            free (rightblocks);
+        } else {
+            nmatches = rn;
+        }
+    } else {
+        nmatches = ln;
+    }
+
+    return nmatches;
+}
+
+
+/*
+ * Evaluate the expression tree on each writeblock that intersects with the query's selection(s)
+ * Uses a flag array to signal which blocks are still in play during evaluation.
+ * Each node in the expression tree is visited once and it evaluates the subquery on all blocks still playing.
+ * Return the number of matches  (and queryInternal->blocks will have the flags for matching blocks)
+ */
+static int minmax_process(ADIOS_QUERY* q, int timestep, bool estimate) 
+{
+    /* At this point, it is ensured that every subquery refers to the same number of writeblocks */
+    int nblocks = ((MINMAX_INTERNAL*)(q->queryInternal))->nblocks;
+    char *blocks = ((MINMAX_INTERNAL*)(q->queryInternal))->blocks;
+
+    // set every block as match originally
+    memset (blocks, 1, nblocks); 
+
+    ADIOS_SELECTION *nullsel = NULL;
+    int nmatches = minmax_process_rec(q, timestep, nblocks, blocks, &nullsel, estimate); 
+    
+    return nmatches;
+}
+
+
+static ADIOS_SELECTION * build_results (ADIOS_QUERY *q, uint64_t retrieval_size, ADIOS_SELECTION* outputBoundry)
+{
+    int nblocks = INTERNAL(q)->nblocks;
+    char *blocks = INTERNAL(q)->blocks;
+
+    /* make the result list of selections from the matching block IDs */
+    ADIOS_SELECTION *result = (ADIOS_SELECTION *) calloc (retrieval_size, sizeof(ADIOS_SELECTION));
+    ADIOS_SELECTION *r = result;
+
+    int n = retrieval_size;
+    int i = INTERNAL(q)->current_blockid;
+    assert (i < nblocks);
+    for (; i < nblocks; i++)
+    {
+        if (blocks[i])
+        {
+            // create a selection in result[j] 
+            r->type = ADIOS_SELECTION_WRITEBLOCK;
+            r->u.block.index = i;
+            r->u.block.is_absolute_index = 1;
+            r++;
+            n--;
+        }
+        if (n==0) 
+            break;
+    }
+    assert (i <= nblocks);
+    INTERNAL(q)->current_blockid = i;
+    return result;    
+}
+
+
+static int selections_are_minmax_compatible (ADIOS_SELECTION *sel1, ADIOS_SELECTION *sel2)
+{
+    if (sel1==sel2)
+        return 1;
+    if (!sel1 && sel2)
+        return 0;
+    if (sel1 && !sel2)
+        return 0;
+    if (sel1->type == ADIOS_SELECTION_BOUNDINGBOX)
+    {
+        // the number of dimensions and the sizes should match
+        if (sel1->u.bb.ndim != sel2->u.bb.ndim)
+            return 0;
+        int i=0;
+        for (i = 0; i < sel1->u.bb.ndim; i++) {
+            if (sel1->u.bb.count[i] != sel2->u.bb.count[i]) {
+                return 0;
+            }
+        }
+    }
+    else if (sel1->type == ADIOS_SELECTION_WRITEBLOCK) 
+    {
+        // the writeblock ID must be the same
+        if (sel1->u.block.index != sel2->u.block.index)
+            return 0;
+    }
+    else 
+    {
+        return 0;
+    }
+    return 1;
+}
+
+/* Determine if the query can be evaluated by traversing the tree. 
+   As a side effect, all statistics and blockinfo will be retrieved for all variables
+*/
+static int can_evaluate(ADIOS_QUERY* q, int timestep, ADIOS_SELECTION **sel, int *nblocks)
+{
+    int supported = 0;
+    if (!q->left && !q->right) {
+        // If this is a query leaf node, we support MINMAX query iff
+        // - the selection is bounding box or writeblock or NULL
+        // - the variable has min/max statistics
+        if (!q->sel || 
+            q->sel->type == ADIOS_SELECTION_BOUNDINGBOX || 
+            q->sel->type == ADIOS_SELECTION_WRITEBLOCK
+           ) 
+        {
+            if (!q->varinfo)
+                q->varinfo = common_read_inq_var (q->file, q->varName); // get per block statistics
+            if (q->varinfo && !q->varinfo->statistics)
+                common_read_inq_var_stat (q->file, q->varinfo, 0, 1); // get per block statistics
+            if (q->varinfo && !q->varinfo->blockinfo)
+                common_read_inq_var_blockinfo (q->file, q->varinfo); // get per block dimensions
+            if (q->varinfo  && q->varinfo->statistics  && q->varinfo->statistics->blocks && q->varinfo->blockinfo) {
+                supported = 1;
+                if (q->sel && q->sel->type == ADIOS_SELECTION_BOUNDINGBOX && q->sel->u.bb.ndim != q->varinfo->ndim) {
+                    supported = 0;
+                }
+                if (q->varinfo->type == adios_complex || q->varinfo->type == adios_double_complex ||
+                    q->varinfo->type == adios_string || q->varinfo->type == adios_string_array) {
+                    supported = 0;
+                }
+            }
+            *nblocks = q->varinfo->nblocks[timestep];
+        } else {
+            *nblocks = 0;
+        }
+        *sel = q->sel;
+    } else {
+        // Else, this is an internal node, and we support MINMAX query if
+        // - ALL descendent nodes support MINMAX
+        // - have the same number of writeblocks
+        // - the selections are compatible
+        int lsupported=1, rsupported=1;
+        int l_nblocks, r_nblocks;
+        ADIOS_SELECTION *lsel, *rsel;
+        if (q->left) {
+            lsupported = can_evaluate((ADIOS_QUERY *)q->left, timestep, &lsel, &l_nblocks);
+            *nblocks = l_nblocks;
+            *sel = lsel;
+        }
+        if (q->right) {
+            rsupported = can_evaluate((ADIOS_QUERY *)q->right, timestep, &rsel, &r_nblocks);
+            *nblocks = r_nblocks;
+            *sel = rsel;
+        }
+        supported = lsupported && rsupported;
+        if (supported && q->left && q->right) {
+            supported = l_nblocks==r_nblocks;
+            if (supported)
+                supported = selections_are_minmax_compatible (lsel, rsel);
+        }
+    }
+    return supported;
+}
+
+// Do the evaluation first time for this timestep
+// Return the total number of results available, -1 on error
+static int do_evaluate_now (ADIOS_QUERY *q, int timestep)
+{
+    // run the can_evaluate routine to get the statistics and block info
+    ADIOS_SELECTION *qsel;
+    int nblocks;
+    int supported = can_evaluate (q, timestep, &qsel, &nblocks);
+    if (!supported) {
+        adios_error (err_incompatible_queries, 
+                "%s: the query is not compatible with the minmax query method\n", __func__);
+        return -1;
+    }
+
+    free_internal (q);
+    create_internal (q);
+    internal_alloc_blocks (q, nblocks);
+    INTERNAL(q)->current_blockid = 0;
+    INTERNAL(q)->rightmostsel = qsel;
+    q->resultsReadSoFar = 0;
+    INTERNAL(q)->is_outputBoundary_set = 0;
+
+    // evaluate query for ALL blocks, fill q->queryInternal->blocks bool array 
+    q->maxResultsDesired =  minmax_process(q, timestep, false);
+    return q->maxResultsDesired;
+} 
+
+/*====================================================================================*/
+/*                                  Public functions                                  
+*/
+
+int adios_query_minmax_can_evaluate(ADIOS_QUERY* q)
+{
+    // we can evaluate only iff
+    // - every query item is on a compatible selection
+    // - that selection is NULL, bounding box or writeblock
+    // - the variable in each query item has min/max statistics and
+    // - the number of writeblocks of each variable is the same
+    int supported = 0;
+    ADIOS_SELECTION *sel;
+    int nblocks;
+    supported = can_evaluate (q, 0, &sel, &nblocks);
+    return supported;
+}
+
+
+int64_t adios_query_minmax_estimate(ADIOS_QUERY* q, int timestep) 
+{
+    const int absoluteTimestep = adios_get_actual_timestep(q, timestep);
+    // timestep is always 0 for streaming; the absolute timestep for files
+    // absoluteTimestep makes it possible to realize we have a new step
+    // in a stream here
+
+    int retval = do_evaluate_now (q, timestep);
+    if (retval > -1) {
+        // this is treated as the first call to evaluate the query for a new timestep
+        // so no need to evaluate again when the evaluate function is called for the same timestep
+        q->onTimeStep = absoluteTimestep;
+    }
+    return retval;
+}
+
+
+void adios_query_minmax_evaluate(ADIOS_QUERY* q,
+                   int timestep,
+                   uint64_t batchSize, 
+                   ADIOS_SELECTION* outputBoundry,
+                   ADIOS_QUERY_RESULT * queryResult)
+{
+#ifdef BREAKDOWN
+    double tStart = 0, tEnd = 0;
+    tStart = dclock();
+#endif
+    const int absoluteTimestep = adios_get_actual_timestep(q, timestep);
+    // timestep is always 0 for streaming; the absolute timestep for files
+    // absoluteTimestep makes it possible to realize we have a new step
+    // in a stream here
+
+
+    if (q->onTimeStep != absoluteTimestep) 
+    { 
+        // this is the first call to evaluate the query for a new timestep
+        /*
+        if (qsel != outputBoundry) {
+            adios_error (err_incompatible_queries, 
+                    "%s: the output boundary selection must be the same as for the query itself "
+                    "when using the minmax query method\n", __func__);
+            queryResult->status = ADIOS_QUERY_RESULT_ERROR;
+            return;
+        }
+         */
+
+        int nselections = do_evaluate_now (q, timestep);
+        if (nselections == -1) {
+            queryResult->status = ADIOS_QUERY_RESULT_ERROR;
+            return;
+        }
+        q->onTimeStep = absoluteTimestep;
+        INTERNAL(q)->outputBoundary = outputBoundry;
+        INTERNAL(q)->is_outputBoundary_set = 1;
+    } 
+    else 
+    { 
+        assert (q->queryInternal);
+        if (!INTERNAL(q)->is_outputBoundary_set)
+        {
+            INTERNAL(q)->outputBoundary = outputBoundry;
+        }
+        else if (((MINMAX_INTERNAL*)(q->queryInternal))->outputBoundary != outputBoundry)
+        {
+            adios_error (err_incompatible_queries,
+                    "%s: follow-up query evaluation calls must use the same outputBoundary selection"
+                    "as the first evaluation call\n", __func__);
+            queryResult->status = ADIOS_QUERY_RESULT_ERROR;
+            return;
+        }
+    }
+
+    /* FIXME: This check ought to be done before evaluating the query at the first call, but
+     * internal->rightmostsel is only set after can_evaluate() was executed in do_evaluate_now().
+     */
+    if (!selections_are_minmax_compatible (INTERNAL(q)->rightmostsel, INTERNAL(q)->outputBoundary)) {
+        adios_error (err_incompatible_queries,
+                "%s: the outputBoundary selection is not compatible with the "
+                "selections used in the query conditions\n", __func__);
+        return;
+    }
+
+    // calculate how many results we will return at this time
+    uint64_t retrievalSize = q->maxResultsDesired - q->resultsReadSoFar;
+    if (retrievalSize <= 0) {
+        queryResult->nselections = 0;
+        queryResult->selections = NULL;
+        queryResult->status = ADIOS_QUERY_NO_MORE_RESULTS;
+        return;
+    }
+    if (retrievalSize > batchSize) {
+        retrievalSize = batchSize;
+    }
+
+    queryResult->selections = build_results (q, retrievalSize, outputBoundry);
+    queryResult->nselections = retrievalSize;
+    queryResult->npoints = 0;
+
+    q->resultsReadSoFar += retrievalSize;
+
+#ifdef BREAKDOWN
+    tEnd= dclock();
+    printf("time [minmax plugin] : %f \n", tEnd - tStart);
+#endif
+
+    if (q->resultsReadSoFar < q->maxResultsDesired)
+        queryResult->status = ADIOS_QUERY_HAS_MORE_RESULTS;
+    else
+        queryResult->status = ADIOS_QUERY_NO_MORE_RESULTS;
+    return;
+}
+
+
+int adios_query_minmax_free(ADIOS_QUERY* query) {
+
+    if (query == NULL) 
+        return 0;
+    free_internal (query);
+    /*
+       Do not free the tree in a bottom-to-up manner
+       because every query piece is supposed to be freed
+       by the user one by one
+    */
+    /*
+    if (query->left == NULL && query->right == NULL) {
+        return 1;
+    } else if  (query->right) {
+        return adios_query_minmax_free(query->right);
+    } else if (query->left) {
+        return adios_query_minmax_free(query->left);
+    }
+    */
+    return 1;
+}
+
+void adios_query_minmax_finalize() { /* there is nothing to finalize */ }
+
+
diff --git a/src/query/query_utils.c b/src/query/query_utils.c
index 760215e..63a0b54 100644
--- a/src/query/query_utils.c
+++ b/src/query/query_utils.c
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/stat.h>
+#include <sys/time.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <assert.h>
diff --git a/src/read/read_bp.c b/src/read/read_bp.c
index b04e650..982d7ba 100644
--- a/src/read/read_bp.c
+++ b/src/read/read_bp.c
@@ -25,6 +25,9 @@
 #include "core/futils.h"
 #include "core/common_read.h"
 #include "core/adios_logger.h"
+#include "core/a2sel.h"
+#include "core/adios_clock.h"
+#include "core/adios_selection_util.h"
 
 #include "core/transforms/adios_transforms_transinfo.h"
 #include "core/transforms/adios_transforms_common.h" // NCSU ALACRITY-ADIOS
@@ -37,8 +40,9 @@ static int chunk_buffer_size = 1024*1024*16;
 static int poll_interval_msec = 10000; // 10 secs by default
 static int show_hidden_attrs = 0; // don't show hidden attr by default
 
-static ADIOS_VARCHUNK * read_var_bb (const ADIOS_FILE * fp, read_request * r);
-static ADIOS_VARCHUNK * read_var_wb (const ADIOS_FILE * fp, read_request * r);
+static ADIOS_VARCHUNK * read_var_bb  (const ADIOS_FILE * fp, read_request * r);
+static ADIOS_VARCHUNK * read_var_pts (const ADIOS_FILE * fp, read_request * r);
+static ADIOS_VARCHUNK * read_var_wb  (const ADIOS_FILE * fp, read_request * r);
 
 static int map_req_varid (const ADIOS_FILE * fp, int varid);
 static int adios_wbidx_to_pgidx (const ADIOS_FILE * fp, read_request * r, int step_offset);
@@ -242,14 +246,14 @@ static void release_step (ADIOS_FILE *fp)
 
     if (fp->var_namelist)
     {
-        free_namelist (fp->var_namelist, fp->nvars);
+        a2s_free_namelist (fp->var_namelist, fp->nvars);
         fp->var_namelist = 0;
         fp->nvars = 0;
     }
 
     if (fp->attr_namelist)
     {
-        free_namelist (fp->attr_namelist, fp->nattrs);
+        a2s_free_namelist (fp->attr_namelist, fp->nattrs);
         fp->attr_namelist = 0;
         fp->nattrs = 0;
     }
@@ -329,7 +333,7 @@ void build_ADIOS_FILE_struct (ADIOS_FILE * fp, BP_FILE * fh)
 static int get_new_step (ADIOS_FILE * fp, const char * fname, MPI_Comm comm, int last_tidx, float timeout_sec)
 {
     BP_FILE * new_fh;
-    double t1 = adios_gettime();
+    double t1 = adios_gettime_double();
 
     log_debug ("enter get_new_step\n");
     /* First check if the file has been updated with more steps. */
@@ -374,7 +378,7 @@ static int get_new_step (ADIOS_FILE * fp, const char * fname, MPI_Comm comm, int
             {
                 stay_in_poll_loop = 1;
             }
-            else if (timeout_sec > 0.0 && (adios_gettime () - t1 > timeout_sec))
+            else if (timeout_sec > 0.0 && (adios_gettime_double () - t1 > timeout_sec))
             {
                 log_debug ("Time is out in get_new_step()\n");
                 stay_in_poll_loop = 0;
@@ -393,83 +397,233 @@ static int get_new_step (ADIOS_FILE * fp, const char * fname, MPI_Comm comm, int
     return found_stream;
 }
 
-/* This routine processes a read request and returns data in ADIOS_VARCHUNK.
-   If the selection type is not bounding box, convert it. The basic file reading
-   functionality is implemented in read_var_bb() routine.
-*/
-static ADIOS_VARCHUNK * read_var (const ADIOS_FILE * fp, read_request * r)
+
+//
+// returns # of elements in a bounding box' range (not size in bytes!)
+//
+static uint64_t adios_get_nelements_of_box (int ndim, uint64_t* start, uint64_t* count)
 {
-    BP_PROC * p = GET_BP_PROC (fp);
-    BP_FILE * fh = GET_BP_FILE (fp);
+    int k=0;
+    uint64_t bbsize = 1;
+    for (k=0; k<ndim; k++) {
+        bbsize *= count[k];
+    }
+    return bbsize;
+}
 
-    int size_of_type;
-    struct adios_index_var_struct_v1 * v;
-    uint64_t i;
-    read_request * nr;
-    ADIOS_SELECTION * sel, * nsel;
-    ADIOS_VARCHUNK * chunk;
 
-    log_debug ("read_var()\n");
-    sel = r->sel;
-    v = bp_find_var_byid (fh, r->varid);
+//
+// calculate the spanning N-dim bounding box for a list of N-dim points
+//
+static void mGetPointlistSpan(ADIOS_SELECTION_POINTS_STRUCT* pts, uint64_t* start, uint64_t* count)
+{
+    uint64_t i=0, idx=0;
+    int d=0;
+    uint64_t max[pts->ndim];
+    for (i = 0; i < pts->npoints; i++)
+    {
+        idx = i * pts->ndim;
+        //printf("%ldth = [%ld, %ld, %ld] \n", i, pts->points[idx], pts->points[idx+1], pts->points[idx+2]);
+        for (d = 0; d < pts->ndim; d++) {
+            if (i == 0) {
+                start[d] = pts->points[d]; max[d] = pts->points[d];
+                continue;
+            }
 
-    switch (sel->type)
+            uint64_t curr = pts->points[idx+d];
+            if ((start[d] > curr)) {
+                start[d] = curr;
+            }
+            if (max[d] < curr) {
+                max[d] = curr;
+            }
+        }
+        //printf("start[0]=%ld  max[0]=%ld \n", start[0], max[0]);
+    }
+    for (d = 0; d < pts->ndim; d++) {
+        count[d] = max[d] - start[d] + 1;
+    }
+    return;
+}
+
+/*
+ *  Calculate the spanning N-dim bounding box for a list of 1-dim points in an N-dim box.
+ *  Simply take the smallest and largest offset, then make a bounding box that fits all of them
+ *  Note that it is not giving the smallest container box. It can only decrease the box in the
+ *  slowest dimension without converting all points to N-dimension.
+ */
+static void mGetPointlistSpan1D(ADIOS_SELECTION_POINTS_STRUCT* pts, int ndim,
+        uint64_t* boxstart, uint64_t* boxcount,
+        uint64_t* spanstart, uint64_t* spancount)
+{
+    uint64_t i=0;
+    int d=0;
+    uint64_t span[2]; // min and max offsets
+    span[0] = 0xFFFFFFFFFFFFFFFF; // 18446744073709551615, the min offset
+    span[1] = 0; // the max offset
+
+    // find min and max offsets
+    uint64_t *pt = pts->points;
+    for (i = 0; i < pts->npoints; i++)
     {
-        case ADIOS_SELECTION_BOUNDINGBOX:
-            chunk = read_var_bb (fp, r);
-            break;
-        case ADIOS_SELECTION_POINTS:
-            /* The idea is we convert a point selection to bounding box section. */
-            size_of_type = bp_get_type_size (v->type, v->characteristics [0].value);
-            nr = (read_request *) malloc (sizeof (read_request));
-            assert (nr);
+        if (*pt < span[0])
+            span[0] = *pt;
+        if (*pt > span[1])
+            span[1] = *pt;
+        pt++;
+    }
 
-            nr->varid = r->varid;
-            nr->from_steps = r->from_steps;
-            nr->nsteps = r->nsteps;
-            nr->data = r->data;
-            nr->datasize  = size_of_type;
-            nr->priv = r->priv;
+    // convert them to N-dim
+    uint64_t spanND[2*ndim];
+    a2sel_points_1DtoND_box (2, span, ndim, boxstart, boxcount, 1, spanND);
 
-            nsel = (ADIOS_SELECTION *) malloc (sizeof (ADIOS_SELECTION));
-            nr->sel = nsel;
-            assert (nsel);
+    // correct sub-dimensions (some other points may be outside the naive span over two points
+    spanstart[0] = spanND[0];
+    spancount[0] = spanND[ndim]-spanND[0]+1;
+    for (d = 1; d < ndim; d++) {
+        spanstart[d] = boxstart[d];
+        spancount[d] = boxcount[d];
+    }
+    return;
+}
 
-            nsel->type = ADIOS_SELECTION_BOUNDINGBOX;
-            nsel->u.bb.ndim = sel->u.points.ndim;
-            nsel->u.bb.start = (uint64_t *) malloc (nsel->u.bb.ndim * 8);
-            nsel->u.bb.count = (uint64_t *) malloc (nsel->u.bb.ndim * 8);
-            assert (nsel->u.bb.start && nsel->u.bb.count);
+#if 0
+//
+// returns # of segments to divide for a bounding box' range
+//
+static int mGetRange(int ndim, uint64_t* start, uint64_t* count)
+{
+    int k=0;
+    uint64_t bbsize = 1;
+    for (k=0; k<ndim; k++) {
+        bbsize *= count[k] - start[k]+1;
+        log_debug ("... bb at %d dimention: [%" PRIu64 ", %" PRIu64 "]\n", k, count[k], start[k]);
+    }
 
-            for (i = 0; i < nsel->u.bb.ndim; i++)
-            {
-                nsel->u.bb.count[i] = 1;
-            }
+    const uint64_t BBSIZELIMIT = 1048576; /* 1M elements, 4-8MB data usually to read at once */
+    uint64_t nBB = bbsize/BBSIZELIMIT ;
 
-            for (i = 0; i < sel->u.points.npoints; i++)
-            {
-                memcpy (nsel->u.bb.start, sel->u.points.points + i * sel->u.points.ndim, sel->u.points.ndim * 8);
+    if (nBB * BBSIZELIMIT != bbsize) {
+        nBB += 1;
+    }
+
+    log_debug ("... nBB=%" PRIu64 "\n", nBB);
+    //return bbsize;
+    return (int) nBB;
+}
+#endif
+
+/*
+ * Pick the points of a point list from a contiguous array of data.
+ * The point coordinates are relative to the original 'bndim' dimensional container
+ * while data is in a sub-box of the original container:
+ * contstart[] should be the starting offsets of  the original container (points are relative to this)
+ * contcount[] should be the size of the original container
+ * nelems is the sum of elements (= PROD(count[i], i=0,...,bndim-1))
+ * substart[] should be the starting offsets of the sub-box in the original container (data is contained in this, with nelems values)
+ * subcount[] should be the size of the sub-box
+ * src is the data array containing data of the sub-box
+ * dest is the output data array for the points
+ * It returns the number of points that fall inside the sub-box, i.e. the number of copied elements
+ */
+static uint64_t pick_points_from_boundingbox (ADIOS_SELECTION *sel, int size_of_type,
+                                              int bndim, uint64_t *contstart, uint64_t *contcount,
+                                              uint64_t nelems, uint64_t *substart, uint64_t *subcount,
+                                              char *src, char *dest)
+{
+    uint64_t npoints = 0;
+    uint64_t j;
+    int d;
+    assert (sel->type == ADIOS_SELECTION_POINTS);
+    int pndim = sel->u.points.ndim;
+    assert (bndim==pndim || pndim==1);
+
+    uint64_t subproduct[bndim+1]; // number of elements in subcount
+    subproduct[bndim] = 1;
+    for (d = bndim-1; d >= 0; d--) {
+        subproduct[d] = subproduct[d+1] * subcount[d];
+    }
+    assert (nelems == subproduct[0]);
+
+    uint64_t suboffs[bndim]; // N-D offsets of starting points of sub-box from the starting point of original container
+    for (d = 0; d < bndim; d++) {
+        assert (substart[d] >= contstart[d]);
+        suboffs[d] = substart[d] - contstart[d];
+    }
+
+    uint64_t suboffset = 0; // 1D offset of starting point of sub-box from the starting point of original container
+    for (d = bndim-1; d >= 0; d--) {
+        suboffset += suboffs[d] * subproduct[d+1];
+    }
 
-                chunk = read_var_bb (fp, nr);
-                nr->data = (char *) nr->data + size_of_type; // NCSU ALACRITY-ADIOS - Potential bug here; what if nsteps > 1? Shouldn't the buffer advance by size_of_type * nsteps?
+    if (pndim == 1)
+    {
+        // 1D local points in N-D block
+        uint64_t *pt = sel->u.points.points;
 
-                common_read_free_chunk (chunk);
+        for (j = 0; j < sel->u.points.npoints; j++)
+        {
+            if (suboffset <= *pt && *pt-suboffset < nelems)
+            {
+                memcpy (dest,
+                        src + (*pt-suboffset)*size_of_type,
+                        size_of_type);
+                npoints++;
+                dest += size_of_type;
+            }
+            pt++;
+        }
+    }
+    else
+    {
+        uint64_t *pt = sel->u.points.points; // first N-dim point in list
+        for (j = 0; j < sel->u.points.npoints; j++)
+        {
+            int64_t idxInBB = 0;
+            for (d = 0; d < bndim; d++)
+            {
+                if (suboffs[d] <= pt[d] && pt[d]-suboffs[d] < subcount[d])
+                {
+                    idxInBB += (pt[d] - suboffs[d]) * subproduct[d+1];
+                } else {
+                    // this point is outside of the sub-box
+                    idxInBB = -1;
+                    break;
+                }
             }
 
-            free_selection (nsel);
-            free (nr);
+            if (idxInBB >= 0)
+            {
+                memcpy(dest, src+idxInBB*size_of_type, size_of_type);
+                //printf(" checking: %.3f vs %.3f \n", ((double*)(nr->data))[idxInBB], ((double*)(r->data))[i]);
+                //printf("checking: [%ld th bb]  [point %ld],  idxInBB=%ld value %.3f vs %.3f\n",j, i, idxInBB, ((double*)(nr->data))[idxInBB], ((double*)(r->data))[step]);
+                npoints++;
+                dest += size_of_type; // next slot for data in output data array
+            }
+            pt += bndim; // next N-dim point in list
+        }
+    }
+    return npoints;
+}
 
-            chunk = (ADIOS_VARCHUNK *) malloc (sizeof (ADIOS_VARCHUNK));
-            assert (chunk);
+/* This routine processes a read request and returns data in ADIOS_VARCHUNK.
+   If the selection type is not bounding box, convert it. The basic file reading
+   functionality is implemented in read_var_bb() routine.
+*/
+static ADIOS_VARCHUNK * read_var (const ADIOS_FILE * fp, read_request * r)
+{
+    log_debug ("read_var()\n");
 
-            chunk->varid = r->varid;
-            chunk->type = v->type;
-            // NCSU ALACRITY-ADIOS - Added timestep information into varchunks
-            chunk->from_steps = r->from_steps;
-            chunk->nsteps = r->nsteps;
-            chunk->sel = copy_selection (r->sel);
-            chunk->data = r->data;
+    ADIOS_VARCHUNK * chunk = NULL;
+    ADIOS_SELECTION * sel = r->sel;
 
+    switch (sel->type)
+    {
+        case ADIOS_SELECTION_BOUNDINGBOX:
+            chunk = read_var_bb (fp, r);
+            break;
+        case ADIOS_SELECTION_POINTS:
+            chunk = read_var_pts (fp, r);
             break;
         case ADIOS_SELECTION_WRITEBLOCK:
             chunk = read_var_wb (fp, r);
@@ -695,8 +849,8 @@ static ADIOS_VARCHUNK * read_var_bb (const ADIOS_FILE *fp, read_request * r)
                       || (start[j] + count[j] > gdims[j]))
                     {
                         adios_error ( err_out_of_bound, "Error: Variable (id=%d) out of bound 1("
-                            "the data in dimension %d to read is %llu elements from index %llu"
-                            " but the actual data is [0,%llu])\n",
+                            "the data in dimension %d to read is %" PRIu64 " elements from index %" PRIu64
+                            " but the actual data is [0,%" PRId64 "])\n",
                             r->varid, j + 1, count[j], start[j], gdims[j] - 1);
                         return 0;
                     }
@@ -926,7 +1080,7 @@ static ADIOS_VARCHUNK * read_var_bb (const ADIOS_FILE *fp, read_request * r)
                         dset_offset = offset_in_dset[i] + dset_offset * ldims[i];
                     }
 
-                    copy_data (data
+                    adios_util_copy_data (data
                               ,fh->b->buff + fh->b->offset
                               ,0
                               ,hole_break
@@ -970,11 +1124,380 @@ static ADIOS_VARCHUNK * read_var_bb (const ADIOS_FILE *fp, read_request * r)
     // NCSU ALACRITY-ADIOS - Added timestep information into varchunks
     chunk->from_steps = r->from_steps;
     chunk->nsteps = r->nsteps;
-    chunk->sel = copy_selection (r->sel);
+    chunk->sel = a2sel_copy (r->sel);
     chunk->data = r->data;
     return chunk;
 }
 
+/* This routine reads in data for point selection.
+*/
+static ADIOS_VARCHUNK * read_var_pts (const ADIOS_FILE *fp, read_request * r)
+{
+    BP_PROC * p = GET_BP_PROC (fp);
+    BP_FILE * fh = GET_BP_FILE (fp);
+    int size_of_type;
+
+    uint64_t i;
+    uint64_t nerr = 0; // number of out of bound errors (points outside of subselection block)
+    ADIOS_SELECTION * sel = r->sel;
+    assert (sel->type == ADIOS_SELECTION_POINTS);
+    ADIOS_VARCHUNK * chunk = NULL;
+    int pndim = sel->u.points.ndim; // dimensionality of points
+    int bndim; // dimensionality of subselection block
+    struct adios_index_var_struct_v1 * v;
+    int step, d;
+    uint64_t zeros[32] = {0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+                          0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0};
+    // for statistics
+    uint64_t nelems_read = 0;
+    uint64_t nelems_container = 0;
+    uint64_t points_read = 0;
+    int nreads_performed = 0;
+    double t_span = 0.0, t_read = 0.0, t_pick = 0.0;
+    double te, ttemp;
+    double tb = MPI_Wtime();
+
+
+    v = bp_find_var_byid (fh, r->varid);
+    size_of_type = bp_get_type_size (v->type, v->characteristics [0].value);
+
+    /* The idea is we convert a point selection to bounding box or writeblock selection. */
+    read_request nrs;
+    read_request *nr = &nrs;
+
+    nr->varid = r->varid;
+    nr->priv = r->priv;
+
+    ADIOS_SELECTION * container = sel->u.points.container_selection;
+    if (container &&
+        container->type != ADIOS_SELECTION_WRITEBLOCK &&
+        container->type != ADIOS_SELECTION_BOUNDINGBOX)
+    {
+        log_error ("The container selection of a point selection "
+                "must be either NULL or a bounding box or a writeblock. "
+                "We will use the default global bounding box\n");
+        container = NULL;
+    }
+
+    int free_container = 0;
+    if (!container)
+    {
+        // create full bounding box as container
+        ADIOS_VARINFO * vinfo = adios_read_bp_inq_var_byid (fp, r->varid);
+        container = a2sel_boundingbox (vinfo->ndim, zeros, vinfo->dims);
+        free_container = 1;
+        sel->u.points.container_selection = container; // save the container instead of NULL to be used in pick_points_from_boundingbox
+        common_read_free_varinfo (vinfo);
+    }
+
+    char * dest = (char*)(r->data); // pointer to output buffer, will increase
+        // continuously as we pick points
+
+    if (container->type == ADIOS_SELECTION_WRITEBLOCK)
+    {
+        // Read the writeblock and then pick the points from memory
+        ADIOS_SELECTION * wbsel = container;
+        ADIOS_SELECTION_WRITEBLOCK_STRUCT *wb = &wbsel->u.block;
+        uint64_t ldims[32], gdims[32], offsets[32];
+
+        for (step = 0; step < r->nsteps; step++)
+        {
+            // Get the size of the writeblock
+            //  but first prepare fake request to call adios_wbidx_to_pgidx
+            ttemp = MPI_Wtime();
+            nr->from_steps = r->from_steps;
+            nr->nsteps = r->nsteps;
+            nr->sel = wbsel;
+            int wbidx = wb->is_absolute_index && !p->streaming ?
+                        wb->index :
+                        adios_wbidx_to_pgidx (fp, nr, step);
+
+            uint64_t nelems = 1;
+            /* get ldims for the chunk and then calculate payload size */
+            bndim = v->characteristics[wbidx].dims.count;
+            bp_get_dimension_characteristics_notime(&(v->characteristics[wbidx]), ldims, gdims, offsets, is_fortran_file (fh));
+            for (d = 0; d < bndim; d++)
+            {
+                nelems *= ldims [d];
+            }
+            t_span += MPI_Wtime() - ttemp;
+
+            // Read the writeblock
+            nr->data = malloc (nelems*size_of_type);
+            if (nr->data)
+            {
+                nr->from_steps = r->from_steps+step;
+                nr->nsteps = 1;
+                nr->datasize = nelems*size_of_type;
+                nr->sel = wbsel;
+                ttemp = MPI_Wtime();
+                ADIOS_VARCHUNK * wbchunk = read_var_wb (fp, nr);
+                t_read += MPI_Wtime() - ttemp;
+
+                // Get the points
+                ttemp = MPI_Wtime();
+                uint64_t np = pick_points_from_boundingbox (sel, size_of_type, bndim, zeros, ldims,
+                                              nelems, zeros, ldims, nr->data, dest);
+                if (np < sel->u.points.npoints) {
+                    // for each step we need to move npoints, so fill up the output array
+                    memset (dest, 0, (sel->u.points.npoints-np)*size_of_type);
+                }
+                t_pick += MPI_Wtime() - ttemp;
+                points_read += np;
+                dest += sel->u.points.npoints * size_of_type;
+
+                free (nr->data);
+                common_read_free_chunk (wbchunk);
+                nelems_read += nelems;
+                nelems_container += nelems;
+                nreads_performed++;
+            }
+            else
+            {
+                adios_error (err_no_memory, "Could not allocate memory to read %" PRIu64
+                        "bytes of writeblock %d\n", nelems_read*size_of_type, wbidx);
+                memset (dest, 0, sel->u.points.npoints * size_of_type);
+            }
+        }
+    }
+    else if (container->type == ADIOS_SELECTION_BOUNDINGBOX)
+    {
+        bndim = container->u.bb.ndim;
+        assert (pndim == bndim || pndim == 1);
+        ADIOS_SELECTION * nsel;
+        // make one or many bounding boxes around the points
+        nsel = (ADIOS_SELECTION *) malloc (sizeof (ADIOS_SELECTION));
+        assert (nsel);
+
+        nr->sel = nsel;
+        nr->from_steps = r->from_steps;
+        nr->nsteps = 1;
+        nr->datasize  = size_of_type;
+
+        nsel->type = ADIOS_SELECTION_BOUNDINGBOX;
+        nsel->u.bb.ndim = bndim;
+        nsel->u.bb.start = (uint64_t *) malloc (nsel->u.bb.ndim * sizeof(uint64_t));
+        nsel->u.bb.count = (uint64_t *) malloc (nsel->u.bb.ndim * sizeof(uint64_t));
+        assert (nsel->u.bb.start && nsel->u.bb.count);
+
+        if ((sel->u.points.npoints < 5) || (r->nsteps > 1))
+        {
+            // few points to read, read them one by one
+            for (d = 0; d < nsel->u.bb.ndim; d++)
+            {
+                nsel->u.bb.count[d] = 1;
+            }
+
+            nr->data = dest;
+
+            for (step = 0; step < r->nsteps; step++)
+            {
+                for (i = 0; i < sel->u.points.npoints; i++)
+                {
+                    ttemp = MPI_Wtime();
+                    if (pndim == bndim)
+                    {
+                        for (d = 0; d < bndim; d++)
+                        {
+                            nsel->u.bb.start[d] = sel->u.points.points[d + i*pndim] + container->u.bb.start[d];
+                        }
+                    } else
+                    {
+                        a2sel_points_1DtoND_box (1, &sel->u.points.points[i], bndim, container->u.bb.start,
+                                                                container->u.bb.count, 1, nsel->u.bb.start);
+                    }
+                    t_pick += MPI_Wtime() - ttemp;
+                    //memcpy (nsel->u.bb.start, sel->u.points.points + i * sel->u.points.ndim, sel->u.points.ndim * 8);
+                    ttemp = MPI_Wtime();
+                    chunk = read_var_bb (fp, nr);
+                    t_read += MPI_Wtime() - ttemp;
+                    nreads_performed++;
+                    nr->data = (char *) nr->data + size_of_type;
+                    common_read_free_chunk (chunk);
+                }
+                nr->from_steps++;
+                nelems_container += adios_get_nelements_of_box (bndim, container->u.bb.start, container->u.bb.count);
+                nelems_read += sel->u.points.npoints;
+            }
+            //dest += r->nsteps * sel->u.points.npoints * size_of_type; // == nr->data
+        }
+        else
+        {
+            /* Points in a Bounding Box container */
+            // Create smaller bounding boxes and read them, then pick the points in memory
+            uint64_t start[bndim], count[bndim];
+            nelems_container = adios_get_nelements_of_box (bndim, container->u.bb.start, container->u.bb.count);
+
+            ttemp = MPI_Wtime();
+            if (bndim == pndim) {
+                // get the smallest box the points fit in
+                mGetPointlistSpan(&(sel->u.points), start, count);
+                // adjust this box (relative to (0,0)) to the original box
+                for (d = 0; d < bndim; d++) {
+                    start[d] += container->u.bb.start[d];
+                }
+            } else {
+                mGetPointlistSpan1D(&(sel->u.points), bndim, container->u.bb.start, container->u.bb.count, start, count);
+                //memcpy (start, container->u.bb.start, bndim*sizeof(uint64_t));
+                //memcpy (count, container->u.bb.count, bndim*sizeof(uint64_t));
+            }
+            t_span += MPI_Wtime() - ttemp;
+
+            uint64_t nelems = adios_get_nelements_of_box (bndim, start, count);
+
+            // allocate temporary array for reading block data
+            int max_buffersize = 268435456; // 256MB max read
+            if (nelems * size_of_type < max_buffersize)
+                max_buffersize = nelems * size_of_type;
+            void * readbuf = (void *) malloc (max_buffersize);
+            while (!readbuf && max_buffersize > 1024)
+            {
+                max_buffersize = max_buffersize / 2;
+                readbuf = (void *) malloc (nelems);
+            }
+
+            log_debug ("Allocated read buffer size = %d bytes (%d elements)\n", max_buffersize, max_buffersize/size_of_type);
+
+            // we read maximum 'maxreadn' elements at once
+            uint64_t maxreadn = max_buffersize/size_of_type;
+            if (nelems < maxreadn)
+                maxreadn = nelems;
+
+            // determine strategy how to read in:
+            //  - at once
+            //  - loop over 1st dimension
+            //  - loop over 1st & 2nd dimension
+            //  - etc
+            log_debug ("Read size strategy: \n");
+            uint64_t readn[bndim];
+            uint64_t sum = (uint64_t) 1;
+            uint64_t actualreadn = (uint64_t) 1;
+            for (d=bndim-1; d>=0; d--)
+            {
+                if (sum >= maxreadn) {
+                    readn[d] = 1;
+                } else {
+                    readn[d] = maxreadn / sum; // sum is small for 4 bytes here
+                    // this may be over the max count for this dimension
+                    if (readn[d] > count[d])
+                        readn[d] = count[d];
+                }
+                log_debug ("    dim %d: read %" PRId64 " elements\n", d, readn[d]);
+                sum = sum * count[d];
+                actualreadn = actualreadn * readn[d];
+            }
+            log_debug ("    read %" PRId64 " elements at once, %" PRId64 " in total (nelems=%" PRId64 ")\n", actualreadn, sum, nelems);
+
+            uint64_t *s = nsel->u.bb.start;
+            uint64_t *c = nsel->u.bb.count; // for block reading of smaller chunks
+            // init s and c
+            memcpy (s, start, bndim * 8);
+            memcpy (c, readn, bndim * 8);
+
+            nr->data = readbuf;
+            if (nr->data)
+            {
+                // read until we have read all 'nelems' elements
+                sum = 0;
+                while (sum < nelems) {
+
+                    // how many elements do we read in next?
+                    actualreadn = 1;
+                    for (d=0; d<bndim; d++)
+                        actualreadn *= c[d];
+                    /*
+                    log_debug ("Read the next block ");
+                    PRINT_DIMS64("  start", s, tdims, j);
+                    PRINT_DIMS64("  count", c, tdims, j);
+                    log_debug ("  read %d elems\n", actualreadn);
+                     */
+
+                    ttemp = MPI_Wtime();
+                    // read a slice finally
+                    chunk = read_var_bb (fp, nr);
+                    t_read += MPI_Wtime() - ttemp;
+
+                    if (chunk) {
+                        // Get the points
+                        ttemp = MPI_Wtime();
+                        uint64_t npoints = pick_points_from_boundingbox (sel, size_of_type,
+                                bndim, container->u.bb.start, container->u.bb.count,
+                                actualreadn, s, c, nr->data, dest);
+
+                        dest += npoints * size_of_type;
+                        common_read_free_chunk (chunk);
+                        nreads_performed++;
+                        t_pick += MPI_Wtime() - ttemp;
+                    }
+
+                    // prepare for next read
+                    sum += actualreadn;
+                    int incdim=1; // largest dim should be increased
+                    for (d=bndim-1; d>=0; d--) {
+                        if (incdim) {
+                            if (s[d]+c[d] == start[d]+count[d]) {
+                                // reached the end of this dimension
+                                s[d] = start[d];
+                                c[d] = readn[d];
+                                incdim = 1; // next smaller dim can increase too
+                            } else {
+                                // move up in this dimension up to total count
+                                s[d] += readn[d];
+                                if (s[d]+c[d] >             start[d]+count[d]) {
+                                    // do not reach over the limit
+                                    c[d] = start[d]+count[d]-s[d];
+                                }
+                                incdim = 0;
+                            }
+                        }
+                    }
+                } // end while sum < nelems
+                nelems_read += nelems;
+                free(readbuf);
+            }
+            else
+            {
+                adios_error (err_no_memory, "Could not allocate memory to read %" PRIu64
+                        "bytes of a bounding box\n", maxreadn*size_of_type);
+                memset (dest, 0, sel->u.points.npoints * size_of_type);
+            }
+        }
+
+        a2sel_free (nsel);
+    }
+
+    if (nerr > 0)
+    {
+        adios_error(err_out_of_bound, "%" PRIu64 " points were out of bound of the subselection\n", nerr);
+    }
+
+    chunk = (ADIOS_VARCHUNK *) malloc (sizeof (ADIOS_VARCHUNK));
+    assert (chunk);
+
+    chunk->varid = r->varid;
+    chunk->type = v->type;
+    chunk->from_steps = r->from_steps;
+    chunk->nsteps = r->nsteps;
+    chunk->sel = a2sel_copy (r->sel);
+    chunk->data = r->data;
+
+    if (free_container)
+    {
+        a2sel_free(container);
+        sel->u.points.container_selection = NULL;
+    }
+
+    te = MPI_Wtime();
+    log_info ("Point selection reading: number of points = %" PRIu64
+            ", total container elements = %" PRIu64
+            ", number of reads = %d"
+            ", elements read from file = %" PRIu64
+            "\n       Time total = %6.2fs  span = %6.2fs  read = %6.2fs  picking = %6.2fs\n",
+            sel->u.points.npoints*r->nsteps, nelems_container, nreads_performed, nelems_read,
+            te-tb, t_span, t_read, t_pick);
+    return chunk;
+}
+
 int adios_read_bp_init_method (MPI_Comm comm, PairStruct * params)
 {
     int  max_chunk_size, pollinterval;
@@ -1042,7 +1565,7 @@ static int open_stream (ADIOS_FILE * fp, const char * fname,
     BP_FILE * fh;
     int stay_in_poll_loop = 1;
     int file_ok = 0;
-    double t1 = adios_gettime();
+    double t1 = adios_gettime_double();
 
     MPI_Comm_rank (comm, &rank);
     // We need to first check if this is a valid ADIOS-BP file. This is done by
@@ -1083,7 +1606,7 @@ static int open_stream (ADIOS_FILE * fp, const char * fname,
                             (int)(((uint64_t)poll_interval_msec * 1000000L)%1000000000L));
                         stay_in_poll_loop = 1;
                     }
-                    else if (timeout_sec > 0.0 && (adios_gettime () - t1 > timeout_sec))
+                    else if (timeout_sec > 0.0 && (adios_gettime_double () - t1 > timeout_sec))
                     {
                         stay_in_poll_loop = 0;
                     }
@@ -1274,13 +1797,13 @@ int adios_read_bp_close (ADIOS_FILE * fp)
 
     if (fp->var_namelist)
     {
-        free_namelist (fp->var_namelist, fp->nvars);
+        a2s_free_namelist (fp->var_namelist, fp->nvars);
         fp->var_namelist = 0;
     }
 
     if (fp->attr_namelist)
     {
-        free_namelist (fp->attr_namelist, fp->nattrs);
+        a2s_free_namelist (fp->attr_namelist, fp->nattrs);
         fp->attr_namelist = 0;
     }
 
@@ -1456,7 +1979,6 @@ typedef struct {
     int i, j, c, count = 1, timestep;
     int size, sum_size, nsteps, prev_timestep;
     int nb; // total number of blocks (varinfo->sum_nblocks)
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
 
     ADIOS_VARSTAT * vs;
@@ -1506,13 +2028,29 @@ typedef struct {
     int16_t map[32];
     memset (map, -1, sizeof(map));
 
+    nsteps = varinfo->nsteps;
+    nb = varinfo->sum_nblocks;
+    int time = adios_step_to_time (fp, varinfo->varid, 0);
+
     var_root = bp_find_var_byid (fh, varinfo->varid);
+    // will loop from var_root->characteristics[from_ch..to_ch-1]
+    int from_ch = 0; 
+    int to_ch = var_root->characteristics_count;
+
+    if (fp->is_streaming) {
+        // find the current timestep in characteristics array, because when streaming from a file,
+        // var_root.characteristics contains many timesteps
+        from_ch = get_var_start_index (var_root, time); 
+        to_ch = from_ch + nb;
+        assert(from_ch < var_root->characteristics_count);
+        assert(to_ch  <= var_root->characteristics_count);
+    }
 
     // Bitmap shows which statistical information has been calculated
     i = j = 0;
-    while (var_root->characteristics[0].bitmap >> j)
+    while (var_root->characteristics[from_ch].bitmap >> j)
     {
-        if ((var_root->characteristics[0].bitmap >> j) & 1)
+        if ((var_root->characteristics[from_ch].bitmap >> j) & 1)
         {
             map [j] = i ++;
         }
@@ -1520,9 +2058,6 @@ typedef struct {
         j ++;
     }
 
-    nsteps = varinfo->nsteps;
-    nb = varinfo->sum_nblocks;
-
     if (map[adios_statistic_min] != -1)
     {
         if (per_step_stat) {
@@ -1632,8 +2167,8 @@ typedef struct {
 */
     enum ADIOS_DATATYPES original_var_type = var_root->type;
 
-    if (var_root->characteristics[0].transform.transform_type != adios_transform_none) {
-        original_var_type = var_root->characteristics[0].transform.pre_transform_type;
+    if (var_root->characteristics[from_ch].transform.transform_type != adios_transform_none) {
+        original_var_type = var_root->characteristics[from_ch].transform.pre_transform_type;
     }
 
     size = bp_get_type_size (original_var_type, "");
@@ -1642,9 +2177,11 @@ typedef struct {
     if (original_var_type == adios_complex || original_var_type == adios_double_complex)
     {
         int type;
+        int idx; // block array index, = i-from_ch in loops
+        int tidx; // step array index, = timestep-fp->current_step in loops
         count = 3;
-        timestep = -1;
-        prev_timestep = 0;
+        timestep = fp->current_step; // 0..
+        prev_timestep = time; // 1..
 
         if (original_var_type == adios_complex)
         {
@@ -1658,7 +2195,7 @@ typedef struct {
         // Only a double precision returned for all complex values
         size = bp_get_type_size (adios_double, "");
 
-        for (i = 0; i < var_root->characteristics_count; i++)
+        for (i = from_ch; i < to_ch; i++)
         {
             // changes for 1.4.x. Q. Liu
             if (var_root->characteristics[i].time_index != prev_timestep)
@@ -1667,7 +2204,11 @@ typedef struct {
                 prev_timestep = var_root->characteristics[i].time_index;
             }
 
-            assert (timestep < nsteps);
+            idx = i - from_ch;
+            tidx = timestep - fp->current_step;
+
+            assert (tidx < nsteps);
+            assert (idx < nb);
 
             if (!var_root->characteristics[i].stats)
                 continue;
@@ -1695,30 +2236,30 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!vs->steps->mins[timestep]) {
-                        MALLOC (vs->steps->mins[timestep], count * size, "minimum per timestep")
+                    if(!vs->steps->mins[tidx]) {
+                        MALLOC (vs->steps->mins[tidx], count * size, "minimum per timestep")
                         for (c = 0; c < count; c ++) {
-                            ((double **) vs->steps->mins)[timestep][c] = data[c];
+                            ((double **) vs->steps->mins)[tidx][c] = data[c];
                         }
                     } else {
                         for (c = 0; c < count; c ++) {
-                            if (data[c] < ((double **) vs->steps->mins)[timestep][c]) {
-                                ((double **) vs->steps->mins)[timestep][c] = data[c];
+                            if (data[c] < ((double **) vs->steps->mins)[tidx][c]) {
+                                ((double **) vs->steps->mins)[tidx][c] = data[c];
                             }
                         }
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!vs->blocks->mins[i]) {
-                        MALLOC (vs->blocks->mins[i], count * size, "minimum per writeblock")
+                    if(!vs->blocks->mins[idx]) {
+                        MALLOC (vs->blocks->mins[idx], count * size, "minimum per writeblock")
                         for (c = 0; c < count; c ++) {
-                            ((double **) vs->blocks->mins)[i][c] = data[c];
+                            ((double **) vs->blocks->mins)[idx][c] = data[c];
                         }
                     } else {
                         for (c = 0; c < count; c ++) {
-                            if (data[c] < ((double **) vs->blocks->mins)[i][c]) {
-                                ((double **) vs->blocks->mins)[i][c] = data[c];
+                            if (data[c] < ((double **) vs->blocks->mins)[idx][c]) {
+                                ((double **) vs->blocks->mins)[idx][c] = data[c];
                             }
                         }
                     }
@@ -1743,28 +2284,28 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!vs->steps->maxs[timestep]) {
-                        MALLOC (vs->steps->maxs[timestep], count * size, "maximum per timestep")
+                    if(!vs->steps->maxs[tidx]) {
+                        MALLOC (vs->steps->maxs[tidx], count * size, "maximum per timestep")
                         for (c = 0; c < count; c ++)
-                            ((double **) vs->steps->maxs)[timestep][c] = data[c];
+                            ((double **) vs->steps->maxs)[tidx][c] = data[c];
 
                     } else {
                         for (c = 0; c < count; c ++)
-                            if (data[c] > ((double **) vs->steps->maxs)[timestep][c])
-                                ((double **) vs->steps->maxs)[timestep][c] = data[c];
+                            if (data[c] > ((double **) vs->steps->maxs)[tidx][c])
+                                ((double **) vs->steps->maxs)[tidx][c] = data[c];
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!vs->blocks->maxs[i]) {
-                        MALLOC (vs->blocks->maxs[i], count * size, "maximum per writeblock")
+                    if(!vs->blocks->maxs[idx]) {
+                        MALLOC (vs->blocks->maxs[idx], count * size, "maximum per writeblock")
                         for (c = 0; c < count; c ++)
-                            ((double **) vs->blocks->maxs)[i][c] = data[c];
+                            ((double **) vs->blocks->maxs)[idx][c] = data[c];
 
                     } else {
                         for (c = 0; c < count; c ++)
-                            if (data[c] > ((double **) vs->blocks->maxs)[i][c])
-                                ((double **) vs->blocks->maxs)[i][c] = data[c];
+                            if (data[c] > ((double **) vs->blocks->maxs)[idx][c])
+                                ((double **) vs->blocks->maxs)[idx][c] = data[c];
                     }
                 }
             }
@@ -1786,26 +2327,26 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!sums[timestep]) {
-                        MALLOC(sums[timestep], count * sum_size, "summation per timestep")
+                    if(!sums[tidx]) {
+                        MALLOC(sums[tidx], count * sum_size, "summation per timestep")
                         for (c = 0; c < count; c ++)
-                            sums[timestep][c] = data[c];
+                            sums[tidx][c] = data[c];
 
                     } else {
                         for (c = 0; c < count; c ++)
-                            sums[timestep][c] = sums[timestep][c] + data[c];
+                            sums[tidx][c] = sums[tidx][c] + data[c];
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!bsums[i]) {
-                        MALLOC(bsums[i], count * sum_size, "summation per writeblock")
+                    if(!bsums[idx]) {
+                        MALLOC(bsums[idx], count * sum_size, "summation per writeblock")
                         for (c = 0; c < count; c ++)
-                            bsums[i][c] = data[c];
+                            bsums[idx][c] = data[c];
 
                     } else {
                         for (c = 0; c < count; c ++)
-                            bsums[i][c] = bsums[i][c] + data[c];
+                            bsums[idx][c] = bsums[idx][c] + data[c];
                     }
                 }
             }
@@ -1827,26 +2368,26 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!sum_squares[timestep]) {
-                        MALLOC(sum_squares[timestep], count * sum_size, "summation of square per timestep")
+                    if(!sum_squares[tidx]) {
+                        MALLOC(sum_squares[tidx], count * sum_size, "summation of square per timestep")
                         for (c = 0; c < count; c ++)
-                            sum_squares[timestep][c] = data[c];
+                            sum_squares[tidx][c] = data[c];
 
                     } else {
                         for (c = 0; c < count; c ++)
-                            sum_squares[timestep][c] = sum_squares[timestep][c] + data[c];
+                            sum_squares[tidx][c] = sum_squares[tidx][c] + data[c];
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!bsum_squares[i]) {
-                        MALLOC(bsum_squares[i], count * sum_size, "summation of square per writeblock")
+                    if(!bsum_squares[idx]) {
+                        MALLOC(bsum_squares[idx], count * sum_size, "summation of square per writeblock")
                         for (c = 0; c < count; c ++)
-                            bsum_squares[i][c] = data[c];
+                            bsum_squares[idx][c] = data[c];
 
                     } else {
                         for (c = 0; c < count; c ++)
-                            bsum_squares[i][c] = bsum_squares[i][c] + data[c];
+                            bsum_squares[idx][c] = bsum_squares[idx][c] + data[c];
                     }
                 }
             }
@@ -1854,10 +2395,10 @@ typedef struct {
             if (map[adios_statistic_cnt] != -1 && stats[0][map[adios_statistic_cnt]].data)
             {
                 if (per_step_stat) {
-                    cnts[timestep] += * ((uint32_t *) stats[0][map[adios_statistic_cnt]].data);
+                    cnts[tidx] += * ((uint32_t *) stats[0][map[adios_statistic_cnt]].data);
                 }
                 if (per_block_stat) {
-                    bcnts[i] += * ((uint32_t *) stats[0][map[adios_statistic_cnt]].data);
+                    bcnts[idx] += * ((uint32_t *) stats[0][map[adios_statistic_cnt]].data);
                 }
                 gcnt += * (uint32_t *) stats[0][map[adios_statistic_cnt]].data;
             }
@@ -1889,7 +2430,7 @@ typedef struct {
         if (per_block_stat) {
             if(vs->min && (map[adios_statistic_sum] != -1) && (map[adios_statistic_sum_square] != -1)) 
             {
-                for (i = 0; i < var_root->characteristics_count; i++)
+                for (i = 0; i < to_ch-from_ch; i++)
                 {
                     MALLOC(vs->blocks->avgs[i], count * sum_size, "average per writeblock")
                     MALLOC(vs->blocks->std_devs[i], count * sum_size, "standard deviation per writeblock")
@@ -1937,11 +2478,16 @@ typedef struct {
     }
     else
     {
-        timestep = -1;
-        prev_timestep = 0;
+        int idx; // array index, = i-from_ch in loops
+        int tidx; // step array index, = timestep-fp->current_step in loops
+        timestep = fp->current_step; // 0..
+        prev_timestep = time; // 1..
 
-        for (i = 0; i < var_root->characteristics_count; i++)
+        for (i = from_ch; i < to_ch; i++)
         {
+            //printf ("i = %3d, time_index = %d, prev = %d, count = %lld\n", 
+            //   i,  var_root->characteristics[i].time_index, prev_timestep, var_root->characteristics_count);
+
             // changes for 1.4.x. Q. Liu
             if (var_root->characteristics[i].time_index != prev_timestep)
             {
@@ -1949,7 +2495,12 @@ typedef struct {
                 prev_timestep = var_root->characteristics[i].time_index;
             }
 
-            assert (timestep < nsteps);
+            idx = i - from_ch;
+            tidx = timestep - fp->current_step;
+            //printf ("        tidx = %d, idx = %d, nsteps = %d, nb=%d\n", tidx, idx, nsteps, nb); 
+
+            assert (tidx < nsteps);
+            assert (idx < nb);
 
             if (!var_root->characteristics[i].stats)
             {
@@ -1975,26 +2526,26 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!vs->steps->mins[timestep])
+                    if(!vs->steps->mins[tidx])
                     {
-                        MALLOC (vs->steps->mins[timestep], size, "minimum per timestep")
-                        memcpy(vs->steps->mins[timestep], stats[map[adios_statistic_min]].data, size);
+                        MALLOC (vs->steps->mins[tidx], size, "minimum per timestep")
+                        memcpy(vs->steps->mins[tidx], stats[map[adios_statistic_min]].data, size);
                     }
-                    else if (adios_lt(original_var_type, stats[map[adios_statistic_min]].data, vs->steps->mins[timestep]))
+                    else if (adios_lt(original_var_type, stats[map[adios_statistic_min]].data, vs->steps->mins[tidx]))
                     {
-                        memcpy(vs->steps->mins[timestep], stats[map[adios_statistic_min]].data, size);
+                        memcpy(vs->steps->mins[tidx], stats[map[adios_statistic_min]].data, size);
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!vs->blocks->mins[i])
+                    if(!vs->blocks->mins[idx])
                     {
-                        MALLOC (vs->blocks->mins[i], size, "minimum per writeblock")
-                        memcpy(vs->blocks->mins[i], stats[map[adios_statistic_min]].data, size);
+                        MALLOC (vs->blocks->mins[idx], size, "minimum per writeblock")
+                        memcpy(vs->blocks->mins[idx], stats[map[adios_statistic_min]].data, size);
                     }
-                    else if (adios_lt(original_var_type, stats[map[adios_statistic_min]].data, vs->blocks->mins[i]))
+                    else if (adios_lt(original_var_type, stats[map[adios_statistic_min]].data, vs->blocks->mins[idx]))
                     {
-                        memcpy(vs->blocks->mins[i], stats[map[adios_statistic_min]].data, size);
+                        memcpy(vs->blocks->mins[idx], stats[map[adios_statistic_min]].data, size);
                     }
                 }
             }
@@ -2013,26 +2564,26 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!vs->steps->maxs[timestep])
+                    if(!vs->steps->maxs[tidx])
                     {
-                        MALLOC (vs->steps->maxs[timestep], size, "maximum per timestep")
-                        memcpy(vs->steps->maxs[timestep], stats[map[adios_statistic_max]].data, size);
+                        MALLOC (vs->steps->maxs[tidx], size, "maximum per timestep")
+                        memcpy(vs->steps->maxs[tidx], stats[map[adios_statistic_max]].data, size);
                     }
-                    else if (adios_lt(original_var_type, vs->steps->maxs[timestep], stats[map[adios_statistic_max]].data))
+                    else if (adios_lt(original_var_type, vs->steps->maxs[tidx], stats[map[adios_statistic_max]].data))
                     {
-                        memcpy(vs->steps->maxs[timestep], stats[map[adios_statistic_max]].data, size);
+                        memcpy(vs->steps->maxs[tidx], stats[map[adios_statistic_max]].data, size);
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!vs->blocks->maxs[i])
+                    if(!vs->blocks->maxs[idx])
                     {
-                        MALLOC (vs->blocks->maxs[i], size, "maximum per writeblock")
-                        memcpy(vs->blocks->maxs[i], stats[map[adios_statistic_max]].data, size);
+                        MALLOC (vs->blocks->maxs[idx], size, "maximum per writeblock")
+                        memcpy(vs->blocks->maxs[idx], stats[map[adios_statistic_max]].data, size);
                     }
-                    else if (adios_lt(original_var_type, stats[map[adios_statistic_max]].data, vs->blocks->maxs[i]))
+                    else if (adios_lt(original_var_type, stats[map[adios_statistic_max]].data, vs->blocks->maxs[idx]))
                     {
-                        memcpy(vs->blocks->maxs[i], stats[map[adios_statistic_max]].data, size);
+                        memcpy(vs->blocks->maxs[idx], stats[map[adios_statistic_max]].data, size);
                     }
                 }
             }
@@ -2050,26 +2601,26 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!sums[timestep])
+                    if(!sums[tidx])
                     {
-                        MALLOC(sums[timestep], sum_size, "summation per timestep")
-                        memcpy(sums[timestep], stats[map[adios_statistic_sum]].data, sum_size);
+                        MALLOC(sums[tidx], sum_size, "summation per timestep")
+                        memcpy(sums[tidx], stats[map[adios_statistic_sum]].data, sum_size);
                     }
                     else
                     {
-                        *sums[timestep] = *sums[timestep] + * ((double *) stats[map[adios_statistic_sum]].data);
+                        *sums[tidx] = *sums[tidx] + * ((double *) stats[map[adios_statistic_sum]].data);
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!bsums[i])
+                    if(!bsums[idx])
                     {
-                        MALLOC(bsums[i], sum_size, "summation per writeblock")
-                        memcpy(bsums[i], stats[map[adios_statistic_sum]].data, sum_size);
+                        MALLOC(bsums[idx], sum_size, "summation per writeblock")
+                        memcpy(bsums[idx], stats[map[adios_statistic_sum]].data, sum_size);
                     }
                     else
                     {
-                        *bsums[i] = *bsums[i] + * ((double *) stats[map[adios_statistic_sum]].data);
+                        *bsums[idx] = *bsums[idx] + * ((double *) stats[map[adios_statistic_sum]].data);
                     }
                 }
             }
@@ -2088,26 +2639,26 @@ typedef struct {
                 }
 
                 if (per_step_stat) {
-                    if(!sum_squares[timestep])
+                    if(!sum_squares[tidx])
                     {
-                        MALLOC(sum_squares[timestep], sum_size, "summation of square per timestep")
-                        memcpy(sum_squares[timestep], stats[map[adios_statistic_sum_square]].data, sum_size);
+                        MALLOC(sum_squares[tidx], sum_size, "summation of square per timestep")
+                        memcpy(sum_squares[tidx], stats[map[adios_statistic_sum_square]].data, sum_size);
                     }
                     else
                     {
-                        *sum_squares[timestep] = *sum_squares[timestep] + * ((double *) stats[map[adios_statistic_sum_square]].data);
+                        *sum_squares[tidx] = *sum_squares[tidx] + * ((double *) stats[map[adios_statistic_sum_square]].data);
                     }
                 }
 
                 if (per_block_stat) {
-                    if(!bsum_squares[i])
+                    if(!bsum_squares[idx])
                     {
-                        MALLOC(bsum_squares[i], sum_size, "summation of square per writeblock")
-                        memcpy(bsum_squares[i], stats[map[adios_statistic_sum_square]].data, sum_size);
+                        MALLOC(bsum_squares[idx], sum_size, "summation of square per writeblock")
+                        memcpy(bsum_squares[idx], stats[map[adios_statistic_sum_square]].data, sum_size);
                     }
                     else
                     {
-                        *bsum_squares[i] = *bsum_squares[i] + * ((double *) stats[map[adios_statistic_sum_square]].data);
+                        *bsum_squares[idx] = *bsum_squares[idx] + * ((double *) stats[map[adios_statistic_sum_square]].data);
                     }
                 }
             }
@@ -2120,17 +2671,17 @@ typedef struct {
                     uint32_t freq = hist->frequencies[j];
                     vi->hist->gfrequencies[j] += freq;
                     if (ntimes > 0)
-                        vi->hist->frequenciess[timestep][j] += freq;
+                        vi->hist->frequenciess[tidx][j] += freq;
                 }
             }
 */
             if (map[adios_statistic_cnt] != -1 && stats[map[adios_statistic_cnt]].data)
             {
                 if (per_step_stat) {
-                    cnts[timestep] += * (uint32_t *) stats[map[adios_statistic_cnt]].data;
+                    cnts[tidx] += * (uint32_t *) stats[map[adios_statistic_cnt]].data;
                 }
                 if (per_block_stat) {
-                    bcnts[i] = * (uint32_t *) stats[map[adios_statistic_cnt]].data;
+                    bcnts[idx] = * (uint32_t *) stats[map[adios_statistic_cnt]].data;
                 }
                 gcnt += * (uint32_t *) stats[map[adios_statistic_cnt]].data;
             }
@@ -2172,7 +2723,7 @@ typedef struct {
         if (per_block_stat) {
             if(vs->min && (map[adios_statistic_sum] != -1) && (map[adios_statistic_sum_square] != -1))
             {
-                for (i = 0; i < var_root->characteristics_count; i++)
+                for (i = 0; i < to_ch-from_ch; i++)
                 {
                     MALLOC(vs->blocks->avgs[i], sum_size, "average per writeblock")
                     MALLOC(vs->blocks->std_devs[i], sum_size, "standard deviation per writeblock")
@@ -2249,8 +2800,11 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
     int dummy = -1;
     struct adios_index_var_struct_v1 * var_root;
     struct bp_index_pg_struct_v1 * pgs = fh->pgs_root;
-    uint32_t current_process_id = pgs->process_id;
     ADIOS_VARBLOCK *blockinfo;
+    // variables to heuristicly calculate the process_id of a PG in a subfile
+    uint32_t current_process_id = pgs->process_id;
+    uint32_t deduced_file_index = 0;
+    int64_t current_offset = -1;
 
     assert (varinfo);
 
@@ -2288,6 +2842,7 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
     for (i = 0; i < nblks; i++)
     {
         int k; /* to save i or j for the process_id determination step below */
+        int has_oldschool_time_index = 0; // old BP file with time encoded as dimension
         blockinfo[i].start = (uint64_t *) malloc (dimcount * 8);
         blockinfo[i].count = (uint64_t *) malloc (dimcount * 8);
         assert (blockinfo[i].start && blockinfo[i].count);
@@ -2304,7 +2859,7 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
             				&blk_characteristic->transform.pre_transform_dimensions :
             				&blk_characteristic->dims;
 
-            bp_get_dimension_generic_notime(blk_dims, ldims, gdims, offsets, file_is_fortran);
+            bp_get_dimension_generic_notime(blk_dims, ldims, gdims, offsets, file_is_fortran, &has_oldschool_time_index);
             k = i;
         }
         else
@@ -2326,7 +2881,7 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
                 				&blk_characteristic->transform.pre_transform_dimensions :
                 				&blk_characteristic->dims;
 
-                bp_get_dimension_generic_notime(blk_dims, ldims, gdims, offsets, file_is_fortran);
+                bp_get_dimension_generic_notime(blk_dims, ldims, gdims, offsets, file_is_fortran, &has_oldschool_time_index);
                 k = j;
                 j++;
             }
@@ -2338,7 +2893,8 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
 
         // NCSU ALACRITY-ADIOS - If a time dimension was removed above, update
         // dimcount so that dimension copy/swapping works below
-        if (dimcount > 0 && ldims[dimcount-1] == 0 && gdims[dimcount-1] != 0)
+        //if (dimcount > 0 && ldims[dimcount-1] == 0 && gdims[dimcount-1] != 0)
+        if (has_oldschool_time_index && dimcount > 0)
             dimcount--;
 
         /*Fix: the function above swaps the dimensions to C order in any case. 
@@ -2361,6 +2917,8 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
         
         /* Find the process ID */
         //blockinfo[i].process_id = (uint32_t)-1;
+        /*
+        // old routine fine for single bp file (no subfiles)
         while (pgs != NULL && 
                pgs->offset_in_file <= var_root->characteristics[k].offset) 
         {
@@ -2369,7 +2927,39 @@ static ADIOS_VARBLOCK * inq_var_blockinfo(const ADIOS_FILE * fp, const ADIOS_VAR
         }
         blockinfo[i].process_id = current_process_id;
         blockinfo[i].time_index = var_root->characteristics[k].time_index;
-        
+        */
+
+        /* sub-files' PGs start from 0 offset again and again
+           unfortunately the pgs don't have info on subfile index, which is 
+           only stored in the variable characteristics. 
+           Assumption: process_ids go from 0..n, and all the pgs are ordered
+           incrementally in subfiles according to process_ids.
+           This is true so far by all writing methods.
+        */
+        if (pgs)
+            current_process_id = pgs->process_id;
+            // if pgs==NULL, keep the current process id from the last PG
+
+        while (pgs != NULL) {
+            if ((int64_t)pgs->offset_in_file <= current_offset) {
+                deduced_file_index++;
+            }
+            if ((int32_t)deduced_file_index > (int32_t)var_root->characteristics[k].file_index) {
+                deduced_file_index--; 
+                /* pgs and current_offset does not change anymore and we enter the while 
+                   loop again for the next block and will increase this counter again */
+                break;
+            }
+            if (deduced_file_index == var_root->characteristics[k].file_index &&
+                    pgs->offset_in_file > var_root->characteristics[k].offset) {
+                break;
+            }
+            current_offset = pgs->offset_in_file;
+            current_process_id = pgs->process_id;
+            pgs = pgs->next;
+        }
+        blockinfo[i].process_id = current_process_id;
+        blockinfo[i].time_index = var_root->characteristics[k].time_index;
     }
 
     free (ldims);
@@ -2389,7 +2979,6 @@ int adios_read_bp_inq_var_blockinfo (const ADIOS_FILE * fp, ADIOS_VARINFO * vari
 
 // NCSU ALACRITY-ADIOS - Adding an inq function to get the new transform metadata from storage
 ADIOS_TRANSINFO * adios_read_bp_inq_var_transinfo(const ADIOS_FILE *fp, const ADIOS_VARINFO *vi) {
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
     struct adios_index_var_struct_v1 * var_root;
     int file_is_fortran;
@@ -2461,7 +3050,7 @@ int adios_read_bp_inq_var_trans_blockinfo(const ADIOS_FILE *fp, const ADIOS_VARI
     // is needed.
     int streaming_block_offset;
     if (p->streaming) {
-    	int time = _adios_step_to_time(fp, var_root, 0);
+    	int time = adios_step_to_time_v1(fp, var_root, 0);
     	streaming_block_offset = get_var_start_index(var_root, time);
     } else {
     	streaming_block_offset = 0;
@@ -2618,7 +3207,7 @@ int adios_read_bp_schedule_read_byid (const ADIOS_FILE * fp, const ADIOS_SELECTI
 
     /* copy selection since we don't want to operate on user memory.
      */
-    r->sel = (!nullsel ? copy_selection (sel) : nullsel);
+    r->sel = (!nullsel ? a2sel_copy (sel) : nullsel);
     r->varid = mapped_varid;
     if (!p->streaming)
     {
@@ -2679,7 +3268,7 @@ int adios_read_bp_perform_reads (const ADIOS_FILE *fp, int blocking)
         // remove head from list
         r = p->local_read_request_list;
         p->local_read_request_list = p->local_read_request_list->next;
-        free_selection (r->sel); //common_read_selection_delete (r->sel);
+        a2sel_free (r->sel);
         r->sel = NULL;
         free(r);
 
@@ -2694,7 +3283,6 @@ int adios_read_bp_perform_reads (const ADIOS_FILE *fp, int blocking)
  */
 static read_request * split_req (const ADIOS_FILE * fp, const read_request * r, int buffer_size)
 {
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
 
     read_request * h = 0;
@@ -2728,7 +3316,7 @@ static read_request * split_req (const ADIOS_FILE * fp, const read_request * r,
         log_debug ("pos = ");
         for (i = 0; i < ndim; i++)
         {
-            log_debug_cont ("%llu ", pos[i]);
+            log_debug_cont ("%" PRIu64 " ", pos[i]);
         }
         log_debug_cont ("\n");
 
@@ -2765,7 +3353,7 @@ static read_request * split_req (const ADIOS_FILE * fp, const read_request * r,
         log_debug ("subbb = ");
         for (i = 0; i < ndim; i++)
         {
-            log_debug_cont ("%llu ", subbb[i]);
+            log_debug_cont ("%" PRIu64 " ", subbb[i]);
         }
         log_debug_cont ("\n");
 
@@ -2812,7 +3400,7 @@ static read_request * split_req (const ADIOS_FILE * fp, const read_request * r,
             log_debug ("bb: (");
             for (i = 0; i < ndim; i++)
             {
-                log_debug_cont ("%llu", newreq->sel->u.bb.start[i]);
+                log_debug_cont ("%" PRIu64 "", newreq->sel->u.bb.start[i]);
                 if (i != ndim - 1)
                 {
                     log_debug_cont (",");
@@ -2821,7 +3409,7 @@ static read_request * split_req (const ADIOS_FILE * fp, const read_request * r,
             log_debug_cont (") (");
             for (i = 0; i < ndim; i++)
             {
-                log_debug_cont ("%llu", newreq->sel->u.bb.start[i] + newreq->sel->u.bb.count[i] - 1);
+                log_debug_cont ("%" PRId64 "", newreq->sel->u.bb.start[i] + newreq->sel->u.bb.count[i] - 1);
                 if (i != ndim - 1)
                 {
                     log_debug_cont (",");
@@ -2915,7 +3503,6 @@ static read_request * split_req (const ADIOS_FILE * fp, const read_request * r,
 int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
 {
     BP_PROC * p = GET_BP_PROC (fp);
-    BP_FILE * fh = GET_BP_FILE (fp);
 
     read_request * r;
     ADIOS_VARCHUNK * varchunk;
@@ -2943,7 +3530,7 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
             // remove head from list
             r = p->local_read_request_list;
             p->local_read_request_list = p->local_read_request_list->next;
-            free_selection (r->sel); //common_read_selection_delete (r->sel);
+            a2sel_free (r->sel);
             r->sel = NULL;
             free(r);
 
@@ -2961,7 +3548,7 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
         // memory is large enough to contain the data
         if (chunk_buffer_size >= p->local_read_request_list->datasize)
         {
-            log_debug ("adios_read_bp_check_reads(): memory is large enough to contain the data (%llu)\n",
+            log_debug ("adios_read_bp_check_reads(): memory is large enough to contain the data (%" PRIu64 ")\n",
                        p->local_read_request_list->datasize);
             assert (p->local_read_request_list->datasize);
             p->b = realloc (p->b, p->local_read_request_list->datasize);
@@ -2974,7 +3561,7 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
                 // remove head from list
                 r = p->local_read_request_list;
                 p->local_read_request_list = p->local_read_request_list->next;
-                free_selection (r->sel); //common_read_selection_delete (r->sel);
+                a2sel_free (r->sel);
                 r->sel = NULL;
                 free(r);
 
@@ -2988,7 +3575,7 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
         }
         else // memory is smaller than what it takes to read the entire thing in.
         {
-            log_debug ("adios_read_bp_check_reads(): memory is not large enough to contain the data (%llu)\n",
+            log_debug ("adios_read_bp_check_reads(): memory is not large enough to contain the data (%" PRIu64 ")\n",
                        p->local_read_request_list->datasize);
             read_request * subreqs = split_req (fp, p->local_read_request_list, chunk_buffer_size);
             assert (subreqs);
@@ -2996,7 +3583,7 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
             // remove head from list
             r = p->local_read_request_list;
             p->local_read_request_list = p->local_read_request_list->next;
-            free_selection (r->sel); //common_read_selection_delete (r->sel);
+            a2sel_free (r->sel);
             r->sel = NULL;
             free(r);
 
@@ -3019,7 +3606,7 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
                 // remove head from list
                 r = p->local_read_request_list;
                 p->local_read_request_list = p->local_read_request_list->next;
-                free_selection (r->sel); //common_read_selection_delete (r->sel);
+                a2sel_free (r->sel);
                 r->sel = NULL;
                 free(r);
 
@@ -3039,7 +3626,6 @@ int adios_read_bp_check_reads (const ADIOS_FILE * fp, ADIOS_VARCHUNK ** chunk)
 int adios_read_bp_get_attr_byid (const ADIOS_FILE * fp, int attrid, enum ADIOS_DATATYPES * type, int * size, void ** data)
 {
     int i;
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
     struct adios_index_attribute_struct_v1 * attr_root;
     struct adios_index_var_struct_v1 * var_root, * v1;
@@ -3336,7 +3922,6 @@ int  adios_read_bp_get_dimension_order (const ADIOS_FILE *fp)
 
 void adios_read_bp_reset_dimension_order (const ADIOS_FILE *fp, int is_fortran)
 {
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
     struct bp_index_pg_struct_v1 ** root = &(fh->pgs_root);
     struct bp_minifooter * mh = &(fh->mfooter);
@@ -3351,7 +3936,6 @@ void adios_read_bp_reset_dimension_order (const ADIOS_FILE *fp, int is_fortran)
 
 void adios_read_bp_get_groupinfo (const ADIOS_FILE *fp, int *ngroups, char ***group_namelist, uint32_t **nvars_per_group, uint32_t **nattrs_per_group)
 {
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
     int i, j, offset;
 
@@ -3406,7 +3990,6 @@ void adios_read_bp_get_groupinfo (const ADIOS_FILE *fp, int *ngroups, char ***gr
  */
 int adios_read_bp_is_var_timed (const ADIOS_FILE *fp, int varid)
 {
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
 
     struct adios_index_var_struct_v1 * v;
@@ -3474,7 +4057,6 @@ static int map_req_varid (const ADIOS_FILE * fp, int varid)
  */
 static int adios_wbidx_to_pgidx (const ADIOS_FILE * fp, read_request * r, int step_offset)
 {
-    BP_PROC * p = GET_BP_PROC (fp);
     BP_FILE * fh = GET_BP_FILE (fp);
 
     int time, start_idx, stop_idx, c, idx;
@@ -3677,7 +4259,7 @@ static ADIOS_VARCHUNK * read_var_wb (const ADIOS_FILE * fp, read_request * r)
     // NCSU ALACRITY-ADIOS - Added timestep information into varchunks
     chunk->from_steps = r->from_steps;
     chunk->nsteps = r->nsteps;
-    chunk->sel = copy_selection (r->sel);
+    chunk->sel = a2sel_copy (r->sel);
     chunk->data = data;
 
     return chunk;
diff --git a/src/read/read_bp_staged.c b/src/read/read_bp_staged.c
index f241e16..83d1960 100644
--- a/src/read/read_bp_staged.c
+++ b/src/read/read_bp_staged.c
@@ -132,7 +132,7 @@ static void _buffer_write (char ** buffer, uint64_t * buffer_size
         else
         {
             fprintf (stderr, "Cannot allocate memory in buffer_write.  "
-                             "Requested: %llu\n", *buffer_offset + size + 1000);
+                             "Requested: %" PRIu64 "\n", *buffer_offset + size + 1000);
 
             return;
         }
@@ -294,8 +294,8 @@ static void get_data_addr (const ADIOS_FILE * fp, int varid,
                 {
                     adios_error (err_out_of_bound,
                                  "Error: Variable (id=%d) out of bound ("
-                                 "the data in dimension %d to read is %llu elements from index %llu"
-                                 " but the actual data is [0,%llu])",
+                                 "the data in dimension %d to read is %" PRIu64 " elements from index %" PRIu64
+                                 " but the actual data is [0,%" PRId64 "])",
                                  varid, j + 1, count[j], start[j], gdims[j] - 1);
                     return;
                 }
@@ -354,7 +354,7 @@ static void sort_read_requests (BP_PROC * p)
     read_request * n = 0, * t, * t_prev, * next;
     while (r)
     {
-//printf ("[%d]: r->ra->offset = %llu\n", p->rank, r->ra->offset);
+//printf ("[%d]: r->ra->offset = %" PRIu64 "\n", p->rank, r->ra->offset);
         rr_r = (rr_pvt_struct *) r->priv;
         t = n;
         t_prev = 0;
@@ -734,8 +734,8 @@ static read_request * split_read_requests (const ADIOS_FILE * fp, read_request *
                   || (start[j] + count[j] > gdims[j]))
                 {
                     fprintf (stderr, "Error: Variable (id=%d, %s) out of bound ("
-                        "the data in dimension %d to read is %llu elements from index %llu"
-                        " but the actual data is [0,%llu])\n",
+                        "the data in dimension %d to read is %" PRIu64 " elements from index %" PRIu64
+                        " but the actual data is [0,%" PRId64 "])\n",
                         varid, v->var_name, j + 1, count[j], start[j], gdims[j] - 1);
                     return 0;
                 }
@@ -1085,8 +1085,8 @@ static void do_read (const ADIOS_FILE * fp)
                            &offset, 
                            &payload_size
                           );
-//printf ("o_start.offset = %llu\n", o_start->ra->offset);
-//printf ("o_prev_end.offset = %llu\n", o_prev_end->ra->offset);
+//printf ("o_start.offset = %" PRIu64 "\n", o_start->ra->offset);
+//printf ("o_prev_end.offset = %" PRIu64 "\n", o_prev_end->ra->offset);
 
             //t4 = MPI_Wtime ();
             // read a chunk from file into internal buffer
@@ -1267,8 +1267,8 @@ static void read_buffer (const ADIOS_FILE * fp,
                   || (start[j] + count[j] > gdims[j]))
                 {
                     log_error ("Error: Variable (id=%d) out of bound ("
-                        "the data in dimension %d to read is %llu elements from index %llu"
-                        " but the actual data is [0,%llu])",
+                        "the data in dimension %d to read is %" PRIu64 " elements from index %" PRIu64
+                        " but the actual data is [0,%" PRId64 "])",
                         varid, j+1, count[j], start[j], gdims[j] - 1);
                     return;
                 }
@@ -1481,7 +1481,7 @@ static void read_buffer (const ADIOS_FILE * fp,
 
                 if (idx_check2)
                 {
-                    copy_data (data
+                    adios_util_copy_data (data
                               ,fh->b->buff + fh->b->offset + slice_offset - buffer_offset
                               ,0
                               ,break_dim
@@ -1655,7 +1655,7 @@ static void broadcast_fh_buffer (ADIOS_FILE * fp)
 int rank;
 MPI_Comm_rank (MPI_COMM_WORLD, &rank);
 if (rank == 0)
-fprintf (stderr, "bc %s bo 1 = %llu, bo 2 = %llu, len = %d\n", vars_root->var_name, bo, buffer_offset, len);
+fprintf (stderr, "bc %s bo 1 = %" PRIu64 ", bo 2 = %" PRIu64 ", len = %d\n", vars_root->var_name, bo, buffer_offset, len);
 */
             _buffer_write (&buffer, &buffer_size, &buffer_offset, 
                            &len, 2);
@@ -2244,13 +2244,13 @@ int adios_read_bp_staged_close (ADIOS_FILE *fp)
 
     if (fp->var_namelist)
     {
-        free_namelist (fp->var_namelist, fp->nvars);
+        a2s_free_namelist (fp->var_namelist, fp->nvars);
         fp->var_namelist = 0;
     }
 
     if (fp->attr_namelist)
     {
-        free_namelist (fp->attr_namelist, fp->nattrs);
+        a2s_free_namelist (fp->attr_namelist, fp->nattrs);
         fp->attr_namelist = 0;
     }
 
@@ -2356,7 +2356,7 @@ int adios_read_bp_staged_perform_reads (const ADIOS_FILE *fp, int blocking)
 
     int * sizes = malloc (pvt->group_size * 4);
     int * offsets = malloc (pvt->group_size * 4);
-    void * recv_buffer;
+    void * recv_buffer = NULL;
 
     MPI_Gather (&size, 1, MPI_INT
                ,sizes, 1, MPI_INT
diff --git a/src/read/read_dataspaces.c b/src/read/read_dataspaces.c
index 89f454c..4e42b72 100644
--- a/src/read/read_dataspaces.c
+++ b/src/read/read_dataspaces.c
@@ -13,18 +13,20 @@
 #include "config.h"
 #include <stdlib.h>
 #include <string.h>
+#include <inttypes.h>
 #include <errno.h>  /* errno */
 #include "public/adios_types.h"
 #include "public/adios_read.h"
 #include "public/adios_error.h"
 #include "core/globals.h"
 #include "core/util.h"
+#include "core/adios_clock.h"
 #include "core/adios_logger.h"
-//#include "core/bp_types.h"
+#include "core/common_read.h"
 #include "core/adios_read_hooks.h"
 #include "core/futils.h"
 #include "core/ds_metadata.h"
-#include "core/common_read.h" // common_read_selection_* functions
+#include "core/a2sel.h" // selection functions
 
 #include "core/transforms/adios_transforms_common.h" // NCSU ALACRITY-ADIOS
 
@@ -404,14 +406,14 @@ static int ds_unpack_group_info (ADIOS_FILE *fp, char * buf)
     // extract each variable
     log_debug("    Extract variables\n");
     for (i=0;i<vars_count;i++) {
-        log_debug("      var %d, b = %d\n", i, b);
+        log_debug("      var %d, b = %lld\n", i, (long long int)b);
         namelen = *(int*)b; // lenght of name
         b += sizeof(int);
-        log_debug("        namelen = %d, b = %d\n", namelen, b);
+        log_debug("        namelen = %d, b = %lld\n", namelen, (long long int)b);
         fp->var_namelist[i] = (char *) malloc (namelen+1);
         if (!fp->var_namelist[i]) {
             adios_error (err_no_memory, "Could not allocate space for variable name when opening a group\n"); 
-            if (i>0) free_namelist ((fp->var_namelist),i);
+            if (i>0) a2s_free_namelist ((fp->var_namelist),i);
             return 1;
         }
         else  {
@@ -420,30 +422,30 @@ static int ds_unpack_group_info (ADIOS_FILE *fp, char * buf)
         }
         b += namelen;
         vars[i].name = strdup(fp->var_namelist[i]);  
-        log_debug("        name = %s, b = %d\n", vars[i].name, b);
+        log_debug("        name = %s, b = %lld\n", vars[i].name, (long long int)b);
         // type
         vars[i].type = *(enum ADIOS_DATATYPES*)b; 
         b += sizeof(int);
-        log_debug("        type = %d, b = %d\n", (int)vars[i].type, b);
+        log_debug("        type = %d, b = %lld\n", (int)vars[i].type, (long long int)b);
         // hastime
         vars[i].hastime = *(int*)b; 
         b += sizeof(int);
-        log_debug("        hastime = %d, b = %d\n", vars[i].hastime, b);
+        log_debug("        hastime = %d, b = %lld\n", vars[i].hastime, (long long int)b);
         // dimensions
         vars[i].ndims = *(int*)b; 
         b += sizeof(int);
-        log_debug("        ndims w/o time = %d, b = %d\n", vars[i].ndims, b);
+        log_debug("        ndims w/o time = %d, b = %lld\n", vars[i].ndims, (long long int)b);
         for (j=0; j < MAX_DS_NDIM; j++) {
             dims[j] = *(uint64_t*)b; 
             b += 8;
-            log_debug("          unordered dim[%d] = %lld, b = %d\n", j, dims[j], b);
+            log_debug("          unordered dim[%d] = %" PRIu64 ", b = %lld\n", j, dims[j], (long long int)b);
         }
         // reorder DS dimensions to Fortran/C dimensions
         ds_dimension_ordering (vars[i].ndims, futils_is_called_from_fortran(), 
                                1 /*unpack*/, didx);
         for (j=0; j < vars[i].ndims; j++) {
             vars[i].dims[j] = dims[didx[j]];
-            log_debug("          dim[%d] = %lld, b = %d\n", j, vars[i].dims[j], b);
+            log_debug("          dim[%d] = %" PRIu64 ", b = %lld\n", j, vars[i].dims[j], (long long int)b);
         }
 
         if (vars[i].ndims == 0 && !vars[i].hastime) {
@@ -468,7 +470,7 @@ static int ds_unpack_group_info (ADIOS_FILE *fp, char * buf)
             }
             
             b += datasize;
-            log_debug("        value read, b = %d\n", b);
+            log_debug("        value read, b = %lld\n", (long long int)b);
         } else {
             vars[i].value = NULL;
         }
@@ -481,7 +483,7 @@ static int ds_unpack_group_info (ADIOS_FILE *fp, char * buf)
         fp->attr_namelist[i] = (char *) malloc (namelen+1);
         if (!fp->attr_namelist[i]) {
             adios_error (err_no_memory, "Could not allocate space for attribute name when opening a group\n"); 
-            if (i>0) free_namelist ((fp->attr_namelist),i);
+            if (i>0) a2s_free_namelist ((fp->attr_namelist),i);
             return 1;
         }
         else  {
@@ -508,7 +510,7 @@ static int ds_unpack_group_info (ADIOS_FILE *fp, char * buf)
             memcpy (attrs[i].value, b, datasize);
             if (attrs[i].type == adios_string) 
                 ((char*)attrs[i].value)[datasize] = '\0';
-            log_debug("        value read, b = %d\n", b);
+            log_debug("        value read, b = %lld\n", (long long int)b);
         } else {
             log_error("Cannot allocate %d bytes to store the value of attribute %s\n",
                     datasize, attrs[i].name);
@@ -539,7 +541,7 @@ static int get_groupdata (ADIOS_FILE *fp)
     int err;
     char ds_name[MAX_DS_NAMELEN];
     snprintf (ds_name, MAX_DS_NAMELEN, "GROUP@%s/%s",fp->path, ds->group_name);
-    log_debug("-- %s, rank %d: Get variable %s with size %lld\n", __func__, 
+    log_debug("-- %s, rank %d: Get variable %s with size %" PRIu64 "\n", __func__, 
               ds->mpi_rank, ds_name, readsize[0]);
     err = get_meta (ds_name, adios_byte, ds->current_step, ds->mpi_rank, 
                      ndim, 0, offset, readsize, group_info_buf, ds->comm);
@@ -602,7 +604,7 @@ static int get_step (ADIOS_FILE *fp, int step, enum WHICH_VERSION which_version,
     int err, i;
     char ds_vname[MAX_DS_NAMELEN];
     char ds_fname[MAX_DS_NAMELEN];
-    double t1 = adios_gettime();
+    double t1 = adios_gettime_double();
     enum STEP_STATUS step_status = STEP_OK;
 
     snprintf(ds_vname, MAX_DS_NAMELEN, "VERSION@%s",fp->path);
@@ -721,7 +723,7 @@ static int get_step (ADIOS_FILE *fp, int step, enum WHICH_VERSION which_version,
 
         // check if we need to stay in loop 
         if (stay_in_poll_loop) {
-            if (timeout_sec >= 0.0 && (adios_gettime()-t1 > timeout_sec))
+            if (timeout_sec >= 0.0 && (adios_gettime_double()-t1 > timeout_sec))
                 stay_in_poll_loop = 0;
             else
                 adios_nanosleep (poll_interval_msec/1000, 
@@ -872,7 +874,7 @@ static void free_step_data (ADIOS_FILE *fp)
             free (vars[i].value);
         }
         MYFREE(ds->vars);
-        free_namelist ((fp->var_namelist),fp->nvars);
+        a2s_free_namelist ((fp->var_namelist),fp->nvars);
         fp->nvars = 0;
     }
     if (fp->nattrs) {
@@ -881,7 +883,7 @@ static void free_step_data (ADIOS_FILE *fp)
             free (attrs[i].value);
         }
         MYFREE (ds->attrs);
-        free_namelist ((fp->attr_namelist),fp->nattrs);
+        a2s_free_namelist ((fp->attr_namelist),fp->nattrs);
         fp->nattrs = 0;
     }
     MYFREE (ds->group_name);
@@ -893,7 +895,7 @@ int adios_read_dataspaces_close (ADIOS_FILE *fp)
     struct dataspaces_data_struct * ds = 
                 (struct dataspaces_data_struct *) fp->fh;
 
-    log_debug("-- %s, rank %d: fp=%x\n", __func__, ds->mpi_rank, fp);
+    log_debug("-- %s, rank %d: fp=%p\n", __func__, ds->mpi_rank, fp);
 
     /* Release read lock locked in fopen */
     unlock_file (fp, ds);
@@ -1317,7 +1319,7 @@ int adios_read_dataspaces_schedule_read_byid (const ADIOS_FILE * fp,
                     }
                     reqsize *= sel->u.bb.count[i];
                 }
-                r->sel = copy_selection (sel);
+                r->sel = a2sel_copy (sel);
                 break;
 
             case ADIOS_SELECTION_POINTS:
@@ -1330,7 +1332,7 @@ int adios_read_dataspaces_schedule_read_byid (const ADIOS_FILE * fp,
                     return err_out_of_bound;
                 }
                 reqsize *= sel->u.points.npoints;
-                r->sel = copy_selection (sel);
+                r->sel = a2sel_copy (sel);
                 break;
 
             case ADIOS_SELECTION_WRITEBLOCK:
@@ -1338,7 +1340,7 @@ int adios_read_dataspaces_schedule_read_byid (const ADIOS_FILE * fp,
                 /* We cannot do this with DataSpaces yet (fp->nwriter == 1) */
                 /* Read the whole variable */
                 s = (uint64_t *) calloc (var->ndims, sizeof(uint64_t));
-                r->sel = common_read_selection_boundingbox(var->ndims, s, var->dims);
+                r->sel = a2sel_boundingbox(var->ndims, s, var->dims);
                 for (i=0; i<var->ndims; i++) 
                     reqsize *= var->dims[i];
                 break;
@@ -1370,14 +1372,14 @@ int adios_read_dataspaces_schedule_read_byid (const ADIOS_FILE * fp,
                     if (ld0 > 0) {
                         s[0] = off0;
                         c[0] = ld0;
-                        r->sel = common_read_selection_boundingbox(
+                        r->sel = a2sel_boundingbox(
                                 var->ndims, s, c);
                     }
                     for (i=0; i<var->ndims; i++) 
                         reqsize *= c[i];
                 } else {
                     /* Scalar: just read it for each process */
-                    r->sel = common_read_selection_boundingbox(0, 0, 0);
+                    r->sel = a2sel_boundingbox(0, 0, 0);
                 }
 
                 break;
@@ -1385,7 +1387,7 @@ int adios_read_dataspaces_schedule_read_byid (const ADIOS_FILE * fp,
     } else {
         // NULL selection means the whole variable
         s = (uint64_t *) calloc (var->ndims, sizeof(uint64_t));
-        r->sel = common_read_selection_boundingbox(var->ndims, s, var->dims);
+        r->sel = a2sel_boundingbox(var->ndims, s, var->dims);
         for (i=0; i<var->ndims; i++) 
             reqsize *= var->dims[i];
     }
@@ -1550,7 +1552,7 @@ int adios_read_dataspaces_perform_reads (const ADIOS_FILE *fp, int blocking)
         ds->req_list = ds->req_list->next;
         // FIXME: if we allocated start/count arrays in schedule read for r->sel,
         // we need to manually free them here
-        common_read_selection_delete(r->sel);
+        a2sel_free(r->sel);
         free(r);
         ds->nreq--;
     }
@@ -1660,10 +1662,10 @@ void ds_int64s_to_str(int ndim, uint64_t *values, char *s)
         s[0] = '\0';
         return;
     }
-    sprintf(s,"%llu", values[0]);
+    sprintf(s,"%" PRIu64, values[0]);
     for (i=1; i<ndim; i++)
     {
-        sprintf (v,",%llu", values[i]);
+        sprintf (v,",%" PRIu64, values[i]);
         strcat (s,v);
     }
 }
diff --git a/src/read/read_datatap.c b/src/read/read_datatap.c
deleted file mode 100644
index d5d8993..0000000
--- a/src/read/read_datatap.c
+++ /dev/null
@@ -1,2300 +0,0 @@
-#include "config.h"
-
-#if NO_DATATAP == 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <ffs.h>
-#include <atl.h>
-#include <evpath.h>
-#include "public/adios_mpi.h"
-
-#include <pthread.h>
-#include "adios.h"
-#include "adios_read.h"
-#include "adios_read_hooks.h"
-#include "adios_error.h"
-#include "globals.h"
-
-#include <sys/queue.h>
-#if HAVE_PORTALS == 1
-#include <thin_portal.h>
-#elif HAVE_INFINIBAND == 1
-#include <thin_ib.h>
-#endif
-
-#include <sys/socket.h>
-#include <sys/times.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <ctype.h>
-
-#include <gen_thread.h>
-//#include "queue.h"
-//#include "get_clock.h"
-//#include "attributes.h"
-//#include "memwatch.h"
-#ifdef DMALLOC
-#include "dmalloc.h"
-#endif
-
-
-#define DT_MAX_QUEUE_LENGTH 512 
-
-typedef struct _Queue_Item
-{
-    uint32_t length;
-    char * data;
-    FMStructDescList var_list;
-    int32_t rank;     // rank of client from which the chunk comes
-} QueueItem;
-
-typedef struct _datatap_var_chunk
-{
-    int rank;
-    void *data;
-    uint64_t *local_bounds; // ndims
-    uint64_t *global_bounds; // ndims
-    uint64_t *global_offsets; // ndims
-    struct _datata_var_chunk *next;
-} datatap_var_chunk, *datatap_var_chunk_p;
-
-typedef struct _datatap_var_info
-{
-    int id;
-    char *varname;
-    char *varpath;
-    enum ADIOS_DATATYPES type;
-    uint64_t data_size;   
-    int time_dim; // -1 means no time dimension
-    int ndims;
-    int num_chunks;
-    datatap_var_chunk *chunks;
-    struct _datatap_var_info *next;
-} datatap_var_info, *datatap_var_info_p;
-
-
-//typedef struct _datatap_pg_info
-//{
-//    int rank;    
-//    int num_vars;    
-//    datatap_var_info *vars;    
-//} datatap_pg_info, *datatap_pg_info_p;
-
-#define VAR_BITMAP_SIZE 16
-
-// TODO
-typedef struct _datatap_read_file_data
-{
-    char *file_name;
-    char *group_name; // TODO: assume one group in file
-    file_info *f_info;
-//    int timestep;    // TODO: it's already in file_info
-    int num_vars;
-    datatap_var_info *vars;
-//    FMStructDescList var_list; // TODO
-
-    // TODO: replicated meta-data info from peer readers
-    // it is a list of vars which is not present locally
-    int num_vars_peer;
-    datatap_var_info *vars_peer;
-
-    MPI_Comm comm;
-    int my_rank;
-    int comm_size;
-
-    int host_language_fortran; // 1 for Fortran; 0 for C
-
-    char var_bitmap[VAR_BITMAP_SIZE]; // 128 bit for 128 var
-
-//    int num_vars_read;    
-//    datatap_var_info *vars_read;    
-//    datatap_var_info *vars_read_tail;    
-} datatap_read_file_data, *datatap_read_file_data_p;
-
-typedef struct _datatap_read_method_data
-{
-    pthread_t dt_server_thread;
-//    Queue *dt_queue;
-//    uint32_t dt_queue_max_length;
-//    pthread_mutex_t mutex;
-//    pthread_cond_t cond1;
-//    pthread_cond_t cond2;
-    MPI_Comm dt_comm;
-    int dt_comm_rank;
-    int dt_comm_size;
-    CManager dt_cm;
-    IOhandle *dt_handle;
-    int dt_server_ready; 
-//    int dt_server_stop; 
-    int num_io_dumps;    // TODO: timestep
-} datatap_read_method_data, *datatap_read_method_data_p;
-
-
-// this sructure holds all global data for Datatap Read method
-datatap_read_method_data *dt_read_data = NULL;
-
-// compare used-providd varname with the full path name of variable v
-// return zero if matches and non-zero otherwise
-static int compare_var_name (char *varname, datatap_var_info *v) 
-{
-    if (varname[0] == '/') { // varname is full path
-        char fullpath[256];
-        if(!strcmp(v->varpath, "/")) {
-            sprintf(fullpath, "/%s\0", v->varname);  
-        } 
-        else {   
-            sprintf(fullpath, "%s/%s\0", v->varpath, v->varname);  
-        }
-        return strcmp(fullpath, varname);
-    }
-    else { // varname doesn't include path
-        return strcmp(v->varname, varname);
-    }
-}
-
-static FMField *find_field (char *name, char *path, FMFieldList flist)
-{
-    char *temp_name;
-    char *full_path_name = get_full_path_name(name, path);
-    temp_name = getFixedName(full_path_name);
-    free(full_path_name);
-    FMField *f = flist;
-    while (f->field_name != NULL) {
-        if(!strcmp(temp_name, f->field_name)) {
-            free(temp_name);
-            return f;
-        }
-        else {
-            f++;
-        }
-#if 0
-        char *name_pos = f->field_name + (strlen(f->field_name) - strlen(name));
-        if(!strncmp(path, f->field_name, strlen(path)) &&
-           !strcmp(name, name_pos)) {
-            return f;
-        }
-        else {
-            f++;
-        }
-#endif
-    }
-    free(temp_name);
-    return f;
-}
-
-int64_t read_array(datatap_read_file_data *ds, datatap_var_info *var, 
-                    uint64_t *start, uint64_t *count, void *data)
-{
-    int type_size = common_read_type_size(var->type, NULL);
-fprintf(stderr, "im here type_size %d %s:%d\n", type_size, __FILE__,__LINE__);
-    int64_t total_size = 0;
-
-    // go over the whole list of data chunks and reorganize arrays
-    Queue *data_q = ds->f_info->dt_queue;
-
-    // TODO: we should be able to access the queue since the dt server will not
-    // touch it any more
-    ListElmt *current_chunk = list_head(data_q);
-    while(current_chunk) {
-        QueueItem *qi = (QueueItem *)current_chunk->data;  
-        FMFieldList filed_list = qi->var_list->field_list; // TODO
-        
-        // first, find the var   
-        FMField *f = find_field(var->varname, var->varpath, filed_list);
-
-        if(!f) { 
-            // actually this will not happen because the filed_list will
-            // contain all vars even though some may not be written
-            current_chunk = current_chunk->next;
-            continue;
-        }
-
-        char *source_addr = (char *)qi->data + f->field_offset; // this is the address
-        void *source_addr2;
-  
-        // here we need to distinguish static and dynamic arrays
-        int dim_are_nums = 1;
-
-        {
-            char *dim_start = strchr(f->field_type, '[');
-            char *dim_end = strrchr(f->field_type, ']');
-            while(dim_start < dim_end) {
-                if(*dim_start == '[' || *dim_start == ']') {
-                    dim_start ++;
-                    continue;
-                } else if(!isdigit(*dim_start)) {
-                    dim_are_nums = 0;
-                    break;
-                }
-                else {
-                    dim_start ++;
-                    continue;
-                }
-            }
-        }
-
-        if(dim_are_nums) {
-            source_addr2 = source_addr;
-        } else {
-            switch(var->type) {
-                case adios_byte:
-                case adios_unsigned_byte:
-                    source_addr2 = *((char **)source_addr);
-                    break;
-
-                case adios_string: // TODO
-                    return strlen((char *)source_addr) + 1;
-                    //source_addr2 = *((char **)source_addr);
-                    //break;
-
-                case adios_short:
-                case adios_unsigned_short:
-                    source_addr2 = *((short int **)source_addr);
-                    break;
-
-                case adios_integer:
-                case adios_unsigned_integer:
-                    source_addr2 = *((int **)source_addr);
-                    break;
-
-                case adios_long:
-                case adios_unsigned_long:
-                    source_addr2 = *((long int **)source_addr);
-                    break;
-
-                case adios_real:
-                    source_addr2 = *((float **)source_addr);
-                    break;
-
-                case adios_double:
-                    source_addr2 = *((double **)source_addr);
-                    break;
-
-                case adios_long_double:
-                    source_addr2 = *((long double **)source_addr);
-                    break;
-
-                case adios_complex:
-                case adios_double_complex:
-                default:
-                    adios_error(err_invalid_read_method, "complex data type is not supported.");
-                    return -1;
-            }
-        }
-
-        // find the array dimension info 
-        int j;
-        datatap_var_chunk *chunk = var->chunks; 
-        while(chunk) {
-            if(chunk->rank == qi->rank) {
-                break;
-            } 
-            else {
-                chunk = chunk->next;
-            }
-        }
-
-        if(!chunk) { // this chunk doesn't contain the var so skip it
-            current_chunk = current_chunk->next;
-            continue;
-        }
-
-        // now we copy data into user's read buffer
-        uint64_t global_start_r = 0;
-        for(j = var->ndims-1; j >= 0; j --) {
-            global_start_r *= chunk->global_bounds[j];
-            global_start_r += start[j];
-        }
-
-
-        total_size = type_size;
-        for(j = var->ndims-1; j >= 0; j --) {
-            total_size *= count[j];
-        }
-
-        for(j = 0; j < var->ndims; j ++) {
-            int lower = chunk->global_offsets[j] - start[j];
-            int higher = (start[j]+count[j]) - (chunk->global_offsets[j]+chunk->local_bounds[j]);
-            if(lower < 0 || higher < 0) {
-                // this means this chunk has some data which is not needed by this reader
-                // TODO: for pixie3d case, this will not happen
-                adios_error(err_invalid_read_method, "Datatap cannot support this decomposition.\n");
-                return -1;
-            }
-        }
-
-        // find the smallest slice
-        int min_dim = 0;
-        uint64_t stride_size = type_size;
-        for(j = 0; j < var->ndims; j ++) {
-            int lower = chunk->global_offsets[j] - start[j];
-            int higher = (start[j]+count[j]) - (chunk->global_offsets[j]+chunk->local_bounds[j]);
-            if(lower == 0 && higher == 0) {
-                // this means this dimnesion fits, let's move on to the next dimension
-                stride_size *= chunk->local_bounds[j];
-                min_dim ++; 
-                continue;
-            }
-            else if((lower > 0 && higher >= 0) ||
-                    (lower >= 0 && higher > 0)) {
-                // this means this dimension is strided. this dimension is the highest possible 
-                // dimension
-                break;
-            }
-        }
- 
-        uint64_t num_strides = 1;
-        for(j = min_dim; j < var->ndims; j ++) {
-            num_strides *= chunk->local_bounds[j];
-        }
-
-        uint64_t current_pos[var->ndims]; // track current stride's starting global offset
-        for(j = 0; j < var->ndims; j ++) {
-            current_pos[j] = chunk->global_offsets[j];
-        }
-        uint64_t k = 0;       
-        char *stride_start_addr = source_addr2; 
-        int should_stop = 0;
-        for(; k < num_strides; k ++) {
-            // calculate the coordinates within the bounding box
-            uint64_t my_start = 0;
-            for(j = var->ndims-1; j >= 0; j --) {
-                my_start *= count[j];
-                my_start += (current_pos[j] - chunk->global_offsets[j]);
-            } 
-            char *position = (char *)data + my_start * type_size;
-
-            memcpy(position, stride_start_addr, stride_size);
-
-            // now advance to copy next stride
-            stride_start_addr += stride_size; 
-            should_stop = 0;
-            for(j = min_dim; j < var->ndims; j ++) {
-                if(!should_stop) {
-                    if(current_pos[j] == chunk->global_offsets[j]+chunk->local_bounds[j]-1) {
-                        // don't set should_stop so we move on to next dimension
-                        current_pos[j] = chunk->global_offsets[j];
-                    }
-                    else {
-                        current_pos[j] ++;
-                        should_stop = 1;
-                    }
-                } 
-                else {
-                    break;
-                }
-            }
-        }  
-
-#if 0
-        for(j = var->ndims-1; j >= 0; j --) {
-            // for each sub-chunk, test if it falls into the reading region
-            int lower = (chunk->global_offsets[j] >= start[j]) ? 1: 0;
-            int higher = ((chunk->global_offsets[j]+chunk->local_bounds[j]) <=
-                 (start[j]+count[j])) ? 1: 0;
-            if(lower && higher) {
-                if(j == 0) { // copy the whole chunks
-                    uint64_t my_start = 0;
-                    uint64_t my_size = type_size;
-                    int k;
-                    for(k = var->ndims-1; k >= 0; k --) {
-                        my_start *= chunk->global_bounds[k];
-                        my_start += chunk->global_offsets[k];
-                        my_size *= chunk->local_bounds[k];
-                    }
-                    
-                    int y, z;
-                    for(z = 0; z < ; z ++) {
-                        uint64_t z_offset = pix_record->zoffset + k;
-                        for(y = 0; y < pix_record->ysize; y ++) {
-                            unsigned long long y_offset = pix_record->yoffset + j;
-                            unsigned long long position = z_offset * pix_record->nyd_plus_2 * pix_record->nxd_plus_2 +
-                               y_offset * pix_record->nxd_plus_2 + pix_record->xoffset;
-                            position -= p_data->start_pos;
-                            memcpy(&(p_data->buffers[m].buffer[position]), v, pix_record->xsize * sizeof(double));
-                        }
-                    }
-
-
-                    char *position = (char *)data + (my_start - global_start_r) * type_size;
-                    memcpy(position, source_addr2, my_size);
-
-
-fprintf(stderr, "%d rank=%d name = %s position=%p data=%p mystart = %lu global_start_r = %lu mysize = %lu %s:%d\n", ds->my_rank,chunk->rank,var->varname,position,data,my_start, global_start_r, my_size, __FILE__,__LINE__);
-                    total_size += my_size;
-fprintf(stderr, "im here %d %s:%d\n", ds->my_rank,__FILE__,__LINE__);
-                    break;
-                }
-                else {
-fprintf(stderr, "im here %s:%d\n", __FILE__,__LINE__);
-                    // TODO
-                    continue;
-                }
-            }
-            else {
-                // TODO
-                adios_error(err_invalid_read_method, "Datatap cannot support this decomposition.\n");
-                return -1;
-            }
-        }
-        // we are done with this chunk, now extract data from next chunk
-#endif
-        
-
-        current_chunk = current_chunk->next;
-    }
-fprintf(stderr, "im here read rank %d var %s total size %ld %s:%d\n", ds->my_rank, var->varname, total_size,__FILE__,__LINE__);
-
-    // TODO: the data size is messed up because of ghost zone
-    total_size = type_size;
-    int j;
-    for(j = var->ndims-1; j >= 0; j --) {
-        total_size *= count[j]; 
-    }
-    return total_size;       
-}
-
-#if 0
-int reorganize_array (QueueItem *qi, datatap_read_file_data *ds)
-{
-fprintf(stderr, "im here rank %d %s:%d\n",dt_read_data->dt_comm_rank,__FILE__,__LINE__);
-    // go through all variables user wants to read
-    datatap_pg_info *pg = NULL;
-    int i;
-    for(i = 0; i < ds->num_pgs; i ++) {
-        if(ds->pgs[i].rank == qi->rank) {
-            pg = &(ds->pgs[i]);                   
-            break;
-        }
-    }
-    if(!pg) {
-        adios_error(err_unspecified, "cannot find pg.\n");
-        return -1;        
-    }
-    
-fprintf(stderr, "im here rank %d %s:%d\n",dt_read_data->dt_comm_rank,__FILE__,__LINE__);
-    datatap_var_info *var = ds->vars_read;
-    FMFieldList filed_list = qi->var_list->field_list; // TODO
-    while(var) {
-        // first search within the pg for this var        
-fprintf(stderr, "im here rank %d var name %s %s:%d\n",dt_read_data->dt_comm_rank,var->varname,__FILE__,__LINE__);
-        datatap_var_info *v = NULL;
-        for(i = 0; i < pg->num_vars; i ++) {
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-            //if(!strcmp(pg->vars[i].varname, var->varname)) {
-            if(!compare_var_name(var->varname, &(pg->vars[i]))) {
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                // got it
-                v = &(pg->vars[i]);
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                 
-                int type_size = common_read_type_size(v->type, NULL); 
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                FMField *f = find_field(v->varname, v->varpath, filed_list);
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                char *source_addr = (char *)qi->data + f->field_offset; // this is the address
-                void *source_addr2;
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                switch(v->type) {
-                    case adios_byte:
-                    case adios_unsigned_byte:
-                        source_addr2 = *((char **)source_addr);
-                        break;
-          
-                    case adios_string: // TODO
-                        return strlen((char *)source_addr) + 1;
-                        source_addr2 = *((char **)source_addr);
-                        break;
-         
-                    case adios_short:
-                    case adios_unsigned_short:
-                        source_addr2 = *((short int **)source_addr);
-                        break;
-        
-                    case adios_integer:
-                    case adios_unsigned_integer:
-                        source_addr2 = *((int **)source_addr);
-                        break;
-        
-                    case adios_long:
-                    case adios_unsigned_long:
-                        source_addr2 = *((long int **)source_addr);
-                        break;
-        
-                    case adios_real:
-                        source_addr2 = *((float **)source_addr);
-                        break;
-        
-                    case adios_double:
-                        source_addr2 = *((double **)source_addr);
-                        break;
-        
-                    case adios_long_double:
-                        source_addr2 = *((long double **)source_addr);
-                        break;
-        
-                    case adios_complex:
-                    case adios_double_complex:
-                    default:
-                        adios_error(err_invalid_read_method, "complex data type is not supported.");
-                        return -1;
-                }
-                //memcopy(var->read_buffer, source_addr2, var->read_buffer_size);
-                                      
-                // now we need to calculate how to map chunks into read buffer
-                // according to dimension specification
-                // also we need to figure out which part should be shuffled to
-                // other peer processes and which part should be moved in from
-                // other processes
-                // search along the slowest changing dimension and determine if 
-                // the sub-chunk falls into the reading region. If so, copy the 
-                // whole sub-chunk, otherwise search along the second slowest
-                // changing dimension within that subchunk, identify which part
-                // should go where and copy the remaining part to local buffer
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                int j;
-                uint64_t global_start_r = 0; 
-                for(j = var->ndims-1; j >= 0; j --) {
-                    if(var->global_bounds[j]) {
-                        global_start_r *= var->global_bounds[j];
-                        global_start_r += var->global_offsets[j];
-                    }
-                }
-                
-if(!strcmp(v->varname,"bconds")){
-    int *bconds = (int *)source_addr2;
-    int t;
-    for(t=0;t<48;t++) {
-        fprintf(stderr, "bconds[%d]=%d\n",t,bconds[t]);
-    }
-
-}
-
-if(!strcmp(v->varname,"v1")){
-    double *v1 = (double *)source_addr2;
-    int t;
-    for(t=0;t<100;t++) {
-        fprintf(stderr, "v1[%d]=%f\n",t,v1[t]);
-    }
-
-}
-
-fprintf(stderr, "im here rank %d var name %s i %d %s:%d\n",dt_read_data->dt_comm_rank,var->varname,i,__FILE__,__LINE__);
-                for(j = v->ndims-1; j >= 0; j --) {
-                    // for each sub-chunk, test if it falls into the reading region
-                    int lower = (v->global_offsets[j] >= var->global_offsets[j]) ? 1: 0;
-                    int higher = ((v->global_offsets[j]+v->local_bounds[j]) <= 
-                         (var->global_offsets[j]+var->local_bounds[j])) ? 1: 0; 
-fprintf(stderr, "im here rank=%d j %d name %s go %lu lb %lu go %lu lb %lu %s:%d\n", dt_read_data->dt_comm_rank,j,var->varname,v->global_offsets[j],v->local_bounds[j],var->global_offsets[j],var->local_bounds[j],__FILE__,__LINE__);
-                    if(lower && higher) { 
-fprintf(stderr, "im here j %d %s:%d\n", j,__FILE__,__LINE__);
-                        if(j == 0) { // copy the whole chunks
-                            uint64_t my_start = 0;
-                            uint64_t my_size = type_size;
-                            int k;
-                            for(k = v->ndims-1; k >= 0; k --) {
-                                my_start *= v->global_bounds[k];
-                                my_start += v->global_offsets[k];
-                                my_size *= v->local_bounds[k];  
-                            }
-                            char *position = (char *)var->data + (my_start - global_start_r) * type_size;                            
-fprintf(stderr, "rank=%d name = %s position=%lu data=%lu mystart = %lu global_start_r = %lu mysize = %lu %s:%d\n", dt_read_data->dt_comm_rank,var->varname,position,var->data,my_start, global_start_r, my_size, __FILE__,__LINE__);
-                            memcpy(position, source_addr2, my_size);      
-fprintf(stderr, "im here j %d %s:%d\n", j,__FILE__,__LINE__);
-                            break;
-                        }
-                        else {
-                            // TODO 
-                            continue; 
-                        }
-                    }
-                    else {
-fprintf(stderr, "im here rank=%d j %d name %s go %lu lb %lu go %lu lb %lu %s:%d\n", dt_read_data->dt_comm_rank,j,var->varname,v->global_offsets[j],v->local_bounds[j],var->global_offsets[j],var->local_bounds[j],__FILE__,__LINE__);
-fprintf(stderr, "im here j %d %s:%d\n", j,__FILE__,__LINE__);
-                        // TODO
-                        adios_error(err_invalid_read_method, "Datatap cannot support this decomposition.\n");
-                        return -1;
-                    } 
-fprintf(stderr, "im here j %d %s:%d\n", j,__FILE__,__LINE__);
-                }
-                break;
-                // end of data re-organization for this var
-            } 
-        }             
-        
-        // now process the next var to read        
-        var = var->next;
-    }    
-fprintf(stderr, "im here rank %d %s:%d\n",dt_read_data->dt_comm_rank,__FILE__,__LINE__);
-
-    return 0;
-}
-#endif
-
-void data_handler (void *data, int length, void *user_data, attr_list attr, int rank, void *timing, file_info *f)
-{
-    recvtime *r = (recvtime*)timing;
-    IOhandle *h = (IOhandle*)user_data;
-    elapsedtime *e = updateTimes(h, r, length);
-    
-    // decode the data and insert the data into the queue
-    int decoded_length = FFS_est_decode_length(h->iocontext, data, length);
-
-    // TODO: make sure we free this later (after writing to hdf5 file)
-    char *decoded_data = (char *)malloc(decoded_length);
-
-    if(!decoded_data) {
-        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-        exit(-1);
-    }
-
-    FFSTypeHandle ffshandle = FFSTypeHandle_from_encode(h->iocontext, data);
-    FMFormat form = FMFormat_of_original(ffshandle);
-
-    // TODO
-    FMStructDescList var_list = get_localized_formats(form);
-    establish_conversion(h->iocontext, ffshandle, var_list);
-    FFSdecode_to_buffer(h->iocontext, data, decoded_data);
-
-    // The encoded data can be recycled now
-    returnbuffer(h, data, length);
-
-    QueueItem * qi =(QueueItem *) malloc(sizeof(QueueItem));
-    if(!qi) {
-        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-        exit(-1);
-    }
-    qi->data = decoded_data;
-    qi->length = decoded_length;
-    qi->var_list = var_list;
-    qi->rank = rank; // TODO: hack it!   
-
-    // put message in queue
-    pthread_mutex_lock(&(f->mutex));
-//    while(queue_size(f->dt_queue) >= f->dt_queue_max_length) {
-//        // wait until queue is not full
-//        pthread_cond_signal(&(dt_read_data->cond2));
-//        pthread_cond_wait(&(dt_read_data->cond1), &(dt_read_data->mutex));
-//    }
-    queue_enqueue(f->dt_queue, qi);
-    if(queue_size(f->dt_queue) == f->num_chunks) {
-        pthread_cond_signal(&(f->cond2));
-    }
-    pthread_mutex_unlock(&(f->mutex));
-
-
-fprintf(stderr, "im here rank= %d client rank=%d data handler done %s:%d\n",h->rank,rank,__FILE__,__LINE__);
-    
-    // TODO: check if it's time to stop
-}
-
-void * dt_server_thread_func (void *arg)
-{
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    MPI_Comm orig_comm = (MPI_Comm) arg;
-
-#if 0 // open-mpi   
-    // duplicate a MPI communicator for synchronization between dt servers
-    int rc = MPI_Comm_dup(orig_comm, &(dt_read_data->dt_comm));
-    if(rc != MPI_SUCCESS) {
-        error(err_unspecified, "Cannot duplicate communicator for Datatap.");
-        pthread_exit(NULL);
-    }
-#else 
-    dt_read_data->dt_comm = orig_comm;
-#endif
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-
-#ifdef _NOMPI
-    dt_read_data->dt_comm_size = 1;
-    dt_read_data->dt_comm_rank = 0;
-#else 
-    MPI_Comm_size(dt_read_data->dt_comm, &(dt_read_data->dt_comm_size));
-    MPI_Comm_rank(dt_read_data->dt_comm, &(dt_read_data->dt_comm_rank));
-#endif
-  
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    // initialize ptlpbio interface
-    dt_read_data->dt_cm = CManager_create();
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    CMlisten_specific(dt_read_data->dt_cm, NULL);
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    lrand48();
-
-    dt_read_data->dt_handle = EVthin_portals_listen(dt_read_data->dt_cm, 120,
-                              0, data_handler, dt_read_data->dt_comm);
-
-    char param_file[30];
-    int appid, was_set;
-    appid = globals_adios_get_application_id(&was_set);
-    if(!was_set) {
-        adios_error(err_unspecified, "Application ID was not set.");
-        sprintf(param_file, "datatap_param\0");
-    }
-    else {
-        sprintf(param_file, "datatap_param%d\0", appid);
-    }
-
-    // dt server(rank 0) gather contact info from other servers and write to
-    // a file so upstream writers can connect to this application
-    outputConnectionData(param_file, dt_read_data->dt_handle);
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    dt_read_data->dt_server_ready = 1;
-
-    // serve the network
-    CMrun_network(dt_read_data->dt_cm);
-
-    // TODO: cleanup and exit
-    CManager_close(dt_read_data->dt_cm);
-    return NULL;
-}
-
-int adios_read_datatap_init (MPI_Comm comm)
-{
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    setenv("CMSelfFormats", "1", 1);
-
-    // initialize Datatap read method structure
-    dt_read_data = (datatap_read_method_data *) malloc(sizeof(datatap_read_method_data));
-    if(!dt_read_data) {
-        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-        return -1;
-    }    
-    memset(dt_read_data, 0, sizeof(datatap_read_method_data));
-
-    // enable threading for EVPath
-    gen_pthread_init();
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-#if 0
-    // set up queue for incoming data chunks
-    dt_read_data->dt_queue =(Queue *) calloc(1, sizeof(Queue));
-    if(!dt_read_data->dt_queue) {
-        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-        return -1;
-    }
-    queue_init(dt_read_data->dt_queue, free);
-    dt_read_data->dt_queue_max_length = DT_MAX_QUEUE_LENGTH;
-
-    pthread_mutex_init(&(dt_read_data->mutex), NULL);
-    pthread_cond_init(&(dt_read_data->cond1), NULL);
-    pthread_cond_init(&(dt_read_data->cond2), NULL);
-#endif    
-
-    // fork the thread to poll network 
-    int rc = pthread_create(&(dt_read_data->dt_server_thread), NULL, 
-                            dt_server_thread_func, (void *)comm);
-    if(rc) {
-        adios_error(err_unspecified, "Failed to create Datatap server thread.");
-        return -1; 
-    }
-
-    // TODO: wait until the dt server thread is ready
-    while(!dt_read_data->dt_server_ready) { }
-    
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    return 0;
-}
-
-int adios_read_datatap_finalize ()
-{
-    // notify and wait for dt server thread to exit
-    datatap_stop_server(dt_read_data->dt_handle);
-    pthread_join(dt_read_data->dt_server_thread, NULL);
-
-#if 0
-    // TODO: we need a datatap cleanup function
-    pthread_mutex_destroy(&(dt_read_data->mutex));
-    pthread_cond_destroy(&(dt_read_data->cond1));
-    pthread_cond_destroy(&(dt_read_data->cond2));    
-    free(dt_read_data->dt_queue);
-#endif
-
-    free(dt_read_data);
-    return 0;
-}
-
-ADIOS_FILE *adios_read_datatap_fopen(const char *fname, MPI_Comm comm)
-{
-    ADIOS_FILE *fp;
-    adios_errno = 0;
-
-    datatap_read_file_data *ds = (datatap_read_file_data *) malloc(sizeof(datatap_read_file_data));
-    if(!ds) {
-        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-        return NULL;                
-    }
-    ds->file_name = strdup(fname);    
-     
-    // here we need to syncrhonize with other reader processes to see what they find
-    // 1: file available locally
-    // 0: file not found
-    int my_status, global_status;
-    int total_num_readers, my_rank;
-
-#ifdef _NOMPI
-    total_num_readers = 1;
-    my_rank = 0;
-#else
-    MPI_Comm_size(comm, &total_num_readers);
-    MPI_Comm_rank(comm, &my_rank);
-#endif
-
-    ds->comm = comm;
-    ds->my_rank = my_rank;
-    ds->comm_size = total_num_readers;
-
-    // first we need to make sure the file has been 'written'
-    // TODO: always start from timstep 0
-    int is_EOF = 0;
-    ds->f_info = datatap_get_file_info(dt_read_data->dt_handle, fname, dt_read_data->num_io_dumps, &is_EOF);
-    if(ds->f_info) {
-        // now I should tell my peer readers that I have seen this file available locally
-        my_status = 1;
-        if(total_num_readers > 1) {
-            int rc = MPI_Allreduce(&my_status, &global_status, 1, MPI_INT, MPI_SUM, comm);
-            if(rc != MPI_SUCCESS) {
-                fprintf(stderr, "something bad happened somewhere.\n");
-                free(ds->file_name);
-                free(ds);
-                return NULL;
-            } 
-        }
-        // now I can move on to process meta-data
-fprintf(stderr, "im here rank %d move on %s:%d\n", my_rank, __FILE__,__LINE__);
-    }
-    else {
-        if(is_EOF) {
-            adios_errno = err_end_of_file;
-            adios_error(err_end_of_file, "Reach the end of file (%s).", fname);
-            free(ds->file_name);
-            free(ds);
-    
-            if(total_num_readers > 1) {               
-                // now I should wait for my peer readers to see EOF in their local context
-                int rc = MPI_Barrier(comm);
-                if(rc != MPI_SUCCESS) {
-                    fprintf(stderr, "something bad happened somewhere.\n");
-                }
-                return NULL; 
-            }
-        }
-        else {
-            if(total_num_readers > 1) {
-
-                // I didn't see the file available in my local context, but my peer readers may
-                // have seen it, so I should ask them to figure out
-fprintf(stderr, "im here rank %d ask %s:%d\n", my_rank, __FILE__,__LINE__);
-                my_status = 0;
-                MPI_Allreduce(&my_status, &global_status, 1, MPI_INT, MPI_SUM, comm);
-                if(global_status == 0) { // no one see file available
-fprintf(stderr, "im here rank %d no file %s:%d\n", my_rank, __FILE__,__LINE__);
-                    adios_errno = err_file_not_found_error;
-                    adios_error(err_file_not_found_error, "Cannot find file (%s).", fname);
-fprintf(stderr, "im here rank %d no file %s:%d\n", my_rank, __FILE__,__LINE__);
-                    free(ds->file_name);
-                    free(ds);
-                    return NULL;
-                }
-                else { 
-                    // some one has seen this file available, so I should keep polling instead of return
-                    do {
-fprintf(stderr, "im here rank %d %s:%d\n", my_rank, __FILE__,__LINE__);
-                        is_EOF = 0;
-                        ds->f_info = datatap_get_file_info(dt_read_data->dt_handle, 
-                            fname, dt_read_data->num_io_dumps, &is_EOF);
-                        if(ds->f_info) { 
-                            // now we get it!
-fprintf(stderr, "im here rank %d %s:%d\n", my_rank, __FILE__,__LINE__);
-                            break;
-                        }
-                        else {
-                            if(is_EOF) {
-                                adios_errno = err_end_of_file;
-                                adios_error(err_end_of_file, "Reach the end of file (%s).", fname);
-                                free(ds->file_name);
-                                free(ds);
-
-                                int rc = MPI_Barrier(comm);
-                                if(rc != MPI_SUCCESS) {
-                                    fprintf(stderr, "something bad happened somewhere.\n");
-                                }
-                                return NULL;
-                            }
-                            else {
-                                usleep(10000); // TODO: we need to set a proper value
-fprintf(stderr, "im here rank %d %s:%d\n", my_rank, __FILE__,__LINE__);
-                                continue;
-                            }
-                        }  
-                    } 
-                    while (1);
-                }
-            }
-            else {
-                adios_errno = err_file_not_found_error;
-                adios_error(err_file_not_found_error, "Cannot find file (%s).", fname);
-fprintf(stderr, "im here rank %d no file %s:%d\n", my_rank, __FILE__,__LINE__);
-                free(ds->file_name);
-                free(ds);
-                return NULL;
-            }  
-        }
-    }       
-fprintf(stderr, "im here rank %d see file %s:%d\n", my_rank, __FILE__,__LINE__);
-    
-    // we don't know what to read yet
-    ds->num_vars = 0;
-    ds->vars = NULL;
-//    ds->num_vars_read = 0;
-//    ds->vars_read = NULL;
-//    ds->vars_read_tail = NULL;
-
-    // TODO: add a loop over chunks
-    int i;
-    for(i = 0; i < ds->f_info->num_chunks; i ++) {  
-        chunk_info *current_chunk = &(ds->f_info->chunks[i]);  
-        
-fprintf(stderr, "im here %s:%d\n", __FILE__,__LINE__);
-        // parse the var info
-        char *current_pos = current_chunk->var_info_buffer;
-        int total_var_info_size = *(int *)current_pos; // total size
-        current_pos += 4;
-
-        if(i == 0) {
-            ds->host_language_fortran = *(enum ADIOS_FLAG *)current_pos; // host language
-        }
-        current_pos += 4;
-
-        int group_name_len = *(int *)current_pos; // size of group name
-        current_pos += 4; 
-  
-        if(i == 0) { // TODO: let's assume one group name
-            ds->group_name = strdup(current_pos); // group name
-        }
-        current_pos += group_name_len;
-
-        int num_vars_in_pg = *(int *)current_pos; // total num of vars  
-        current_pos += 4;
-fprintf(stderr, "im here info size %d num vars %d %s:%d\n", total_var_info_size,num_vars_in_pg,__FILE__,__LINE__);
-
-        datatap_var_info *current_var;
-        char *end = current_chunk->var_info_buffer + total_var_info_size;
-        while(current_pos < end) {
-            // size of this var info
-            int var_info_size = *(int *) current_pos;             
-            current_pos += sizeof(int);        
-            int var_id = *(int *) current_pos;
-            current_pos += sizeof(int);        
-            int varname_len = *(int *) current_pos;        
-            current_pos += sizeof(int);        
-            char *varname = current_pos;  
-            current_pos += varname_len;
-            int varpath_len = *(int *) current_pos;
-            current_pos += sizeof(int);
-            char *varpath = current_pos;
-            current_pos += varpath_len;
-
-            // now we go through the current list of vars to see if this is new
-            current_var = ds->vars;
-            while(current_var != NULL) {
-                // TODO: compare var id
-                //if(!strcmp(current_var->varname, varname) && 
-                //    !strcmp(current_var->varpath, varpath)) {
-                if(var_id == current_var->id) {
-                    break;
-                }
-                else {
-                    current_var = current_var->next;
-                }
-            }
-
-            if(!current_var) { // this is a new var
-                current_var = (datatap_var_info *) malloc(sizeof(datatap_var_info));
-                if(!current_var) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;
-                }
-                current_var->id = var_id;
-                current_var->varname = strdup(varname);
-                current_var->varpath = strdup(varpath);
-                current_var->type = *(enum ADIOS_DATATYPES *) current_pos;
-                current_pos += sizeof(enum ADIOS_DATATYPES);
-                current_var->time_dim = *(int *) current_pos;
-                current_pos += sizeof(int);
-                current_var->ndims = *(int *) current_pos;
-                current_pos += sizeof(int);
-                current_var->num_chunks = 0;
-                current_var->chunks = NULL;
-                if(!current_var->ndims) { // scalars and strings
-                    current_var->data_size = common_read_type_size(current_var->type, current_pos);
-                }
-fprintf(stderr, "im here %s %s %d %s:%d\n", current_var->varname, current_var->varpath, current_var->ndims, __FILE__,__LINE__);
-                current_var->next = ds->vars;
-                ds->vars = current_var;
-                ds->num_vars ++;
-            }
-            else {
-                current_pos += sizeof(enum ADIOS_DATATYPES);
-                //current_var->time_dim = *(int *) current_pos;
-                current_pos += sizeof(int);
-                //current_var->ndims = *(int *) current_pos;
-                current_pos += sizeof(int);
-            }            
-            
-            datatap_var_chunk *new_chunk = (datatap_var_chunk *) malloc(sizeof(datatap_var_chunk));             
-            if(!new_chunk) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;
-            }
-            new_chunk->next = current_var->chunks;
-            current_var->chunks = new_chunk;
-            current_var->num_chunks ++; 
-
-            new_chunk->rank = current_chunk->rank;
-            if(!current_var->ndims) { // scalars and strings
-                // copy data value             
-                new_chunk->data = malloc(current_var->data_size);
-                if(!new_chunk->data) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;                                  
-                }
-                memcpy(new_chunk->data, current_pos, current_var->data_size);         
-                current_pos += current_var->data_size;
-            }
-            else { // arrays
-                new_chunk->local_bounds = (uint64_t *) malloc(current_var->ndims * sizeof(uint64_t));  
-                if(!new_chunk->local_bounds) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;                                  
-                }
-                new_chunk->global_bounds = (uint64_t *) malloc(current_var->ndims * sizeof(uint64_t));  
-                if(!new_chunk->global_bounds) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;                                  
-                }
-                new_chunk->global_offsets = (uint64_t *) malloc(current_var->ndims * sizeof(uint64_t));  
-                if(!new_chunk->global_offsets) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;                                  
-                }
-                int i;
-                for(i = 0; i < current_var->ndims; i ++) {
-                    new_chunk->local_bounds[i] = *(uint64_t *)current_pos;
-                    current_pos += sizeof(uint64_t);  
-                    new_chunk->global_bounds[i] = *(uint64_t *)current_pos;
-                    current_pos += sizeof(uint64_t);  
-                    new_chunk->global_offsets[i] = *(uint64_t *)current_pos;
-                    current_pos += sizeof(uint64_t);  
-                }                          
-            }
-        }    
-        // TODO: at this point, we no longer need var_info_buffer so free it
-        // free(current_chunk->var_info_buffer);
-    }
-        
-
-    // TODO: replicate meta-data among peer reader
-    ds->num_vars_peer = 0;
-    ds->vars_peer = NULL;
-
-    if(total_num_readers > 1)
-    {
-        char *send_buf = NULL;
-        char *recv_buf = NULL; 
-        int send_count = VAR_INFO_SIZE, recv_count = VAR_INFO_SIZE;
-        if(my_rank == 0) {
-            for(i = 0; i < ds->f_info->num_chunks; i ++) {
-                chunk_info *current_chunk = &(ds->f_info->chunks[i]);
-fprintf(stderr, "im here rank %d %d %s:%d\n", ds->my_rank, current_chunk->rank,__FILE__,__LINE__);
-                if(current_chunk->rank == 0) {
-                    send_buf = ds->f_info->chunks[i].var_info_buffer;
-                    break;
-                } 
-            }
-            
-            // TODO: before we do this, we need to make sure this one has sth special
-            // the only case we need to deal with is local array with only one chunk
-            // we will check this when calling read_var
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-            int rc = MPI_Bcast(send_buf, send_count, MPI_BYTE, 0, comm);
-            if(rc != MPI_SUCCESS) {
-                fprintf(stderr, "rank %d: MPI_Scatter returns error (%d). %s:%d\n",
-                    my_rank, rc, __FILE__, __LINE__);
-                return NULL;
-            }
-        }
-        else {
-            recv_buf = (char *) malloc(VAR_INFO_SIZE); 
-            if(!recv_buf) {
-                adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                return NULL;
-            }
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-            int rc = MPI_Bcast(recv_buf, recv_count, MPI_BYTE, 0, comm);
-            if(rc != MPI_SUCCESS) {
-                fprintf(stderr, "rank %d: MPI_Scatter returns error (%d). %s:%d\n",
-                    my_rank, rc, __FILE__, __LINE__);
-                return NULL;
-            }
-        }
-
-        if(my_rank != 0) {
-            // parse the var_info buffer
-            char *current_pos = recv_buf;
-            int total_var_info_size = *(int *)current_pos; // total size
-            current_pos += 4;
-
-            current_pos += 4; // host language
-
-            int group_name_len = *(int *)current_pos; // size of group name
-            current_pos += 4;
-            current_pos += group_name_len;
-
-            int num_vars = *(int *)current_pos; // total num of vars
-            current_pos += 4;
-
-            datatap_var_info *current_var;
-            char *end = recv_buf + total_var_info_size;
-            while(current_pos < end) {
-                // size of this var info
-                int var_info_size = *(int *) current_pos;
-                char *start_of_next_var = current_pos + var_info_size;
-                current_pos += sizeof(int);
-                int var_id = *(int *) current_pos;
-                current_pos += sizeof(int);
-                int varname_len = *(int *) current_pos;
-                current_pos += sizeof(int);
-                char *varname = current_pos;
-                current_pos += varname_len;
-                int varpath_len = *(int *) current_pos;
-                current_pos += sizeof(int);
-                char *varpath = current_pos;
-                current_pos += varpath_len;
-
-                // now we go through the current list of vars to see if this is new
-                current_var = ds->vars;
-                while(current_var != NULL) {
-                    //if(!strcmp(current_var->varname, varname) &&
-                    //    !strcmp(current_var->varpath, varpath)) {
-                    if(var_id == current_var->id) {
-                        // this var is locally available, so skip it
-                        break;
-                    }
-                    else {
-                        current_var = current_var->next;
-                    }
-                }
-
-                if(current_var) { // this var is locally available
-                    current_pos = start_of_next_var;
-                    continue;
-                }
-
-                current_var = (datatap_var_info *) malloc(sizeof(datatap_var_info));
-                if(!current_var) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;
-                }
-                current_var->id = var_id;
-                current_var->varname = strdup(varname);
-                current_var->varpath = strdup(varpath);
-                current_var->type = *(enum ADIOS_DATATYPES *) current_pos;
-                current_pos += sizeof(enum ADIOS_DATATYPES);
-                current_var->time_dim = *(int *) current_pos;
-                current_pos += sizeof(int);
-                current_var->ndims = *(int *) current_pos;
-                current_pos += sizeof(int);
-                current_var->num_chunks = 0;
-                current_var->chunks = NULL;
-                if(!current_var->ndims) { // scalars and strings
-                    current_var->data_size = common_read_type_size(current_var->type, current_pos);
-                }
-                current_var->next = ds->vars_peer;
-                ds->vars_peer = current_var;
-                ds->num_vars_peer ++;
-
-                datatap_var_chunk *new_chunk = (datatap_var_chunk *) malloc(sizeof(datatap_var_chunk));
-                if(!new_chunk) {
-                    adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                    return NULL;
-                }
-                new_chunk->next = current_var->chunks;
-                current_var->chunks = new_chunk;
-                current_var->num_chunks ++;
-
-                new_chunk->rank = 0;
-                if(!current_var->ndims) { // scalars and strings
-                    // copy data value
-                    new_chunk->data = malloc(current_var->data_size);
-                    if(!new_chunk->data) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-                    memcpy(new_chunk->data, current_pos, current_var->data_size);
-                    current_pos += current_var->data_size;
-                }
-                else { // arrays
-                    new_chunk->local_bounds = (uint64_t *) malloc(current_var->ndims * sizeof(uint64_t));
-                    if(!new_chunk->local_bounds) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-                    new_chunk->global_bounds = (uint64_t *) malloc(current_var->ndims * sizeof(uint64_t));
-                    if(!new_chunk->global_bounds) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-                    new_chunk->global_offsets = (uint64_t *) malloc(current_var->ndims * sizeof(uint64_t));
-                    if(!new_chunk->global_offsets) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-                    int i;
-                    for(i = 0; i < current_var->ndims; i ++) {
-                        new_chunk->local_bounds[i] = *(uint64_t *)current_pos;
-                        current_pos += sizeof(uint64_t);
-                        new_chunk->global_bounds[i] = *(uint64_t *)current_pos;
-                        current_pos += sizeof(uint64_t);
-                        new_chunk->global_offsets[i] = *(uint64_t *)current_pos;
-                        current_pos += sizeof(uint64_t);
-                    }
-                }
-            }
-            
-            free(recv_buf);   
-        }
-    }
-
-fprintf(stderr, "im here %d %d %d %s:%d\n", ds->host_language_fortran, adios_flag_yes, futils_is_called_from_fortran(), __FILE__, __LINE__);
-    // TODO: here we need to ajust array dimension if the reader is in C 
-    // but writer is in Fortran or vice versa
-    if(ds->host_language_fortran == adios_flag_yes && !futils_is_called_from_fortran()) {
-        // reader is in C but writer is in Fortran, there are several things to adjust:
-        // array dimension index starts from 1 in Fortran --> start from 0 in C
-        // change array dimension order (including time dimension)
-        datatap_var_info *v = ds->vars;        
-        while(v) {
-            datatap_var_chunk *chunk = v->chunks; 
-            while(chunk) {
-                int i;
-                uint64_t temp;
-                for(i = 0; i < v->ndims/2; i ++) {
-                    temp = chunk->local_bounds[v->ndims-i-1];
-                    chunk->local_bounds[v->ndims-i-1] = chunk->local_bounds[i];
-                    chunk->local_bounds[i] = temp;
-                    temp = chunk->global_bounds[v->ndims-i-1];
-                    chunk->global_bounds[v->ndims-i-1] = chunk->global_bounds[i];
-                    chunk->global_bounds[i] = temp;
-                    temp = chunk->global_offsets[v->ndims-i-1];
-                    chunk->global_offsets[v->ndims-i-1] = chunk->global_offsets[i];
-                    chunk->global_offsets[i] = temp;
-                }
-                chunk = chunk->next;
-            }
-            if(v->time_dim > 0) { // -1 means no time dimension
-                v->time_dim = v->ndims - v->time_dim;  
-            }
-            v = v->next;
-        }
-
-        v = ds->vars_peer;
-        while(v) {
-            datatap_var_chunk *chunk = v->chunks;
-            while(chunk) {
-                int i;
-                for(i = 0; i < v->ndims; i ++) {
-                    chunk->local_bounds[i] --;
-                    //chunk->global_offsets[i] --;
-                }
-                uint64_t temp;
-                for(i = 0; i < v->ndims/2; i ++) {
-                    temp = chunk->local_bounds[v->ndims-i-1];
-                    chunk->local_bounds[v->ndims-i-1] = chunk->local_bounds[i];
-                    chunk->local_bounds[i] = temp;
-                    temp = chunk->global_bounds[v->ndims-i-1];
-                    chunk->global_bounds[v->ndims-i-1] = chunk->global_bounds[i];
-                    chunk->global_bounds[i] = temp;
-                    temp = chunk->global_offsets[v->ndims-i-1];
-                    chunk->global_offsets[v->ndims-i-1] = chunk->global_offsets[i];
-                    chunk->global_offsets[i] = temp;
-                }
-                chunk = chunk->next;
-            }
-            v->time_dim = v->ndims - v->time_dim - 1;
-            v = v->next;
-        }
-    }
-    else if(ds->host_language_fortran == adios_flag_no && futils_is_called_from_fortran()) {
-        // adjuct dimension C --> Fortran  
-        // TODO: for the demo, this will not happen so leave it here
-    }
-
-    fp = (ADIOS_FILE *) malloc(sizeof(ADIOS_FILE));
-    if(!fp) {
-        adios_error(err_no_memory, "Cannot allocate memory for file info.");
-        free(ds);
-        return NULL;
-    }
- 
-    fp->fh = (uint64_t) ds;
-    fp->groups_count = 1; // TODO: assume one group per file
-    fp->vars_count = 0; // TODO: just do not use this filed
-    fp->attrs_count = 0; // TODO: do not support attributes yet
-
-    // TODO: since we require fopen/fclose for each timestep, 
-    // so there is always only 1 timestep in file
-    // TODO: set ntimesteps to be max to make pixie3d working
-    fp->tidx_start = ds->f_info->timestep;  
-    fp->ntimesteps = INT32_MAX;
-fprintf(stderr, "im here timestep %d %s:%d\n", fp->tidx_start = ds->f_info->timestep, __FILE__,__LINE__);
-
-    fp->file_size = 0; 
-    fp->version = 1;
-    fp->endianness = 0; 
-    alloc_namelist(&fp->group_namelist, fp->groups_count); 
-    for (i = 0; i < fp->groups_count; i++) {
-        if (!fp->group_namelist[i])  {
-            adios_error(err_no_memory, "Cannot allocate buffer in adios_fopen()");
-            return NULL;
-        }
-        else {
-            strcpy(fp->group_namelist[i], ds->group_name); 
-        }
-    }
-fprintf(stderr, "im here %s:%d\n", __FILE__,__LINE__);
-
-    // TODO: return code of adios_errno for fopen:
-    // 0: file metadata is available and everything is success
-    // we need a value telling that the file is not available yet
-    // we also need a value telling that writer is finishing so don't
-    // read this file any more
-
-    return fp; 
-}
-
-int adios_read_datatap_fclose(ADIOS_FILE *fp)
-{
-fprintf(stderr, "im here rank %d %s:%d\n",dt_read_data->dt_comm_rank,__FILE__,__LINE__);
-    datatap_read_file_data *ds = (datatap_read_file_data *) fp->fh;
-
-    adios_errno = 0;
-
-    dt_read_data->num_io_dumps ++;
-
-    // recycle the queue
-    QueueItem *qi;
-
-    while((!queue_dequeue(ds->f_info->dt_queue, &qi)) && qi) {
-        free(qi->data);
-        free(qi);  
-    }
-
-    // now we 'read' the data into user-provided buffers
-    // note that the data is actually moved by dt servr thread
-    // here we just re-organize the data into the distribution
-    // user wants
-
-#if 0
-    // process the incoming data chunks 
-    void *d = NULL;
-    QueueItem *qi;
-    uint64_t num_chunks_processed = 0;
-    int file_done = 0;
-
-    while(1) {
-        pthread_mutex_lock(&(ds->f_info->mutex));
-                while(queue_size(ds->f_info->dt_queue) == 0) {
-        fprintf(stderr, "im here num_chunks_processed %d %d %s:%d\n",num_chunks_processed, ds->num_pgs,__FILE__,__LINE__);
-            // check if it's time to finish this file
-            if(num_chunks_processed == ds->num_pgs) { // TODO
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-                dt_read_data->num_io_dumps ++;
-                pthread_mutex_unlock(&(ds->f_info->mutex));
-                file_done = 1;
-                break;
-            }
-            else { 
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-                pthread_cond_signal(&(ds->f_info->cond1));
-                pthread_cond_wait(&(ds->f_info->cond2), &(ds->f_info->mutex));
-            }
-        }
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-
-        if(file_done) {
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-            break;
-        }
-
-        // start of busy time
-        while((!queue_dequeue(ds->f_info->dt_queue, &d)) && d) {
-            //pthread_cond_signal(&(ds->f_info->cond1));
-            pthread_mutex_unlock(&(ds->f_info->mutex));
-
-            qi =(QueueItem *) d;
-
-fprintf(stderr, "im here rank %d %s:%d\n",dt_read_data->dt_comm_rank,__FILE__,__LINE__);
-            int rc = reorganize_array (qi, ds);
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-            if(rc) {
-                adios_error(err_unspecified, "Error in reorganize_array() function.");
-                exit(-1);
-            }
-
-            // recycle decoded data buffer
-            free(qi->data);
-            free(qi);
-
-            num_chunks_processed ++;
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-            pthread_mutex_unlock(&(ds->f_info->mutex));
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-            pthread_mutex_lock(&(ds->f_info->mutex));
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-        }
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-
-        pthread_mutex_unlock(&(ds->f_info->mutex));
-    }
-#endif    
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    // notify dt server thread that we are done with this file 
-    int rc = datatap_release_file(dt_read_data->dt_handle, ds->f_info);
-    if(rc != 0) {
-        adios_error(err_unspecified, "Could not close file.");
-        return -1;
-    }
-
-    free_namelist((fp->group_namelist), fp->groups_count);
-    if (ds->file_name) { 
-        free(ds->file_name); 
-        ds->file_name = NULL; 
-    }
-    
-    if (ds->group_name) {
-        free(ds->group_name);
-        ds->group_name = NULL;
-    }
-
-    // TODO release pg_info and var_info 
-    datatap_var_info *v = ds->vars;
-    datatap_var_info *tmp_v;
-    while(v) {
-        tmp_v = v;
-        free(v->varname);
-        free(v->varpath);
-        datatap_var_chunk *chunk = v->chunks;
-        datatap_var_chunk *tmp_chunk;
-        while(chunk) {
-            tmp_chunk = chunk;
-            if(v->ndims) {
-                free(chunk->local_bounds);
-                free(chunk->global_bounds);
-                free(chunk->global_offsets);
-            }
-            else {
-                free(chunk->data);     
-            }
-            chunk = chunk->next;
-            free(tmp_chunk);
-        }
-        v = v->next;
-        free(tmp_v);
-    }
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    v = ds->vars_peer;
-    while(v) {
-        tmp_v = v;
-        free(v->varname);
-        free(v->varpath);
-        datatap_var_chunk *chunk = v->chunks;
-        datatap_var_chunk *tmp_chunk;
-        while(chunk) {
-            tmp_chunk = chunk;
-            if(v->ndims) {
-                free(chunk->local_bounds);
-                free(chunk->global_bounds);
-                free(chunk->global_offsets);
-            }
-            else {
-                free(chunk->data);
-            }
-            chunk = chunk->next;
-            free(tmp_chunk);
-        }
-        v = v->next;
-        free(tmp_v);
-    }
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-
-    free(ds);
-    free(fp);
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    return 0;
-}
-
-ADIOS_GROUP * adios_read_datatap_gopen (ADIOS_FILE *fp, const char *grpname)
-{
-fprintf(stderr, "im here %s:%d\n", __FILE__,__LINE__);
-    if(!grpname) {
-        adios_error(err_invalid_group, "Group name is not valid");
-        return NULL;
-    }
-    int i;
-    for(i = 0; i < fp->groups_count; i ++) {   
-        if(!strcmp(grpname, fp->group_namelist[i])) {
-            return adios_read_datatap_gopen_byid(fp, i);
-        }
-    }
-    adios_error(err_invalid_group, "Group %s is not valid", grpname);
-    return NULL;
-}
-
-ADIOS_GROUP * adios_read_datatap_gopen_byid (ADIOS_FILE *fp, int grpid)
-{
-fprintf(stderr, "im here %s:%d\n", __FILE__,__LINE__);
-    datatap_read_file_data *ds = (datatap_read_file_data *) fp->fh;
-    ADIOS_GROUP * gp;
-
-    adios_errno = 0;
-
-    gp = (ADIOS_GROUP *) malloc(sizeof(ADIOS_GROUP));
-    if (!gp) {
-        adios_error(err_no_memory, "Could not allocate memory for group info");
-        return NULL;
-    }
-
-    // TODO: again, assume one group per file
-    gp->grpid = grpid;
-    gp->gh = (uint64_t) 0; // TODO: we should re-organize the metadata
-    gp->fp = fp;
-    gp->attrs_count = 0; // attributes are not supported yet
-    
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    // generate a list of variables with distinct names among all pgs
-    gp->vars_count = ds->num_vars + ds->num_vars_peer;
-fprintf(stderr, "im here count %d %s:%d\n", gp->vars_count,__FILE__,__LINE__);
-    
-    // to return a globally consistently ordered var list, we sort the list by var id
-    datatap_var_info **vars = (datatap_var_info *) malloc(sizeof(datatap_var_info *) * gp->vars_count);
-    if(!vars) {
-        adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-        return NULL;
-    }
-    memset(vars, 0, sizeof(datatap_var_info *) * gp->vars_count);
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    datatap_var_info *current_var = ds->vars_peer;
-    datatap_var_info *var_to_sort = current_var;
-    while(var_to_sort) {
-        int j;
-        for(j = 0; j < gp->vars_count; j ++) {
-            if(vars[j] == NULL) {
-                vars[j] = var_to_sort;
-                current_var = current_var->next;
-                var_to_sort = current_var;
-                break; 
-            }
-            else if(vars[j]->id < var_to_sort->id) {
-                // move vars[j] 
-                datatap_var_info *tmp; 
-                tmp = vars[j];
-                vars[j] = var_to_sort;
-                var_to_sort = tmp;
-                break;
-            }
-        }
-    }
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-
-    current_var = ds->vars;
-    var_to_sort = current_var;
-    while(var_to_sort) {
-        int j;
-        for(j = 0; j < gp->vars_count; j ++) {
-            if(vars[j] == NULL) {
-                vars[j] = var_to_sort;
-                current_var = current_var->next;
-                var_to_sort = current_var;
-                break;
-            }
-            else if(vars[j]->id < var_to_sort->id) {
-                // move vars[j]
-                datatap_var_info *tmp;
-                tmp = vars[j];
-                vars[j] = var_to_sort;
-                var_to_sort = tmp;
-                break;
-            }
-        }
-    }
-    // now the vars list is in descendent order
-    gp->var_namelist = (char **) malloc(gp->vars_count * sizeof(char *));
-    if(!gp->var_namelist) {
-        adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-        return NULL;
-    }
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    int i;
-    for(i = 0; i < gp->vars_count; i ++) {
-        int index = gp->vars_count - i - 1;
-        gp->var_namelist[i] = (char *) malloc(strlen(vars[index]->varname) +
-            strlen(vars[index]->varpath) + 2);
-        if(!gp->var_namelist[i]) {
-            adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-            return NULL;
-        }
-        // return full path name
-        // TODO: make sure the size of var_namelist[j] is enough
-        if(!strcmp(vars[index]->varpath, "/")) {
-            sprintf(gp->var_namelist[i], "/%s\0\0", vars[index]->varname);
-        }
-        else {
-            sprintf(gp->var_namelist[i], "%s/%s\0", vars[index]->varpath,
-                vars[index]->varname);
-        }
-    }
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-
-    // here we construct a bitmap of var list and send it to rank 0 so rank 0 knows 
-    // which vars are only avaialble in its local memory
-    memset(ds->var_bitmap, 0, VAR_BITMAP_SIZE);
-    current_var = ds->vars_peer;
-    while(current_var) {           
-        int byte_pos = current_var->id / 8;
-        int bit_pos = current_var->id % 8;
-        unsigned char mask = 0x01 << bit_pos;
-        ds->var_bitmap[byte_pos] = ds->var_bitmap[byte_pos] | mask;
-        current_var = current_var->next;
-    }
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    // send back to rank 0 so it knows which var is missing on other processes
-    unsigned char *combined_bitmap = NULL;
-    int combined_size = ds->comm_size * VAR_BITMAP_SIZE;
-    if(ds->my_rank == 0) {
-        combined_bitmap = (unsigned char *) malloc(combined_size);
-        if(!combined_size) {
-            adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-            return NULL;
-        }
-    }
-    MPI_Gather(ds->var_bitmap, VAR_BITMAP_SIZE, MPI_BYTE, combined_bitmap, VAR_BITMAP_SIZE, MPI_BYTE, 0, ds->comm);
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    if(ds->my_rank == 0) {
-        // now determine which var is missing on other processes 
-        for(i = 0; i < ds->comm_size; i ++) {
-            int j;
-            for(j = 0; j < VAR_BITMAP_SIZE; j ++) {
-                ds->var_bitmap[j] = ds->var_bitmap[j] | combined_bitmap[i*VAR_BITMAP_SIZE+j];
-            }
-        }
-        free(combined_bitmap);
-        // if the corresponding bit is set in ds->var_bitmap, then the var is missing on other processes
-    }
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-#if 0
-    do {
-        if(i == 0) { // the first pg
-            gp->vars_count = ds->pgs[0].num_vars;
-            gp->var_namelist = (char **) malloc(gp->vars_count * sizeof(char *));
-            if(!gp->var_namelist) {
-                adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-                return NULL;
-            }
-            for(j = 0; j < gp->vars_count; j ++) {
-                gp->var_namelist[j] = (char *) malloc(strlen(ds->pgs[i].vars[j].varname) + 
-                    strlen(ds->pgs[i].vars[j].varpath) + 2);
-                if(!gp->var_namelist[j]) {
-                    adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-                    return NULL;
-                }   
-                // return full path name   
-                // TODO: make sure the size of var_namelist[j] is enough
-                if(!strcmp(ds->pgs[i].vars[j].varpath, "/")) {
-                    sprintf(gp->var_namelist[j], "/%s\0\0", ds->pgs[i].vars[j].varname);
-                }
-                else {
-                    sprintf(gp->var_namelist[j], "%s/%s\0", ds->pgs[i].vars[j].varpath, 
-                        ds->pgs[i].vars[j].varname);
-                }    
-            }
-            k = gp->vars_count;
-            i ++;
-            continue;
-        } 
-
-        // go over the vars in the ith pg 
-        for(j = 0; j < ds->pgs[i].num_vars; j ++) {
-            // first, we need to make sure the var is not seen before
-            int t;
-            int is_new = 1;
-            char fullname[256];
-            if(!strcmp(ds->pgs[i].vars[j].varpath, "/")) {
-                sprintf(fullname, "/%s\0", ds->pgs[i].vars[j].varname);
-            }
-            else { 
-                sprintf(fullname, "%s/%s\0", ds->pgs[i].vars[j].varpath, ds->pgs[i].vars[j].varname);  
-            } 
-            for(t = 0; t < k; t++) {
-                if(!strcmp(fullname, gp->var_namelist[t])) { 
-                    is_new = 0;
-                    break;  
-                } 
-            }
-
-            if(!is_new) continue;
-
-            // now add this var to list
-            char **temp = gp->var_namelist;  
-//            temp = (char **) realloc(gp->var_namelist, (k+1) * sizeof(char*));
-            temp = (char **) malloc((k+1) * sizeof(char*));
-            if(!temp) {
-                adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_gopen_byid()");
-                return NULL;
-            }
-            else {
-                memcpy(temp, gp->var_namelist, k*sizeof(char *));
-                free(gp->var_namelist);
-                gp->var_namelist = temp;
-
-            }
-             
-            // return full path name
-            gp->var_namelist[k] = strdup(fullname);
-            gp->vars_count ++; 
-            k ++; 
-        }
- 
-        i ++;
-    }
-    while(i < ds->num_pgs);
-#endif 
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-
-    gp->attr_namelist = 0;
-
-    gp->timestep = ds->f_info->timestep;
-    gp->lasttimestep = ds->f_info->timestep;
-
-    // now we need to wait here until we see all data are ready
-    pthread_mutex_lock(&(ds->f_info->mutex));
-    while(queue_size(ds->f_info->dt_queue) != ds->f_info->num_chunks) {
-        pthread_cond_wait(&(ds->f_info->cond2), &(ds->f_info->mutex));
-    }
-    pthread_mutex_unlock(&(ds->f_info->mutex));
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    return gp;
-}
-
-int adios_read_datatap_gclose (ADIOS_GROUP *gp)
-{
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-//    datatap_read_file_data *ds = (datatap_read_file_data *) gp->fp->fh;
-    adios_errno = 0;
-    free_namelist ((gp->attr_namelist),gp->attrs_count);
-    int i;
-    for(i = 0; i < gp->vars_count; i ++) {
-        free(gp->var_namelist[i]); 
-    }
-    free(gp->var_namelist);
-//    free_namelist ((gp->var_namelist),gp->vars_count);
-    free(gp);
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    return 0;
-
-}
-
-int adios_read_datatap_get_attr (ADIOS_GROUP *gp, const char *attrname, 
-                                 enum ADIOS_DATATYPES *type,
-                                 int *size, void **data)
-{
-    // TODO: borrowed from dimes
-    adios_error(err_invalid_read_method, "adios_read_datatap_get_attr is not implemented.");
-    *size = 0;
-    *type = adios_unknown;
-    *data = 0;
-    return adios_errno;
-}
-
-int adios_read_datatap_get_attr_byid (ADIOS_GROUP *gp, int attrid, 
-                                      enum ADIOS_DATATYPES *type, 
-                                      int *size, void **data)
-{
-    // TODO: borrowed from dimes
-    adios_error(err_invalid_read_method, "adios_read_datatap_get_attr_byid is not implemented.");
-    *size = 0;
-    *type = adios_unknown;
-    *data = 0;
-    return adios_errno;
-}
-
-ADIOS_VARINFO * adios_read_datatap_inq_var (ADIOS_GROUP *gp, const char *varname) 
-{
-    // TODO: usually user will read those variables reperesenting dimensions directly
-//    error(err_invalid_read_method, "adios_read_datatap_inq_var is not implemented.");
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-    // find the var among all pgs
-    ADIOS_VARINFO *v = (ADIOS_VARINFO *) malloc(sizeof(ADIOS_VARINFO));
-    if(!v) {
-        adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-        return NULL;
-    }
-    memset(v, 0, sizeof(ADIOS_VARINFO));
-
-    datatap_read_file_data *ds = (datatap_read_file_data *) gp->fp->fh;
-    
-    int found = 0;
-    datatap_var_info *current_var = ds->vars;
-    while(current_var) {
-        if(!compare_var_name(varname, current_var)) { 
-            found = 1;
-            break;
-        }
-        else {
-            current_var = current_var->next;
-        } 
-    } 
-
-    if(!found) {
-        current_var = ds->vars_peer;
-        while(current_var) {
-            if(!compare_var_name(varname, current_var)) {
-                found = 1;
-                break;
-            }
-            else {
-                current_var = current_var->next;
-            }
-        }
-    }
-  
-    if(found) {
-        v->grpid = gp->grpid;
-        int i;
-        for(i = 0; i < gp->vars_count; i ++) {
-            if(!strcmp(gp->var_namelist[i], varname)) {
-                v->varid = i; // TODO: this may not be cmpatible with BP
-                break;
-            }
-        }
-        v->type = current_var->type;
-        v->ndim = current_var->ndims;
-        v->timedim = current_var->time_dim;
-        if(!v->ndim) { // scalar and string
-            if(v->timedim != -1) { // scalar with time dimension
-                v->ndim = 1;
-                v->dims = (uint64_t *) malloc(sizeof(uint64_t));
-                if(!v->dims) {
-                    adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-                    return NULL;
-                }
-                v->dims[0] = 1; // TODO: only one timestep in the file
-            }
-            //int value_size = common_read_type_size(v->type, current_var->chunks->data);
-            int value_size = current_var->data_size;
-            v->value = malloc(value_size);
-            if(!v->value) {
-                adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-                return NULL;
-            }
-            memcpy(v->value, current_var->chunks->data, value_size);
-        }
-        else { // arrays
-            v->dims = (uint64_t *) malloc(v->ndim * sizeof(uint64_t));
-            if(!v->dims) {
-                adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-                return NULL;
-            }
-            int k;
-            for(k = 0; k < v->ndim; k ++) {
-                //v->dims[k] = ds->pgs[i].vars[j].global_bounds[k];
-                v->dims[k] = current_var->chunks->global_bounds[k];
-            }
-        }
-        return v;
-    }
-    else {
-        adios_error(err_invalid_varname, "Cannot find var %s\n", varname);
-        return NULL;
-    }
-
-    
-#if 0
-    int i, j;
-    for(i = 0; i < ds->num_pgs; i ++) {
-        for(j = 0; j < ds->pgs[i].num_vars; j ++) {
-            // the parameter varname can be full path or just var name, so we
-            // need to first find it by matching the name
-            if(!compare_var_name(varname, &(ds->pgs[i].vars[j]))) {     
-                v->grpid = gp->grpid;
-                v->varid = j; // TODO: this may not be cmpatible with BP 
-                v->type = ds->pgs[i].vars[j].type;
-                v->ndim = ds->pgs[i].vars[j].ndims; 
-                v->timedim = ds->pgs[i].vars[j].time_dim;
-                if(!v->ndim) { // scalar
-                    if(v->timedim != -1) { // scalar with time dimension
-                        v->ndim = 1;
-                        v->dims = (uint64_t *) malloc(sizeof(uint64_t));
-                        if(!v->dims) {
-                            adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-                            return NULL;
-                        }
-                        v->dims[0] = 1; // TODO: only one timestep in the file
-                    }
-                    int value_size = common_read_type_size(v->type, ds->pgs[i].vars[j].data);
-                    v->value = malloc(value_size); 
-                    if(!v->value) {
-                        adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-                        return NULL;
-                    }
-                    memcpy(v->value, ds->pgs[i].vars[j].data, value_size);
-                }
-                else { // arrays  
-                    v->dims = (uint64_t *) malloc(v->ndim * sizeof(uint64_t));   
-                    if(!v->dims) {
-                        adios_error(err_no_memory, "Cannot allocate buffer in adios_read_datatap_inq_var()");
-                        return NULL;
-                    }
-                    int k;
-                    for(k = 0; k < v->ndim; k ++) {
-                        v->dims[k] = ds->pgs[i].vars[j].global_bounds[k]; 
-                    }
-                }
-                return v;
-            }
-        }
-    }
-
-    return NULL;    
-#endif
-
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-}
-
-ADIOS_VARINFO * adios_read_datatap_inq_var_byid (ADIOS_GROUP *gp, int varid)
-{
-    if(varid >= 0 && varid < gp->vars_count) {
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-        return adios_read_datatap_inq_var(gp, gp->var_namelist[varid]);
-    }
-    else {
-        adios_error(err_invalid_varid, "Cannot find var %d\n", varid);
-        return NULL;
-    }
-}
-
-void adios_read_datatap_free_varinfo (ADIOS_VARINFO *vp)
-{
-    if(!vp) return;
-
-    if(!vp->ndim) { // scalar
-        if(vp->timedim != -1) { // scalar with time dimension
-            free(vp->dims);
-        }
-        free(vp->value);
-    }
-    else { // arrays
-        free(vp->dims);
-    }
-}
-
-int64_t adios_read_datatap_read_var (ADIOS_GROUP *gp, const char *varname,
-                                     const uint64_t *start, const uint64_t *count,
-                                     void *data)
-{
-fprintf(stderr, "im here read var %s addr %p %s:%d\n", varname, data,__FILE__,__LINE__);
-    int64_t total_size;
-    datatap_read_file_data *ds = (datatap_read_file_data *) gp->fp->fh;
-    int found = 0;
-
-fprintf(stderr, "im here rank %d %s %s:%d\n", ds->my_rank,varname, __FILE__,__LINE__);
-    datatap_var_info *current_var = ds->vars;
-    while(current_var) {
-fprintf(stderr, "im here rank %d %s %s %s %s:%d\n", ds->my_rank, varname, current_var->varname,current_var->varpath,__FILE__,__LINE__);
-        if(!compare_var_name(varname, current_var)) {
-fprintf(stderr, "im here rank %d %s %s %s %s:%d\n", ds->my_rank, varname, current_var->varname,current_var->varpath,__FILE__,__LINE__);
-            // found it locally
-            found = 1;
-            if(!current_var->ndims) { // scalar
-fprintf(stderr, "im here rank %d %s %s %s %s:%d\n", ds->my_rank, varname, current_var->varname,current_var->varpath,__FILE__,__LINE__);
-                // TODO: check time dimension if there is any
-                if(current_var->time_dim != -1 &&
-                    (gp->fp->tidx_start != start[0] || count[0] > 1)) {
-                // TODO: check time dimension if there is any
-                    adios_error(err_no_data_at_timestep, "Specified time step is not available.");
-                    return -1;
-                }
-
-                total_size = current_var->data_size;
-                memcpy(data, current_var->chunks->data, total_size);
-                return total_size;
-            }
-            else { // arrays
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-                // TODO: check time dimension if there is any
-                if(current_var->time_dim != -1) {
-                    uint64_t ti = current_var->time_dim;
-                    if(futils_is_called_from_fortran()) {
-                        ti --;
-                    }
-                    // TODO: in Fortran index starts from 1 but in C index starts from 0
-                    if(count[ti] > 1 || start[ti] != current_var->chunks->global_offsets[ti]) {
-                        adios_error(err_no_data_at_timestep, "Specified time step is not available.");
-                        return -1;
-                    }
-                }
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-                total_size = read_array(ds, current_var, start, count, data);
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-
-                // rank 0 should be responsible for send data out to peer readers
-                if(ds->comm_size > 1) {
-                    if(ds->my_rank == 0) {
-                        // check if this array is missing on peer readers  
-                        //if(current_var->num_chunks == 1) {
-                        int byte_pos = current_var->id / 8;
-                        int bit_pos = current_var->id % 8;
-                        unsigned char mask = 0x01 << bit_pos;
-                        //if(current_var->num_chunks == 1) {
-                        if((ds->var_bitmap[byte_pos] & mask) != 0x00) {
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-                            int rc = MPI_Bcast(data, total_size, MPI_BYTE, 0, ds->comm); 
-                            if(rc != MPI_SUCCESS) {
-                                fprintf(stderr, "rank %d: MPI_Bcast() returns error (%d). %s:%d\n",
-                                    ds->my_rank, rc, __FILE__, __LINE__);
-                                return -1;
-                            }
-                        }
-                    } 
-                }
-                return total_size;
-            }
-        }
-        else {
-            current_var = current_var->next;
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-        }
-    }
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-
-    if(!found) {
-        current_var = ds->vars_peer;
-        while(current_var) {
-            if(!compare_var_name(varname, current_var)) {
-                // found it on remote peer reader
-                if(!current_var->ndims) { // scalar
-                    // TODO: check time dimension if there is any
-                    if(current_var->time_dim != -1 &&
-                        (gp->fp->tidx_start != start[0] || count[0] > 1)) {
-                        adios_error(err_no_data_at_timestep, "Specified time step is not available.");
-                        return -1;
-                    }
-
-                    total_size = current_var->data_size;
-                    memcpy(data, current_var->chunks->data, total_size);
-                    return total_size;
-                }
-                else { // arrays
-                    // TODO: check time dimension if there is any
-                    if(current_var->time_dim != -1) {
-                        uint64_t ti = current_var->time_dim;
-                        // TODO: in Fortran index starts from 1 but in C index starts from 0
-                        if(futils_is_called_from_fortran()) {
-                            ti --;
-                        }
-
-                        if(count[ti] > 1 || start[ti] != current_var->chunks->global_offsets[ti]) {
-                            adios_error(err_no_data_at_timestep, "Specified time step is not available.");
-                            return -1;
-                        }
-                    }
-
-                    if(ds->my_rank != 0) {
-                        int i = 0;
-                        total_size = common_read_type_size(current_var->type, NULL); 
-                        for(; i < current_var->ndims; i ++) {
-                             total_size *= count[i];
-                        }
-                                     
-                        if(ds->comm_size > 1) {
-fprintf(stderr, "im here rank %d %s %ld %s:%d\n", ds->my_rank, current_var->varname,total_size, __FILE__,__LINE__);
-                            // check if this array is missing on peer readers
-                            int rc = MPI_Bcast(data, total_size, MPI_BYTE, 0, ds->comm);
-fprintf(stderr, "im here rank %d %s %ld %s:%d\n", ds->my_rank, current_var->varname,total_size, __FILE__,__LINE__);
-                            if(rc != MPI_SUCCESS) {
-                                fprintf(stderr, "rank %d: MPI_Bcast() returns error (%d). %s:%d\n",
-                                    ds->my_rank, rc, __FILE__, __LINE__);
-                                return -1;
-                            }
-fprintf(stderr, "im here rank %d %s %ld %s:%d\n", ds->my_rank, current_var->varname,total_size, __FILE__,__LINE__);
-                        }
-                    }
-
-fprintf(stderr, "im here read rank %d var %s addr %p total size %ld %s:%d\n", ds->my_rank, varname, data,total_size,__FILE__,__LINE__);
-                    return total_size;
-                }
-            }
-            else {
-                current_var = current_var->next;
-            }
-        }
-    }
-
-fprintf(stderr, "im here rank %d %s:%d\n", ds->my_rank, __FILE__,__LINE__);
-    adios_error(err_invalid_varname, "Cannot find var %s\n", varname);
-    return -1;
-
-
-
-#if 0
-    // TODO: search through all pgs to find this var
-    int p;
-    for(p = 0; p < ds->num_pgs; p ++) {
-        datatap_pg_info *current_pg = &(ds->pgs[p]);    
-        datatap_var_info *var_info = NULL;
-        int v;
-        for(v = 0; v < current_pg->num_vars; v ++) {
-            if(!compare_var_name(varname, &(current_pg->vars[v]))) {     
-                // found it
-                found = 1;
-
-                if(!current_pg->vars[v].ndims) { // scalar
-                    // TODO: check time dimension if there is any
-                    if(current_pg->vars[v].time_dim != -1 && 
-                        (gp->fp->tidx_start != start[0] || count[0] > 1)) {
-                        adios_error(err_no_data_at_timestep, "Specified time step is not available.");
-                        return -1;
-                    }
-  
-                    total_size = common_read_type_size(current_pg->vars[v].type, current_pg->vars[v].data);                
-                    memcpy(data, current_pg->vars[v].data, total_size);
-                    return total_size;
-                }
-                else { // arrays
-                    // TODO: check time dimension if there is any
-                    if(current_pg->vars[v].time_dim != -1) {
-                        // TODO: in Fortran index starts from 1 but in C index starts from 0 
-                        uint64_t ti = current_pg->vars[v].time_dim;
-                        if(count[ti] > 1 || start[ti] != current_pg->vars[v].global_offsets[ti]) {
-                            adios_error(err_no_data_at_timestep, "Specified time step is not available.");
-                            return -1;
-                        } 
-                    }
-
-                    // Datatap batches per-variable reads, so here we only record the buffer address
-                    datatap_var_info *var_info = (datatap_var_info *) malloc(sizeof(datatap_var_info));
-                    if(!var_info) {
-                        adios_error(err_no_memory, "Could not allocate memory for group info");
-                        return -1;
-                    }                
-                    memcpy(var_info, &(current_pg->vars[v]), sizeof(datatap_var_info));
-                    var_info->local_bounds = (uint64_t *) malloc(var_info->ndims * sizeof(uint64_t));
-                    if(!var_info->local_bounds) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-                    var_info->global_bounds = (uint64_t *) malloc(var_info->ndims * sizeof(uint64_t));
-                    if(!var_info->global_bounds) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-                    var_info->global_offsets = (uint64_t *) malloc(var_info->ndims * sizeof(uint64_t));
-                    if(!var_info->global_offsets) {
-                        adios_error(err_no_memory, "Cannot allocate memory for Datatap.");
-                        return NULL;
-                    }
-
-                    total_size = 1;
-                    int i;
-                    for(i = 0; i < var_info->ndims; i ++) {
-                        var_info->local_bounds[i] = count[i];
-                        // TODO: it seems that user won't read from N-dimensional array into M-dimension
-                        var_info->global_bounds[i] = current_pg->vars[v].global_bounds[i];  
-                        var_info->global_offsets[i] = start[i];
-                        total_size = total_size * count[i];
-                    }
-                    total_size *= common_read_type_size(var_info->type, NULL);
-                    var_info->data = data;
-                    var_info->data_size = total_size;
-                    
-                    // now we add this to the list of vars to read
-                    if(!ds->vars_read) {
-                        ds->vars_read = var_info;                
-                        ds->vars_read_tail = var_info;
-                        var_info->next = NULL;                   
-                    }
-                    else {
-                        ds->vars_read_tail->next = var_info;     
-                        ds->vars_read_tail = var_info;
-                        var_info->next = NULL; 
-                    }
-                    ds->num_vars_read ++;                  
-                    return total_size;
-                }            
-            }   
-        }    
-    }
-fprintf(stderr, "im here read var %s addr %p %s:%d\n", varname, data,__FILE__,__LINE__);
-
-    if(found) {
-        return total_size;
-    }
-
-    adios_error(err_invalid_varname, "Cannot find var %s\n", varname);
-    return -1;    
-#endif 
-
-}
-
-int64_t adios_read_datatap_read_var_byid (ADIOS_GROUP *gp, int varid,
-                                          const uint64_t *start,
-                                          const uint64_t *count,
-                                          void *data)
-{
-    if(varid >= 0 && varid < gp->vars_count) {
-fprintf(stderr, "im here %s:%d\n",__FILE__,__LINE__);
-        return adios_read_datatap_read_var (gp, gp->var_namelist[varid], start, count, data);
-    }
-    else {
-        adios_error(err_invalid_varid, "Cannot find var %d\n", varid);
-        return -1;
-    }
-
-}
-
-int adios_read_datatap_get_dimension_order (const ADIOS_FILE *fp)
-{
-    return 0;
-}
-
-void adios_read_datatap_reset_dimension_order (ADIOS_FILE *fp, int is_fortran)
-{
-    // TODO
-    adios_error(err_invalid_read_method, "adios_read_datatap_reset_dimension_order is not implemented.");
-}
-#endif
-
diff --git a/src/read/read_dimes.c b/src/read/read_dimes.c
index 8a8bc85..a665f86 100644
--- a/src/read/read_dimes.c
+++ b/src/read/read_dimes.c
@@ -24,7 +24,7 @@
 #include "core/adios_read_hooks.h"
 #include "core/futils.h"
 #include "core/ds_metadata.h"
-#include "core/common_read.h" // common_read_selection_* functions
+#include "core/a2sel.h" // selection functions
 
 #include "core/transforms/adios_transforms_common.h" // NCSU ALACRITY-ADIOS
 
@@ -450,7 +450,7 @@ static int dimes_unpack_group_info (ADIOS_FILE *fp, char * buf)
         fp->var_namelist[i] = (char *) malloc (namelen+1);
         if (!fp->var_namelist[i]) {
             adios_error (err_no_memory, "Could not allocate space for variable name when opening a group\n"); 
-            if (i>0) free_namelist ((fp->var_namelist),i);
+            if (i>0) a2s_free_namelist ((fp->var_namelist),i);
             return 1;
         }
         else  {
@@ -520,7 +520,7 @@ static int dimes_unpack_group_info (ADIOS_FILE *fp, char * buf)
         fp->attr_namelist[i] = (char *) malloc (namelen+1);
         if (!fp->attr_namelist[i]) {
             adios_error (err_no_memory, "Could not allocate space for attribute name when opening a group\n"); 
-            if (i>0) free_namelist ((fp->attr_namelist),i);
+            if (i>0) a2s_free_namelist ((fp->attr_namelist),i);
             return 1;
         }
         else  {
@@ -641,7 +641,7 @@ static int get_step (ADIOS_FILE *fp, int step, enum WHICH_VERSION which_version,
     int err, i;
     char ds_vname[MAX_DS_NAMELEN];
     char ds_fname[MAX_DS_NAMELEN];
-    double t1 = adios_gettime();
+    double t1 = adios_gettime_double();
     enum STEP_STATUS step_status = STEP_OK;
 
     adios_errno = err_no_error; // clear error values now
@@ -747,7 +747,7 @@ static int get_step (ADIOS_FILE *fp, int step, enum WHICH_VERSION which_version,
 
         // check if we need to stay in loop 
         if (stay_in_poll_loop) {
-            if (timeout_sec >= 0.0 && (adios_gettime()-t1 > timeout_sec))
+            if (timeout_sec >= 0.0 && (adios_gettime_double()-t1 > timeout_sec))
                 stay_in_poll_loop = 0;
             else
                 adios_nanosleep (poll_interval_msec/1000, 
@@ -901,7 +901,7 @@ static void free_step_data (ADIOS_FILE *fp)
             free (vars[i].value);
         }
         MYFREE(ds->vars);
-        free_namelist ((fp->var_namelist),fp->nvars);
+        a2s_free_namelist ((fp->var_namelist),fp->nvars);
         fp->nvars = 0;
     }
     if (fp->nattrs) {
@@ -910,7 +910,7 @@ static void free_step_data (ADIOS_FILE *fp)
             free (attrs[i].value);
         }
         MYFREE (ds->attrs);
-        free_namelist ((fp->attr_namelist),fp->nattrs);
+        a2s_free_namelist ((fp->attr_namelist),fp->nattrs);
         fp->nattrs = 0;
     }
     MYFREE (ds->group_name);
@@ -1348,7 +1348,7 @@ int adios_read_dimes_schedule_read_byid (const ADIOS_FILE * fp,
                     }
                     reqsize *= sel->u.bb.count[i];
                 }
-                r->sel = copy_selection (sel);
+                r->sel = a2sel_copy (sel);
                 break;
 
             case ADIOS_SELECTION_POINTS:
@@ -1361,7 +1361,7 @@ int adios_read_dimes_schedule_read_byid (const ADIOS_FILE * fp,
                     return err_out_of_bound;
                 }
                 reqsize *= sel->u.points.npoints;
-                r->sel = copy_selection (sel);
+                r->sel = a2sel_copy (sel);
                 break;
 
             case ADIOS_SELECTION_WRITEBLOCK:
@@ -1369,7 +1369,7 @@ int adios_read_dimes_schedule_read_byid (const ADIOS_FILE * fp,
                 /* We cannot do this with DataSpaces yet (fp->nwriter == 1) */
                 /* Read the whole variable */
                 s = (uint64_t *) calloc (var->ndims, sizeof(uint64_t));
-                r->sel = common_read_selection_boundingbox(var->ndims, s, var->dims);
+                r->sel = a2sel_boundingbox(var->ndims, s, var->dims);
                 for (i=0; i<var->ndims; i++) 
                     reqsize *= var->dims[i];
                 break;
@@ -1401,14 +1401,14 @@ int adios_read_dimes_schedule_read_byid (const ADIOS_FILE * fp,
                     if (ld0 > 0) {
                         s[0] = off0;
                         c[0] = ld0;
-                        r->sel = common_read_selection_boundingbox(
+                        r->sel = a2sel_boundingbox(
                                 var->ndims, s, c);
                     }
                     for (i=0; i<var->ndims; i++) 
                         reqsize *= c[i];
                 } else {
                     /* Scalar: just read it for each process */
-                    r->sel = common_read_selection_boundingbox(0, 0, 0);
+                    r->sel = a2sel_boundingbox(0, 0, 0);
                 }
 
                 break;
@@ -1416,7 +1416,7 @@ int adios_read_dimes_schedule_read_byid (const ADIOS_FILE * fp,
     } else {
         // NULL selection means the whole variable
         s = (uint64_t *) calloc (var->ndims, sizeof(uint64_t));
-        r->sel = common_read_selection_boundingbox(var->ndims, s, var->dims);
+        r->sel = a2sel_boundingbox(var->ndims, s, var->dims);
         for (i=0; i<var->ndims; i++) 
             reqsize *= var->dims[i];
     }
@@ -1580,7 +1580,7 @@ int adios_read_dimes_perform_reads (const ADIOS_FILE *fp, int blocking)
         ds->req_list = ds->req_list->next;
         // FIXME: if we allocated start/count arrays in schedule read for r->sel,
         // we need to manually free them here
-        common_read_selection_delete(r->sel);
+        a2sel_free(r->sel);
         free(r);
         ds->nreq--;
     }
diff --git a/src/read/read_flexpath.c b/src/read/read_flexpath.c
index dc31011..f4a69b5 100644
--- a/src/read/read_flexpath.c
+++ b/src/read/read_flexpath.c
@@ -39,9 +39,11 @@
 #include "public/adios_read_v2.h"
 #include "core/adios_read_hooks.h"
 #include "core/adios_logger.h"
-#include "core/common_read.h"
+#include "core/a2sel.h"
 #include "public/adios_error.h"
+#define  FLEXPATH_SIDE "READER"
 #include "core/flexpath.h"
+#include "core/futils.h"
 
 #include "core/transforms/adios_transforms_common.h" // NCSU ALACRITY-ADIOS
 
@@ -71,6 +73,7 @@ typedef struct _bridge_info
 
 typedef struct _flexpath_read_request
 {
+    long pad1, pad2, pad3, pad4, pad5;
     int num_pending;
     int num_completed;
     int condition;
@@ -129,6 +132,8 @@ typedef struct _flexpath_reader_file
     char *group_name; // assuming one group per file right now.
     int host_language;
 
+    int verbose;
+
     EVstone stone;
 
     MPI_Comm comm;
@@ -259,10 +264,11 @@ new_flexpath_reader_file(const char *fname)
 	log_error("Cannot create data for new file.\n");
 	exit(1);
     }
+    fp_verbose_init(fp);
     fp->file_name = strdup(fname);
     fp->writer_coordinator = -1;
     fp->last_writer_step = -1;
-    fp->req = (flexpath_read_request) {.num_pending = 0, .num_completed = 0, .condition = -1};
+    fp->req = (flexpath_read_request) {.pad1 = 0, .pad2 = 0, .pad3 = 0, .pad4 = 0, .pad5=0,.num_pending = 0, .num_completed = 0, .condition = -1};
     pthread_mutex_init(&fp->data_mutex, NULL);
     pthread_cond_init(&fp->data_condition, NULL);
     return fp;
@@ -929,7 +935,8 @@ raw_handler(CManager cm, void *vevent, int len, void *client_data, attr_list att
     get_double_attr(attrs, attr_atom_from_string("fp_starttime"), &data_start);
     get_int_attr(attrs, attr_atom_from_string(FP_RANK_ATTR_NAME), &writer_rank);
     get_int_attr(attrs, attr_atom_from_string("fp_flush_id"), &flush_id);
-
+    /* fprintf(stderr, "\treader rank:%d:got data from writer:%d:step:%d\n", */
+    /* 	    fp->rank, writer_rank, fp->mystep); */
     FMContext context = CMget_FMcontext(cm);
     void *base_data = FMheader_skip(context, vevent);
     FMFormat format = FMformat_from_ID(context, vevent);
@@ -1084,7 +1091,11 @@ raw_handler(CManager cm, void *vevent, int len, void *client_data, attr_list att
 
 
     fp->req.num_completed++;
+    /* fprintf(stderr, "\t\treader rank:%d:step:%d:num_completed:%d:num_pending:%d\n", */
+    /* 	    fp->rank, fp->mystep, fp->req.num_completed, fp->req.num_pending); */
     if (fp->req.num_completed == fp->req.num_pending) {
+	/* fprintf(stderr, "\t\treader rank:%d:step:%d:signalling_on:%d\n", */
+	/* 	fp->rank, fp->mystep, fp->req.condition); */
         CMCondition_signal(fp_read_data->cm, fp->req.condition);
     }
 
@@ -1121,10 +1132,15 @@ adios_read_flexpath_init_method (MPI_Comm comm, PairStruct* params)
 
     fp_read_data->cm = CManager_create();
     if (transport == NULL) {
-	if (CMlisten(fp_read_data->cm) == 0) {
-	    fprintf(stderr, "Flexpath ERROR: reader %d unable to initialize connection manager.\n",
-		fp_read_data->rank);
-	}
+      int listened = 0;
+      while (listened == 0) {
+	  if (CMlisten(fp_read_data->cm) == 0) {
+	      fprintf(stderr, "Flexpath ERROR: reader %d:pid:%d unable to initialize connection manager. Trying again.\n",
+		      fp_read_data->rank, (int)getpid());
+	  } else {
+	      listened = 1;
+	  }
+      }
     } else {
 	listen_list = create_attr_list();
 	add_attr(listen_list, fp_read_data->CM_TRANSPORT, Attr_String,
@@ -1166,7 +1182,6 @@ adios_read_flexpath_open(const char * fname,
 			 enum ADIOS_LOCKMODE lock_mode,
 			 float timeout_sec)
 {
-    fp_log("FUNC", "entering flexpath_open\n");
     ADIOS_FILE *adiosfile = malloc(sizeof(ADIOS_FILE));
     if (!adiosfile) {
 	adios_error (err_no_memory,
@@ -1175,6 +1190,7 @@ adios_read_flexpath_open(const char * fname,
     }
 
     flexpath_reader_file *fp = new_flexpath_reader_file(fname);
+    fp_verbose(fp, "entering flexpath_open\n");
     fp->host_language = futils_is_called_from_fortran();
     adios_errno = 0;
     fp->stone = EValloc_stone(fp_read_data->cm);
@@ -1346,7 +1362,7 @@ adios_read_flexpath_open(const char * fname,
     adiosfile->version = -1;
     adiosfile->file_size = 0;
     adios_errno = err_no_error;
-    fp_log("FUNC", "leaving flexpath_open\n");
+    fp_verbose(fp, "leaving flexpath_open\n");
     return adiosfile;
 }
 
@@ -1380,7 +1396,7 @@ void adios_read_flexpath_release_step(ADIOS_FILE *adiosfile) {
 	}
 
 	if (tmpvars->sel) {
-	    common_read_selection_delete(tmpvars->sel);
+	    a2sel_free(tmpvars->sel);
 	    tmpvars->sel = NULL;
 	}
 
@@ -1400,11 +1416,14 @@ void adios_read_flexpath_release_step(ADIOS_FILE *adiosfile) {
 
 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);
     MPI_Barrier(fp->comm);
     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);
     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);
     //put this on a timer, so to speak, for timeout_sec
     while (fp->mystep == fp->last_writer_step) {
 	if (fp->writer_finalized) {
@@ -1412,7 +1431,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);
 	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);
     }
 
     int i=0;
@@ -1438,11 +1459,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);
     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);
     // 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);
     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);
     return 0;
 }
 
@@ -1508,8 +1533,8 @@ int adios_read_flexpath_check_reads(const ADIOS_FILE* fp, ADIOS_VARCHUNK** chunk
 
 int adios_read_flexpath_perform_reads(const ADIOS_FILE *adiosfile, int blocking)
 {
-    fp_log("FUNC", "entering perform_reads.\n");
     flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh;
+    fp_verbose(fp, "entering perform_reads.\n");
     fp->data_read = 0;
     int i;
     int batchcount = 0;
@@ -1522,16 +1547,23 @@ int adios_read_flexpath_perform_reads(const ADIOS_FILE *adiosfile, int blocking)
 
     for (i = 0; i<num_sendees; i++) {
 	int sendee = fp->sendees[i];
-        batchcount++;
+	batchcount++;
 	total_sent++;
+		/* fprintf(stderr, "reader rank:%d:flush_data to writer:%d:of:%d:step:%d:batch:%d:total_sent:%d\n", */
+		/* 	fp->rank, sendee, num_sendees, fp->mystep, batchcount, total_sent); */
 	send_flush_msg(fp, sendee, DATA, 0);
 
 	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); */
             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->req.num_completed = 0;
-	    fp->req.num_pending = 0;
-	    total_sent = 0;
+	    //fp->req.num_pending = 0;
+	    //total_sent = 0;
             batchcount = 0;
             fp->req.condition = CMCondition_get(fp_read_data->cm, NULL);
 	}
@@ -1550,13 +1582,13 @@ int adios_read_flexpath_perform_reads(const ADIOS_FILE *adiosfile, int blocking)
 	}
 
 	if (tmpvars->sel) {
-	    common_read_selection_delete(tmpvars->sel);
+	    a2sel_free(tmpvars->sel);
 	    tmpvars->sel = NULL;
 	}
 
 	tmpvars = tmpvars->next;
     }
-    fp_log("FUNC", "leaving perform_reads.\n");
+    fp_verbose(fp, "leaving perform_reads.\n");
     return 0;
 }
 
@@ -1581,10 +1613,10 @@ adios_read_flexpath_schedule_read_byid(const ADIOS_FILE *adiosfile,
 				       int nsteps,
 				       void *data)
 {
-    fp_log("FUNC", "entering schedule_read_byid\n");
     flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh;
     flexpath_var *fpvar = fp->var_list;
 
+    fp_verbose(fp, "entering schedule_read_byid\n");
     while (fpvar) {
         if (fpvar->id == varid)
         	break;
@@ -1610,7 +1642,7 @@ adios_read_flexpath_schedule_read_byid(const ADIOS_FILE *adiosfile,
     // within before doing release/advance step. Might need a better way to
     // manage the ADIOS selections.
     if (fpvar->sel) {
-	common_read_selection_delete(fpvar->sel);
+	a2sel_free(fpvar->sel);
 	fpvar->sel = NULL;
     }
     if (!sel) { // null selection; read whole variable
@@ -1620,9 +1652,9 @@ adios_read_flexpath_schedule_read_byid(const ADIOS_FILE *adiosfile,
 	uint64_t *starts = calloc(fpvar->ndims, sizeof(uint64_t));
 	uint64_t *counts = calloc(fpvar->ndims, sizeof(uint64_t));
 	memcpy(counts, fpvar->global_dims, fpvar->ndims*sizeof(uint64_t));
-	fpvar->sel = common_read_selection_boundingbox(fpvar->ndims, starts, counts);
+	fpvar->sel = a2sel_boundingbox(fpvar->ndims, starts, counts);
     } else {
-	fpvar->sel = copy_selection(sel);
+	fpvar->sel = a2sel_copy(sel);
     }
 
     switch(fpvar->sel->type)
@@ -1695,7 +1727,7 @@ adios_read_flexpath_schedule_read_byid(const ADIOS_FILE *adiosfile,
 	break;
     }
     }
-    fp_log("FUNC", "entering schedule_read_byid\n");
+    fp_verbose(fp, "entering schedule_read_byid\n");
     return 0;
 }
 
@@ -1744,10 +1776,10 @@ adios_read_flexpath_get_attr_byid (const ADIOS_FILE *adiosfile, int attrid,
 ADIOS_VARINFO*
 adios_read_flexpath_inq_var(const ADIOS_FILE * adiosfile, const char* varname)
 {
-    fp_log("FUNC", "entering flexpath_inq_var\n");
     flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh;
     ADIOS_VARINFO *v = NULL;
 
+    fp_verbose(fp, "entering flexpath_inq_var\n");
     flexpath_var *fpvar = find_fp_var(fp->var_list, varname);
     if (fpvar) {
         v = calloc(1, sizeof(ADIOS_VARINFO));
@@ -1759,7 +1791,7 @@ adios_read_flexpath_inq_var(const ADIOS_FILE * adiosfile, const char* varname)
         }
 
 	v = convert_var_info(fpvar, v, varname, adiosfile);
-	fp_log("FUNC", "leaving flexpath_inq_var\n");
+	fp_verbose(fp, "leaving flexpath_inq_var\n");
     }
     else {
         adios_error(err_invalid_varname, "Cannot find var %s\n", varname);
@@ -1770,11 +1802,11 @@ adios_read_flexpath_inq_var(const ADIOS_FILE * adiosfile, const char* varname)
 ADIOS_VARINFO*
 adios_read_flexpath_inq_var_byid (const ADIOS_FILE * adiosfile, int varid)
 {
-    fp_log("FUNC", "entering flexpath_inq_var_byid\n");
     flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh;
+    fp_verbose(fp, "entering flexpath_inq_var_byid\n");
     if (varid >= 0 && varid < adiosfile->nvars) {
 	ADIOS_VARINFO *v = adios_read_flexpath_inq_var(adiosfile, adiosfile->var_namelist[varid]);
-	fp_log("FUNC", "leaving flexpath_inq_var_byid\n");
+	fp_verbose(fp, "leaving flexpath_inq_var_byid\n");
 	return v;
     }
     else {
diff --git a/src/read/read_nssi.c b/src/read/read_nssi.c
deleted file mode 100644
index b4df65f..0000000
--- a/src/read/read_nssi.c
+++ /dev/null
@@ -1,659 +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.
- */
-
-
-/**************************************************/
-/* Read method for NSSI memory-to-memory coupling */
-/**************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-//#include <errno.h>  /* ENOMEM */
-#include "adios.h"
-#include "bp_utils.h"
-#include "bp_types.h"
-#include "adios_types.h"
-#include "adios_read.h"
-#include "adios_read_hooks.h"
-#include "adios_error.h"
-#include "futils.h"
-#include "globals.h"
-
-#ifdef HAVE_NSSI
-#include "nssi_client.h"
-#include "adios_nssi_args.h"
-#include "adios_nssi_config.h"
-#include "nssi_logger.h"
-#endif
-
-#include "io_timer.h"
-
-
-static uint64_t number_of_fopens = 0;  /* for versioning, works only if one file is fopened (in a loop) in the application */
-
-struct adios_read_nssi_data_struct
-{
-    nssi_request start_calc_req;
-    int          has_outstanding_req;
-    int          default_svc_index;  /* service to use when there is no open file (eg. finalize) */
-
-    char *fname;               // path of file
-    int timestep;              // counting the access
-    int disconnect_at_fclose;  // disconnect from NSSI in fclose()
-
-    uint64_t fd;
-    MPI_Comm group_comm;
-    int      size;
-    int      rank;
-
-    int      svc_index;
-    MPI_Comm collective_op_comm;
-    int      collective_op_size;
-    int      collective_op_rank;
-
-    int8_t use_single_server;
-};
-
-
-///////////////////////////
-// Global Variables
-///////////////////////////
-static int adios_nssi_initialized = 0;
-
-static char *job_id=NULL;
-static int global_rank=-1;
-static int global_size=-1;
-static nssi_service *svcs;
-struct adios_nssi_config nssi_cfg;
-
-//static log_level adios_nssi_debug_level;
-static int DEBUG=0;
-
-
-
-
-/* If init is used, we connect to NSSI here, otherwise we connect in fopen.
-   If multiple fopen..fclose cycles are used, init/finalize must be used too to
-   avoid multiple connection/disconnection in fopen/fclose.
-*/
-int adios_read_nssi_init (MPI_Comm comm)
-{
-    int rc=NSSI_OK;
-    int verbose=5;
-    char logfile[1024];
-    int log_rank;
-    struct adios_read_nssi_method_data_struct *private;
-
-    if (!adios_nssi_initialized) {
-        adios_nssi_initialized = 1;
-    }
-
-    MPI_Comm_rank(MPI_COMM_WORLD, &global_rank);
-    MPI_Comm_size(MPI_COMM_WORLD, &global_size);
-
-    if (DEBUG>3) fprintf(stderr, "rank(%d) enter adios_read_nssi_init\n", global_rank);
-
-#ifdef HAVE_PORTALS
-    nssi_ptl_init(PTL_IFACE_CLIENT, getpid() + 1000);
-    nssi_rpc_init(NSSI_RPC_PTL, NSSI_RPC_XDR);
-#endif
-#ifdef HAVE_INFINIBAND
-    nssi_ib_init(NULL);
-    rc = nssi_rpc_init(NSSI_RPC_IB, NSSI_RPC_XDR);
-#endif
-
-    /* Register the client operations */
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_INITIALIZE_OP,    adios_read_initialize_args,    void, void);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_FOPEN_OP,            adios_read_fopen_args,            void, adios_read_fopen_res);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_FCLOSE_OP,           adios_read_fclose_args,           void, void);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_GOPEN_OP,         adios_read_gopen_args,         void, adios_read_gopen_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_GOPEN_BYID_OP,    adios_read_gopen_byid_args,    void, adios_read_gopen_byid_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_GCLOSE_OP,        adios_read_gclose_args,        void, adios_read_gclose_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_GETATTR_OP,       adios_read_getattr_args,       void, adios_read_getattr_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_GETATTR_BYID_OP,  adios_read_getattr_byid_args,  void, adios_read_getattr_byid_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_INQVAR_OP,        adios_read_inqvar_args,        void, adios_read_inqvar_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_INQVAR_BYID_OP,   adios_read_inqvar_byid_args,   void, adios_read_inqvar_byid_res);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_GET_VARTYPE_SIZE_OP, adios_read_get_vartype_size_args, void, adios_read_get_vartype_size_res);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_READ_VAR_OP,         adios_read_read_var_args,         void, adios_read_read_var_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_READ_VAR_BYID_OP, adios_read_read_var_byid_args, void, adios_read_read_var_byid_res);
-//    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_FINALIZE_OP,      adios_read_finalize_args,      void, void);
-
-    parse_nssi_config(getenv("ADIOS_NSSI_CONFIG_FILE"), &nssi_cfg);
-
-    return(0);
-}
-
-int adios_read_nssi_finalize ()
-{
-    int rc=NSSI_OK;
-    int myrank;
-
-    if (DEBUG>3) fprintf(stderr, "rank(%d) enter adios_read_nssi_finalize\n", global_rank);
-
-    free_nssi_config(&nssi_cfg);
-
-    if (adios_nssi_initialized)
-        adios_nssi_initialized = 0;
-
-
-//    // disconnect from NSSI only if we the reader is connected (the writer not anymore)
-//    if (globals_adios_is_nssi_connected_from_reader() &&
-//        !globals_adios_is_nssi_connected_from_both())
-//    {
-//        nssi_finalize();
-//        DBG_PRINTF("-- %s: disconnected from NSSI\n", __func__);
-//    }
-//    globals_adios_set_nssi_disconnected_from_reader();
-}
-
-ADIOS_FILE * adios_read_nssi_fopen (const char * fname, MPI_Comm comm)
-{
-    int rc=NSSI_OK;
-    ADIOS_FILE * fp;
-    struct adios_read_nssi_data_struct * ds;
-    int i;
-
-    adios_read_fopen_args args;
-    adios_read_fopen_res  res;
-
-    adios_errno = 0;
-
-    if (DEBUG>3) fprintf(stderr, "enter adios_read_nssi_fopen: fname=%s\n", fname);
-
-    ds = (struct adios_read_nssi_data_struct *) malloc (sizeof(struct adios_read_nssi_data_struct));
-    if (!ds) {
-        adios_error (err_no_memory, "Cannot allocate memory for file info.");
-        return(NULL);
-    }
-
-    /* fill out NSSI method specific struct */
-    ds->size = 0;
-    ds->rank = 0;
-    ds->fname = strdup(fname);
-    ds->timestep = 1; /*number_of_fopens+1;  /* Read data of separate versions from NSSI */
-
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d): enter adios_read_nssi_fopen (%s)\n", global_rank, fname);
-
-    ds->group_comm = comm;
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: setup group_comm\n", global_rank);
-    if (ds->group_comm != MPI_COMM_NULL) {
-        if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: get rank and size\n", global_rank);
-        MPI_Comm_rank(ds->group_comm, &ds->rank);
-        MPI_Comm_size(ds->group_comm, &ds->size);
-        if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: size(%d) rank(%d)\n", global_rank, ds->size, ds->rank);
-    } else {
-        ds->group_comm=MPI_COMM_SELF;
-        MPI_Comm_rank(ds->group_comm, &ds->rank);
-        MPI_Comm_size(ds->group_comm, &ds->size);
-    }
-
-    if (ds->size <= nssi_cfg.num_servers) {
-        // there are fewer clients than servers.
-        // assume file-per-process and use a single server for this file.
-        ds->use_single_server=TRUE;
-        if (ds->size < global_size) {
-            // a subset of all clients is writing
-            ds->svc_index = ((global_rank/ds->size)%nssi_cfg.num_servers);
-        } else {
-            ds->svc_index = 0;
-        }
-    } else {
-        ds->use_single_server=FALSE;
-        if ((ds->size%nssi_cfg.num_servers) > 0) {
-            ds->svc_index = ds->rank/((ds->size/nssi_cfg.num_servers)+1);
-        } else {
-            ds->svc_index = ds->rank/(ds->size/nssi_cfg.num_servers);
-        }
-    }
-    if (ds->default_svc_index == -1) {
-        ds->default_svc_index=ds->svc_index;
-    }
-
-    /* create a new communicator for just those clients, who share a default service. */
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: before MPI_Comm_split\n", global_rank);
-    MPI_Comm_split(ds->group_comm, ds->svc_index, ds->rank, &ds->collective_op_comm);
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: after MPI_Comm_split\n", global_rank);
-    /* find my rank in the new communicator */
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: before MPI_Comm_size\n", global_rank);
-    MPI_Comm_size(ds->collective_op_comm, &ds->collective_op_size);
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d): adios_read_nssi_fopen: before MPI_Comm_rank\n", global_rank);
-    MPI_Comm_rank(ds->collective_op_comm, &ds->collective_op_rank);
-
-    if (DEBUG>3) fprintf(stderr, "global_rank(%d) ds->rank(%d) ds->collective_op_rank(%d) default_service(%d)\n", global_rank, ds->rank, ds->collective_op_rank, ds->svc_index);
-
-    svcs=(nssi_service *)calloc(nssi_cfg.num_servers, sizeof(nssi_service));
-    /* !global_rank0 has a preferred server for data transfers.  connect to preferred server.
-     * connect to other servers on-demand.
-     */
-    double GetSvcTime=MPI_Wtime();
-    if (DEBUG>3) fprintf(stderr, "get staging-service: ds->svc_index(%d) nid(%lld) pid(%llu) hostname(%s) port(%d)\n",
-            ds->svc_index,
-            nssi_cfg.nssi_server_ids[ds->svc_index].nid,
-            nssi_cfg.nssi_server_ids[ds->svc_index].pid,
-            nssi_cfg.nssi_server_ids[ds->svc_index].hostname,
-            nssi_cfg.nssi_server_ids[ds->svc_index].port);
-    rc = nssi_get_service(nssi_cfg.nssi_server_ids[ds->svc_index], -1, &svcs[ds->svc_index]);
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: nssi_get_service failed\n");
-        return(NULL);
-    }
-
-    if (job_id==NULL) {
-        if (ds->rank==0) {
-            job_id = getenv("PBS_JOBID");
-            if (job_id == NULL) {
-                fprintf(stderr, "adios_read_nssi_init: unable to determine job id.  defaulting id to \"UNKNOWN_JOB_ID\".\n");
-                job_id = strdup("UNKNOWN_JOB_ID");
-            } else {
-                int len=strlen(job_id)+36+1;
-                job_id=calloc(len,1);
-
-                struct uuid_st;
-                extern int uuid_create   (      struct uuid_st **_uuid);
-                extern int uuid_destroy  (      struct uuid_st  *_uuid);
-                extern int uuid_make     (      struct uuid_st  *_uuid, unsigned int _mode, ...);
-                extern int uuid_export   (const struct uuid_st  *_uuid, unsigned int _fmt,       void **_data_ptr, size_t *_data_len);
-
-                struct uuid_st *uuid;
-                char *uuid_str=NULL;
-                uuid_create(&uuid);
-                uuid_make(uuid, 1);
-                uuid_export(uuid, 1, &uuid_str, NULL);
-                uuid_destroy(uuid);
-
-                sprintf(job_id, "%s.%s", getenv("PBS_JOBID"), uuid_str);
-
-                free(uuid_str);
-
-                MPI_Bcast (job_id, len, MPI_BYTE, 0, ds->group_comm);
-            }
-        } else {
-            job_id = getenv("PBS_JOBID");
-            if (job_id == NULL) {
-                fprintf(stderr, "adios_read_nssi_init: unable to determine job id.  defaulting id to \"UNKNOWN_JOB_ID\".\n");
-                job_id = strdup("UNKNOWN_JOB_ID");
-            } else {
-                int len=strlen(job_id)+36+1;
-                job_id=calloc(len,1);
-
-                MPI_Bcast (job_id, len, MPI_BYTE, 0, ds->group_comm);
-            }
-        }
-    }
-
-    fprintf(stderr, "adios_read_nssi_fopen: job_id=%s\n", job_id);
-
-
-
-    memset(&args, 0, sizeof(args));
-    memset(&res,  0, sizeof(res));
-    args.client_id = strdup(job_id);
-    args.gname = strdup("");
-    args.fname = strdup(ds->fname);
-    args.requested_timestep = ds->timestep;
-
-    Func_Timer("ADIOS_READ_FOPEN_OP",
-            rc = nssi_call_rpc_sync(&svcs[ds->svc_index],
-            ADIOS_READ_FOPEN_OP,
-            &args,
-            NULL,
-            0,
-            &res););
-    free(args.client_id);
-    free(args.gname);
-    free(args.fname);
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: ADIOS_READ_FOPEN_OP failed\n");
-        return(NULL);
-    }
-
-    if (res.fd==-1) {
-        fprintf(stderr, "ADIOS_READ_FOPEN_OP failed: fd=%ld\n", res.fd);
-        return(NULL);
-    }
-    ds->fd = res.fd;
-
-    fp = (ADIOS_FILE *) malloc (sizeof (ADIOS_FILE));
-    if (!fp) {
-        adios_error (err_no_memory, "Cannot allocate memory for file info.");
-        return(NULL);
-    }
-
-    /* fill out ADIOS_FILE struct */
-    fp->fh = (uint64_t) ds;
-    fp->groups_count = 1;
-    fp->vars_count = 0;
-    fp->attrs_count = 0;
-    fp->tidx_start = 0;
-    fp->ntimesteps = 1;
-    fp->file_size = 0;
-    fp->version = 1;
-    fp->endianness = 0; /* FIXME: not always Little Endian. Does it matter? */
-    alloc_namelist (&fp->group_namelist,fp->groups_count);
-    for (i=0;i<fp->groups_count;i++) {
-        if (!fp->group_namelist[i]) {
-            adios_error (err_no_memory, "Could not allocate buffer for %d strings in adios_fopen()", fp->groups_count);
-            adios_read_nssi_fclose(fp);
-            return(NULL);
-        }
-        else  {
-            strcpy(fp->group_namelist[i],"NSSI");
-        }
-    }
-
-    number_of_fopens++;
-
-    if (DEBUG>3) fprintf(stderr, "exit adios_read_nssi_fopen: fname=%s fd=%ld timestep=%ld\n",
-        fname, ds->fd, ds->timestep);
-
-    return(fp);
-}
-
-int adios_read_nssi_fclose (ADIOS_FILE *fp)
-{
-    int rc=NSSI_OK;
-    int i,j;
-
-    adios_read_fclose_args args;
-
-    struct adios_read_nssi_data_struct * ds = (struct adios_read_nssi_data_struct *) fp->fh;
-
-    if (DEBUG>3) fprintf(stderr, "enter adios_read_nssi_fclose: fname=%s\n", ds->fname);
-
-    adios_errno = 0;
-
-    MPI_Barrier(ds->collective_op_comm);
-
-    if (ds->collective_op_rank == 0) {
-        memset(&args, 0, sizeof(args));
-        args.client_id     = strdup(job_id);
-        args.fd            = ds->fd;
-        args.fname         = strdup(ds->fname);
-        args.open_timestep = ds->timestep;
-
-        Func_Timer("ADIOS_READ_FCLOSE_OP",
-                rc = nssi_call_rpc_sync(&svcs[ds->svc_index],
-                        ADIOS_READ_FCLOSE_OP,
-                        &args,
-                        NULL,
-                        0,
-                        NULL););
-        free(args.client_id);
-        free(args.fname);
-        if (rc != NSSI_OK) {
-            fprintf(stderr, "NSSI ERROR: ADIOS_READ_FCLOSE_OP failed\n");
-        }
-    }
-
-    free_namelist ((fp->group_namelist),fp->groups_count);
-    if (ds->fname) { free(ds->fname); ds->fname = 0; }
-    free(ds);
-    free(fp);
-
-    if (DEBUG>3) fprintf(stderr, "exit adios_read_nssi_fclose: fname=%s\n", ds->fname);
-
-    return 0;
-}
-
-
-int adios_read_nssi_get_dimension_order (const ADIOS_FILE *fp)
-{
-    return 0;
-}
-
-/* This function can be called if user places
-   the wrong sequences of dims for a var
-*/
-void adios_read_nssi_reset_dimension_order (ADIOS_FILE *fp, int is_fortran)
-{
-    /* unimplemented */
-}
-
-
-ADIOS_GROUP * adios_read_nssi_gopen (ADIOS_FILE *fp, const char * grpname)
-{
-    /* NSSI has no groups, so any grpname is accepted and the same empty stuff is returned */
-    return adios_read_nssi_gopen_byid(fp, 0);
-}
-
-ADIOS_GROUP * adios_read_nssi_gopen_byid (ADIOS_FILE *fp, int grpid)
-{
-    struct adios_read_nssi_data_struct * ds = (struct adios_read_nssi_data_struct *) fp->fh;
-    ADIOS_GROUP * gp;
-
-    /* NSSI has no groups, so any grpid is accepted and the same empty stuff is returned */
-
-    adios_errno = 0;
-    gp = (ADIOS_GROUP *) malloc(sizeof(ADIOS_GROUP));
-    if (!gp) {
-        adios_error (err_no_memory, "Could not allocate memory for group info");
-        return NULL;
-    }
-
-    /* fill out ADIOS_GROUP struct */
-    gp->grpid = grpid;
-    gp->gh = (uint64_t) 0;
-    gp->fp = fp;
-    gp->vars_count = 0;
-    gp->attrs_count = 0;
-    gp->var_namelist = 0;
-    gp->attr_namelist = 0;
-
-    return gp;
-}
-
-int adios_read_nssi_gclose (ADIOS_GROUP *gp)
-{
-    struct adios_read_nssi_data_struct * ds = (struct adios_read_nssi_data_struct *) gp->fp->fh;
-
-    adios_errno = 0;
-
-    free_namelist ((gp->var_namelist),gp->vars_count);
-    free_namelist ((gp->attr_namelist),gp->attrs_count);
-    free(gp);
-    return 0;
-}
-
-
-
-int adios_read_nssi_get_attr (ADIOS_GROUP * gp, const char * attrname, enum ADIOS_DATATYPES * type,
-                    int * size, void ** data)
-{
-    /* NSSI does not support attributes */
-    adios_error (err_invalid_attrname, "NSSI read method does not support attributes!");
-    *size = 0;
-    *type = adios_unknown;
-    *data = 0;
-    return adios_errno;
-}
-
-int adios_read_nssi_get_attr_byid (ADIOS_GROUP * gp, int attrid,
-                    enum ADIOS_DATATYPES * type, int * size, void ** data)
-{
-    /* NSSI does not support attributes */
-    adios_error (err_invalid_attrid, "NSSI read method does not support attributes!");
-    *size = 0;
-    *type = adios_unknown;
-    *data = 0;
-    return adios_errno;
-}
-
-
-ADIOS_VARINFO * adios_read_nssi_inq_var (ADIOS_GROUP *gp, const char * varname)
-{
-    /* NSSI has no inquiry capability, report somthing dummy */
-    return adios_read_nssi_inq_var_byid(gp, 0);
-}
-
-ADIOS_VARINFO * adios_read_nssi_inq_var_byid (ADIOS_GROUP *gp, int varid)
-{
-    struct adios_read_nssi_data_struct * ds = (struct adios_read_nssi_data_struct *) gp->fp->fh;
-    ADIOS_VARINFO * vi;
-    int i,k;
-
-    adios_errno = 0;
-    vi = (ADIOS_VARINFO *) malloc(sizeof(ADIOS_VARINFO));
-    if (!vi) {
-        adios_error (err_no_memory, "Could not allocate memory for variable info.");
-        return NULL;
-    }
-
-    /* NSSI has no inquiry capability, report somthing dummy */
-    vi->varid = varid;
-    vi->type = adios_unknown;
-    vi->ndim = 0;
-    vi->dims = NULL;
-    vi->timedim = -1;
-    vi->value = NULL;
-    vi->gmin = NULL;
-    vi->gmax = NULL;
-    vi->mins = NULL;
-    vi->maxs = NULL;
-
-    return vi;
-}
-
-void adios_read_nssi_free_varinfo (ADIOS_VARINFO *vp)
-{
-    if (vp) {
-        if (vp->dims)   free(vp->dims);
-        if (vp->value)  free(vp->value);
-        if (vp->gmin && vp->gmin != vp->value)   free(vp->gmin);
-        if (vp->gmax && vp->gmax != vp->value)   free(vp->gmax);
-        if (vp->mins)   free(vp->mins);
-        if (vp->maxs)   free(vp->maxs);
-        free(vp);
-    }
-}
-
-//static int adios_read_nssi_get (const char * varname, enum ADIOS_DATATYPES vartype,
-//                                struct adios_read_nssi_data_struct * ds,
-//                                int * offset, int * readsize, void * data)
-//{
-//
-//    struct obj_data *od;
-//    int elemsize = common_read_type_size(vartype, NULL);
-//    int err;
-//
-//    DBG_PRINTF("-- %s, rank %d: get data: varname=%s version=%d, lb=(%d,%d,%d) ub=(%d,%d,%d)}\n",
-//        __func__, ds->rank, varname, ds->timestep, offset[1], offset[0], offset[2],
-//        offset[1]+readsize[1]-1, offset[0]+readsize[0]-1, offset[2]+readsize[2]-1);
-//
-//    err =  NSSI_get (varname, ds->timestep, elemsize,
-//                     offset[1], offset[0], offset[2],
-//                     offset[1]+readsize[1]-1,
-//                     offset[0]+readsize[0]-1,
-//                     offset[2]+readsize[2]-1,
-//                     data
-//                    );
-//    /*if (err == -ENOMEM) {
-//        adios_error (err_no_memory, "Not enough memory for NSSI to perform NSSI_get()");
-//        return -err_no_memory;
-//    }
-//    else*/ if (err) {
-//        adios_error (err_corrupted_variable, "NSSI failed to read variable %s.", varname);
-//        return -err_corrupted_variable;
-//    }
-//
-//    return 0;
-//}
-
-int64_t adios_read_nssi_read_var (ADIOS_GROUP * gp, const char * varname,
-                        const uint64_t * start, const uint64_t * count,
-                        void * data)
-{
-    int rc=NSSI_OK;
-    int64_t total_size;
-    struct adios_read_nssi_data_struct * ds = (struct adios_read_nssi_data_struct *) gp->fp->fh;
-    enum ADIOS_DATATYPES vartype;
-    int elemsize;
-    int err;
-    int i;
-
-    adios_read_get_vartype_size_args vts_args;
-    adios_read_get_vartype_size_res  vts_res;
-    adios_read_read_var_args args;
-    adios_read_read_var_res  res;
-
-    memset(&vts_args, 0, sizeof(vts_args));
-    memset(&vts_res,  0, sizeof(vts_res));
-    vts_args.fd            = ds->fd;
-    vts_args.open_timestep = ds->timestep;
-    vts_args.client_id     = strdup(job_id);
-    vts_args.vpath         = strdup("");
-    vts_args.vname         = strdup(varname);
-    Func_Timer("ADIOS_READ_GET_VARTYPE_SIZE_OP",
-            rc = nssi_call_rpc_sync(&svcs[ds->svc_index],
-                    ADIOS_READ_GET_VARTYPE_SIZE_OP,
-                    &vts_args,
-                    NULL,
-                    0,
-                    &vts_res););
-    free(vts_args.vpath);
-    free(vts_args.vname);
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: ADIOS_READ_GET_VARTYPE_SIZE_OP failed\n");
-        return(-1);
-    }
-
-    memset(&args, 0, sizeof(args));
-    memset(&res,  0, sizeof(res));
-    args.fd=ds->fd;
-    args.open_timestep = ds->timestep;
-    args.client_id = strdup(job_id);
-    args.vpath=strdup("");
-    args.vname=strdup(varname);
-    total_size = 1;
-    for (i=0; i<3; i++) {
-        args.offsets[i] = (int) start[i];
-        args.counts[i]  = (int) count[i];
-        total_size     *= count[i];
-    }
-    total_size *= vts_res.vartype_size;
-    args.max_read=total_size;
-
-    if (DEBUG>3) fprintf(stderr, "-- %s, rank %d: get data: varname=%s offsets=(%d,%d,%d) counts=(%d,%d,%d) total_size=%ld\n",
-        __func__, ds->rank, varname,
-        args.offsets[0], args.offsets[1], args.offsets[2],
-        args.counts[0], args.counts[1], args.counts[2],
-        total_size);
-
-    Func_Timer("ADIOS_READ_READ_VAR_OP",
-            rc = nssi_call_rpc_sync(&svcs[ds->svc_index],
-                    ADIOS_READ_READ_VAR_OP,
-                    &args,
-                    data,
-                    total_size,
-                    &res););
-    free(args.vpath);
-    free(args.vname);
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: ADIOS_READ_READ_VAR_OP failed\n");
-        return(-1);
-    }
-
-    return(res.bytes_read);
-}
-
-int64_t adios_read_nssi_read_var_byid (ADIOS_GROUP    * gp,
-                             int              varid,
-                             const uint64_t  * start,
-                             const uint64_t  * count,
-                             void           * data)
-{
-    adios_error (err_invalid_varid, "NSSI does not know variable indicies, only variable names can be used.");
-    return -err_invalid_varid;
-}
-
-
-int64_t adios_read_nssi_read_local_var (ADIOS_GROUP * gp, const char * varname,
-                                      int vidx, const uint64_t * start,
-                                      const uint64_t * count, void * data)
-{  
-    adios_error (err_operation_not_supported, "adios_read_local_var() is not supported with NSSI method.");
-    return adios_errno;
-}
diff --git a/src/transforms/adios_transform_alacrity_common.h b/src/transforms/adios_transform_alacrity_common.h
index afcbf3f..062d428 100644
--- a/src/transforms/adios_transform_alacrity_common.h
+++ b/src/transforms/adios_transform_alacrity_common.h
@@ -13,7 +13,7 @@
 #include <public/adios_error.h>
 //#include <assert.h>
 
-#include <memstream.h> // From ALACRITY, helps with (de)serialization of metadata
+#include <alacrity-memstream.h> // From ALACRITY, helps with (de)serialization of metadata
 
 typedef struct {
 	// Loaded from transform metadata buffer
diff --git a/src/transforms/adios_transform_alacrity_read.c b/src/transforms/adios_transform_alacrity_read.c
index 3f26bc9..5a49747 100644
--- a/src/transforms/adios_transform_alacrity_read.c
+++ b/src/transforms/adios_transform_alacrity_read.c
@@ -4,6 +4,7 @@
 #include <assert.h>
 
 #include "core/util.h"
+#include "core/adios_internals.h"
 #include "core/adios_logger.h"
 #include "core/transforms/adios_transforms_hooks_read.h"
 #include "core/transforms/adios_transforms_reqgroup.h"
diff --git a/src/transforms/adios_transform_alacrity_write.c b/src/transforms/adios_transform_alacrity_write.c
index dd2e0c5..729907d 100644
--- a/src/transforms/adios_transform_alacrity_write.c
+++ b/src/transforms/adios_transform_alacrity_write.c
@@ -21,7 +21,7 @@ typedef struct {
 	int has_low_order_bytes;
 } alac_transform_conf_t;
 
-uint64_t adios_get_type_size(enum ADIOS_DATATYPES type, void *var);
+uint64_t adios_get_type_size(enum ADIOS_DATATYPES type, const void *var);
 
 uint16_t adios_transform_alacrity_get_metadata_size(struct adios_transform_spec *transform_spec)
 {
diff --git a/src/transforms/adios_transform_aplod_read.c b/src/transforms/adios_transform_aplod_read.c
index ae48210..cf459eb 100644
--- a/src/transforms/adios_transform_aplod_read.c
+++ b/src/transforms/adios_transform_aplod_read.c
@@ -6,6 +6,7 @@
 #include "util.h"
 #include "core/transforms/adios_transforms_hooks_read.h"
 #include "core/transforms/adios_transforms_reqgroup.h"
+#include "core/adios_internals.h" // adios_get_type_size()
 
 #ifdef APLOD
 
@@ -142,9 +143,6 @@ adios_datablock * adios_transform_aplod_pg_reqgroup_completed(adios_transform_re
     uint64_t decompressed_len = numElements * elementSize;
     void* decompressed_buff = malloc (decompressed_len);
 
-    int8_t numComponents = 0;
-    int32_t *componentVector = 0;
-
     aplod_meta_t aplodmeta;
     parse_aplod_meta(completed_pg_reqgroup->transform_metadata, &aplodmeta);
 
diff --git a/src/transforms/adios_transform_aplod_write.c b/src/transforms/adios_transform_aplod_write.c
index 68904f8..6326ce2 100644
--- a/src/transforms/adios_transform_aplod_write.c
+++ b/src/transforms/adios_transform_aplod_write.c
@@ -7,6 +7,7 @@
 #include "core/transforms/adios_transforms_write.h"
 #include "core/transforms/adios_transforms_hooks_write.h"
 #include "core/transforms/adios_transforms_util.h"
+#include "core/bp_utils.h" // bp_get_type_size()
 
 #ifdef APLOD
 
diff --git a/src/transforms/adios_transform_bzip2_read.c b/src/transforms/adios_transform_bzip2_read.c
index 612921f..15e8062 100755
--- a/src/transforms/adios_transform_bzip2_read.c
+++ b/src/transforms/adios_transform_bzip2_read.c
@@ -6,6 +6,7 @@
 #include "util.h"
 #include "core/transforms/adios_transforms_hooks_read.h"
 #include "core/transforms/adios_transforms_reqgroup.h"
+#include "core/adios_internals.h" // adios_get_type_size()
 
 #ifdef BZIP2
 
diff --git a/src/transforms/adios_transform_bzip2_write.c b/src/transforms/adios_transform_bzip2_write.c
index e3f071c..e1a1cc4 100755
--- a/src/transforms/adios_transform_bzip2_write.c
+++ b/src/transforms/adios_transform_bzip2_write.c
@@ -1,4 +1,5 @@
 #include <stdint.h>
+#include <inttypes.h>
 #include <stdio.h>
 #include <assert.h>
 #include <limits.h>
@@ -94,7 +95,7 @@ int adios_transform_bzip2_apply(struct adios_file_struct *fd,
         *wrote_to_shared_buffer = 1;
         if (!shared_buffer_reserve(fd, output_size))
         {
-            log_error("Out of memory allocating %llu bytes for %s for bzip2 transform\n", output_size, var->name);
+            log_error("Out of memory allocating %" PRIu64 " bytes for %s for bzip2 transform\n", output_size, var->name);
             return 0;
         }
 
@@ -107,7 +108,7 @@ int adios_transform_bzip2_apply(struct adios_file_struct *fd,
         output_buff = malloc(output_size);
         if (!output_buff)
         {
-            log_error("Out of memory allocating %llu bytes for %s for bzip2 transform\n", output_size, var->name);
+            log_error("Out of memory allocating %" PRIu64 " bytes for %s for bzip2 transform\n", output_size, var->name);
             return 0;
         }
     }
diff --git a/src/transforms/adios_transform_identity_read.c b/src/transforms/adios_transform_identity_read.c
index 3c163c1..5e5defa 100644
--- a/src/transforms/adios_transform_identity_read.c
+++ b/src/transforms/adios_transform_identity_read.c
@@ -81,6 +81,8 @@ void compute_sieving_offsets_for_pg_selection(const ADIOS_SELECTION *intersect_s
 
     case ADIOS_SELECTION_AUTO:
         /* Unsupported */
+        start_off = 0;
+        end_off = 0;
         break;
     }
 
diff --git a/src/transforms/adios_transform_isobar_read.c b/src/transforms/adios_transform_isobar_read.c
index 844fbe5..77447f2 100755
--- a/src/transforms/adios_transform_isobar_read.c
+++ b/src/transforms/adios_transform_isobar_read.c
@@ -6,6 +6,7 @@
 #include "util.h"
 #include "core/transforms/adios_transforms_hooks_read.h"
 #include "core/transforms/adios_transforms_reqgroup.h"
+#include "core/adios_internals.h" // adios_get_type_size()
 
 #ifdef ISOBAR
 
diff --git a/src/transforms/adios_transform_isobar_write.c b/src/transforms/adios_transform_isobar_write.c
index 869e977..f5d0f62 100755
--- a/src/transforms/adios_transform_isobar_write.c
+++ b/src/transforms/adios_transform_isobar_write.c
@@ -1,4 +1,5 @@
 #include <stdint.h>
+#include <inttypes.h>
 #include <assert.h>
 #include <limits.h>
 #include <sys/time.h>
@@ -15,6 +16,7 @@
 
 #define ELEMENT_BYTES    8
 
+/*
 static int is_digit_str(char* input_str)
 {
     if(strlen(input_str) > 2)    // at most 2 digits for isobar
@@ -32,6 +34,7 @@ static int is_digit_str(char* input_str)
     }
     return 1;
 }
+*/
 
 int compress_isobar_pre_allocated(const void* input_data, const uint64_t input_len,
                                   void* output_data, uint64_t* output_len, int compress_level)
@@ -128,7 +131,7 @@ int adios_transform_isobar_apply(struct adios_file_struct *fd,
         *wrote_to_shared_buffer = 1;
         if (!shared_buffer_reserve(fd, output_size))
         {
-            log_error("Out of memory allocating %llu bytes for %s for isobar transform\n", output_size, var->name);
+            log_error("Out of memory allocating %" PRIu64 " bytes for %s for isobar transform\n", output_size, var->name);
             return 0;
         }
 
@@ -141,7 +144,7 @@ int adios_transform_isobar_apply(struct adios_file_struct *fd,
         output_buff = malloc(output_size);
         if (!output_buff)
         {
-            log_error("Out of memory allocating %llu bytes for %s for isobar transform\n", output_size, var->name);
+            log_error("Out of memory allocating %" PRIu64 " bytes for %s for isobar transform\n", output_size, var->name);
             return 0;
         }
     }
diff --git a/src/transforms/adios_transform_szip_read.c b/src/transforms/adios_transform_szip_read.c
index 8b3ed0a..5f06e3c 100644
--- a/src/transforms/adios_transform_szip_read.c
+++ b/src/transforms/adios_transform_szip_read.c
@@ -4,6 +4,7 @@
 #include "util.h"
 #include "core/transforms/adios_transforms_hooks_read.h"
 #include "core/transforms/adios_transforms_reqgroup.h"
+#include "core/adios_internals.h" // adios_get_type_size()
 
 #ifdef SZIP
 
diff --git a/src/transforms/adios_transform_zlib_write.c b/src/transforms/adios_transform_zlib_write.c
index 56a510b..bbae449 100755
--- a/src/transforms/adios_transform_zlib_write.c
+++ b/src/transforms/adios_transform_zlib_write.c
@@ -1,4 +1,5 @@
 #include <stdint.h>
+#include <inttypes.h>
 #include <assert.h>
 #include <limits.h>
 #include <sys/time.h>
@@ -114,7 +115,7 @@ int adios_transform_zlib_apply(struct adios_file_struct *fd,
         *wrote_to_shared_buffer = 1;
         if (!shared_buffer_reserve(fd, output_size))
         {
-            log_error("Out of memory allocating %llu bytes for %s for zlib transform\n", output_size, var->name);
+            log_error("Out of memory allocating %" PRIu64 " bytes for %s for zlib transform\n", output_size, var->name);
             return 0;
         }
 
@@ -127,7 +128,7 @@ int adios_transform_zlib_apply(struct adios_file_struct *fd,
         output_buff = malloc(output_size);
         if (!output_buff)
         {
-            log_error("Out of memory allocating %llu bytes for %s for zlib transform\n", output_size, var->name);
+            log_error("Out of memory allocating %" PRIu64 " bytes for %s for zlib transform\n", output_size, var->name);
             return 0;
         }
     }
diff --git a/src/write/adios_dataspaces.c b/src/write/adios_dataspaces.c
index 92a78f5..5066aad 100644
--- a/src/write/adios_dataspaces.c
+++ b/src/write/adios_dataspaces.c
@@ -1,6 +1,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#include <inttypes.h>
 #include <math.h>
 #include <string.h>
 
@@ -21,6 +22,8 @@
 #include "core/util.h"
 #include "core/ds_metadata.h"
 #include "core/adios_logger.h"
+#include "core/globals.h"
+#include "core/buffer.h"
 
 #include "dataspaces.h"
 
@@ -140,7 +143,7 @@ static int connect_to_dspaces (struct adios_ds_data_struct * md, MPI_Comm comm)
         //Init the dart client
         ret = dspaces_init (num_peers, md->appid, &md->mpi_comm_init, NULL);
         if (ret) {
-            log_error ("adios_dataspaces: rank=%d Failed to connect to DATASPACES: err=%d,  rank=%d\n", md->rank, ret);        
+            log_error ("adios_dataspaces: rank=%d Failed to connect to DATASPACES: err=%d\n", md->rank, ret); 
             return ret;
         }
 
@@ -266,22 +269,11 @@ int adios_dataspaces_open (struct adios_file_struct * fd,
     return ret;
 }
 
-enum ADIOS_FLAG adios_dataspaces_should_buffer (struct adios_file_struct * fd
-                                         ,struct adios_method_struct * method
-                                         )
+enum BUFFERING_STRATEGY adios_dataspaces_should_buffer (struct adios_file_struct * fd
+                                                       ,struct adios_method_struct * method
+                                                       )
 {
-    
-    //if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
-    //{
-        // write the process group header
-        //adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
-        //adios_write_open_vars_v1 (fd);
-    //} else {
-    //    log_warn("WARNING: %s expects that fd->shared_buffer is false\n", __func__);
-    //}
-    
-
-    return adios_flag_no;  // this will take care of it
+    return no_buffering;  
 }
 
 
@@ -315,6 +307,7 @@ void adios_dataspaces_write (struct adios_file_struct * fd
     int didx[MAX_DS_NDIM]; // for reordering the dimensions
     int ndims = 0;
     int hastime = 0;
+    uint64_t nelems = 1;
     gdims[0] = 0;
     struct adios_dimension_struct* var_dimensions = v->dimensions;
     // Calculate lower and upper bounds for each available dimension (up to MAX_DS_NDIM dims)
@@ -325,7 +318,11 @@ void adios_dataspaces_write (struct adios_file_struct * fd
         lb[ndims] = adios_get_dim_value (&(var_dimensions->local_offset));
         if (gdims[ndims] > 0 && dims[ndims] > 0)  {
             ub[ndims] = lb[ndims] + dims[ndims] - 1;
+            nelems *= dims[ndims];
             ndims++;
+        } else if (gdims[ndims] > 0 && dims[ndims] == 0) {
+            // piece of array with 0 elements, skip it
+            nelems *= dims[ndims];
         }   else {
             // time dimension (ldim=0 indicates this). Leave out from the dimensions.
             //ub[ndims] = lb[ndims]; 
@@ -349,6 +346,11 @@ void adios_dataspaces_write (struct adios_file_struct * fd
 
     //snprintf(dspaces_type_var_name, MAX_DS_NAMELEN, "TYPE@%s", ds_var_name);
     
+    /* The next line is just to fix adios_build_index_v1() call not to abort on 
+     * offset=0 variables (in case of files, written variables have offset > 0)
+     */
+    v->write_offset = 1; 
+
     /* non-global variables are put in space ONLY by rank = 0 process */
     if (gdims[0] == 0 && md->rank != 0) {
         //fprintf(stderr, "rank=%d var_name=%s is not global. Skip\n", md->rank, ds_var_name);
@@ -363,7 +365,6 @@ void adios_dataspaces_write (struct adios_file_struct * fd
     //}
     
      
-    v->write_offset = 1; // only !=0 offsets will be included in build index
     /* This is not needed here, this is already called in common_adios_write() 
     adios_generate_var_characteristics_v1 (fd, v); // characteristics will be included in build index
     adios_write_var_characteristics_v1 (fd, v);
@@ -378,6 +379,13 @@ void adios_dataspaces_write (struct adios_file_struct * fd
             ds_var_name, adios_type_to_string_int(v->type), v->type, var_type_size, version, ndims,
             dims_str, gdims_str, lb_str, ub_str);
 
+
+    /* If variable is empty, do not push to space */
+    if (nelems == 0) {
+        log_debug ("rank=%d var_name=%s is empy variable piece. Skip\n", md->rank, ds_var_name);
+        return;
+    }
+
     /* non-timed scalars are written in the metadata at close(), not here */
     if (ndims == 0 && !hastime)
         return;
@@ -439,7 +447,7 @@ void adios_dataspaces_get_write_buffer (struct adios_file_struct * fd
         if (!*buffer)
         {
             adios_method_buffer_free (mem_allowed);
-            log_error ("ERROR: Out of memory allocating %llu bytes for %s in %s:%s()\n"
+            log_error ("ERROR: Out of memory allocating %" PRIu64 " bytes for %s in %s:%s()\n"
                     ,*size, v->name, __FILE__, __func__
                     );
             v->got_buffer = adios_flag_no;
@@ -460,7 +468,7 @@ void adios_dataspaces_get_write_buffer (struct adios_file_struct * fd
     else
     {
         adios_method_buffer_free (mem_allowed);
-        log_error ("OVERFLOW: Cannot allocate requested buffer of %llu "
+        log_error ("OVERFLOW: Cannot allocate requested buffer of %" PRIu64 
                          "bytes for %s in %s:%s()\n"
                 ,*size
                 ,v->name
@@ -495,7 +503,7 @@ static void adios_dataspaces_gather_indices (struct adios_file_struct * fd
     // build local index first appending to any existing index
     adios_build_index_v1 (fd, index);
 
-    log_debug ("%s index after first build is pg=%x vars=%x attrs=%x\n", 
+    log_debug ("%s index after first build is pg=%p vars=%p attrs=%p\n", 
                 __func__, index->pg_root, index->vars_root, index->attrs_root);
 #if 0
 #if HAVE_MPI
@@ -578,7 +586,7 @@ static void adios_dataspaces_gather_indices (struct adios_file_struct * fd
 #endif
 #endif
 
-    log_debug ("%s index after gathering is pg=%x vars=%x attrs=%x\n", 
+    log_debug ("%s index after gathering is pg=%p vars=%p attrs=%p\n", 
                 __func__, index->pg_root, index->vars_root, index->attrs_root);
 }
 
@@ -713,7 +721,7 @@ void ds_pack_group_info (struct adios_file_struct *fd
         for (i = 0; i<v->characteristics->dims.count; i++) {
             ldims[j] = v->characteristics->dims.dims[j*3];  // ith dimension 
             gdims[j] = v->characteristics->dims.dims[j*3+1];  // ith dimension 
-            log_debug("           , ldim = %lld gdim = %lld)\n", ldims[j], gdims[j]);
+            log_debug("           , ldim = %" PRIu64 " gdim = %" PRIu64 ")\n", ldims[j], gdims[j]);
             if (gdims[j] == 0 && ldims[j] == 1) {
                 // time dimension's global=0, local=1, skip
                 // FIXME: This is true for a local array of length 1 (not defined as global)
@@ -848,6 +856,12 @@ void ds_pack_file_info (int time, int nvars, int nattrs, int group_index_len, ch
     b[namelen] = 0;
 }
 
+void adios_dataspaces_buffer_overflow (struct adios_file_struct * fd, 
+                                       struct adios_method_struct * method)
+{
+    // this call never happens without shared buffering
+}
+
 void adios_dataspaces_close (struct adios_file_struct * fd
                       ,struct adios_method_struct * method
                       )
diff --git a/src/write/adios_datatap.c b/src/write/adios_datatap.c
deleted file mode 100644
index 02abf84..0000000
--- a/src/write/adios_datatap.c
+++ /dev/null
@@ -1,1082 +0,0 @@
-#include "config.h"
-
-#if NO_DATATAP == 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ffs.h>
-#include <atl.h>
-#include "public/adios.h"
-#include "core/adios_internals.h"
-#include "core/adios_transport_hooks.h"
-#include "core/util.h"
-
-#include <sys/queue.h>
-#if HAVE_PORTALS == 1
-#include <thin_portal.h>
-#elif HAVE_INFINIBAND == 1
-#include <thin_ib.h>
-#endif
-
-
-#define STARTINGSIZE 16
-
-//static LIST_HEAD(listhead, fm_structure) globallist;
-
-#define OPLEN 4
-static char OP[OPLEN] = { '+', '-', '*', '/' };
-static char *OP_REP[OPLEN] = { "_plus_", "_minus_", "_mult_", "_div_" };
-
-int rank = -1;
-
-typedef struct nametable_
-{
-    char *originalname;
-    char *mangledname;
-    LIST_ENTRY(nametable_) entries;
-} nametable;
-
-
-
-typedef struct altname_
-{
-    char *name;
-    FMField *field;                                               //contains the field list
-    LIST_ENTRY(altname_) entries;
-} altname;
-
-typedef struct dimnames_
-{
-    char *name;
-    LIST_HEAD(alts, altname_) altlist;
-    LIST_ENTRY(dimnames_) entries;
-} dimnames;
-
-
-int mpisize  = 1;
-
-struct fm_structure
-{
-    FMFormatRec *format;
-    int size;                                                   //in bytes - no padding
-    unsigned char *buffer;
-    int snd_count;
-    IOhandle *s;
-    FMFormat ioformat;
-    attr_list alist;    
-
-    LIST_HEAD(tablehead, nametable_) namelist;
-    LIST_HEAD(dims, dimnames_) dimlist;
-};
-
-
-typedef struct datatap_method_data
-{
-    int opencount;
-    int initialized;
-    int cycle_id;
-    char *pfile;
-    struct fm_structure *fm;
-} dmd;
-
-MPI_Comm adios_mpi_comm_world = MPI_COMM_WORLD;
-int initialized = 0;
-
-
-static char *
-getFixedName(char *name)
-{
-    char *tempname = (char *) malloc(sizeof(char) * 255);
-    tempname = strdup(name);
-
-
-    char *oldname = strdup(name);
-    char *loc = NULL;
-    int i;
-
-    do
-    {
-        for (i = 0; i < OPLEN; i++)
-        {
-    //checking operator OP[i]
-            loc = strchr(oldname, OP[i]);
-            if (loc == NULL)
-                continue;
-            *loc = 0;
-            snprintf(tempname, 255, "%s%s%s", oldname, OP_REP[i], &loc[1]);
-            free(oldname);
-            oldname = strdup(tempname);
-        }
-    }
-    while (loc != NULL);
-
-
-
-    return tempname;
-}
-
-
-
-//return a list of all the names associated with the variable
-static char **
-getAltName(char *variable, int *count)
-{
-    if (count == NULL)
-        return NULL;
-
-    return NULL;
-
-}
-
-
-static char *
-findFixedName(struct fm_structure *fm, char *name)
-{
-    nametable *node;
-
-    for (node = fm->namelist.lh_first; node != NULL;
-         node = node->entries.le_next)
-    {
-        if (!strcmp(node->originalname, name))
-        {
-    //matched
-            return node->mangledname;
-        }
-
-    }
-
-    return name;
-}
-
-
-extern void
-adios_datatap_init(const PairStruct *params, struct adios_method_struct *method)
-{
-    if (method->method_data != NULL)
-    {
-        dmd *mdata = (dmd *) method->method_data;
-        if (mdata->initialized == 1)
-            return;
-    }
-
-    method->method_data = (void *) malloc(sizeof(struct datatap_method_data));
-    dmd *mdata = (dmd *) method->method_data;
-    memset(mdata, 0, sizeof(dmd));
-
-    mdata->opencount = 0;
-    mdata->initialized = 1;
-    if (md->parameters != NULL && strlen(md->parameters) > 1)
-    {
-//contains the file name of the file to read?
-        mdata->pfile = strdup(md->parameters);
-    }
-    else
-        mdata->pfile = strdup("params");
-
-    MPI_Comm_rank(adios_mpi_comm_world, &rank);
-    MPI_Comm_size(adios_mpi_comm_world, &mpisize);
-
-    fflush(stderr);
-
-}
-
-static altname *
-findAltName(struct fm_structure *current_fm, char *dimname, char *varname)
-{
-    int len = strlen(dimname) + strlen(varname) + 2;
-    char *aname = (char *) malloc(sizeof(char) * len);
-    strcpy(aname, dimname);
-    strcat(aname, "_");
-    strcat(aname, varname);
-    dimnames *d = NULL;
-
-    for (d = current_fm->dimlist.lh_first; d != NULL; d = d->entries.le_next)
-    {
-        if (!strcmp(d->name, dimname))
-        {
-    //matched
-            break;
-        }
-
-    }
-
-    if (d == NULL)
-    {
-        d = (dimnames *) malloc(sizeof(dimnames));
-        d->name = dimname;
-        LIST_INIT(&d->altlist);
-        LIST_INSERT_HEAD(&current_fm->dimlist, d, entries);
-    }
-
-    FMField *field = (FMField *) malloc(sizeof(FMField));
-
-    altname *a = (altname *) malloc(sizeof(altname));
-    a->name = aname;
-    a->field = field;
-    field->field_name = strdup(aname);
-    field->field_type = strdup("integer");
-    field->field_size = sizeof(int);
-    field->field_offset = -1;
-
-
-    LIST_INSERT_HEAD(&d->altlist, a, entries);
-
-    return a;
-}
-
-
-
-extern int
-adios_datatap_open(struct adios_file_struct *fd,
-           struct adios_method_struct *method, void*comm)
-{
-    if (fd == NULL || method == NULL)
-    {
-        fprintf(stderr, "Bad input parameters\n");
-        return -1;
-    }
-
-    dmd *mdata = (dmd *) method->method_data;
-
-    if (mdata != NULL)
-    {
-        if (mdata->initialized == 0)
-        {
-            fprintf(stderr, "method not initialized properly\n");
-            return;
-        }
-    }
-    else
-    {
-        fprintf(stderr, "method not initialized\n");
-        return -1;
-    }
-
-    if (mdata->fm != NULL)
-    {
-        return -1;
-    }
-
-
-
-    struct adios_group_struct *t = method->group;
-    if (t == NULL)
-    {
-        fprintf(stderr, "group is not initialized properly\n");
-        return -1;
-    }
-
-    struct adios_var_struct *fields = t->vars;
-    if (fields == NULL)
-    {
-        fprintf(stderr, "adios vars not initalized properly in the group\n");
-        return -1;
-    }
-
-//iterate through all the types
-//create a format rec
-    FMFormatRec *format = (FMFormatRec *) malloc(sizeof(FMFormatRec) * 2);
-    if (format == NULL)
-    {
-        perror("memory allocation failed");
-        return -1;
-    }
-
-    memset(format, 0, sizeof(FMFormatRec) * 2);
-
-
-    struct fm_structure *current_fm =
-        (struct fm_structure *) malloc(sizeof(struct fm_structure));
-    if (current_fm == NULL)
-    {
-        perror("memory allocation failed");
-        return -1;
-    }
-
-    memset(current_fm, 0, sizeof(struct fm_structure));
-    current_fm->alist = create_attr_list();
-    set_int_attr(current_fm->alist, attr_atom_from_string("mpisize"), mpisize);
-    
-
-    LIST_INIT(&current_fm->namelist);
-    LIST_INIT(&current_fm->dimlist);
-
-
-
-//associate the FMFormat rec with the fm_structure
-    current_fm->format = format;
-    format->format_name = strdup(t->name);
-
-//allocate field list
-    if (t->var_count == 0)
-    {
-        fprintf(stderr, "no variables in this group - possibly an error\n");
-        return -1;
-
-    }
-
-    int altvarcount = 0;
-
-    FMFieldList field_list =
-        (FMFieldList) malloc(sizeof(FMField) * (t->var_count + 1));
-    if (field_list == NULL)
-    {
-        perror("memory allocation failed");
-        return -1;
-    }
-
-//keep count of the total number of fields
-    int fieldno = 0;
-
-
-//for each type look through all the fields
-    struct adios_var_struct *f;
-    for (f = t->vars; f != NULL; f = f->next, fieldno++)
-    {
-//make the field list
-//check name for + - * / (operators) and replace them
-        char *tempname = getFixedName(f->name);
-
-
-        if (strcmp(tempname, f->name))
-        {
-    //strings don't match
-    //add to name list
-            nametable *namenode = (nametable *) malloc(sizeof(nametable));
-            namenode->originalname = strdup(f->name);
-            namenode->mangledname = strdup(tempname);
-
-            LIST_INSERT_HEAD(&current_fm->namelist, namenode, entries);
-        }
-
-
-//
-        field_list[fieldno].field_name = strdup(tempname);
-        free(tempname);
-
-        if (!f->dimensions)
-        {
-            switch (f->type)
-            {
-            case adios_unknown:
-                fprintf(stderr, "bad type error\n");
-                fieldno--;
-                break;
-
-            case adios_integer:
-                field_list[fieldno].field_type = strdup("integer");
-                field_list[fieldno].field_size = sizeof(int);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(int);
-                break;
-
-            case adios_real:
-                field_list[fieldno].field_type = strdup("float");
-                field_list[fieldno].field_size = sizeof(float);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(float);
-                break;
-
-            case adios_string:
-                field_list[fieldno].field_type = strdup("string");
-                field_list[fieldno].field_size = sizeof(char);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(unsigned char *);
-                break;
-
-            case adios_double:
-                field_list[fieldno].field_type = strdup("float");
-                field_list[fieldno].field_size = sizeof(double);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(double);
-                break;
-
-
-            case adios_byte:
-                field_list[fieldno].field_type = strdup("char");
-                field_list[fieldno].field_size = sizeof(char);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(char);
-                break;
-
-            default:
-                fprintf(stderr, "unknown type error %d\n", f->type);
-                fieldno--;
-                break;
-            }
-        }
-        else
-        {
-    //its a vector!
-    //find out the dimensions by walking the dimension list
-            struct adios_dimension_struct *d = f->dimensions;
-#define DIMSIZE 10240
-            char dims[DIMSIZE] = { 0 };
-#define ELSIZE 256
-            char el[ELSIZE] = { 0 };
-
-
-    //create the dimension thingy
-            for (; d != NULL; d = d->next)
-            {
-                //for each dimension just take the upper_bound
-                if (d->dimension.id)
-                {
-                    //findFixedName returns the mangled name from the original name
-                    struct adios_var_struct *tmp_var = adios_find_var_by_id(t->vars, d->dimension.id);
-                    char *name =
-                    findFixedName(current_fm, 
-                              tmp_var->name);
-                    //create the alternate name for this variable and the array its defining
-                    altname *a = findAltName(current_fm, name,
-                                 (char*)field_list[fieldno].field_name);
-                    //altname is a new variable that we need to add to the field list
-                    altvarcount++;
-
-                    snprintf(el, ELSIZE, "[%s]", a->name);
-//                    fprintf(stderr, "%s\t", el);
-                    //offset_increment is just the size of the pointer
-
-                }
-                else            //its a number
-                {
-                    //if its a number the offset_increment will be the size of the variable*rank
-                    snprintf(el, ELSIZE, "[%d]", d->dimension.rank);
-                }
-                strncat(dims, el, DIMSIZE);
-            }
-//             fprintf(stderr, "%s\n", dims);
-
-            while(current_fm->size % 8 != 0)
-            {
-                current_fm->size ++;                    
-            }
-
-            switch (f->type)
-            {
-            case adios_unknown:
-                fprintf(stderr, "bad type error\n");
-                fieldno--;
-                break;
-
-            case adios_integer:
-                field_list[fieldno].field_type =
-                    (char *) malloc(sizeof(char) * 255);
-                snprintf((char *) field_list[fieldno].field_type, 255,
-                         "integer%s", dims);
-                field_list[fieldno].field_size = sizeof(int);
-                
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(void *);
-                break;
-
-            case adios_real:
-                field_list[fieldno].field_type =
-                    (char *) malloc(sizeof(char) * 255);
-                snprintf((char *) field_list[fieldno].field_type, 255,
-                         "float%s", dims);
-                field_list[fieldno].field_size = sizeof(float);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(void *);
-                break;
-
-            case adios_string:
-                field_list[fieldno].field_type = strdup("string");
-                field_list[fieldno].field_size = sizeof(char);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(void *);
-                break;
-
-            case adios_double:
-                field_list[fieldno].field_type =
-                    (char *) malloc(sizeof(char) * 255);
-                snprintf((char *) field_list[fieldno].field_type, 255,
-                         "float%s", dims);
-                field_list[fieldno].field_size = sizeof(double);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(void *);
-                break;
-
-            case adios_byte:
-                field_list[fieldno].field_type =
-                    (char *) malloc(sizeof(char) * 255);
-                snprintf((char *) field_list[fieldno].field_type, 255, "char%s",
-                         dims);
-                field_list[fieldno].field_size = sizeof(char);
-                field_list[fieldno].field_offset = current_fm->size;
-                current_fm->size += sizeof(void *);
-                break;
-
-            default:
-                fprintf(stderr, "unknown type error %d\n", f->type);
-                fieldno--;
-                break;
-            }
-
-        }
-
-//      fprintf(formatfile, "%s, %s, %d, %d\n", field_list[fieldno].field_name, field_list[fieldno].field_type,field_list[fieldno].field_size,field_list[fieldno].field_offset); 
-
-
-    }
-
-    dimnames *d = NULL;
-//     fprintf(stderr,
-//             "============================\n\tdims and alts\n============================\n");
-//     fprintf(stderr, "altvarcount = %d\n", altvarcount);
-    field_list =
-        (FMFieldList) realloc(field_list,
-                              sizeof(FMField) * (altvarcount + t->var_count +
-                                                 1));
-
-    for (d = current_fm->dimlist.lh_first; d != NULL; d = d->entries.le_next)
-    {
-//         fprintf(stderr, "%s\t", d->name);
-        altname *a = NULL;
-        for (a = d->altlist.lh_first; a != NULL; a = a->entries.le_next)
-        {
-//             fprintf(stderr, "%s\t", a->name);
-            a->field->field_offset = current_fm->size;
-            current_fm->size += sizeof(int);
-            memcpy(&field_list[fieldno], a->field, sizeof(FMField));
-            fieldno++;
-
-        }
-//         fprintf(stderr, "\n");
-
-    }
-
-//     fprintf(stderr,
-//             "============================\n\tdims and alts\n============================\n");
-
-
-
-//terminate the the fieldlist
-    for (; fieldno < (t->var_count + 1+altvarcount); fieldno++)
-    {
-        field_list[fieldno].field_type = NULL;
-        field_list[fieldno].field_name = NULL;
-        field_list[fieldno].field_offset = 0;
-        field_list[fieldno].field_size = 0;
-    }
-
-//     fprintf(stderr, "=======================\n");
-
-
-//dump field list to check
-    {
-
-        FMField *f = field_list;
-        int x = 0;
-
-        for (x = 0; x < fieldno; x++)
-        {
-            f = &field_list[x];
-            if (f == NULL || f->field_name == NULL || f->field_size == 0)
-                break;
-
-//              fprintf(stderr, "%d: %s %s %d %d\n",
-//                      x, f->field_name, f->field_type, f->field_size,
-//                      f->field_offset);
-
-        }
-
-    }
-
-//associate field list
-    format->field_list = field_list;
-
-    current_fm->format->struct_size = current_fm->size;
-    current_fm->buffer = (unsigned char *) malloc(current_fm->size);
-    memset(current_fm->buffer, 0, current_fm->size);
-
-#if HAVE_PORTALS == 1
-//defined(__CRAYXT_COMPUTE_LINUX_TARGET)
-    current_fm->s = InitIOFromFile("param", rank);
-    current_fm->s->rank = rank;
-    current_fm->ioformat = register_data(current_fm->s, current_fm->format);
-#elif HAVE_INFINIBAND == 1
-    current_fm->s = EVthin_ib_InitIOFile("param", 1, rank);
-    current_fm->ioformat =
-        EVthin_ib_registerData(current_fm->s, current_fm->format);
-    {
-        //we can read the code from here
-         char codebuffer[1024*1024];
-        char readbuffer[1024*1024];
-        
-        char *filename = getenv("FILTER");
-        
-        if(filename != NULL)
-        {
-            FILE *codefile  = fopen(filename, "r");
-            if(codefile != NULL) 
-            {
-                fread(readbuffer, sizeof(char), 1024*1024, codefile);
-                fclose(codefile);
-            }
-        
-            if(!strcmp(filename, "warp_stat.c"))
-            {    
-//                sprintf(codebuffer, readbuffer, 0);                        
-                set_code(current_fm->s, readbuffer);
-            }
-            else if(!strcmp(filename, "warp_bb.c"))
-            {
-//                sprintf(codebuffer, readbuffer);                        
-                set_code(current_fm->s, readbuffer);                
-            }
-            else if(!strcmp(filename, "warp_order.c"))
-            {
-                set_code(current_fm->s, readbuffer);                                            
-            }
-            else if(!strcmp(filename, "warp_tag.c"))
-            {
-                set_code(current_fm->s, readbuffer);                                            
-            }
-            else if(!strcmp(filename, "warp_bbs.c"))
-            {
-                set_code(current_fm->s, readbuffer);                                            
-            }
-
-        }
-    }
-    
-#endif
-
-    current_fm->snd_count = 0;
-
-    mdata->fm = current_fm;
-
-    return 0;
-    
-}
-
-static FMField *
-internal_find_field(char *name, FMFieldList flist)
-{
-    FMField *f = flist;
-    while (f->field_name != NULL && strcmp(f->field_name, name))
-    {
-        f++;
-    }
-
-    return f;
-}
- 
-extern enum ADIOS_FLAG adios_datatap_should_buffer (struct adios_file_struct * fd
-                                                   ,struct adios_method_struct * method)
-{
-}
-
-extern void
-adios_datatap_write(struct adios_file_struct *fd,
-                    struct adios_var_struct *f,
-                    const void *data, struct adios_method_struct *method)
-{
-    struct fm_structure *fm;
-    dmd *mdata = (dmd *) method->method_data;
-
-
-    struct adios_group_struct *group = method->group;
-
-    fm = mdata->fm;
-
-    if (group == NULL || fm == NULL)
-    {
-        fprintf(stderr, "group or fm is null - improperly initialized\n");
-        return;
-
-    }
-
-
-    FMFieldList flist = fm->format->field_list;
-    FMField *field = NULL;
-
-    char *fixedname = findFixedName(fm, f->name);
-
-    field = internal_find_field(fixedname, flist);
-    if (field != NULL)
-    {
-        if (!f->dimensions)
-        {
-            //scalar quantity
-            if (data)
-            {
-                //why wouldn't it have data?
-                memcpy(&fm->buffer[field->field_offset], data,
-                       field->field_size);
-
-                //scalar quantities can have altnames also so assign those
-                if(field->field_name != NULL)
-                {
-                    
-                    dimnames *d = NULL;
-                    for (d = fm->dimlist.lh_first; d != NULL;
-                         d = d->entries.le_next)
-                    {
-                        if (!strcmp(d->name, field->field_name))
-                        {
-                            //matches
-                            //check if there are altnames
-                            altname *a = NULL;
-                            for (a = d->altlist.lh_first; a != NULL;
-                                 a = a->entries.le_next)
-                            {
-                                //use the altname field to get the data into the buffer
-                                memcpy(&fm->buffer[a->field->field_offset], data,
-                                       a->field->field_size);
-                                //debug
-//                                  int *testingint = (int*)&fm->buffer[a->field->field_offset];
-                                
-//                                   fprintf(stderr, "writing %s to %s at %d %d\n",
-//                                           f->name, a->name, a->field->field_offset,
-//                                          (int)*testingint);
-
-                            }
-                        }
-                    }
-                }
-            }
-
-            else
-            {
-                fprintf(stderr, "no data for  scalar %s\n", f->name);
-
-            }
-
-
-        }
-        else
-        {
-            //vector quantity
-            if (data)
-            {
-                //we just need to copy the pointer stored in f->data
-                memcpy(&fm->buffer[field->field_offset], &data, sizeof(void *));
-
-            }
-            else
-            {
-                fprintf(stderr, "no data for vector %s\n", f->name);
-            }
-        }
-    }
-}
-
-static void internal_adios_datatap_write(struct adios_file_struct *fd,
-                                         struct adios_method_struct *method);
-
-extern void
-adios_datatap_close(struct adios_file_struct *fd,
-                    struct adios_method_struct *method)
-{
-
-    dmd *mdata = method->method_data;
-
-
-    if (!mdata->initialized)
-    {
-        return;
-    }
-
-
-    if (fd->mode & adios_mode_write)
-    {
-        internal_adios_datatap_write(fd, method);
-    }
-
-}
-
-
-void
-internal_adios_datatap_write(struct adios_file_struct *fd,
-                             struct adios_method_struct *method)
-{
-
-
-    if (fd == NULL)
-    {
-        fprintf(stderr, "fd is null\n");
-
-        return;
-    }
-
-    dmd *mdata = method->method_data;
-
-
-    struct adios_group_struct *t = method->group;
-
-
-
-//initialize the globallist
-
-//iterate through all the types
-//find the correct format by name
-    struct fm_structure *fm = mdata->fm;
-
-    if (t == NULL || fm == NULL)
-    {
-        fprintf(stderr, "improperly initialized for write\n");
-
-        return;
-
-    }
-
-//     fprintf(stderr, "\t---\n");
-//     fflush(stderr);
-
-
-//          FMContext src_context = create_local_FMcontext(NULL);
-//           FMFormat ioformat = register_data_format(src_context, fm->format);
-//          int size =0;
-//           FFSBuffer encode_buffer = create_FFSBuffer();       
-//          char *xfer = FFSencode(encode_buffer, ioformat, fm->buffer, &size);
-//           FFSFile file = open_FFSfile("/tmp/temp", "w");
-//           write_FFSfile(file, ioformat, fm->buffer);
-//           close_FFSfile(file);
-
-//#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
-#if HAVE_PORTALS == 1
-    if (fm->snd_count > 0)
-    {
-        send_end(fm->s);
-    }
-#elif HAVE_INFINIBAND == 1
-    if (fm->snd_count > 0)
-    {
-        EVthin_ib_endSend(fm->s);
-    }
-#endif
-
-
-//now that we have all the info lets call write on each of these data types
-//#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
-#if HAVE_PORTALS == 1
-    start_send(fm->s, fm->buffer, fm->size, fm->ioformat, NULL);
-
-#elif HAVE_INFINIBAND == 1
-//     fprintf(stderr, "size = %d\n", fm->size);
-    
-    EVthin_ib_startSend(fm->s, fm->buffer, fm->size, fm->ioformat, fm->alist);
-#endif
-
-    fm->snd_count++;
-
-
-}
-
-extern void
-adios_datatap_finalize(int mype, struct adios_method_struct *method)
-{
-
-    dmd *mdata = method->method_data;
-
-
-    struct adios_group_struct *t = method->group;
-
-
-
-//initialize the globallist
-
-//iterate through all the types
-//find the correct format by name
-    struct fm_structure *fm = mdata->fm;
-
-    if (t == NULL || fm == NULL)
-    {
-        fprintf(stderr, "improperly initialized for finalize %p %p\n", t, fm);
-
-        return;
-
-    }
-
-#if HAVE_PORTALS == 1
-    if (fm->snd_count > 0)
-    {
-        char buffer[128];
-        sprintf(buffer, "client-%d", rank);
-
-        outputTimingInfo(buffer);
-
-        send_end(fm->s);
-
-    }
-#elif HAVE_INFINIBAND == 1
-    if (fm->snd_count > 0)
-    {
-
-        char buffer[128];
-        sprintf(buffer, "client-%d", rank);
-
-        EVthin_ib_outputTimingInfo(buffer);
-
-        EVthin_ib_endSend(fm->s);
-    }
-#endif
-
-}
-
-
-extern void
-adios_datatap_end_iteration(struct adios_method_struct *method)
-{
-    struct fm_structure *fm;
-    dmd *mdata = (dmd *) method->method_data;
-    fm = mdata->fm;
-
-    if (fm == NULL)
-        return;
-
-
-#if HAVE_PORTALS == 1
-    startIter(fm->s);
-#elif HAVE_INFINIBAND == 1
-    EVthin_ib_startIter(fm->s);
-#endif
-
-    mdata->cycle_id = 0;
-
-}
-
-extern void
-adios_datatap_start_calculation(struct adios_method_struct *method)
-{
-    struct fm_structure *fm;
-    dmd *mdata = (dmd *) method->method_data;
-    fm = mdata->fm;
-
-    if (fm == NULL)
-        return;
-
-
-#if HAVE_PORTALS == 1
-    startCompute(fm->s, mdata->cycle_id);
-#elif HAVE_INFINIBAND == 1
-    EVthin_ib_startCompute(fm->s, mdata->cycle_id);
-#endif
-
-
-}
-
-extern void
-adios_datatap_stop_calculation(struct adios_method_struct *method)
-{
-    struct fm_structure *fm;
-    dmd *mdata = (dmd *) method->method_data;
-    fm = mdata->fm;
-
-    if (fm == NULL)
-        return;
-
-
-#if HAVE_PORTALS == 1
-    endCompute(fm->s, mdata->cycle_id);
-#elif HAVE_INFINIBAND == 1
-    EVthin_ib_endCompute(fm->s, mdata->cycle_id);
-#endif
-
-    mdata->cycle_id++;
-
-}
-
-extern void
-adios_datatap_get_write_buffer(struct adios_file_struct *fd,
-                   struct adios_var_struct *f,
-                   uint64_t *size,
-                   void **buffer,
-                   struct adios_method_struct *method)
-{
-    fprintf(stderr, "adios_datatap_write_get_buffer: datatap disabled, "
-            "no portals support\n");
-}
-
-
-void
-adios_datatap_read(struct adios_file_struct *fd,
-           struct adios_var_struct *f,
-           void *buffer, uint64_t buffer_size,
-           struct adios_method_struct *method)
-{
-
-}
-
-#else
-
-
-void
-adios_datatap_read(struct adios_file_struct *fd,
-                   struct adios_var_struct *f,
-                   void *buffer, struct adios_method_struct *method)
-{
-
-}
-
-extern void
-adios_datatap_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_datatap_stop_calculation(struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_start_calculation(struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_end_iteration(struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_finalize(int mype, struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_close(struct adios_file_struct *fd,
-                    struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_write(struct adios_file_struct *fd,
-                    struct adios_var_struct *f,
-                    void *data, struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_open(struct adios_file_struct *fd,
-                   struct adios_method_struct *method)
-{
-}
-
-extern void
-adios_datatap_init(const PairStruct *params, struct adios_method_struct *method)
-{
-}
-
-enum ADIOS_FLAG adios_datatap_should_buffer (struct adios_file_struct * fd
-                                            ,struct adios_method_struct * method)
-{
-}
-#endif
-
-/*    FILE *formatfile = fopen("/tmp/formatfile","a+");
-    if(formatfile == NULL) {
-        fprintf(stderr, "can not open format file\n");
-        exit(0);
-    }
-    fprintf(formatfile, "\n\n\n");
-    fclose(formatfile);
-
-*/
diff --git a/src/write/adios_dimes.c b/src/write/adios_dimes.c
index 53b67b8..69db5a1 100644
--- a/src/write/adios_dimes.c
+++ b/src/write/adios_dimes.c
@@ -163,7 +163,7 @@ static struct adios_dimes_stream_info* lookup_dimes_stream_info(const char* fnam
 static int check_read_status_var(const char* fname, int last_version)
 {
     int stay_in_poll_loop = 1;
-    double t1 = adios_gettime();
+    double t1 = adios_gettime_double();
 
     uint64_t lb[MAX_DS_NDIM], ub[MAX_DS_NDIM], gdims[MAX_DS_NDIM];
     int elemsize, ndim;
@@ -191,7 +191,7 @@ static int check_read_status_var(const char* fname, int last_version)
 
         // check if we need to stay in loop
         if (stay_in_poll_loop) {
-            double elapsed_time = adios_gettime() - t1;
+            double elapsed_time = adios_gettime_double() - t1;
             if (check_read_status_timeout_sec >= 0.0 &&
                 elapsed_time > check_read_status_timeout_sec) {
                 stay_in_poll_loop = 0;
@@ -401,22 +401,11 @@ int adios_dimes_open (struct adios_file_struct * fd,
     return ret;
 }
 
-enum ADIOS_FLAG adios_dimes_should_buffer (struct adios_file_struct * fd
-                                         ,struct adios_method_struct * method
-                                         )
+enum BUFFERING_STRATEGY adios_dimes_should_buffer (struct adios_file_struct * fd
+                                                  ,struct adios_method_struct * method
+                                                  )
 {
-    
-    //if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
-    //{
-        // write the process group header
-        //adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
-        //adios_write_open_vars_v1 (fd);
-    //} else {
-    //    log_warn("WARNING: %s expects that fd->shared_buffer is false\n", __func__);
-    //}
-    
-
-    return adios_flag_no;  // this will take care of it
+    return no_buffering;  
 }
 
 
@@ -451,6 +440,7 @@ void adios_dimes_write (struct adios_file_struct * fd
     int didx[MAX_DS_NDIM]; // for reordering the dimensions
     int ndims = 0;
     int hastime = 0;
+    uint64_t nelems = 1;
     gdims[0] = 0;
     struct adios_dimension_struct* var_dimensions = v->dimensions;
     // Calculate lower and upper bounds for each available dimension (up to 3 dims)
@@ -461,7 +451,11 @@ void adios_dimes_write (struct adios_file_struct * fd
         lb[ndims] = adios_get_dim_value (&(var_dimensions->local_offset));
         if (gdims[ndims] > 0 && dims[ndims] > 0)  {
             ub[ndims] = lb[ndims] + dims[ndims] - 1;
+            nelems *= dims[ndims];
             ndims++;
+        } else if (gdims[ndims] > 0 && dims[ndims] == 0) {
+            // piece of array with 0 elements, skip it
+            nelems *= dims[ndims];
         }   else {
             // time dimension (ldim=0 indicates this). Leave out from the dimensions.
             //ub[ndims] = lb[ndims]; 
@@ -485,6 +479,11 @@ void adios_dimes_write (struct adios_file_struct * fd
 
     //snprintf(dspaces_type_var_name, MAX_DS_NAMELEN, "TYPE@%s", ds_var_name);
     
+    /* The next line is just to fix adios_build_index_v1() call not to abort on 
+     * offset=0 variables (in case of files, written variables have offset > 0)
+     */
+    v->write_offset = 1; 
+
     /* non-global variables are put in space ONLY by rank = 0 process */
     if (gdims[0] == 0 && md->rank != 0) {
         //fprintf(stderr, "rank=%d var_name=%s is not global. Skip\n", md->rank, ds_var_name);
@@ -499,7 +498,6 @@ void adios_dimes_write (struct adios_file_struct * fd
     //}
     
      
-    v->write_offset = 1; // only !=0 offsets will be included in build index
     /* This is not needed here, this is already called in common_adios_write() 
     adios_generate_var_characteristics_v1 (fd, v); // characteristics will be included in build index
     adios_write_var_characteristics_v1 (fd, v);
@@ -513,6 +511,13 @@ void adios_dimes_write (struct adios_file_struct * fd
             ds_var_name, adios_type_to_string_int(v->type), v->type, var_type_size, version, ndims,
             dims_str, gdims_str, lb_str, ub_str);    
 
+
+    /* If variable is empty, do not push to space */
+    if (nelems == 0) {
+        log_debug ("rank=%d var_name=%s is empy variable piece. Skip\n", md->rank, ds_var_name);
+        return;
+    }
+
     /* non-timed scalars are written in the metadata at close(), not here */
     if (ndims == 0 && !hastime)
         return;
@@ -984,6 +989,12 @@ void dimes_pack_file_info (int time, int nvars, int nattrs, int group_index_len,
     b[namelen] = 0;
 }
 
+void adios_dimes_buffer_overflow (struct adios_file_struct * fd, 
+                                  struct adios_method_struct * method)
+{
+    // this call never happens without shared buffering
+}
+
 void adios_dimes_close (struct adios_file_struct * fd
                       ,struct adios_method_struct * method
                       )
diff --git a/src/write/adios_flexpath.c b/src/write/adios_flexpath.c
index cbe3740..4ef7963 100644
--- a/src/write/adios_flexpath.c
+++ b/src/write/adios_flexpath.c
@@ -8,6 +8,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#include <inttypes.h>
 #include <math.h>
 #include <string.h>
 #include <errno.h>
@@ -41,6 +42,7 @@
 // // evpath libraries
 #include <evpath.h>
 #include <cod.h>
+#define FLEXPATH_SIDE "WRITER"
 #include "core/flexpath.h"
 #include <sys/queue.h>
 
@@ -156,6 +158,9 @@ typedef struct _flexpath_write_file_data {
     // for maintaining open file list
     struct _flexpath_write_file_data* next;
     char* name;
+
+    // general
+    int verbose;
 } FlexpathWriteFileData;
 
 typedef struct _flexpath_write_data {
@@ -325,7 +330,7 @@ data_free(void* eventData, void* clientData)
 void 
 op_free(void* eventData, void* clientData) 
 {
-    fp_write_log("OP", "freeing an op message\n");
+//    fp_write_log("OP", "freeing an op message\n");
     op_msg* op = (op_msg*) eventData;
     if (op->file_name) {
         free(op->file_name);
@@ -857,7 +862,7 @@ set_format(struct adios_group_struct *t,
 		    snprintf(el, ELSIZE, "[%s]", a->name);
 		    v_offset = 0;
 		} else {
-		    snprintf(el, ELSIZE, "[%llu]", d->dimension.rank);
+		    snprintf(el, ELSIZE, "[%" PRIu64 "]", d->dimension.rank);
 		    v_offset *= d->dimension.rank;
 		}
 		strncat(dims, el, DIMSIZE);
@@ -1027,7 +1032,7 @@ set_format(struct adios_group_struct *t,
 	    }
 	}
 
-	fp_write_log("FORMAT","field: %s, %s, %d, %d\n", 
+	fp_verbose(fileData, "field: %s, %s, %d, %d\n", 
 		     field_list[fieldNo].field_name, 
 		     field_list[fieldNo].field_type,
 		     field_list[fieldNo].field_size,
@@ -1108,6 +1113,7 @@ process_data_flush(FlexpathWriteFileData *fileData,
 		   Flush_msg *flushMsg, 
 		   FlexpathQueueNode *dataNode)
 {
+    //fprintf(stderr, "writer:%d:processing flush for reader:%d:reader_step:%d:writer_step:%d\n", fileData->rank, flushMsg->process_id, fileData->readerStep, fileData->writerStep);
     void* temp = copy_buffer(dataNode->data, flushMsg->process_id, fileData);
    
     fileData->attrs = set_dst_rank_atom(fileData->attrs, flushMsg->process_id);
@@ -1119,6 +1125,7 @@ process_data_flush(FlexpathWriteFileData *fileData,
     }
     //EVsubmit_general(fileData->dataSource, temp, data_free, fileData->attrs);
     EVsubmit_general(fileData->dataSource, temp, NULL, fileData->attrs);
+    //fprintf(stderr, "writer:%d:processed flush for reader:%d:reader_step:%d:writer_step:%d\n", fileData->rank, flushMsg->process_id, fileData->readerStep, fileData->writerStep);
 }
 
 void
@@ -1169,7 +1176,7 @@ process_open_msg(FlexpathWriteFileData *fileData, op_msg *open)
 	log_error("Flexpath method control_thread: Received Past Step Open\n");
     } 
     else {
-	fp_write_log("STEP", "recieved op with future step\n");
+	fp_verbose(fileData, "received op with future step\n");
     }
 }
 
@@ -1233,9 +1240,11 @@ 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);
     threaded_enqueue(&fileData->controlQueue, msg, DATA_FLUSH, 
 		     &fileData->controlMutex, &fileData->controlCondition,
 		     -1);
+    //fprintf(stderr, "writer:%d:enqueued flush for reader:%d:reader_step:%d:writer_step:%d\n", fileData->rank, msg->process_id, fileData->readerStep, fileData->writerStep);
     return 0;
 }
 
@@ -1346,9 +1355,15 @@ adios_flexpath_init(const PairStruct *params, struct adios_method_struct *method
     atom_t CM_TRANSPORT = attr_atom_from_string("CM_TRANSPORT");
     char * transport = getenv("CMTransport");
     if (transport == NULL) {
-	if (CMlisten(flexpathWriteData.cm) == 0) {
-	    fprintf(stderr, "error: unable to initialize connection manager.\n");
-	    exit(1);
+	int listened = 0;
+	while (listened == 0) {
+	    if (CMlisten(flexpathWriteData.cm) == 0) {
+		int rank;
+		MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+		fprintf(stderr, "error: writer %d:pid:%d unable to initialize connection manager. Trying again.\n", rank, (int)getpid());
+	    } else {
+		listened = 1;
+	    }
 	}
     } else {
 	attr_list listen_list = create_attr_list();
@@ -1386,7 +1401,8 @@ adios_flexpath_open(struct adios_file_struct *fd,
     FlexpathWriteFileData *fileData = malloc(sizeof(FlexpathWriteFileData));
     mem_check(fileData, "fileData");
     memset(fileData, 0, sizeof(FlexpathWriteFileData));
-    
+    fp_verbose_init(fileData);
+
     fileData->maxQueueSize = 1;
     fileData->use_ctrl_thread = 1;
     if (method->parameters) {
@@ -1675,7 +1691,7 @@ adios_flexpath_close(struct adios_file_struct *fd, struct adios_method_struct *m
     
     // now gather offsets and send them via MPI to root
     struct adios_group_struct * g = fd->group;
-    struct adios_var_struct * list = g->vars;
+    struct adios_pg_struct * pg = fd->pgs_written;
     evgroup *gp = malloc(sizeof(evgroup));    
     gp->group_name = strdup(method->group->name);
     gp->process_id = fileData->rank;
@@ -1695,56 +1711,61 @@ adios_flexpath_close(struct adios_file_struct *fd, struct adios_method_struct *m
 	int myrank = fileData->rank;
 	int commsize = fileData->size;
 
-	while (list) {
-	    char *fullname = resolve_path_name(list->path, list->name);
-	    //int num_local_offsets = 0;
-	    uint64_t *local_offsets = NULL;
-	    uint64_t *local_dimensions = NULL;
-	    uint64_t *global_dimensions = NULL; // same at each rank.
-	    int num_local_offsets = get_var_offsets(list, g, 
-						    &local_offsets, 
-						    &local_dimensions, 
-						    &global_dimensions);
-	    // flip for fortran here.
-            if (fileData->host_language == FP_FORTRAN_MODE) {
-                reverse_dims(local_offsets, num_local_offsets);
-                reverse_dims(local_dimensions, num_local_offsets);
-                reverse_dims(global_dimensions, num_local_offsets);
-            }
+        while (pg) {
+            struct adios_var_struct * list = pg->vars_written;
+            while (list) {
+                char *fullname = resolve_path_name(list->path, list->name);
+                //int num_local_offsets = 0;
+                uint64_t *local_offsets = NULL;
+                uint64_t *local_dimensions = NULL;
+                uint64_t *global_dimensions = NULL; // same at each rank.
+                int num_local_offsets = get_var_offsets(list, g, 
+                        &local_offsets, 
+                        &local_dimensions, 
+                        &global_dimensions);
+                // flip for fortran here.
+                if (fileData->host_language == FP_FORTRAN_MODE) {
+                    reverse_dims(local_offsets, num_local_offsets);
+                    reverse_dims(local_dimensions, num_local_offsets);
+                    reverse_dims(global_dimensions, num_local_offsets);
+                }
 
-	    if (num_local_offsets > 0) {
-		uint64_t *all_offsets = NULL;
-		uint64_t *all_local_dims = NULL;
-		
-		int buf_size = num_local_offsets * commsize * sizeof(uint64_t);		    
-		all_offsets = malloc(buf_size);		
-		all_local_dims = malloc(buf_size);
-
-		int arr_size = num_local_offsets * sizeof(uint64_t);
-		MPI_Allgather(local_offsets, arr_size, MPI_BYTE, 
-			      all_offsets, arr_size, MPI_BYTE,
-			      fileData->mpiComm);
-
-		MPI_Allgather(local_dimensions, arr_size, MPI_BYTE, 
-			      all_local_dims, arr_size, MPI_BYTE,
-			      fileData->mpiComm);
-		
-		num_gbl_vars++;
-		offset_struct *ostruct = malloc(sizeof(offset_struct));
-		ostruct->offsets_per_rank = num_local_offsets;
-		ostruct->total_offsets = num_local_offsets * commsize;
-		ostruct->local_offsets = all_offsets;
-		ostruct->local_dimensions = all_local_dims;
-		ostruct->global_dimensions = global_dimensions;
-
-		gbl_vars = realloc(gbl_vars, sizeof(global_var) * num_gbl_vars);
-		gbl_vars[num_gbl_vars - 1].name = fullname;
-		gbl_vars[num_gbl_vars - 1].noffset_structs = 1;
-		gbl_vars[num_gbl_vars - 1].offsets = ostruct;
+                if (num_local_offsets > 0) {
+                    uint64_t *all_offsets = NULL;
+                    uint64_t *all_local_dims = NULL;
 
-	    }
-	    list=list->next;
-	}
+                    int buf_size = num_local_offsets * commsize * sizeof(uint64_t);		    
+                    all_offsets = malloc(buf_size);		
+                    all_local_dims = malloc(buf_size);
+
+                    int arr_size = num_local_offsets * sizeof(uint64_t);
+                    MPI_Allgather(local_offsets, arr_size, MPI_BYTE, 
+                            all_offsets, arr_size, MPI_BYTE,
+                            fileData->mpiComm);
+
+                    MPI_Allgather(local_dimensions, arr_size, MPI_BYTE, 
+                            all_local_dims, arr_size, MPI_BYTE,
+                            fileData->mpiComm);
+
+                    num_gbl_vars++;
+                    offset_struct *ostruct = malloc(sizeof(offset_struct));
+                    ostruct->offsets_per_rank = num_local_offsets;
+                    ostruct->total_offsets = num_local_offsets * commsize;
+                    ostruct->local_offsets = all_offsets;
+                    ostruct->local_dimensions = all_local_dims;
+                    ostruct->global_dimensions = global_dimensions;
+
+                    gbl_vars = realloc(gbl_vars, sizeof(global_var) * num_gbl_vars);
+                    gbl_vars[num_gbl_vars - 1].name = fullname;
+                    gbl_vars[num_gbl_vars - 1].noffset_structs = 1;
+                    gbl_vars[num_gbl_vars - 1].offsets = ostruct;
+
+                }
+                list=list->next;
+            }
+
+            pg = pg->next;
+        }
 
 	gp->num_vars = num_gbl_vars;
 	gp->step = fileData->writerStep;
@@ -1789,10 +1810,17 @@ adios_flexpath_finalize(int mype, struct adios_method_struct *method)
 }
 
 // provides unknown functionality
-extern enum ADIOS_FLAG 
+extern enum BUFFERING_STRATEGY 
 adios_flexpath_should_buffer (struct adios_file_struct * fd,struct adios_method_struct * method) 
 {
-    return adios_flag_no;
+    return no_buffering;  
+}
+
+extern void 
+adios_flexpath_buffer_overflow (struct adios_file_struct * fd, 
+                                struct adios_method_struct * method)
+{
+    // this call never happens without shared buffering
 }
 
 // provides unknown functionality
@@ -1839,7 +1867,7 @@ adios_flexpath_get_write_buffer(struct adios_file_struct *fd,
         *buffer = malloc (*size);
         if (!*buffer) {        
             adios_method_buffer_free (mem_allowed);
-            log_error ("ERROR: Out of memory allocating %llu bytes for %s in %s:%s()\n"
+            log_error ("ERROR: Out of memory allocating %" PRIu64 " bytes for %s in %s:%s()\n"
                     ,*size, v->name, __FILE__, __func__
                     );
             v->got_buffer = adios_flag_no;
@@ -1858,7 +1886,7 @@ adios_flexpath_get_write_buffer(struct adios_file_struct *fd,
     }
     else {    
         adios_method_buffer_free (mem_allowed);
-        log_error ("OVERFLOW: Cannot allocate requested buffer of %llu "
+        log_error ("OVERFLOW: Cannot allocate requested buffer of %" PRIu64 
                          "bytes for %s in %s:%s()\n"
                 ,*size
                 ,v->name
diff --git a/src/write/adios_icee.c b/src/write/adios_icee.c
index 31aafc0..b3d7e1e 100644
--- a/src/write/adios_icee.c
+++ b/src/write/adios_icee.c
@@ -39,6 +39,8 @@
 #include "core/buffer.h"
 #include "core/util.h"
 #include "core/adios_logger.h"
+#include "core/adios_clock.h"
+
 
 #ifdef HAVE_ICEE
 
@@ -69,7 +71,7 @@ static int icee_num_parallel = 0;
 
 CManager icee_write_cm;
 EVsource icee_write_source;
-CMConnection icee_write_cm_conn; // connection for passive mode
+CMConnection icee_write_cm_conn[ICEE_MAX_PARALLEL]; // connection for passive mode
 
 CManager (*cm)[ICEE_MAX_PARALLEL];
 EVsource (*source)[ICEE_MAX_PARALLEL];
@@ -253,17 +255,7 @@ worker_thread(void *arg)
                 (void) pthread_cond_wait(&pool->pool_workcv,
                                          &pool->pool_mutex);
             } else {
-#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
-                clock_serv_t cclock;
-                mach_timespec_t mts;
-                host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
-                clock_get_time(cclock, &mts);
-                mach_port_deallocate(mach_task_self(), cclock);
-                ts.tv_sec = mts.tv_sec;
-                ts.tv_nsec = mts.tv_nsec;
-#else
-                (void) clock_gettime(CLOCK_REALTIME, &ts);
-#endif
+                adios_clock_gettime (CLOCK_REALTIME, &ts);
                 ts.tv_sec += pool->pool_linger;
                 if (pool->pool_linger == 0 ||
                     pthread_cond_timedwait(&pool->pool_workcv,
@@ -583,7 +575,7 @@ on_icee_passivecheckin_request (CManager cm, CMConnection conn, icee_passivechec
 {
     log_debug("%s\n", __FUNCTION__);
 
-    icee_write_cm_conn = conn; // save connection
+    icee_write_cm_conn[n_client] = conn; // save connection
     n_client++;
 
     return;
@@ -1062,8 +1054,10 @@ adios_icee_close(struct adios_file_struct *fd, struct adios_method_struct *metho
         else
         {
             CMFormat fm = CMlookup_format(icee_write_cm, icee_fileinfo_format_list);
-            if (CMwrite(icee_write_cm_conn, fm, (void*)fp) != 1)
-                log_error ("Sending fileinfo failed\n");
+            int i;
+            for (i=0; i<n_client; i++)
+                if (CMwrite(icee_write_cm_conn[i], fm, (void*)fp) != 1)
+                    log_error ("Sending fileinfo failed\n");
         }
 
         // Free
@@ -1112,10 +1106,16 @@ adios_icee_finalize(int mype, struct adios_method_struct *method)
 }
 
 // provides unknown functionality
-extern enum ADIOS_FLAG 
+extern enum BUFFERING_STRATEGY 
 adios_icee_should_buffer (struct adios_file_struct * fd,struct adios_method_struct * method) 
 {
-    return adios_flag_no;
+    return no_buffering;
+}
+
+extern void 
+adios_icee_buffer_overflow (struct adios_file_struct * fd,
+                            struct adios_method_struct * method)
+{
 }
 
 // provides unknown functionality
diff --git a/src/write/adios_mpi.c b/src/write/adios_mpi.c
index 8221854..2867958 100644
--- a/src/write/adios_mpi.c
+++ b/src/write/adios_mpi.c
@@ -16,6 +16,7 @@
 #else
 #    include <sys/vfs.h>
 #endif
+#define __USE_LINUX_IOCTL_DEFS
 #include <sys/ioctl.h>
 #include <assert.h>
 
@@ -50,12 +51,7 @@ struct adios_MPI_data_struct
     int size;
 
     struct adios_bp_buffer_struct_v1 b;
-
     struct adios_index_struct_v1 * index;
-
-    uint64_t vars_start;
-    uint64_t vars_header_size;
-    uint16_t storage_targets;  // number of storage targets being used
 };
 
 #if COLLECT_METRICS
@@ -291,9 +287,6 @@ void adios_mpi_init (const PairStruct * parameters
     md->size = 0;
     md->group_comm = method->init_comm; // unused here, adios_open will set the current comm
     md->index = adios_alloc_index_v1(1); // with hashtables
-    md->vars_start = 0;
-    md->vars_header_size = 0;
-    md->storage_targets = 0;
 
     adios_buffer_struct_init (&md->b);
 #if COLLECT_METRICS
@@ -302,46 +295,11 @@ void adios_mpi_init (const PairStruct * parameters
 #endif
 }
 
-int adios_mpi_open (struct adios_file_struct * fd
-                   ,struct adios_method_struct * method, MPI_Comm comm
-                   )
-{
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                    method->method_data;
-
-#if COLLECT_METRICS
-    gettimeofday (&timing.t0, NULL); // only used on rank == size - 1, but we don't
-                              // have the comm yet to get the rank/size
-#endif
-    adios_buffer_struct_clear (&md->b);
-
-    md->group_comm = comm;
-    if (md->group_comm != MPI_COMM_NULL)
-    {
-        MPI_Comm_rank (md->group_comm, &md->rank);
-        MPI_Comm_size (md->group_comm, &md->size);
-    }
-    fd->group->process_id = md->rank;
-
-#if COLLECT_METRICS
-    timing.write_count = 0;
-    timing.write_size = 0;
-    if (timing.t24) free (timing.t24);
-    timing.t24 = 0;
-#endif
-
-    // we have to wait for the group_size (should_buffer) 
-    // to calculate stripe sizes from output sizes of the processes
-    // before we can do an open for any of the modes
-
-    return 1;
-}
-
 static
-void build_offsets (struct adios_bp_buffer_struct_v1 * b
-                   ,MPI_Offset * offsets, int size, char * group_name
-                   ,struct adios_index_struct_v1 * index
-                   )
+void build_read_offsets (struct adios_bp_buffer_struct_v1 * b
+                        ,MPI_Offset * offsets, int size, char * group_name
+                        ,struct adios_index_struct_v1 * index
+                        )
 {
     struct adios_index_process_group_struct_v1 * pg_root = index->pg_root;
     while (pg_root)
@@ -368,183 +326,27 @@ void build_offsets (struct adios_bp_buffer_struct_v1 * b
     }
 }
 
-static void
-adios_mpi_build_file_offset(struct adios_MPI_data_struct *md,
-                            struct adios_file_struct *fd, char *name)
+int adios_mpi_open (struct adios_file_struct * fd
+                   ,struct adios_method_struct * method, MPI_Comm comm
+                   )
 {
-    if (md->group_comm != MPI_COMM_NULL)
-    {
-        if (md->rank == 0)
-        {
-            // make one space for offset and one for size
-            MPI_Offset * offsets = malloc(sizeof (MPI_Offset)
-                                           * md->size);
-            int i;
-
-            offsets [0] = fd->write_size_bytes;
-// mpixlc_r on Eugene doesn't support 64 bit mode. Therefore the following may have problem
-// on Eugene for large data size since MPI_LONG_LONG is 32bit 
-            MPI_Gather (&(fd->write_size_bytes), 1, MPI_LONG_LONG
-                       ,offsets, 1, MPI_LONG_LONG
-                       ,0, md->group_comm);
-
-// top section: make things a consistent stripe size
-// bottom section: just pack the file
-#if 0
-            // find the largest and use that as a basis for stripe
-            // size for each process writing
-            uint64_t biggest_size = 0;
-            for (i = 0; i < md->size; i++)
-            {
-                if (offsets [i] > biggest_size)
-                    biggest_size = offsets [i];
-            }
-            // now round up to the next stripe size increment (Lustre: 64 KB)
-#define STRIPE_INCREMENT (64 * 1024)
-            // (according to the Lustre reps, use 1 MB instead of 64 KB?)
-//#define STRIPE_INCREMENT (1024 * 1024)
-            if (biggest_size % (STRIPE_INCREMENT))
-            {
-                biggest_size = (  ((biggest_size / STRIPE_INCREMENT) + 1)
-                                * STRIPE_INCREMENT
-                               );
-            }
-            // also round up the base_offset, just in case
-            if (fd->base_offset % (STRIPE_INCREMENT))
-            {
-                fd->base_offset = (  ((fd->base_offset / STRIPE_INCREMENT) + 1)
-                                   * STRIPE_INCREMENT
-                                  );
-            }
-#undef STRIPE_INCREMENT
-            offsets [0 + 0] = fd->base_offset;
-            offsets [0 + 1] = biggest_size;
-
-            for (i = 1; i < md->size; i++)
-            {
-                offsets [i * 2 + 0] = offsets [(i - 1) * 2 + 0] + biggest_size;
-                offsets [i * 2 + 1] = biggest_size;
-            }
-            md->b.pg_index_offset =   offsets [(md->size - 1) * 2 + 0]
-                                    + biggest_size;
-#else
+    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
+                                                    method->method_data;
 
-            uint64_t last_offset = offsets [0];
-            offsets [0] = fd->base_offset;
-            for (i = 1; i < md->size; i++)
-            {
-                uint64_t this_offset = offsets [i];
-                offsets [i] = offsets [i - 1] + last_offset;
-                last_offset = this_offset;
-            }
-            md->b.pg_index_offset =   offsets [md->size - 1]
-                                    + last_offset;
+#if COLLECT_METRICS
+    gettimeofday (&timing.t0, NULL); // only used on rank == size - 1, but we don't
+                              // have the comm yet to get the rank/size
 #endif
-            MPI_Scatter (offsets, 1, MPI_LONG_LONG
-                        ,MPI_IN_PLACE, 1, MPI_LONG_LONG
-                        ,0, md->group_comm
-                        );
-            fd->base_offset = offsets [0];
-            fd->pg_start_in_file = fd->base_offset;
-            free (offsets);
-        }
-        else
-        {
-            MPI_Offset offset[1];
-            offset[0] = fd->write_size_bytes;
-
-            MPI_Gather (offset, 1, MPI_LONG_LONG
-                       ,0, 1, MPI_LONG_LONG
-                       ,0, md->group_comm
-                       );
-
-            MPI_Scatter (0, 1, MPI_LONG_LONG
-                        ,offset, 1, MPI_LONG_LONG
-                        ,0, md->group_comm
-                        );
-            fd->base_offset = offset [0];
-            fd->pg_start_in_file = fd->base_offset;
-        }
-    }
-    else
-    {
-        md->b.pg_index_offset = fd->write_size_bytes;
-    }
-}
-
-#if 0
-// LUSTRE Structure
-// from /usr/include/lustre/lustre_user.h
-#define LUSTRE_SUPER_MAGIC 0x0BD00BD0
-#  define LOV_USER_MAGIC 0x0BD10BD0
-#  define LL_IOC_LOV_SETSTRIPE  _IOW ('f', 154, long)
-#  define LL_IOC_LOV_GETSTRIPE  _IOW ('f', 155, long)
-struct lov_user_ost_data {           // per-stripe data structure
-        uint64_t l_object_id;        // OST object ID
-        uint64_t l_object_gr;        // OST object group (creating MDS number)
-        uint32_t l_ost_gen;          // generation of this OST index
-        uint32_t l_ost_idx;          // OST index in LOV
-} __attribute__((packed));
-struct lov_user_md {                 // LOV EA user data (host-endian)
-        uint32_t lmm_magic;          // magic number = LOV_USER_MAGIC_V1
-        uint32_t lmm_pattern;        // LOV_PATTERN_RAID0, LOV_PATTERN_RAID1
-        uint64_t lmm_object_id;      // LOV object ID
-        uint64_t lmm_object_gr;      // LOV object group
-        uint32_t lmm_stripe_size;    // size of stripe in bytes
-        uint16_t lmm_stripe_count;   // num stripes in use for this object
-        uint16_t lmm_stripe_offset;  // starting stripe offset in lmm_objects
-        struct lov_user_ost_data  lmm_objects[0]; // per-stripe data
-} __attribute__((packed));
-
-// do the magic ioctl calls to set Lustre's stripe size
-static void set_stripe_size (struct adios_file_struct * fd
-                            ,struct adios_MPI_data_struct * md
-                            ,const char * filename
-                            )
-{
-    struct statfs fsbuf;
-    int err;
+    adios_buffer_struct_clear (&md->b);
 
-    // Note: Since each file might have different write_buffer,
-    // So we will reset write_buffer even buffer_size != 0
-    err = statfs (filename, &fsbuf);
-    if (!err && fsbuf.f_type == LUSTRE_SUPER_MAGIC)
+    md->group_comm = comm;
+    if (md->group_comm != MPI_COMM_NULL)
     {
-        int f;
-        int old_mask;
-        int perm;
-
-        old_mask = umask (022);
-        umask (old_mask);
-        perm = old_mask ^ 0666;
-
-        f = open (filename, O_RDONLY | O_CREAT, perm);
-        if (f != -1)
-        {
-            struct lov_user_md lum;
-            lum.lmm_magic = LOV_USER_MAGIC;
-            lum.lmm_stripe_size = md->biggest_size;
-            err = ioctl (f, LL_IOC_LOV_SETSTRIPE, (void *) &lum);
-            // if err != 0, the must not be Lustre
-            lum.lmm_stripe_count = 0;
-            err = ioctl (f, LL_IOC_LOV_GETSTRIPE, (void *) &lum);
-            // if err != 0, the must not be Lustre
-            if (err == 0)
-            {
-                md->storage_targets = lum.lmm_stripe_count;
-            }
-            close (f);
-        }
+        MPI_Comm_rank (md->group_comm, &md->rank);
+        MPI_Comm_size (md->group_comm, &md->size);
     }
-}
-#endif
+    fd->group->process_id = md->rank;
 
-enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
-                                        ,struct adios_method_struct * method
-                                        )
-{
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
     char * name;
     int err;
     int flag;    // used for coordinating the MPI_File_open
@@ -567,8 +369,6 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
     previous = md->rank - 1;
     current = md->rank;
 
-    fd->base_offset = 0;
-
     switch (fd->mode)
     {
         case adios_mode_read:
@@ -639,8 +439,7 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
                               );
                 adios_parse_attributes_index_v1 (&md->b, &md->index->attrs_root);
 #endif
-
-                fd->base_offset = md->b.end_of_pgs;
+                // md->b.end_of_pgs points to the end of the last PG in file
             }
 
             if (   md->group_comm != MPI_COMM_NULL
@@ -655,9 +454,9 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
                     memset (offsets, 0, sizeof (MPI_Offset) * md->size * 3);
 
                     // go through the pg index to build the offsets array
-                    build_offsets (&md->b, offsets, md->size
-                                  ,fd->group->name, md->index
-                                  );
+                    build_read_offsets (&md->b, offsets, md->size
+                                        ,fd->group->name, md->index
+                                        );
                     MPI_Scatter (offsets, 3, MPI_LONG_LONG
                                 ,MPI_IN_PLACE, 3, MPI_LONG_LONG
                                 ,0, md->group_comm
@@ -732,16 +531,10 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
 
         case adios_mode_write:
         {
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
 #if COLLECT_METRICS                     
             gettimeofday (&timing.t16, NULL);
 #endif
 
-            // figure out the offsets and create the file with proper striping
-            // before the MPI_File_open is called
-            adios_mpi_build_file_offset (md, fd, name);
-            //set_stripe_size (fd, md, name);
 #if COLLECT_METRICS
             gettimeofday (&timing.t5, NULL);
 #endif
@@ -792,7 +585,7 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
                         md->rank, name, e);
                 free (name);
 
-                return adios_flag_no;
+                return 0;
             }
 #if COLLECT_METRICS
             gettimeofday (&timing.t6, NULL);
@@ -831,7 +624,7 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
                                 md->rank, name, e);
                         free (name);
 
-                        return adios_flag_no;
+                        return 0;
                     }
                 }
                 MPI_Bcast (&old_file, 1, MPI_INT, 0, md->group_comm);
@@ -918,33 +711,25 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
                                   );
                     adios_parse_attributes_index_v1 (&md->b, &md->index->attrs_root);
 
-                    fd->base_offset = md->b.end_of_pgs;
-                    fd->pg_start_in_file = fd->base_offset;
+                    // remember the end of the last PG in file. The new PG written now
+                    // will have an offset updated from here. 
+                    // md->b.end_of_pgs points to this position
+
+                    MPI_File_close (&md->fh);
                 }
                 else
                 {
-                    fd->base_offset = 0;
-                    fd->pg_start_in_file = 0;
                     MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0
                               ,md->group_comm
                               );
                 }
-
-                MPI_File_close (&md->fh);
             }
             else
             {
-                fd->base_offset = 0;
-                fd->pg_start_in_file = 0;
-
                 if (md->rank == 0)
                     MPI_File_close (&md->fh);
             }
 
-            // figure out the offsets and create the file with proper striping
-            // before the MPI_File_open is called
-            adios_mpi_build_file_offset (md, fd, name);
-            //set_stripe_size (fd, md, name);
 
             // cascade the opens to avoid trashing the metadata server
             if (previous == -1)
@@ -994,7 +779,7 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
                         md->rank, name, e);
                 free (name);
 
-                return adios_flag_no;
+                return 0;
             }
 
             break;
@@ -1008,88 +793,100 @@ enum ADIOS_FLAG adios_mpi_should_buffer (struct adios_file_struct * fd
 
             free (name);
 
-            return adios_flag_no;
+            return 0;
         }
     }
 
     free (name);
 
-    if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
-    {
-        int err;
-        // write the process group header
-        adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
+#if COLLECT_METRICS
+    gettimeofday (&timing.t22, NULL);
+#endif
 
-        MPI_File_seek (md->fh, fd->base_offset, MPI_SEEK_SET);
-#if 0
-        err = MPI_File_write (md->fh, fd->buffer, fd->bytes_written, MPI_BYTE
-                             ,&md->status
-                             );
+#if COLLECT_METRICS
+    timing.write_count = 0;
+    timing.write_size = 0;
+    if (timing.t24) free (timing.t24);
+    timing.t24 = 0;
 #endif
+
+    return 1;
+}
+
+
+static void build_file_offsets (struct adios_MPI_data_struct *md,
+                                struct adios_file_struct *fd)
+{
+    if (md->group_comm != MPI_COMM_NULL)
+    {
+        if (md->rank == 0)
         {
-            uint64_t total_written = 0;
-            uint64_t to_write = fd->bytes_written;
-            int write_len = 0;
-            int count;
-            char * buf_ptr = fd->buffer;
-            while (total_written < fd->bytes_written)
+            // make one space for offset and one for size
+            MPI_Offset * offsets = malloc(sizeof (MPI_Offset)
+                                           * md->size);
+            int i;
+
+            offsets [0] = fd->bytes_written; // = the size of data in buffer on this processor
+// mpixlc_r on Eugene doesn't support 64 bit mode. Therefore the following may have problem
+// on Eugene for large data size since MPI_LONG_LONG is 32bit 
+            MPI_Gather (&(fd->bytes_written), 1, MPI_LONG_LONG
+                       ,offsets, 1, MPI_LONG_LONG
+                       ,0, md->group_comm);
+
+
+            uint64_t last_pgsize = offsets [0];
+            offsets [0] = md->b.end_of_pgs; // 0 or where to append to existing data
+            //printf ("offsets[%d] = {%llu", md->size, offsets[0]);
+            for (i = 1; i < md->size; i++)
             {
-                write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                MPI_Get_count(&md->status, MPI_BYTE, &count);
-                if (count != write_len)
-                {
-                    err = count;
-                    break;
-                }
-                total_written += count;
-                buf_ptr += count;
-                to_write -= count;
-                //err = total_written;
+                uint64_t this_offset = offsets [i];
+                offsets [i] = offsets [i - 1] + last_pgsize;
+                last_pgsize = this_offset;
+                //printf ("  %llu", offsets[i]);
             }
+            //printf (" }\n");
+            md->b.pg_index_offset =   offsets [md->size - 1]
+                                    + last_pgsize;
+            //printf (" last_pgsize = %llu, pg_index_offset = %llu\n", last_pgsize, md->b.pg_index_offset);
+
+            MPI_Scatter (offsets, 1, MPI_LONG_LONG
+                        ,MPI_IN_PLACE, 1, MPI_LONG_LONG
+                        ,0, md->group_comm
+                        );
+            fd->current_pg->pg_start_in_file = offsets[0];
+            free (offsets);
         }
-        if (err != MPI_SUCCESS)
+        else
         {
-            char e [MPI_MAX_ERROR_STRING];
-            int len = 0;
-            memset (e, 0, MPI_MAX_ERROR_STRING);
-            MPI_Error_string (err, e, &len);
-            adios_error (err_write_error, 
-                         "MPI method, rank %d: adios_group_size() failed to "
-                         "write header to %s: '%s'\n",
-                         md->rank, fd->name, e);
-            free (name);
+            MPI_Offset offset[1];
+            offset[0] = fd->bytes_written;
 
-            return adios_flag_no;
-        }
+            MPI_Gather (offset, 1, MPI_LONG_LONG
+                       ,0, 1, MPI_LONG_LONG
+                       ,0, md->group_comm
+                       );
 
-        int count;
-        MPI_Get_count (&md->status, MPI_BYTE, &count);
-        if (count != fd->bytes_written)
-        {
-            log_warn ("a:MPI method tried to write %llu, only wrote %d\n",
-                      fd->bytes_written, count);
+            MPI_Scatter (0, 1, MPI_LONG_LONG
+                        ,offset, 1, MPI_LONG_LONG
+                        ,0, md->group_comm
+                        );
+            fd->current_pg->pg_start_in_file = offset[0];
         }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-
-        // setup for writing vars
-        adios_write_open_vars_v1 (fd);
-        md->vars_start = fd->base_offset;
-        md->vars_header_size = fd->offset;
-        fd->base_offset += fd->offset;
-        MPI_File_seek (md->fh, md->vars_header_size, MPI_SEEK_CUR);
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
+        //printf ("rank %d: pg_start_in_file = %llu\n", md->rank, fd->current_pg->pg_start_in_file);
     }
+    else
+    {
+        md->b.pg_index_offset = fd->bytes_written;
+        fd->current_pg->pg_start_in_file = md->b.end_of_pgs; // 0 or where to append to existing data
+    }
+}
 
-#if COLLECT_METRICS
-    gettimeofday (&timing.t22, NULL);
-#endif
-    return fd->shared_buffer;
+
+enum BUFFERING_STRATEGY adios_mpi_should_buffer (struct adios_file_struct * fd
+                                                ,struct adios_method_struct * method
+                                                )
+{
+    return stop_on_overflow;
 }
 
 void adios_mpi_write (struct adios_file_struct * fd
@@ -1098,9 +895,6 @@ void adios_mpi_write (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
 {
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
-
     if (v->got_buffer == adios_flag_yes)
     {
         if (data != v->data)  // if the user didn't give back the same thing
@@ -1118,125 +912,7 @@ void adios_mpi_write (struct adios_file_struct * fd
         }
     }
 
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        int err;
-        // var payload sent for sizing information
-        adios_write_var_header_v1 (fd, v);
-
-#if 0
-        err = MPI_File_write (md->fh, fd->buffer, fd->bytes_written
-                             ,MPI_BYTE, &md->status
-                             );
-#endif
-        {
-            uint64_t total_written = 0;
-            uint64_t to_write = fd->bytes_written;
-            int write_len = 0;
-            int count;
-            char * buf_ptr = fd->buffer;
-            while (total_written < fd->bytes_written)
-            {
-                write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                MPI_Get_count(&md->status, MPI_BYTE, &count);
-                if (count != write_len)
-                {
-                    err = count;
-                    break;
-                }
-                total_written += count;
-                buf_ptr += count;
-                to_write -= count;
-                //err = total_written;
-            }
-        }
-        if (err != MPI_SUCCESS) 
-        {              
-            char e [MPI_MAX_ERROR_STRING];
-            int len = 0;
-            memset (e, 0, MPI_MAX_ERROR_STRING);
-            MPI_Error_string (err, e, &len);
-            adios_error (err_write_error, 
-                         "MPI method, rank %d: adios_write() of header of variable %s to "
-                         "file %s failed: '%s'\n ",
-                         md->rank, v->name, fd->name, e);       
-        }
-
-        int count;
-        MPI_Get_count (&md->status, MPI_BYTE, &count);
-        if (count != fd->bytes_written)
-        {
-            log_warn ("MPI method, rank %d: tried to write %llu bytes, "
-                      "only wrote %d of header of variable %s\n",
-                      md->rank, fd->bytes_written, count, v->name);
-        }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-
-        // write payload
-        // adios_write_var_payload_v1 (fd, v);
-        uint64_t var_size = adios_get_var_size (v, v->data);
-
-        if (fd->base_offset + var_size > fd->pg_start_in_file + fd->write_size_bytes)
-            adios_error (err_out_of_bound, 
-                         "MPI method, rank %d: adios_write() of variable %s exceeds pg bound.\n"
-                         "File is corrupted. Need to enlarge group size in adios_group_size().\n"
-                         "Group size=%llu, offset at end of this variable data=%llu\n",
-                         md->rank, v->name, 
-                         fd->write_size_bytes,
-                         fd->base_offset - fd->pg_start_in_file + var_size);
-#if 0
-        err = MPI_File_write (md->fh, v->data, var_size, MPI_BYTE, &md->status);
-#endif
-        {
-            uint64_t total_written = 0;
-            uint64_t to_write = var_size;
-            int write_len = 0;
-            int count;
-            const char * buf_ptr = v->data;
-            while (total_written < var_size)
-            {
-                write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                err = MPI_File_write (md->fh, (char*)buf_ptr, write_len, MPI_BYTE, &md->status);
-                MPI_Get_count(&md->status, MPI_BYTE, &count);
-                if (count != write_len)
-                {
-                    err = count;
-                    break;
-                }
-                total_written += count;
-                buf_ptr += count;
-                to_write -= count;
-                //err = total_written;
-            }
-        }
-        if (err != MPI_SUCCESS) 
-        {              
-            char e [MPI_MAX_ERROR_STRING];
-            int len = 0;
-            memset (e, 0, MPI_MAX_ERROR_STRING);
-            MPI_Error_string (err, e, &len);
-            adios_error (err_write_error, 
-                         "MPI method, rank %d: adios_write() of variable %s to "
-                         "file %s failed: '%s'\n ",
-                         md->rank, v->name, fd->name, e);       
-        }
 
-        MPI_Get_count (&md->status, MPI_BYTE, &count);
-        if (count != var_size)
-        {
-            log_warn ("MPI method, rank %d: tried to write %llu bytes, "
-                      "only wrote %d of variable %s\n",
-                      md->rank, var_size, count, v->name);
-        }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-    }
 #if COLLECT_METRICS
     if (timing.write_count == timing.write_size)
     {
@@ -1425,13 +1101,26 @@ static void adios_mpi_do_read (struct adios_file_struct * fd
     adios_buffer_struct_clear (&md->b);
 }
 
+void adios_mpi_buffer_overflow (struct adios_file_struct * fd, 
+                                struct adios_method_struct * method)
+{
+    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
+                                                 method->method_data;
+    adios_error (err_buffer_overflow, 
+            "rank %d: MPI method only works with complete buffering of data between adios_open() "
+            "and adios_close(). Portions of global arrays, that do not fit into the "
+            "buffer on some processors will not be written by this method to %s\n", 
+            md->rank, fd->name);
+}
+
+
 void adios_mpi_close (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
 {
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
-    struct adios_attribute_struct * a = fd->group->attributes;
+    //struct adios_attribute_struct * a = fd->group->attributes;
 
     struct adios_index_process_group_struct_v1 * new_pg_root = 0;
     struct adios_index_var_struct_v1 * new_vars_root = 0;
@@ -1464,211 +1153,19 @@ void adios_mpi_close (struct adios_file_struct * fd
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = md->b.pg_index_offset;
             int err;
 
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                MPI_Offset new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                MPI_File_get_position (md->fh, &new_off);
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                MPI_File_seek (md->fh, md->vars_start, MPI_SEEK_SET);
-#if 0
-                err = MPI_File_write (md->fh, fd->buffer, md->vars_header_size
-                                     ,MPI_BYTE, &md->status
-                                     );
-#endif
-                {
-                    uint64_t total_written = 0;
-                    uint64_t to_write = md->vars_header_size;
-                    int write_len = 0;
-                    int count;
-                    char * buf_ptr = fd->buffer;
-                    while (total_written < md->vars_header_size)
-                    {
-                        write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                        err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                        MPI_Get_count(&md->status, MPI_BYTE, &count);
-                        if (count != write_len)
-                        {
-                            err = count;
-                            break;
-                        }
-                        total_written += count;
-                        buf_ptr += count;
-                        to_write -= count;
-                        //err = total_written;
-                    }
-                }
-                if (err != MPI_SUCCESS) 
-                {              
-                    char e [MPI_MAX_ERROR_STRING];
-                    int len = 0;
-                    memset (e, 0, MPI_MAX_ERROR_STRING);
-                    MPI_Error_string (err, e, &len);
-                    adios_error (err_write_error, 
-                         "MPI method, rank %d: adios_close(): writing of variable header "
-                         "of %llu bytes to file %s failed: '%s'\n",
-                         md->rank, md->vars_header_size, fd->name, e);       
-                }
-
-                int count;
-                MPI_Get_count (&md->status, MPI_BYTE, &count);
-                if (count != md->vars_header_size)
-                {
-                    log_warn ("MPI method, rank %d: adios_close() tried to write %llu bytes "
-                              "of variable header but only wrote %d\n",
-                              md->rank, md->vars_header_size, count);
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&md->b);
-
-                adios_write_open_attributes_v1 (fd);
-                md->vars_start = new_off;
-                md->vars_header_size = fd->offset;
-                MPI_File_seek (md->fh, new_off + md->vars_header_size
-                              ,MPI_SEEK_SET
-                              ); // go back to end, but after attr header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-                        if (fd->base_offset + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-                            adios_error (err_out_of_bound, 
-                                    "MPI method, rank %d: writing of the attributes exceeds pg bound.\n"
-                                    "File is corrupted. Need to enlarge group size in adios_group_size().\n"
-                                    "Group size=%llu, offset at end of this variable data=%llu\n",
-                                    md->rank, 
-                                    fd->write_size_bytes,
-                                    fd->base_offset - fd->pg_start_in_file + fd->bytes_written);
-#if 0
-                        err = MPI_File_write (md->fh, fd->buffer, fd->bytes_written
-                                ,MPI_BYTE, &md->status
-                                );
-#endif
-                        {
-                            uint64_t total_written = 0;
-                            uint64_t to_write = fd->bytes_written;
-                            int write_len = 0;
-                            int count;
-                            char * buf_ptr = fd->buffer;
-                            while (total_written < fd->bytes_written)
-                            {
-                                write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                                err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                                MPI_Get_count(&md->status, MPI_BYTE, &count);
-                                if (count != write_len)
-                                {
-                                    err = count;
-                                    break;
-                                }
-                                total_written += count;
-                                buf_ptr += count;
-                                to_write -= count;
-                                //err = total_written;
-                            }
-                        }
-                        if (err != MPI_SUCCESS) 
-                        {              
-                            char e [MPI_MAX_ERROR_STRING];
-                            int len = 0;
-                            memset (e, 0, MPI_MAX_ERROR_STRING);
-                            MPI_Error_string (err, e, &len);
-                            adios_error (err_write_error, 
-                                    "MPI method, rank %d: adios_close(): writing of attributes "
-                                    "of %llu bytes to file %s failed: '%s'\n",
-                                    md->rank, fd->bytes_written, fd->name, e);       
-                        }
-
-                        MPI_Get_count (&md->status, MPI_BYTE, &count);
-                        if (count != fd->bytes_written)
-                        {
-                            log_warn ("MPI method, rank %d: adios_close() tried to write "
-                                      "%llu bytes of attributes but only wrote %d\n",
-                                      md->rank, fd->bytes_written, count);
-                        }
-                        fd->base_offset += count;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&md->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                MPI_File_seek (md->fh, md->vars_start, MPI_SEEK_SET);
-                // fd->vars_start gets updated with the size written
-#if 0
-                err = MPI_File_write (md->fh, fd->buffer, md->vars_header_size
-                                     ,MPI_BYTE, &md->status
-                                     );
-#endif
-                {
-                    uint64_t total_written = 0;
-                    uint64_t to_write = md->vars_header_size;
-                    int write_len = 0;
-                    int count;
-                    char * buf_ptr = fd->buffer;
-                    while (total_written < md->vars_header_size)
-                    {
-                        write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                        err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                        MPI_Get_count(&md->status, MPI_BYTE, &count);
-                        if (count != write_len)
-                        {
-                            err = count;
-                            break;
-                        }
-                        total_written += count;
-                        buf_ptr += count;
-                        to_write -= count;
-                        //err = total_written;
-                    }
-                }
-                if (err != MPI_SUCCESS) 
-                {              
-                    char e [MPI_MAX_ERROR_STRING];
-                    int len = 0;
-                    memset (e, 0, MPI_MAX_ERROR_STRING);
-                    MPI_Error_string (err, e, &len);
-                    adios_error (err_write_error, 
-                            "MPI method, rank %d: adios_close(): writing of variable header "
-                            "of %llu bytes to file %s failed: '%s'\n",
-                            md->rank, md->vars_header_size, fd->name, e);       
-                }
-
-                MPI_Get_count (&md->status, MPI_BYTE, &count);
-                if (count != md->vars_header_size)
-                {
-                    log_warn ("MPI method, rank %d: adios_close() tried to write %llu bytes "
-                              "of variable header but only wrote %d\n",
-                              md->rank, md->vars_header_size, count);
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
-
 #if COLLECT_METRICS
             gettimeofday (&timing.t19, NULL);
             gettimeofday (&timing.t12, NULL);
 #endif
+            // figure out the offsets
+            // before writing out the buffer and build the index based on target offsets
+            build_file_offsets (md, fd);
+
             // build index appending to any existing index
             adios_build_index_v1 (fd, md->index);
+
             // if collective, gather the indexes from the rest and call
             if (md->group_comm != MPI_COMM_NULL)
             {
@@ -1750,74 +1247,57 @@ void adios_mpi_close (struct adios_file_struct * fd
 #if COLLECT_METRICS
             gettimeofday (&timing.t13, NULL);
 #endif
-            if (fd->shared_buffer == adios_flag_yes)
+            // everyone writes their data
+            MPI_File_seek (md->fh, fd->current_pg->pg_start_in_file, MPI_SEEK_SET);
+            // if we need to write > 2 GB, need to do it in parts
+            // since count is limited to MAX_MPIWRITE_SIZE (signed 32-bit max).
+            uint64_t bytes_written = 0;
+            int32_t to_write = 0;
+            if (fd->bytes_written > MAX_MPIWRITE_SIZE)
             {
-                // if we need to write > 2 GB, need to do it in parts
-                // since count is limited to MAX_MPIWRITE_SIZE (signed 32-bit max).
-                uint64_t bytes_written = 0;
-                int32_t to_write = 0;
-                if (fd->bytes_written > MAX_MPIWRITE_SIZE)
-                {
-                    to_write = MAX_MPIWRITE_SIZE;
-                }
-                else
-                {
-                    to_write = (int32_t) fd->bytes_written;
-                }
+                to_write = MAX_MPIWRITE_SIZE;
+            }
+            else
+            {
+                to_write = (int32_t) fd->bytes_written;
+            }
 
-                if (fd->base_offset + fd->bytes_written > 
-                    fd->pg_start_in_file + fd->write_size_bytes) 
-                {
-                    adios_error (err_out_of_bound, 
-                            "MPI method, rank %d: size of buffered data exceeds pg bound.\n"
-                            "File is corrupted. Need to enlarge group size in adios_group_size().\n"
-                            "Group size=%llu, offset at end of variable buffer=%llu\n",
-                            md->rank, 
-                            fd->write_size_bytes,
-                            fd->base_offset - fd->pg_start_in_file + fd->bytes_written);
+            while (bytes_written < fd->bytes_written)
+            {
+                err = MPI_File_write (md->fh, fd->buffer + bytes_written
+                        ,to_write, MPI_BYTE, &md->status
+                        );
+                if (err != MPI_SUCCESS) 
+                {              
+                    char e [MPI_MAX_ERROR_STRING];
+                    int len = 0;
+                    memset (e, 0, MPI_MAX_ERROR_STRING);
+                    MPI_Error_string (err, e, &len);
+                    adios_error (err_write_error, 
+                            "MPI method, rank %d: adios_close(): writing of buffered data "
+                            "[%llu..%llu] to file %s failed: '%s'\n",
+                            md->rank, bytes_written, bytes_written+to_write-1, 
+                            fd->name, e);       
                 }
-
-                while (bytes_written < fd->bytes_written)
+                bytes_written += to_write;
+                if (fd->bytes_written > bytes_written)
                 {
-                    // everyone writes their data
-
-                    MPI_File_seek (md->fh, fd->base_offset + bytes_written
-                                  ,MPI_SEEK_SET
-                                  );
-                    err = MPI_File_write (md->fh, fd->buffer + bytes_written
-                                         ,to_write, MPI_BYTE, &md->status
-                                         );
-                    if (err != MPI_SUCCESS) 
-                    {              
-                        char e [MPI_MAX_ERROR_STRING];
-                        int len = 0;
-                        memset (e, 0, MPI_MAX_ERROR_STRING);
-                        MPI_Error_string (err, e, &len);
-                        adios_error (err_write_error, 
-                                "MPI method, rank %d: adios_close(): writing of buffered data "
-                                "[%llu..%llu] to file %s failed: '%s'\n",
-                                md->rank, bytes_written, bytes_written+to_write-1, 
-                                fd->name, e);       
+                    if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
+                    {
+                        to_write = MAX_MPIWRITE_SIZE;
                     }
-                    bytes_written += to_write;
-                    if (fd->bytes_written > bytes_written)
+                    else
                     {
-                        if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
-                        {
-                            to_write = MAX_MPIWRITE_SIZE;
-                        }
-                        else
-                        {
-                            to_write = fd->bytes_written - bytes_written;
-                        }
+                        to_write = fd->bytes_written - bytes_written;
                     }
                 }
             }
 
+            /* Rank 0 writes the index */
             if (md->rank == 0)
             {
                 adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                     ,index_start, md->index);
+                                     ,md->b.pg_index_offset, md->index);
                 adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
                 MPI_File_seek (md->fh, md->b.pg_index_offset, MPI_SEEK_SET);
@@ -1897,204 +1377,11 @@ timeval_subtract (&timing.t8, &b, &a);
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = md->b.pg_index_offset;
             int err;
 
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                MPI_Offset new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                MPI_File_get_position (md->fh, &new_off);
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                MPI_File_seek (md->fh, md->vars_start, MPI_SEEK_SET);
-#if 0
-                err = MPI_File_write (md->fh, fd->buffer, md->vars_header_size
-                                     ,MPI_BYTE, &md->status
-                                     );
-#endif
-                {              
-                    uint64_t total_written = 0;
-                    uint64_t to_write = md->vars_header_size;
-                    int write_len = 0;
-                    int count;
-                    char * buf_ptr = fd->buffer;
-                    while (total_written < md->vars_header_size)
-                    {
-                        write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                        err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                        MPI_Get_count(&md->status, MPI_BYTE, &count);
-                        if (count != write_len)
-                        {
-                            err = count;
-                            break;
-                        }
-                        total_written += count;
-                        buf_ptr += count;
-                        to_write -= count;
-                        //err = total_written;
-                    }
-                }              
-                if (err != MPI_SUCCESS) 
-                {              
-                    char e [MPI_MAX_ERROR_STRING];
-                    int len = 0;
-                    memset (e, 0, MPI_MAX_ERROR_STRING);
-                    MPI_Error_string (err, e, &len);
-                    adios_error (err_write_error, 
-                         "MPI method, rank %d: adios_close(): writing of variable header "
-                         "of %llu bytes to file %s failed: '%s'\n",
-                         md->rank, md->vars_header_size, fd->name, e);       
-                }
-
-                int count;
-                MPI_Get_count (&md->status, MPI_BYTE, &count);
-                if (count != md->vars_header_size)
-                {
-                    log_warn ("MPI method, rank %d: adios_close() tried to write %llu bytes "
-                              "of variable header but only wrote %d\n",
-                              md->rank, md->vars_header_size, count);
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&md->b);
-
-                adios_write_open_attributes_v1 (fd);
-                md->vars_start = new_off;
-                md->vars_header_size = fd->offset;
-                MPI_File_seek (md->fh, new_off + md->vars_header_size
-                              ,MPI_SEEK_SET
-                              ); // go back to end, but after attr header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-                        if (fd->base_offset + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-                            adios_error (err_out_of_bound, 
-                                    "MPI method, rank %d: writing of the attributes exceeds pg bound.\n"
-                                    "File is corrupted. Need to enlarge group size in adios_group_size().\n"
-                                    "Group size=%llu, offset at end of this variable data=%llu\n",
-                                    md->rank, 
-                                    fd->write_size_bytes,
-                                    fd->base_offset - fd->pg_start_in_file + fd->bytes_written);
-#if 0
-                        err = MPI_File_write (md->fh, fd->buffer, fd->bytes_written
-                                ,MPI_BYTE, &md->status
-                                );
-#endif
-                        {
-                            uint64_t total_written = 0;
-                            uint64_t to_write = fd->bytes_written;
-                            int write_len = 0;
-                            int count;
-                            char * buf_ptr = fd->buffer;
-                            while (total_written < fd->bytes_written)
-                            {
-                                write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                                err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                                MPI_Get_count(&md->status, MPI_BYTE, &count);
-                                if (count != write_len)
-                                {
-                                    err = count;
-                                    break;
-                                }
-                                total_written += count;
-                                buf_ptr += count;
-                                to_write -= count;
-                                //err = total_written;
-                            }
-                        }              
-                        if (err != MPI_SUCCESS) 
-                        {              
-                            char e [MPI_MAX_ERROR_STRING];
-                            int len = 0;
-                            memset (e, 0, MPI_MAX_ERROR_STRING);
-                            MPI_Error_string (err, e, &len);
-                            adios_error (err_write_error, 
-                                    "MPI method, rank %d: adios_close(): writing of attributes "
-                                    "of %llu bytes to file %s failed: '%s'\n",
-                                    md->rank, fd->bytes_written, fd->name, e);       
-                        }
-
-                        MPI_Get_count (&md->status, MPI_BYTE, &count);
-                        if (count != fd->bytes_written)
-                        {
-                            log_warn ("MPI method, rank %d: adios_close() tried to write "
-                                      "%llu bytes of attributes but only wrote %d\n",
-                                      md->rank, fd->bytes_written, count);
-                        }
-                        fd->base_offset += count;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&md->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                MPI_File_seek (md->fh, md->vars_start, MPI_SEEK_SET);
-                // fd->vars_start gets updated with the size written
-#if 0
-                err = MPI_File_write (md->fh, fd->buffer, md->vars_header_size
-                                     ,MPI_BYTE, &md->status
-                                     );
-#endif
-                {              
-                    uint64_t total_written = 0;
-                    uint64_t to_write = md->vars_header_size;
-                    int write_len = 0;
-                    int count;
-                    char * buf_ptr = fd->buffer;
-                    while (total_written < md->vars_header_size)
-                    {
-                        write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                        err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                        MPI_Get_count(&md->status, MPI_BYTE, &count);
-                        if (count != write_len)
-                        {
-                            err = count;
-                            break;
-                        }
-                        total_written += count;
-                        buf_ptr += count;
-                        to_write -= count;
-                        //err = total_written;
-                    }
-                }              
-                if (err != MPI_SUCCESS) 
-                {              
-                    char e [MPI_MAX_ERROR_STRING];
-                    int len = 0;
-                    memset (e, 0, MPI_MAX_ERROR_STRING);
-                    MPI_Error_string (err, e, &len);
-                    adios_error (err_write_error, 
-                            "MPI method, rank %d: adios_close(): writing of variable header "
-                            "of %llu bytes to file %s failed: '%s'\n",
-                            md->rank, md->vars_header_size, fd->name, e);       
-                }
-
-                MPI_Get_count (&md->status, MPI_BYTE, &count);
-                if (count != md->vars_header_size)
-                {
-                    log_warn ("MPI method, rank %d: adios_close() tried to write %llu bytes "
-                              "of variable header but only wrote %d\n",
-                              md->rank, md->vars_header_size, count);
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
+            // figure out the offsets
+            // before writing out the buffer and build the index based on target offsets
+            build_file_offsets (md, fd);
 
             // build index appending to any existing index
             adios_build_index_v1 (fd, md->index);
@@ -2177,65 +1464,52 @@ timeval_subtract (&timing.t8, &b, &a);
                 }
             }
 
-            if (fd->shared_buffer == adios_flag_yes)
-            {
-                if (fd->base_offset + fd->bytes_written > 
-                    fd->pg_start_in_file + fd->write_size_bytes) 
-                {
-                    adios_error (err_out_of_bound, 
-                            "MPI method, rank %d: size of buffered data exceeds pg bound.\n"
-                            "File is corrupted. Need to enlarge group size in adios_group_size().\n"
-                            "Group size=%llu, offset at end of variable buffer=%llu\n",
-                            md->rank, 
-                            fd->write_size_bytes,
-                            fd->base_offset - fd->pg_start_in_file + fd->bytes_written);
-                }
-                // everyone writes their data
-                MPI_File_seek (md->fh, fd->base_offset, MPI_SEEK_SET);
+            /* Write data buffer */
+            MPI_File_seek (md->fh, fd->current_pg->pg_start_in_file, MPI_SEEK_SET);
 #if 0
-                err = MPI_File_write (md->fh, fd->buffer, fd->bytes_written
-                                     ,MPI_BYTE, &md->status
-                                     );
+            err = MPI_File_write (md->fh, fd->buffer, fd->bytes_written
+                    ,MPI_BYTE, &md->status
+                    );
 #endif
-                {              
-                    uint64_t total_written = 0;
-                    uint64_t to_write = fd->bytes_written;
-                    int write_len = 0;
-                    int count;
-                    char * buf_ptr = fd->buffer;
-                    while (total_written < fd->bytes_written)
+            {              
+                uint64_t total_written = 0;
+                uint64_t to_write = fd->bytes_written;
+                int write_len = 0;
+                int count;
+                char * buf_ptr = fd->buffer;
+                while (total_written < fd->bytes_written)
+                {
+                    write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
+                    err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
+                    MPI_Get_count(&md->status, MPI_BYTE, &count);
+                    if (count != write_len)
                     {
-                        write_len = (to_write > MAX_MPIWRITE_SIZE) ? MAX_MPIWRITE_SIZE : to_write;
-                        err = MPI_File_write (md->fh, buf_ptr, write_len, MPI_BYTE, &md->status);
-                        MPI_Get_count(&md->status, MPI_BYTE, &count);
-                        if (count != write_len)
-                        {
-                            err = count;
-                            break;
-                        }
-                        total_written += count;
-                        buf_ptr += count;
-                        to_write -= count;
-                        //err = total_written;
+                        err = count;
+                        break;
                     }
-                }              
-                if (err != MPI_SUCCESS) 
-                {              
-                    char e [MPI_MAX_ERROR_STRING];
-                    int len = 0;
-                    memset (e, 0, MPI_MAX_ERROR_STRING);
-                    MPI_Error_string (err, e, &len);
-                    adios_error (err_write_error, 
-                            "MPI method, rank %d: adios_close(): writing of buffered data "
-                            "of %llu bytes to file %s failed: '%s'\n",
-                            md->rank, fd->bytes_written, fd->name, e);       
+                    total_written += count;
+                    buf_ptr += count;
+                    to_write -= count;
+                    //err = total_written;
                 }
+            }              
+            if (err != MPI_SUCCESS) 
+            {              
+                char e [MPI_MAX_ERROR_STRING];
+                int len = 0;
+                memset (e, 0, MPI_MAX_ERROR_STRING);
+                MPI_Error_string (err, e, &len);
+                adios_error (err_write_error, 
+                        "MPI method, rank %d: adios_close(): writing of buffered data "
+                        "of %llu bytes to file %s failed: '%s'\n",
+                        md->rank, fd->bytes_written, fd->name, e);       
             }
 
+            /* Rank 0 writes the index */
             if (md->rank == 0)
             {
                 adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                     ,index_start, md->index);
+                                     ,md->b.pg_index_offset, md->index);
                 adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
                 MPI_File_seek (md->fh, md->b.pg_index_offset, MPI_SEEK_SET);
@@ -2333,6 +1607,7 @@ void adios_mpi_finalize (int mype, struct adios_method_struct * method)
         MPI_Info_free (&md->info);
     }
     adios_free_index_v1 (md->index);
+    adios_buffer_struct_clear (&md->b);
 }
 
 void adios_mpi_end_iteration (struct adios_method_struct * method)
diff --git a/src/write/adios_mpi_amr.c b/src/write/adios_mpi_amr.c
index 61d387f..d714d1e 100644
--- a/src/write/adios_mpi_amr.c
+++ b/src/write/adios_mpi_amr.c
@@ -180,21 +180,6 @@ struct obd_uuid {
 #include "fgr.h"
 #endif
 
-static void trim_spaces (char * str)
-{
-    char * t = str, * p = NULL;
-    while (*t != '\0')
-    {
-        if (*t == ' ')
-        {
-            p = t + 1;
-            strcpy (t, p);
-        }
-        else
-            t++;
-    }
-
-}
 
 int * allocOSTList (int n_ost)
 {
@@ -320,12 +305,9 @@ adios_mpi_amr_set_striping_unit(struct adios_MPI_data_struct * md, char *paramet
     uint16_t striping_count = 0;
     char     *temp_string, *p_count,*p_size;
     int fd, old_mask, perm, n_ost_skipping, n_ost, n, i, should_striping;
-    int random_offset_flag, name_len;
-
-    temp_string = (char *) malloc (strlen (parameters) + 1);
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
+    int random_offset_flag;
 
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_count = strstr (temp_string, "striping")) )
     {
         char * p = strchr (p_count, '=');
@@ -344,10 +326,9 @@ adios_mpi_amr_set_striping_unit(struct adios_MPI_data_struct * md, char *paramet
     {
         return;
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_count = strstr (temp_string, "stripe_count")) )
     {
         char * p = strchr (p_count, '=');
@@ -362,10 +343,9 @@ adios_mpi_amr_set_striping_unit(struct adios_MPI_data_struct * md, char *paramet
         // By default, set stripe count to 1 to maximize concurrency.
         striping_count = DEFAULT_STRIPE_COUNT;
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_count = strstr (temp_string, "random_offset")) )
     {
         char * p = strchr (p_count, '=');
@@ -380,10 +360,9 @@ adios_mpi_amr_set_striping_unit(struct adios_MPI_data_struct * md, char *paramet
         // By default, set stripe count to 1 to maximize concurrency.
         random_offset_flag = 0;
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "stripe_size")) )
     {
         char * p = strchr (p_size, '=');
@@ -398,7 +377,6 @@ adios_mpi_amr_set_striping_unit(struct adios_MPI_data_struct * md, char *paramet
         //stripe size shouldn't matter here. Simply set it to 1 MB here. 
         striping_unit = DEFAULT_STRIPE_SIZE;
     }
-
     free (temp_string);
 
     old_mask = umask(022);
@@ -478,11 +456,8 @@ printf ("why is here\n");
 static void
 adios_mpi_amr_set_have_mdf (char * parameters, struct adios_MPI_data_struct * md)
 {
-    char *temp_string, *p_size;
-
-    temp_string = (char *) malloc (strlen (parameters) + 1);
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
+    char *p_size;
+    char *temp_string = a2s_trim_spaces (parameters);
 
     if ( (p_size = strstr (temp_string, "have_metadata_file")) )
     {
@@ -499,7 +474,6 @@ adios_mpi_amr_set_have_mdf (char * parameters, struct adios_MPI_data_struct * md
         // by default, write metadata file. 
         md->g_have_mdf = 1;
     }
-
     free (temp_string);
 }
 
@@ -510,12 +484,8 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
     int nproc = md->size, rank = md->rank;
     char *temp_string, *p_size;
 
-    temp_string = (char *) malloc (strlen (parameters) + 1);
-
     // set up the number of OST to use
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "num_ost")) )
     {
         char * p = strchr (p_size, '=');
@@ -528,10 +498,9 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
     else
     {
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "local-fs")) )
     {
         char * p = strchr (p_size, '=');
@@ -545,11 +514,10 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
     {
         md->is_local_fs = 0;
     }
-
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
+    free (temp_string);
 
     // set up # of aggregators
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "num_aggregators")) )
     {
         char * p = strchr (p_size, '=');
@@ -570,14 +538,13 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
             md->g_num_aggregators = md->g_num_ost;
         }
     }
+    free (temp_string);
 
     // Get 'color' parameter. If 'color' is set,
     // the num_aggregators will be disregarded.
     // The actual # of aggregators will be caculated
     // according to color. 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "color")) )
     {
         char * p = strchr (p_size, '=');
@@ -594,10 +561,9 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
         // by default, use BG
         md->g_io_type = ADIOS_MPI_AMR_IO_BG;
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "have_metadata_file")) )
     {
         char * p = strchr (p_size, '=');
@@ -613,11 +579,10 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
         // by default, write metadata file. 
         md->g_have_mdf = 1;
     }
+    free (temp_string);
 
     // set up whether to thread IO ops
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "threading")) )
     {
         char * p = strchr (p_size, '=');
@@ -632,10 +597,10 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
         // by default, threading is disabled.
         md->g_threading = 0;
     }
+    free (temp_string);
 
     // set up which ost's to skip
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
+    temp_string = a2s_trim_spaces (parameters);
 
     md->g_ost_skipping_list = allocOSTList (md->g_num_ost);
 
@@ -649,10 +614,10 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
         else
             md->g_ost_skipping_list = parseOSTSkipping (md->g_ost_skipping_list, p + 1, md->g_num_ost);
     }
+    free (temp_string);
 
-    // set up which ost's to skip
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
+    // set up aggregation type
+    temp_string = a2s_trim_spaces (parameters);
 
     if ( (p_size = strstr (temp_string, "aggregation_type")) )
     {
@@ -669,7 +634,6 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
         // by default, use BG
         md->g_io_type = ADIOS_MPI_AMR_IO_BG;
     }
-
     free (temp_string);
 
     if (md->g_num_aggregators > nproc || md->g_num_aggregators <= 0)
@@ -734,6 +698,7 @@ adios_mpi_amr_set_aggregation_parameters(char * parameters, struct adios_MPI_dat
     }
 }
 
+/*
 static void adios_mpi_amr_buffer_write (char ** buffer, uint64_t * buffer_size
                                        ,uint64_t * buffer_offset
                                        ,const void * data, uint64_t size
@@ -759,6 +724,7 @@ static void adios_mpi_amr_buffer_write (char ** buffer, uint64_t * buffer_size
     memcpy (*buffer + *buffer_offset, data, size);
     *buffer_offset += size;
 }
+*/
 
 static uint64_t
 adios_mpi_amr_striping_unit_write(MPI_File   fh
@@ -1043,12 +1009,12 @@ void * adios_mpi_amr_do_reopen_thread (void * param)
         MPI_File_read (md->fh, md->b.buff, md->b.attrs_size, MPI_BYTE, &md->status);
         adios_parse_attributes_index_v1 (&md->b, &md->index->attrs_root);
 
-        fd->base_offset = md->b.end_of_pgs;
-        fd->pg_start_in_file = fd->base_offset;
-        /*log_debug ("rank %d: APPEND: end_of_pgs=%llu bytes_written=%llu pg_start_in_file=%llu"
-                  "  write_size_bytes=%llu  pg_index_offset=%llu\n", md->rank, 
-                  md->b.end_of_pgs, fd->bytes_written, td->fd->pg_start_in_file, 
-                  td->fd->write_size_bytes, md->b.pg_index_offset);*/
+        // remember the end of the last PG in file. The new PG written now
+        // will have an offset updated from here. 
+        // md->b.end_of_pgs points to this position
+
+       // printf ("rank %d: APPEND: end_of_pgs=%llu bytes_written=%llu  pg_index_offset=%llu\n", 
+       //         md->rank, md->b.end_of_pgs, fd->bytes_written, md->b.pg_index_offset);
     } 
     else 
     {
@@ -1151,15 +1117,40 @@ void adios_mpi_amr_init (const PairStruct * parameters
 }
 
 
+static char * get_subfile_name (char *base_path, char *filename, int color)
+{
+    char *ch, *name_no_path, *subfilename;
+    // Check if fd->name contains path
+    if ( (ch = strrchr (filename, '/')) )
+    {
+        name_no_path = malloc (strlen (ch + 1) + 1); 
+        strcpy (name_no_path, ch + 1); 
+    }
+    else
+    {
+        name_no_path = malloc (strlen (filename) + 1);
+        strcpy (name_no_path, filename);
+    }
+
+    subfilename = malloc (strlen (base_path) + strlen (filename) + 5 + strlen (name_no_path) + 1 + 10 + 1);
+    // create the subfile name, e.g. restart.bp.1
+    // 1 for '.' + 10 for subfile index + 1 for '\0'
+    sprintf (subfilename, "%s%s%s%s.%d", base_path, filename, ".dir/", name_no_path, color);
+    free (name_no_path);
+    return subfilename;
+}
+
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 // Indices for the timer object
-int ADIOS_TIMER_MPI_AMR_COMM = ADIOS_TIMING_MAX_USER_TIMERS + 0;
-int ADIOS_TIMER_MPI_AMR_IO = ADIOS_TIMING_MAX_USER_TIMERS + 1;
-int ADIOS_TIMER_MPI_AMR_MD = ADIOS_TIMING_MAX_USER_TIMERS + 2;
-int ADIOS_TIMER_MPI_AMR_AD_WRITE = ADIOS_TIMING_MAX_USER_TIMERS + 3;
-int ADIOS_TIMER_MPI_AMR_AD_CLOSE = ADIOS_TIMING_MAX_USER_TIMERS + 4;
-int ADIOS_TIMER_MPI_AMR_AD_SHOULD_BUFFER = ADIOS_TIMING_MAX_USER_TIMERS + 5;
+int ADIOS_TIMER_COMM        = ADIOS_TIMING_MAX_USER_TIMERS + 0;
+int ADIOS_TIMER_IO          = ADIOS_TIMING_MAX_USER_TIMERS + 1;
+int ADIOS_TIMER_LOCALMD     = ADIOS_TIMING_MAX_USER_TIMERS + 2;
+int ADIOS_TIMER_GLOBALMD    = ADIOS_TIMING_MAX_USER_TIMERS + 3;
+int ADIOS_TIMER_AD_OPEN     = ADIOS_TIMING_MAX_USER_TIMERS + 4;
+int ADIOS_TIMER_AD_WRITE    = ADIOS_TIMING_MAX_USER_TIMERS + 5;
+int ADIOS_TIMER_AD_OVERFLOW = ADIOS_TIMING_MAX_USER_TIMERS + 6;
+int ADIOS_TIMER_AD_CLOSE    = ADIOS_TIMING_MAX_USER_TIMERS + 7;
 #endif
 
 
@@ -1180,14 +1171,16 @@ int adios_mpi_amr_open (struct adios_file_struct * fd
     fd->group->process_id = md->rank;
     
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
-    int timer_count = 6;
+    int timer_count = 8;
     char ** timer_names = (char**) malloc (timer_count * sizeof (char*) );
-    timer_names [0] = "Communication";
-    timer_names [1] = "I/O"; 
-    timer_names [2] = "Metadata";
-    timer_names [3] = "ad_write"; 
-    timer_names [4] = "ad_close";
-    timer_names [5] = "ad_should_buffer";
+    timer_names [0] = "Communication   ";
+    timer_names [1] = "I/O             ";
+    timer_names [2] = "Local metadata  ";
+    timer_names [3] = "Global metadata ";
+    timer_names [4] = "adios_open()    ";
+    timer_names [5] = "adios_write()   ";
+    timer_names [6] = "adios_overflow()";
+    timer_names [7] = "adios_close()   ";
 
 
     // Ensure both timing objects exist
@@ -1201,94 +1194,22 @@ int adios_mpi_amr_open (struct adios_file_struct * fd
         if (!fd->group->prev_timing_obj)
             fd->group->prev_timing_obj = adios_timing_create (timer_count, timer_names);
     }
-
-
+    free (timer_names);
 #endif
 
     // need to dealloc/realloc buffer because of supporting append mode
     // b.length and others won't be re-initialized otherwise.
     adios_buffer_struct_clear (&md->b);
 
-    // we have to wait for the group_size (should_buffer)
-    // to calculate stripe sizes from output sizes of the processes
-    // before we can do an open for any of the modes
-
-    return 1;
-}
-
-/*
-static
-void build_offsets (struct adios_bp_buffer_struct_v1 * b
-                   ,MPI_Offset * offsets, uint64_t size, char * group_name
-                   ,struct adios_index_struct_v1 * index
-                   )
-{
-    struct adios_index_process_group_struct_v1 * pg_root = index->pg_root;
-    while (pg_root)
-    {
-        if (!strcasecmp (pg_root->group_name, group_name))
-        {
-            MPI_Offset size = 0;
-
-            if (pg_root->next)
-            {
-                size = pg_root->next->offset_in_file - pg_root->offset_in_file;
-            }
-            else
-            {
-                size = b->pg_index_offset - pg_root->offset_in_file;
-            }
-
-            offsets [pg_root->process_id * 3] = pg_root->offset_in_file;
-            offsets [pg_root->process_id * 3 + 1] = size;
-            offsets [pg_root->process_id * 3 + 2] = b->version;
-        }
 
-        pg_root = pg_root->next;
-    }
-}
-*/
-
-static char * get_subfile_name (char *base_path, char *filename, int color)
-{
-    char *ch, *name_no_path, *subfilename;
-    // Check if fd->name contains path
-    if ( (ch = strrchr (filename, '/')) )
-    {
-        name_no_path = malloc (strlen (ch + 1) + 1); 
-        strcpy (name_no_path, ch + 1); 
-    }
-    else
-    {
-        name_no_path = malloc (strlen (filename) + 1);
-        strcpy (name_no_path, filename);
-    }
-
-    subfilename = malloc (strlen (base_path) + strlen (filename) + 5 + strlen (name_no_path) + 1 + 10 + 1);
-    // create the subfile name, e.g. restart.bp.1
-    // 1 for '.' + 10 for subfile index + 1 for '\0'
-    sprintf (subfilename, "%s%s%s%s.%d", base_path, filename, ".dir/", name_no_path, color);
-    free (name_no_path);
-    return subfilename;
-}
-
-enum ADIOS_FLAG adios_mpi_amr_should_buffer (struct adios_file_struct * fd
-                                            ,struct adios_method_struct * method
-                                            )
-{
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
-    char * name, * name_no_path, * ch;
-    int err;
+    char * name;
     //int sig;    // used for coordinating the MPI_File_open
 
-    START_TIMER (ADIOS_TIMER_MPI_AMR_AD_SHOULD_BUFFER);
+    START_TIMER (ADIOS_TIMER_AD_OPEN);
 
     name = malloc (strlen (method->base_path) + strlen (fd->name) + 1);
     sprintf (name, "%s%s", method->base_path, fd->name);
 
-    fd->base_offset = 0;
-
     switch (fd->mode)
     {
         case adios_mode_read:
@@ -1351,8 +1272,6 @@ enum ADIOS_FLAG adios_mpi_amr_should_buffer (struct adios_file_struct * fd
 
             MPI_Bcast (&md->g_num_ost, 1, MPI_INT, 0, md->group_comm);
           
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
             adios_mpi_amr_set_aggregation_parameters (method->parameters, md);
 
             if (is_aggregator (md->rank))
@@ -1379,74 +1298,24 @@ enum ADIOS_FLAG adios_mpi_amr_should_buffer (struct adios_file_struct * fd
 
             if (is_aggregator(md->rank))
             {
-                if (fd->shared_buffer == adios_flag_yes)
-                {
-                    if (is_aggregator (md->rank))
-                    {
-                        // open subfiles
-                        md->open_thread_data = (struct adios_MPI_thread_data_open *) malloc (sizeof (struct adios_MPI_thread_data_open));
-                        md->open_thread_data->md = md;
-                        md->open_thread_data->parameters = method->parameters;
+                // open subfiles
+                md->open_thread_data = (struct adios_MPI_thread_data_open *) malloc (sizeof (struct adios_MPI_thread_data_open));
+                md->open_thread_data->md = md;
+                md->open_thread_data->parameters = method->parameters;
 
-                        if (md->g_threading)
-                        {
-                            pthread_create (&md->g_sot, NULL
-                                           ,adios_mpi_amr_do_open_thread
-                                           ,(void *) md->open_thread_data
-                                           );
-                        }
-                        else
-                        {
-                            adios_mpi_amr_do_open_thread ((void *) md->open_thread_data);
-                        }
-                    }
+                if (md->g_threading)
+                {
+                    pthread_create (&md->g_sot, NULL
+                            ,adios_mpi_amr_do_open_thread
+                            ,(void *) md->open_thread_data
+                            );
                 }
-
-                if (fd->shared_buffer == adios_flag_no)
+                else
                 {
-                    unlink (name);
-                    if (md->rank == 0)
-                    {
-                        unlink (fd->name);
-                    }
-
-                    if (method->parameters)
-                    {
-                        adios_mpi_amr_set_striping_unit (md, method->parameters);
-                    }
-
-                    err = MPI_File_open (MPI_COMM_SELF, name
-                                        ,MPI_MODE_WRONLY | MPI_MODE_CREATE
-                                        ,MPI_INFO_NULL
-                                        ,&md->fh
-                                        );
-
-                    if (err != MPI_SUCCESS)
-                    {
-                        char e [MPI_MAX_ERROR_STRING];
-                        int len = 0;
-                        memset (e, 0, MPI_MAX_ERROR_STRING);
-                        MPI_Error_string (err, e, &len);
-                        adios_error (err_file_open_error,
-                                     "MPI_AMR method: MPI open failed for %s: '%s'\n", 
-                                     name, e);
-                        free (name);
-
-                        return adios_flag_no;
-                    }
+                    adios_mpi_amr_do_open_thread ((void *) md->open_thread_data);
                 }
             }
 
-            if (md->group_comm != MPI_COMM_NULL)
-            {
-                fd->base_offset = 0;
-                fd->pg_start_in_file = fd->base_offset;
-            }
-            else
-            {
-                md->b.pg_index_offset = fd->write_size_bytes;
-            }
-
             /*log_debug ("rank %d: WRITE: end_of_pgs=%llu bytes_written=%llu pg_start_in_file=%llu"
                       "  write_size_bytes=%llu  pg_index_offset=%llu\n", md->rank,
                       md->b.end_of_pgs, fd->bytes_written, fd->pg_start_in_file, 
@@ -1455,13 +1324,13 @@ enum ADIOS_FLAG adios_mpi_amr_should_buffer (struct adios_file_struct * fd
         }
 
         case adios_mode_append:
+        case adios_mode_update:
         {
             // rank 0 opens the global metadata (if that exists)
             // we throw away the content because it's a replica of metadata present in subfiles
             // so the index merging procedure will result in a complete metadata again
             if (md->rank == 0)
             {
-                struct lov_user_md lum;
                 int f;
                 md->g_num_ost = 1024; // default num_ost, maybe updated below
 
@@ -1494,122 +1363,67 @@ enum ADIOS_FLAG adios_mpi_amr_should_buffer (struct adios_file_struct * fd
 
             MPI_Bcast (&md->g_num_ost, 1, MPI_INT, 0, md->group_comm);
 
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
             adios_mpi_amr_set_aggregation_parameters (method->parameters, md); // is_aggregator() works after this
 
             // Every aggregator opens a subfile and reads in the metadata
             md->subfile_name = get_subfile_name (method->base_path, fd->name, md->g_color1);
             fd->subfile_index = (uint32_t)md->g_color1;
 
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                adios_error (err_file_open_error,
-                        "MPI_AMR method: append mode with no buffering is not implemented. File is %s\n", 
-                        name);
-                free (name);
-
-                return adios_flag_no;
-            } 
-            else // (fd->shared_buffer == adios_flag_yes)
+            if (is_aggregator(md->rank))
             {
-
-                if (is_aggregator(md->rank))
-                {
-                    // open subfiles
-                    md->reopen_thread_data = (struct adios_MPI_thread_data_reopen *) 
-                        malloc (sizeof (struct adios_MPI_thread_data_reopen));
-                    md->reopen_thread_data->md = md;
-                    md->reopen_thread_data->fd = fd;
-
-                    // there is a MPI_Bcast in the function below, so this cannot be threaded as is now
-                    /*
-                       if (md->g_threading)
-                       {
-                       pthread_create (&md->g_sot, NULL,
-                       adios_mpi_amr_do_reopen_thread,
-                       (void *) md->reopen_thread_data);
-                       }
-                       else
-                     */
-                    {
-                        //log_debug ("rank %d: APPEND: reopen subfile...\n", md->rank);
-                        adios_mpi_amr_do_reopen_thread ((void *) md->reopen_thread_data);
-                    }
-
-                    MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0, md->g_comm1);
-                    MPI_Bcast (&md->b.pg_index_offset, 1, MPI_LONG_LONG, 0, md->g_comm1);
-                } 
-                else //non-aggregators
+                // open subfiles
+                md->reopen_thread_data = (struct adios_MPI_thread_data_reopen *) 
+                    malloc (sizeof (struct adios_MPI_thread_data_reopen));
+                md->reopen_thread_data->md = md;
+                md->reopen_thread_data->fd = fd;
+
+                // there is a MPI_Bcast in the function below, so this cannot be threaded as is now
+                /*
+                   if (md->g_threading)
+                   {
+                   pthread_create (&md->g_sot, NULL,
+                   adios_mpi_amr_do_reopen_thread,
+                   (void *) md->reopen_thread_data);
+                   }
+                   else
+                 */
                 {
-                    fd->base_offset = 0;
-                    fd->pg_start_in_file = fd->base_offset;
-                    MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0, md->g_comm1);
-                    MPI_Bcast (&md->b.pg_index_offset, 1, MPI_LONG_LONG, 0, md->g_comm1);
+                    //log_debug ("rank %d: APPEND: reopen subfile...\n", md->rank);
+                    adios_mpi_amr_do_reopen_thread ((void *) md->reopen_thread_data);
                 }
 
-                if (md->group_comm == MPI_COMM_NULL)
-                {
-                    // FIXME: what is this?
-                    md->b.pg_index_offset = fd->write_size_bytes;
-                }
+                MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0, md->g_comm1);
+                MPI_Bcast (&md->b.pg_index_offset, 1, MPI_LONG_LONG, 0, md->g_comm1);
+            } 
+            else //non-aggregators
+            {
+                MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0, md->g_comm1);
+                MPI_Bcast (&md->b.pg_index_offset, 1, MPI_LONG_LONG, 0, md->g_comm1);
             }
+
             break;
         }
 
         default:
         {
             adios_error (err_invalid_file_mode, "MPI_AMR method: Unknown file mode requested: %d\n", fd->mode);
-
             free (name);
-
             return adios_flag_no;
         }
     }
 
     free (name);
 
-    if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
-    {
-        uint64_t count;
-        // write the process group header
-        adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
-
-        if (is_aggregator (md->rank))
-        {
-            START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-            count = adios_mpi_amr_striping_unit_write(
-                                  md->fh
-                                 ,fd->base_offset
-                                 ,fd->buffer
-                                 ,fd->bytes_written
-                                 );
-            STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-            if (count != fd->bytes_written)
-            {
-                log_warn ("a:MPI_AMR method tried to write %llu, only wrote %llu\n", 
-                          fd->bytes_written, count);
-            }
-        }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-
-        // setup for writing vars
-        adios_write_open_vars_v1 (fd);
-        md->vars_start = fd->base_offset;
-        md->vars_header_size = fd->offset;
-        fd->base_offset += fd->offset;
-        MPI_File_seek (md->fh, md->vars_header_size, MPI_SEEK_CUR);
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-    }
+    STOP_TIMER (ADIOS_TIMER_AD_OPEN);
+    return 1;
+}
 
-    STOP_TIMER (ADIOS_TIMER_MPI_AMR_AD_SHOULD_BUFFER);
 
-    return fd->shared_buffer;
+enum BUFFERING_STRATEGY adios_mpi_amr_should_buffer (struct adios_file_struct * fd
+                                                    ,struct adios_method_struct * method
+                                                    )
+{
+    return stop_on_overflow;
 }
 
 void adios_mpi_amr_write (struct adios_file_struct * fd
@@ -1618,9 +1432,7 @@ void adios_mpi_amr_write (struct adios_file_struct * fd
                          ,struct adios_method_struct * method
                          )
 {
-    START_TIMER (ADIOS_TIMER_MPI_AMR_AD_WRITE);
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
+    START_TIMER (ADIOS_TIMER_AD_WRITE);
     if (v->got_buffer == adios_flag_yes)
     {
         if (data != v->data)  // if the user didn't give back the same thing
@@ -1637,101 +1449,7 @@ void adios_mpi_amr_write (struct adios_file_struct * fd
             return;
         }
     }
-
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        uint64_t total_size = 0;
-        int i, new_rank, new_group_size;
-        void * aggr_buff = 0;
-
-        // var payload sent for sizing information
-        adios_write_var_header_v1 (fd, v);
-        adios_write_var_payload_v1 (fd, v);
-
-        //MPI_Comm_split (md->group_comm, md->g_color1, md->rank, &md->g_comm1);
-        MPI_Comm_rank (md->g_comm1, &new_rank);
-        MPI_Comm_size (md->g_comm1, &new_group_size);
-
-        int bytes_written[new_group_size];
-        int disp[new_group_size];
-
-        MPI_Gather (&fd->bytes_written, 1, MPI_INT
-                   ,bytes_written, 1, MPI_INT
-                   ,0, md->g_comm1);
-
-        disp[0] = 0;
-        for (i = 1; i < new_group_size; i++)
-        {
-            disp[i] = disp[i - 1] + bytes_written[i - 1];
-        }
-        total_size += disp[new_group_size - 1]
-                    + bytes_written[new_group_size - 1];
-
-        if (is_aggregator(md->rank))
-        {
-            aggr_buff = malloc (total_size);
-            if (aggr_buff == 0)
-            {
-                adios_error (err_no_memory, 
-                        "MPI_AMR method: Cannot allocate aggregation buffer of %llu size.\n"
-                        "Need to increase the number of aggregators.\n",
-                        total_size
-                        );
-                return;
-            }
-        }
-  
-        MPI_Gatherv (fd->buffer, fd->bytes_written, MPI_BYTE
-                    ,aggr_buff, bytes_written, disp, MPI_BYTE
-                    ,0, md->g_comm1);
-
-        fd->vars_written += new_group_size - 1;
-
-        uint64_t count = 0;
-        if (is_aggregator(md->rank))
-        {
-            START_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-            count = adios_mpi_amr_striping_unit_write(
-                           md->fh
-                          ,-1
-                          ,aggr_buff
-                          ,total_size
-                          );
-            STOP_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-            if (count != total_size)
-            {
-                log_warn ("b:MPI_AMR method tried to write %llu, only wrote %llu\n",
-                          total_size, count);
-            }
-
-            FREE (aggr_buff);
-        }
-        else
-        {
-            // Non-aggregators do nothing
-        }
-
-        // Broadcast new offsets to all processors in the communicator.
-        uint64_t new_offsets[new_group_size];
-
-        if (is_aggregator (md->rank))
-        {
-            new_offsets[0] = v->write_offset;
-            for (i = 1; i < new_group_size; i++)
-            {
-                new_offsets[i] = new_offsets[i - 1] + bytes_written[i - 1];
-            }
-        }
-
-        MPI_Bcast (new_offsets, new_group_size, MPI_LONG_LONG, 0, md->g_comm1);
-        v->write_offset = new_offsets[new_rank];
-
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-    }
-    STOP_TIMER (ADIOS_TIMER_MPI_AMR_AD_WRITE);
+    STOP_TIMER (ADIOS_TIMER_AD_WRITE);
 }
 
 void adios_mpi_amr_get_write_buffer (struct adios_file_struct * fd
@@ -1803,118 +1521,8 @@ void adios_mpi_amr_read (struct adios_file_struct * fd
     v->data_size = buffer_size;
 }
 
-/*
-static void adios_mpi_amr_do_read (struct adios_file_struct * fd
-                              ,struct adios_method_struct * method
-                              )
-{
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
-    struct adios_var_struct * v = fd->group->vars;
-
-    struct adios_parse_buffer_struct data;
 
-    data.vars = v;
-    data.buffer = 0;
-    data.buffer_len = 0;
-
-    uint32_t version = md->b.version & ADIOS_VERSION_NUM_MASK;
-    switch (version)
-    {
-        case 1:
-        case 2:
-        case 3:
-        {
-            // the three section headers
-            struct adios_process_group_header_struct_v1 pg_header;
-            struct adios_vars_header_struct_v1 vars_header;
-            struct adios_attributes_header_struct_v1 attrs_header;
-
-            struct adios_var_header_struct_v1 var_header;
-            struct adios_var_payload_struct_v1 var_payload;
-            struct adios_attribute_struct_v1 attribute;
-
-            uint64_t i;
-
-            adios_init_buffer_read_process_group (&md->b);
-            MPI_File_seek (md->fh, md->b.read_pg_offset
-                          ,MPI_SEEK_SET
-                          );
-            MPI_File_read (md->fh, md->b.buff, md->b.read_pg_size, MPI_BYTE
-                          ,&md->status
-                          );
-            adios_parse_process_group_header_v1 (&md->b, &pg_header);
-
-            adios_parse_vars_header_v1 (&md->b, &vars_header);
-
-            for (i = 0; i < vars_header.count; i++)
-            {
-                memset (&var_payload, 0
-                       ,sizeof (struct adios_var_payload_struct_v1)
-                       );
-                adios_parse_var_data_header_v1 (&md->b, &var_header);
-
-                struct adios_var_struct * v1 = v;
-                while (v1)
-                {
-                    if (   strcasecmp (var_header.name, v1->name)
-                        || strcasecmp (var_header.path, v1->path)
-                       )
-                    {
-                        v1 = v1->next;
-                    }
-                    else
-                    {
-                        break;
-                    }
-                }
-
-                if (v1)
-                {
-                    var_payload.payload = v1->data;
-                    adios_parse_var_data_payload_v1 (&md->b, &var_header
-                                                    ,&var_payload
-                                                    ,v1->data_size
-                                                    );
-                }
-                else
-                {
-                    log_warn ("MPI AMR method read: skipping name: %s path: %s\n",
-                           var_header.name, var_header.path);
-                    adios_parse_var_data_payload_v1 (&md->b, &var_header
-                                                    ,NULL, 0
-                                                    );
-                }
-
-                adios_clear_var_header_v1 (&var_header);
-            }
-
-#if 1
-            adios_parse_attributes_header_v1 (&md->b, &attrs_header);
-
-            for (i = 0; i < attrs_header.count; i++)
-            {
-                adios_parse_attribute_v1 (&md->b, &attribute);
-                adios_clear_attribute_v1 (&attribute);
-            }
-#endif
-            adios_clear_process_group_header_v1 (&pg_header);
-
-            break;
-        }
-
-        default:
-            adios_error (err_invalid_file_version, 
-                    "MPI_AMR method read: file version unknown: %u\n",
-                    version);
-            return;
-    }
-
-    adios_buffer_struct_clear (&md->b);
-}
-*/
-
-static
+/*static
 uint32_t adios_mpi_amr_calculate_attributes_size (struct adios_file_struct * fd)
 {
     uint32_t overhead = 0;
@@ -1931,7 +1539,7 @@ uint32_t adios_mpi_amr_calculate_attributes_size (struct adios_file_struct * fd)
     }
 
     return overhead;
-}
+}*/
 
 
 /* Help routine to send data size greater than 2 GB */
@@ -1982,8 +1590,6 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 {
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
-    struct adios_attribute_struct * a = fd->group->attributes;
-
     struct adios_index_process_group_struct_v1 * new_pg_root = 0;
     struct adios_index_var_struct_v1 * new_vars_root = 0;
     struct adios_index_attribute_struct_v1 * new_attrs_root = 0;
@@ -1991,12 +1597,12 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
     switch (fd->mode)
     {
         case adios_mode_read:
-        case adios_mode_update:
         {
             adios_error (err_invalid_file_mode, 
                     "Only \"w\" mode is supported by MPI_AMR Brigade IO\n");
             break;
         }
+        case adios_mode_update:
         case adios_mode_append:
         case adios_mode_write:
         {
@@ -2009,7 +1615,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
             struct adios_MPI_thread_data_write write_thread_data;
             int i, new_rank, new_group_size, new_rank2, new_group_size2;
             uint64_t max_data_size = 0, total_data_size = 0, total_data_size1 = 0;
-            START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+            START_TIMER (ADIOS_TIMER_COMM);
             //MPI_Comm_split (md->group_comm, md->g_color1, md->rank, &md->g_comm1);
             MPI_Comm_rank (md->g_comm1, &new_rank);
             MPI_Comm_size (md->g_comm1, &new_group_size);
@@ -2017,175 +1623,13 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
             //MPI_Comm_split (md->group_comm, md->g_color2, md->rank, &md->g_comm2);
             MPI_Comm_rank (md->g_comm2, &new_rank2);
             MPI_Comm_size (md->g_comm2, &new_group_size2);
-            STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                MPI_Offset new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                MPI_File_get_position (md->fh, &new_off);
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-
-                uint64_t count;
-                if (is_aggregator(md->rank))
-                {
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-                    count = adios_mpi_amr_striping_unit_write(
-                                   md->fh
-                                  ,md->vars_start
-                                  ,fd->buffer
-                                  ,md->vars_header_size
-                                  );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-                    if (count != md->vars_header_size)
-                    {
-                        log_warn ("d:MPI_AMR method tried to write %llu, only wrote %llu\n",
-                                md->vars_header_size, count);
-                    }
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&md->b);
-
-                adios_write_open_attributes_v1 (fd);
-                md->vars_start = new_off;
-                md->vars_header_size = fd->offset;
-
-                MPI_File_seek (md->fh, new_off + md->vars_header_size
-                              ,MPI_SEEK_SET
-                              ); // go back to end, but after attr header
-
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-
-                        int bytes_written[new_group_size];
-                        int disp[new_group_size];
-                        int total_size = 0;
-                        void * aggr_buff;
-
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        MPI_Gather (&fd->bytes_written, 1, MPI_INT
-                                ,bytes_written, 1, MPI_INT
-                                ,0, md->g_comm1
-                                );
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-                        disp[0] = 0;
-                        for (i = 1; i < new_group_size; i++)
-                        {
-                            disp[i] = disp[i - 1] + bytes_written[i - 1];
-                        }
-                        total_size += disp[new_group_size - 1]
-                            + bytes_written[new_group_size - 1];
-
-                        if (is_aggregator(md->rank))
-                        {
-                            aggr_buff = malloc (total_size);
-                            if (aggr_buff == 0)
-                            {
-                                adios_error (err_no_memory, 
-                                        "MPI_AMR method (BG): Cannot allocate aggregation buffer.\n"
-                                        "Need to increase the number of aggregators.\n");
-                                return;
-                            }
-                        }
-
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        MPI_Gatherv (fd->buffer, fd->bytes_written, MPI_BYTE
-                                ,aggr_buff, bytes_written, disp, MPI_BYTE
-                                ,0, md->g_comm1);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-                        if (is_aggregator (md->rank))
-                        {
-                            START_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-                            count = adios_mpi_amr_striping_unit_write(
-                                    md->fh,
-                                    -1,
-                                    aggr_buff, //fd->buffer,
-                                    total_size //fd->bytes_written,
-                                    );
-                            STOP_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-                            if (count != total_size)
-                            {
-                                log_warn ("e:MPI method tried to write %llu, only wrote %llu\n",
-                                          fd->bytes_written, count);
-                            }
-                        }
-
-                        // Broadcast new offsets to all processors in the communicator.
-                        uint64_t new_offsets[new_group_size];
-
-                        if (is_aggregator (md->rank))
-                        {
-                            new_offsets[0] = a->write_offset;
-                            for (i = 1; i < new_group_size; i++)
-                            {
-                                new_offsets[i] = new_offsets[i - 1] + bytes_written[i - 1];
-                            }
-                        }
-
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        MPI_Bcast (new_offsets, new_group_size, MPI_LONG_LONG, 0, md->g_comm1);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        a->write_offset = new_offsets[new_rank];
-
-                        fd->base_offset += count;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&md->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-
-                // fd->vars_start gets updated with the size written
-                if (is_aggregator(md->rank))
-                {
-                    *(uint16_t *)fd->buffer = *(uint16_t *)fd->buffer * new_group_size;
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-                    count = adios_mpi_amr_striping_unit_write(
-                                  md->fh,
-                                  md->vars_start,
-                                  fd->buffer,
-                                  md->vars_header_size
-                                  );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-                    if (count != md->vars_header_size)
-                    {
-                        log_warn ("f:MPI_AMR method tried to write %llu, only wrote %llu\n",
-                                  md->vars_header_size, count);
-                    }
-                }
-
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                MPI_File_seek (md->fh, fd->base_offset, MPI_SEEK_SET);
-            }
+            STOP_TIMER (ADIOS_TIMER_COMM);
 
             // if not merge PG's on the aggregator side
-            if (fd->shared_buffer == adios_flag_yes && !md->g_merging_pgs)
+            if (!md->g_merging_pgs)
             {
                 //printf ("do not merge pg\n");
                 uint64_t pg_size;
-                MPI_Request request;
                 MPI_Status status;
 
                 pg_size = fd->bytes_written;
@@ -2198,11 +1642,11 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                     return;
                 }
 
-                START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                START_TIMER (ADIOS_TIMER_COMM);
                 MPI_Allgather (&pg_size, 1, MPI_UNSIGNED_LONG_LONG
                               ,pg_sizes, 1, MPI_UNSIGNED_LONG_LONG
                               ,md->g_comm1);
-                STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                STOP_TIMER (ADIOS_TIMER_COMM);
 
                 disp[0] = 0;
                 max_data_size = pg_size;
@@ -2252,15 +1696,15 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                         pthread_join (md->g_sot, NULL);
                     }
 
-                    index_start1 = fd->pg_start_in_file;
+                    index_start1 = md->b.pg_index_offset; // starting point to write data at this moment
                     for (i = 0; i < new_group_size; i++)
                     {
                         if (i + 1 < new_group_size)
                         {
-                            START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                            START_TIMER (ADIOS_TIMER_COMM);
                             adios_MPI_Recv (recv_buff, pg_sizes[i + 1], new_rank + 1
                                       ,0, md->g_comm1, &status);
-                            STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                            STOP_TIMER (ADIOS_TIMER_COMM);
                         }
 
                         write_thread_data.fh = &md->fh;
@@ -2268,13 +1712,13 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                         write_thread_data.aggr_buff = (i == 0) ? fd->buffer : aggr_buff;
                         write_thread_data.total_data_size = &pg_sizes[i];
 
-                        /*log_debug ("rank %d: Write PG to subfile %d, offset=%llu, size=%u\n", md->rank,
-                               fd->subfile_index, *write_thread_data.base_offset, pg_sizes[i]); */
+                        //printf ("rank %d: Write PG to subfile %d, offset=%llu, size=%u\n", md->rank,
+                        //       fd->subfile_index, *write_thread_data.base_offset, pg_sizes[i]);
 
                         // This write call is not threaded
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_IO);
+                        START_TIMER (ADIOS_TIMER_IO);
                         adios_mpi_amr_do_write_thread ((void *) &write_thread_data);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_IO);
+                        STOP_TIMER (ADIOS_TIMER_IO);
 
                         index_start1 += pg_sizes[i];
 
@@ -2288,16 +1732,16 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                 {
                     if (new_rank == new_group_size - 1)
                     {
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
                         adios_MPI_Send (fd->buffer, pg_size, new_rank - 1
                                  ,0, md->g_comm1);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
                     }
                     else
                     {
                         for (i = new_rank + 1; i < new_group_size; i++)
                         {
-                            START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                            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);
@@ -2311,7 +1755,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                             // Send it to downstream rank
                             adios_MPI_Send (recv_buff, pg_sizes[i], new_rank - 1
                                      ,0, md->g_comm1);
-                            STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                            STOP_TIMER (ADIOS_TIMER_COMM);
                         }
                     }
                 }
@@ -2319,34 +1763,30 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                 FREE (aggr_buff);
                 FREE (recv_buff);
             }
+            else 
+            {
+                // Merge PG's on the aggregator side
+                log_warn ("MPI_AMR method (BG): Merging process blocks is not supported yet\n");
+            }
 
-            // build index appending to any existing index
-            adios_build_index_v1 (fd, md->index);
 
-            if (fd->shared_buffer == adios_flag_yes && !md->g_merging_pgs)
+            /* Before building index, determine the actual offset where this PG starts */
+            fd->current_pg->pg_start_in_file = md->b.pg_index_offset; // aggregator's starting offset (!0 on append)
+            if (!md->g_merging_pgs)
             {
-                if (!is_aggregator(md->rank))
+                for (i = 0; i < new_rank; i++)
                 {
-                    uint64_t var_offset_to_add = md->b.pg_index_offset; // aggregator's starting offset (!0 on append)
-                    uint64_t attr_offset_to_add = md->b.pg_index_offset;
-                    uint64_t pg_offset_to_add = md->b.pg_index_offset;
-
-                    for (i = 0; i < new_rank; i++)
-                    {
-                        attr_offset_to_add += pg_sizes[i];
-                        var_offset_to_add += pg_sizes[i];
-                        pg_offset_to_add += pg_sizes[i];
-                    }
-
-                    adios_mpi_amr_add_offset (pg_offset_to_add, var_offset_to_add,
-                                              attr_offset_to_add, md->index);
+                    fd->current_pg->pg_start_in_file += pg_sizes[i];
                 }
 
-                // pg_sizes, disp are no longer needed from this point on.
                 FREE (pg_sizes);
                 FREE (disp);
             }
 
+            // build index appending to any existing index
+            //printf ("rank %d: Build index with PG offset %llu\n", md->rank, fd->current_pg->pg_start_in_file);
+            adios_build_index_v1 (fd, md->index);
+
             // if collective, gather the indexes from the rest and call
             if (md->group_comm != MPI_COMM_NULL)
             {
@@ -2359,12 +1799,12 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                     uint32_t size = 0, total_size = 0;
                     int i;
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, md->g_comm1
                                );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < new_group_size; i++)
                     {
@@ -2374,12 +1814,12 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                     recv_buffer = malloc (total_size);
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, md->g_comm1
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = md->b.buff;
                     uint64_t buffer_size_save = md->b.length;
@@ -2420,7 +1860,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                          ,0, md->index);
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&buffer_size, 1, MPI_INT, 0, 0, MPI_INT
                                ,0, md->g_comm1
                                );
@@ -2428,7 +1868,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->g_comm1
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
 
@@ -2458,29 +1898,26 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                 adios_write_version_flag_v1 (&buffer, &buffer_size, &buffer_offset, flag);
 
-                if (fd->shared_buffer == adios_flag_yes)
-                {
-                    index_start = -1;
-                    total_data_size1 = buffer_offset;
+                index_start = -1;
+                total_data_size1 = buffer_offset;
 
-                    write_thread_data.fh = &md->fh;
-                    write_thread_data.base_offset = &index_start;
-                    write_thread_data.aggr_buff = buffer;
-                    write_thread_data.total_data_size = &total_data_size1;
+                write_thread_data.fh = &md->fh;
+                write_thread_data.base_offset = &index_start;
+                write_thread_data.aggr_buff = buffer;
+                write_thread_data.total_data_size = &total_data_size1;
 
-                    if (md->g_threading)
-                    {
-                        pthread_create (&md->g_swt, NULL
-                                       ,adios_mpi_amr_do_write_thread
-                                       ,(void *) &write_thread_data
-                                       );
-                    }
-                    else
-                    {
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-                        adios_mpi_amr_do_write_thread ((void *) &write_thread_data); 
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-                    }
+                if (md->g_threading)
+                {
+                    pthread_create (&md->g_swt, NULL
+                            ,adios_mpi_amr_do_write_thread
+                            ,(void *) &write_thread_data
+                            );
+                }
+                else
+                {
+                    START_TIMER (ADIOS_TIMER_IO);
+                    adios_mpi_amr_do_write_thread ((void *) &write_thread_data); 
+                    STOP_TIMER (ADIOS_TIMER_IO);
                 }
             }
 
@@ -2496,12 +1933,12 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                         char * recv_buffer = 0;
                         uint32_t size = 0, total_size = 0;
 
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
                         MPI_Gather (&size, 1, MPI_INT
                                    ,index_sizes, 1, MPI_INT
                                    ,0, md->g_comm2
                                    );
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
 
                         for (i = 0; i < new_group_size2; i++)
                         {
@@ -2511,12 +1948,12 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                         recv_buffer = malloc (total_size);
 
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
                         MPI_Gatherv (&size, 0, MPI_BYTE
                                     ,recv_buffer, index_sizes, index_offsets
                                     ,MPI_BYTE, 0, md->g_comm2
                                     );
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
 
                         char * buffer_save = md->b.buff;
                         uint64_t buffer_size_save = md->b.length;
@@ -2561,7 +1998,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                         adios_write_index_v1 (&buffer2, &buffer_size2, &buffer_offset2
                                              ,0, md->index);
  
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
                         MPI_Gather (&buffer_size2, 1, MPI_INT
                                    ,0, 0, MPI_INT
                                    ,0, md->g_comm2
@@ -2570,7 +2007,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                                     ,0, 0, 0, MPI_BYTE
                                     ,0, md->g_comm2
                                     );
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
 
                         if (buffer2)
                         {
@@ -2605,14 +2042,14 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                                                 ,flag
                                                 );
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
+                    START_TIMER (ADIOS_TIMER_GLOBALMD);
                     adios_mpi_amr_striping_unit_write(
                                       md->mfh,
                                       -1,
                                       global_index_buffer,
                                       global_index_buffer_offset
                                       );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
+                    STOP_TIMER (ADIOS_TIMER_GLOBALMD);
 
                     if (global_index_buffer)
                     {
@@ -2679,6 +2116,7 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
     }
 
     adios_clear_index_v1 (md->index);
+    adios_buffer_struct_clear (&md->b);
     return;
 }
 
@@ -2688,7 +2126,6 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
 {
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
-    struct adios_attribute_struct * a = fd->group->attributes;
 
     struct adios_index_process_group_struct_v1 * new_pg_root = 0;
     struct adios_index_var_struct_v1 * new_vars_root = 0;
@@ -2702,8 +2139,9 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                         "Only \"w\" mode is supported by MPI_AMR Aggregation IO\n");
             break;
         }
-        case adios_mode_append:
         case adios_mode_write:
+        case adios_mode_append:
+        case adios_mode_update:
         {
             char * buffer = 0;
             uint64_t buffer_size = 0;
@@ -2715,7 +2153,7 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
             int i, new_rank, new_group_size, new_rank2, new_group_size2;
             uint64_t total_data_size = 0, total_data_size1 = 0;;
 
-            START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+            START_TIMER (ADIOS_TIMER_COMM);
             //MPI_Comm_split (md->group_comm, md->g_color1, md->rank, &new_comm);
             MPI_Comm_rank (md->g_comm1, &new_rank);
             MPI_Comm_size (md->g_comm1, &new_group_size);
@@ -2723,177 +2161,11 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
             //MPI_Comm_split (md->group_comm, md->g_color2, md->rank, &new_comm2);
             MPI_Comm_rank (md->g_comm2, &new_rank2);
             MPI_Comm_size (md->g_comm2, &new_group_size2);
-            STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                MPI_Offset new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                MPI_File_get_position (md->fh, &new_off);
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-
-                uint64_t count;
-                if (is_aggregator(md->rank))
-                {
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-                    count = adios_mpi_amr_striping_unit_write(
-                                   md->fh
-                                  ,md->vars_start
-                                  ,fd->buffer
-                                  ,md->vars_header_size
-                                  );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-
-                    if (count != md->vars_header_size)
-                    {
-                        log_warn ("d:MPI_AMR method tried to write %llu, only wrote %llu\n",
-                                md->vars_header_size, count);
-                    }
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&md->b);
-
-                adios_write_open_attributes_v1 (fd);
-                md->vars_start = new_off;
-                md->vars_header_size = fd->offset;
-
-                MPI_File_seek (md->fh, new_off + md->vars_header_size
-                              ,MPI_SEEK_SET
-                              ); // go back to end, but after attr header
-
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-
-                        int bytes_written[new_group_size];
-                        int disp[new_group_size];
-                        int total_size = 0;
-                        void * aggr_buff;
-
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        MPI_Gather (&fd->bytes_written, 1, MPI_INT
-                                ,bytes_written, 1, MPI_INT
-                                ,0, md->g_comm1
-                                );
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-                        disp[0] = 0;
-                        for (i = 1; i < new_group_size; i++)
-                        {
-                            disp[i] = disp[i - 1] + bytes_written[i - 1];
-                        }
-                        total_size += disp[new_group_size - 1]
-                            + bytes_written[new_group_size - 1];
-
-                        if (is_aggregator(md->rank))
-                        {
-                            aggr_buff = malloc (total_size);
-                            if (aggr_buff == 0)
-                            {
-                                adios_error (err_no_memory, 
-                                        "MPI_AMR method (AG): Cannot allocate aggregation buffer.\n"
-                                        "Need to increase the number of aggregators.\n"
-                                        );
-                                return;
-                            }
-                        }
+            STOP_TIMER (ADIOS_TIMER_COMM);
 
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        MPI_Gatherv (fd->buffer, fd->bytes_written, MPI_BYTE
-                                ,aggr_buff, bytes_written, disp, MPI_BYTE
-                                ,0, md->g_comm1);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-                        if (is_aggregator (md->rank))
-                        {
-                            START_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-                            count = adios_mpi_amr_striping_unit_write(
-                                    md->fh,
-                                    -1,
-                                    aggr_buff, //fd->buffer,
-                                    total_size //fd->bytes_written,
-                                    );
-                            STOP_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-
-                            if (count != total_size)
-                            {
-                                log_warn ("e:MPI_AMR method tried to write %llu, only wrote %llu\n",
-                                        fd->bytes_written, count);
-                            }
-                        }
-
-                        // Broadcast new offsets to all processors in the communicator.
-                        uint64_t new_offsets[new_group_size];
-
-                        if (is_aggregator (md->rank))
-                        {
-                            new_offsets[0] = a->write_offset;
-                            for (i = 1; i < new_group_size; i++)
-                            {
-                                new_offsets[i] = new_offsets[i - 1] + bytes_written[i - 1];
-                            }
-                        }
-
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                        MPI_Bcast (new_offsets, new_group_size, MPI_LONG_LONG, 0, md->g_comm1);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-
-                        a->write_offset = new_offsets[new_rank];
-
-                        fd->base_offset += count;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&md->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-
-                // fd->vars_start gets updated with the size written
-                if (is_aggregator(md->rank))
-                {
-                    *(uint16_t *)fd->buffer = *(uint16_t *)fd->buffer * new_group_size;
-
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-                    count = adios_mpi_amr_striping_unit_write(
-                                  md->fh,
-                                  md->vars_start,
-                                  fd->buffer,
-                                  md->vars_header_size
-                                  );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
-
-                    if (count != md->vars_header_size)
-                    {
-                        log_warn ("f:MPI_AMR method tried to write %llu, only wrote %llu\n",
-                                  md->vars_header_size, count);
-                    }
-                }
-
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                MPI_File_seek (md->fh, fd->base_offset, MPI_SEEK_SET);
-            }
 
             // if not merge PG's on the aggregator side
-            if (fd->shared_buffer == adios_flag_yes && !md->g_merging_pgs)
+            if (!md->g_merging_pgs)
             {
                 uint64_t pg_size;
 
@@ -2915,19 +2187,22 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                     return;
                 }
 
-                START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                START_TIMER (ADIOS_TIMER_COMM);
                 MPI_Allgather (&pg_size, 1, MPI_UNSIGNED_LONG_LONG
                               ,pg_sizes, 1, MPI_UNSIGNED_LONG_LONG
                               ,md->g_comm1);
-                STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                STOP_TIMER (ADIOS_TIMER_COMM);
 
                 disp[0] = 0;
+                //if (md->rank==0) fprintf (stderr, "rank %d: pg_size[0]=%llu ", md->rank, pg_sizes[0]); 
                 for (i = 1; i < new_group_size; i++)
                 {
                     disp[i] = disp[i - 1] + pg_sizes[i - 1];
+                    //if (md->rank==0) fprintf (stderr, "pg_size[%d]=%llu ", i, pg_sizes[i]); 
                 }
                 total_data_size = disp[new_group_size - 1]
                                 + pg_sizes[new_group_size - 1];
+                //if (md->rank==0) fprintf (stderr, "total=%llu\n", total_data_size); 
 
                 if (is_aggregator (md->rank))
                 {
@@ -2946,48 +2221,54 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                 {
                 }
 
-                START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                START_TIMER (ADIOS_TIMER_COMM);
                 // This needs to be changed in the future to support > 2 GB data.
-                // The compile warning is kept here as a reminder. Q. Liu
-                MPI_Gatherv (fd->buffer, pg_size, MPI_BYTE
-                            ,aggr_buff, pg_sizes, disp, MPI_BYTE
+                int * int_pg_sizes = (int*) malloc (new_group_size * sizeof(int));
+                int * int_disp = (int*) malloc (new_group_size * sizeof(int));
+                int int_total_data_size = (int) total_data_size;
+                for (i = 0; i < new_group_size; i++)
+                {
+                    int_pg_sizes[i] = pg_sizes[i];
+                    int_disp[i] = disp[i];
+                }
+                if (total_data_size != (uint64_t) int_total_data_size)
+                {
+                    adios_error (err_unspecified, 
+                            "MPI_AGGRGATE with aggregate_type=1 does not handle >2GB buffers. "
+                            "If each process writes less than 2GB, then increase the number of aggregators "
+                            "so that the total data size on each aggregator is still < 2GB. "
+                            "If some process has more than 2GB data, use aggregate_type=2 "
+                            "(the default aggregation method)."
+                            );
+                }
+                MPI_Gatherv (fd->buffer, (int)pg_size, MPI_BYTE
+                            ,aggr_buff, int_pg_sizes, int_disp, MPI_BYTE
                             ,0, md->g_comm1);
-                STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                STOP_TIMER (ADIOS_TIMER_COMM);
             }
-
-            // Merge PG's on the aggregator side
-            if (fd->shared_buffer == adios_flag_yes && md->g_merging_pgs)
+            else 
             {
+                // Merge PG's on the aggregator side
                 log_warn ("MPI_AMR method (AG): Merging process blocks is not supported yet\n");
             }
 
-            // build index appending to any existing index
-            adios_build_index_v1 (fd, md->index);
-
-            if (fd->shared_buffer == adios_flag_yes && !md->g_merging_pgs)
+            /* Before building index, determine the actual offset where this PG starts */
+            fd->current_pg->pg_start_in_file = md->b.pg_index_offset; // aggregator's starting offset (!0 on append)
+            if (!md->g_merging_pgs)
             {
-                if (!is_aggregator(md->rank))
+                for (i = 0; i < new_rank; i++)
                 {
-                    uint64_t var_offset_to_add = md->b.pg_index_offset;
-                    uint64_t attr_offset_to_add = md->b.pg_index_offset;
-                    uint64_t pg_offset_to_add = md->b.pg_index_offset;
-
-                    for (i = 0; i < new_rank; i++)
-                    {
-                        attr_offset_to_add += pg_sizes[i];
-                        var_offset_to_add += pg_sizes[i];
-                        pg_offset_to_add += pg_sizes[i];
-                    }
-
-                    adios_mpi_amr_add_offset (pg_offset_to_add, var_offset_to_add,
-                                              attr_offset_to_add, md->index);
+                    fd->current_pg->pg_start_in_file += pg_sizes[i];
                 }
 
-                // pg_sizes, disp are no longer needed from this point on.
-                free (pg_sizes);
-                free (disp);
+                FREE (pg_sizes);
+                FREE (disp);
             }
 
+            // build index appending to any existing index
+            //fprintf (stderr,"rank %d: Build index with PG offset %llu\n", md->rank, fd->current_pg->pg_start_in_file);
+            adios_build_index_v1 (fd, md->index);
+
             // if collective, gather the indexes from the rest and call
             if (md->group_comm != MPI_COMM_NULL)
             {
@@ -3000,27 +2281,39 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                     uint32_t size = 0, total_size = 0;
                     int i;
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, md->g_comm1
                                );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
+                    //if (md->rank==0) fprintf (stderr, "rank %d: ", md->rank);
                     for (i = 0; i < new_group_size; i++)
                     {
                         index_offsets [i] = total_size;
                         total_size += index_sizes [i];
+                        //if (md->rank==0) fprintf (stderr, "index_sizes[%d]=%d ", i, index_sizes[i]); 
                     } 
+                    //if (md->rank==0) fprintf (stderr, " total index size=%u\n", total_size);
+
+                    /*DEBUG if (md->rank==0) {
+                        fprintf (stderr, "rank %d: ", md->rank);
+                        for (i = 0; i < new_group_size; i++)
+                        {
+                            fprintf (stderr, "index_offsets[%d]=%d ", i, index_offsets[i]); 
+                        } 
+                        fprintf (stderr, " total index size=%u: ", total_size);
+                    }*/
 
                     recv_buffer = malloc (total_size);
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, md->g_comm1
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = md->b.buff;
                     uint64_t buffer_size_save = md->b.length;
@@ -3060,15 +2353,17 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                          ,0, md->index);
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                    MPI_Gather (&buffer_size, 1, MPI_INT, 0, 0, MPI_INT
+                    //fprintf (stderr, "rank %d: buffer size = %llu buffer offset=%llu\n", md->rank, buffer_size, buffer_offset);
+                    START_TIMER (ADIOS_TIMER_COMM);
+                    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
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
 
@@ -3077,11 +2372,8 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
             {
                 uint32_t flag = 0;
 #if 0
-                if (fd->shared_buffer == adios_flag_yes)
-                {
-                    pthread_join (t, NULL);
-                    FREE (aggr_buff);
-                }
+                pthread_join (t, NULL);
+                FREE (aggr_buff);
 
                 MPI_File_get_position (md->fh, (MPI_Offset *)&index_start);
 #endif
@@ -3089,7 +2381,8 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                 index_start  = md->b.pg_index_offset; // = end of PGs of previous timesteps
                 index_start += total_data_size; //old index start before append + currently written PGs
                 /*DEBUG*/
-                /*log_warn ("rank %d: write index start=%llu  pg_index_offset=%llu  total_data_size=%u\n", 
+                /*
+                fprintf (stderr, "rank %d: write index start=%llu  pg_index_offset=%llu  total_data_size=%llu\n", 
                         md->rank, index_start, md->b.pg_index_offset, total_data_size);
                 struct adios_index_process_group_struct_v1 *pg_root = md->index->pg_root;
                 i=0;
@@ -3099,46 +2392,49 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                     i++;
                 }*/
 
+                //fprintf (stderr, "rank %d: Before write_index: buffer size = %llu buffer offset=%llu\n", 
+                //                  md->rank, buffer_size, buffer_offset);
                 adios_write_index_v1 (&buffer, &buffer_size
                                      ,&buffer_offset, index_start
                                      ,md->index);
+                //fprintf (stderr, "rank %d: After write_index: buffer size = %llu buffer offset=%llu\n", 
+                //                  md->rank, buffer_size, buffer_offset);
 //FIXME
                 //adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset, flag);
                 adios_write_version_flag_v1 (&buffer, &buffer_size, &buffer_offset, flag);
 
-                if (fd->shared_buffer == adios_flag_yes)
-                {
-                    aggr_buff = realloc (aggr_buff, total_data_size + buffer_offset);
-                    memcpy (aggr_buff + total_data_size, buffer, buffer_offset); 
+                aggr_buff = realloc (aggr_buff, total_data_size + buffer_offset);
+                memcpy (aggr_buff + total_data_size, buffer, buffer_offset); 
 
-                    // Waiting for the subfile to open if pthread is enabled
-                    if (md->g_threading)
-                    {
-                        pthread_join (md->g_sot, NULL);
-                    }
+                // Waiting for the subfile to open if pthread is enabled
+                if (md->g_threading)
+                {
+                    pthread_join (md->g_sot, NULL);
+                }
 
-                    index_start1 = fd->pg_start_in_file;
-                    total_data_size1 = total_data_size + buffer_offset;
+                index_start1 = md->b.pg_index_offset; // starting point to write data at this moment
+                total_data_size1 = total_data_size + buffer_offset;
+                //fprintf (stderr,"rank %d: Write index+data with PG offset %llu, sizes %llu + %llu = %llu bytes\n", 
+                //        md->rank, index_start1, total_data_size, buffer_offset, total_data_size1);
 
-                    write_thread_data.fh = &md->fh;
-                    write_thread_data.base_offset = &index_start1;
-                    write_thread_data.aggr_buff = aggr_buff;
-                    write_thread_data.total_data_size = &total_data_size1;
+                write_thread_data.fh = &md->fh;
+                write_thread_data.base_offset = &index_start1;
+                write_thread_data.aggr_buff = aggr_buff;
+                write_thread_data.total_data_size = &total_data_size1;
 
-                    // Threading the write so that we can overlap write with index collection.
-                    if (md->g_threading)
-                    {
-                        pthread_create (&md->g_swt, NULL
-                                       ,adios_mpi_amr_do_write_thread
-                                       ,(void *) &write_thread_data
-                                       );
-                    }
-                    else
-                    {
-                        START_TIMER (ADIOS_TIMER_MPI_AMR_IO);
-                        adios_mpi_amr_do_write_thread ((void *) &write_thread_data);
-                        STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
-                    }
+                // Threading the write so that we can overlap write with index collection.
+                if (md->g_threading)
+                {
+                    pthread_create (&md->g_swt, NULL
+                            ,adios_mpi_amr_do_write_thread
+                            ,(void *) &write_thread_data
+                            );
+                }
+                else
+                {
+                    START_TIMER (ADIOS_TIMER_IO);
+                    adios_mpi_amr_do_write_thread ((void *) &write_thread_data);
+                    STOP_TIMER (ADIOS_TIMER_IO);
                 }
 #if 0
                 adios_mpi_amr_striping_unit_write(
@@ -3160,12 +2456,12 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                     char * recv_buffer = 0;
                     uint32_t size = 0, total_size = 0;
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, md->g_comm2
                                );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < new_group_size2; i++)
                     {
@@ -3175,12 +2471,12 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
 
                     recv_buffer = malloc (total_size);
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, md->g_comm2
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = md->b.buff;
                     uint64_t buffer_size_save = md->b.length;
@@ -3225,7 +2521,7 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                     adios_write_index_v1 (&buffer2, &buffer_size2, &buffer_offset2
                                          ,0, md->index);
 
-                    START_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&buffer_size2, 1, MPI_INT
                                ,0, 0, MPI_INT
                                ,0, md->g_comm2
@@ -3234,7 +2530,7 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->g_comm2
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_AMR_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     if (buffer2)
                     {
@@ -3281,14 +2577,14 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                               ,MPI_INFO_NULL, &m_file
                               );
 #endif
-                START_TIMER (ADIOS_TIMER_MPI_AMR_MD);
+                START_TIMER (ADIOS_TIMER_GLOBALMD);
                 adios_mpi_amr_striping_unit_write(
                                   md->mfh,
                                   -1,
                                   global_index_buffer,
                                   global_index_buffer_offset
                                   );
-                STOP_TIMER (ADIOS_TIMER_MPI_AMR_MD);
+                STOP_TIMER (ADIOS_TIMER_GLOBALMD);
 
                 if (global_index_buffer)
                 {
@@ -3361,11 +2657,23 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
     adios_clear_index_v1 (md->index);
 }
 
+void adios_mpi_amr_buffer_overflow (struct adios_file_struct * fd, 
+                                    struct adios_method_struct * method)
+{
+    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
+                                                 method->method_data;
+    adios_error (err_buffer_overflow, 
+            "rank %d: MPI_AGGREGATE method only works with complete buffering of data between adios_open() "
+            "and adios_close(). Portions of global arrays, that do not fit into the "
+            "buffer on some processors will not be written by this method to %s\n", 
+            md->rank, fd->name);
+}
+
 void adios_mpi_amr_close (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
 {
-    START_TIMER (ADIOS_TIMER_MPI_AMR_AD_CLOSE);
+    START_TIMER (ADIOS_TIMER_AD_CLOSE);
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
     if (md->g_io_type == ADIOS_MPI_AMR_IO_AG)
@@ -3383,7 +2691,7 @@ void adios_mpi_amr_close (struct adios_file_struct * fd
                 md->g_io_type);
         return;
     }
-    STOP_TIMER (ADIOS_TIMER_MPI_AMR_AD_CLOSE);
+    STOP_TIMER (ADIOS_TIMER_AD_CLOSE);
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 
@@ -3404,6 +2712,7 @@ void adios_mpi_amr_finalize (int mype, struct adios_method_struct * method)
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
     adios_free_index_v1 (md->index);
+    adios_buffer_struct_clear (&md->b);
 
 #ifdef HAVE_FGR
     fgr_finalize ();
diff --git a/src/write/adios_mpi_bgq.c b/src/write/adios_mpi_bgq.c
index 9cdd39f..342a087 100644
--- a/src/write/adios_mpi_bgq.c
+++ b/src/write/adios_mpi_bgq.c
@@ -89,8 +89,6 @@ struct adios_MPI_data_struct
 
     struct adios_bp_buffer_struct_v1 b;
     struct adios_index_struct_v1 * index;
-    uint64_t vars_start;
-    uint64_t vars_header_size;
 
     int * g_is_aggregator;
     int g_num_aggregators;
@@ -499,92 +497,6 @@ void * adios_mpi_bgq_do_write_thread (void * param)
     return NULL;
 }
 
-static void adios_var_to_comm (const char * comm_name
-                              ,enum ADIOS_FLAG host_language_fortran
-                              ,void * data
-                              ,MPI_Comm * comm
-                              )
-{
-    if (data)
-    {
-        int t = *(int *) data;
-
-        if (!comm_name)
-        {
-            if (!t)
-            {
-                log_warn ("MPI_BGQ method: Communicator not provided and none "
-                        "listed in XML.  Defaulting to MPI_COMM_SELF\n");
-
-                *comm = MPI_COMM_SELF;
-            }
-            else
-            {
-                if (host_language_fortran == adios_flag_yes)
-                {
-                    *comm = MPI_Comm_f2c (t);
-                }
-                else
-                {
-                    *comm = *(MPI_Comm *) data;
-                }
-            }
-        }
-        else
-        {
-            if (!strcmp (comm_name, ""))
-            {
-                if (!t)
-                {
-                    log_warn ("MPI_BGQ method: Communicator not provided and none "
-                            "listed in XML.  Defaulting to MPI_COMM_SELF\n");
-
-                    *comm = MPI_COMM_SELF;
-                }
-                else
-                {
-                    if (host_language_fortran == adios_flag_yes)
-                    {
-                        *comm = MPI_Comm_f2c (t);
-                    }
-                    else
-                    {
-                        *comm = *(MPI_Comm *) data;
-                    }
-                }
-            }
-            else
-            {
-                if (!t)
-                {
-                    log_warn ("MPI_BGQ method: Communicator not provided but one is "
-                            "listed in XML.  Defaulting to MPI_COMM_WORLD\n");
-
-                    *comm = MPI_COMM_WORLD;
-                }
-                else
-                {
-                    if (host_language_fortran == adios_flag_yes)
-                    {
-                        *comm = MPI_Comm_f2c (t);
-                    }
-                    else
-                    {
-                        *comm = *(MPI_Comm *) data;
-                    }
-                }
-            }
-        }
-    }
-    else
-    {
-        log_warn ("MPI_BGQ method: Coordination-communication not provided. "
-                  "Using MPI_COMM_WORLD instead\n"
-                 );
-
-        *comm = MPI_COMM_WORLD;
-    }
-}
 
 void adios_mpi_bgq_init (const PairStruct * parameters
                          ,struct adios_method_struct * method
@@ -611,8 +523,6 @@ void adios_mpi_bgq_init (const PairStruct * parameters
     md->file_comm_rank = 0;
     md->file_comm_size = 0;
     md->index = adios_alloc_index_v1(1); // with hashtables;
-    md->vars_start = 0;
-    md->vars_header_size = 0;
 
     md->g_is_aggregator = 0;
     md->g_num_aggregators = 0;
@@ -621,7 +531,7 @@ void adios_mpi_bgq_init (const PairStruct * parameters
     md->n_partitions = 0;
     md->g_offsets = 0;
     md->open_thread_data = 0;
-    md->g_io_type = ADIOS_MPI_BGQ_IO_BG;
+    md->g_io_type = ADIOS_MPI_BGQ_IO_SIMPLE;
     md->g_have_mdf = 1;
 
     adios_buffer_struct_init (&md->b);
@@ -629,13 +539,14 @@ void adios_mpi_bgq_init (const PairStruct * parameters
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 // Indices for the timer object
-static int ADIOS_TIMER_MPI_BGQ_COMM = ADIOS_TIMING_MAX_USER_TIMERS + 0;
-static int ADIOS_TIMER_MPI_BGQ_IO = ADIOS_TIMING_MAX_USER_TIMERS + 1;
-static int ADIOS_TIMER_MPI_BGQ_MD = ADIOS_TIMING_MAX_USER_TIMERS + 2;
-static int ADIOS_TIMER_MPI_BGQ_AD_OPEN = ADIOS_TIMING_MAX_USER_TIMERS + 3;
-static int ADIOS_TIMER_MPI_BGQ_AD_SHOULD_BUFFER = ADIOS_TIMING_MAX_USER_TIMERS + 4;
-static int ADIOS_TIMER_MPI_BGQ_AD_WRITE = ADIOS_TIMING_MAX_USER_TIMERS + 4;
-static int ADIOS_TIMER_MPI_BGQ_AD_CLOSE = ADIOS_TIMING_MAX_USER_TIMERS + 6;
+static int ADIOS_TIMER_COMM         = ADIOS_TIMING_MAX_USER_TIMERS + 0;
+static int ADIOS_TIMER_IO           = ADIOS_TIMING_MAX_USER_TIMERS + 1;
+static int ADIOS_TIMER_LOCALMD      = ADIOS_TIMING_MAX_USER_TIMERS + 2;
+static int ADIOS_TIMER_GLOBALMD     = ADIOS_TIMING_MAX_USER_TIMERS + 3;
+static int ADIOS_TIMER_AD_OPEN      = ADIOS_TIMING_MAX_USER_TIMERS + 4;
+static int ADIOS_TIMER_AD_WRITE     = ADIOS_TIMING_MAX_USER_TIMERS + 5;
+static int ADIOS_TIMER_OVERFLOW     = ADIOS_TIMING_MAX_USER_TIMERS + 6;
+static int ADIOS_TIMER_AD_CLOSE     = ADIOS_TIMING_MAX_USER_TIMERS + 7;
 #endif
 
 int adios_mpi_bgq_open (struct adios_file_struct * fd
@@ -653,15 +564,16 @@ int adios_mpi_bgq_open (struct adios_file_struct * fd
     }
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
-    int timer_count = 7;
+    int timer_count = 8;
     char ** timer_names = (char**) malloc (timer_count * sizeof (char*) );
-    timer_names [0] = "Communication";
-    timer_names [1] = "I/O";
-    timer_names [2] = "Metadata";
-    timer_names [3] = "ad_open";
-    timer_names [4] = "ad_should_buffer";
-    timer_names [5] = "ad_write";
-    timer_names [6] = "ad_close";
+    timer_names [0] = "Communication   ";
+    timer_names [1] = "I/O             ";
+    timer_names [2] = "Local metadata  ";
+    timer_names [3] = "Global metadata ";
+    timer_names [4] = "adios_open()    ";
+    timer_names [5] = "adios_write()   ";
+    timer_names [6] = "adios_overflow()";
+    timer_names [7] = "adios_close()   ";
 
     // Ensure both timing objects exist
     // timing_obj should get created at every open
@@ -674,9 +586,10 @@ int adios_mpi_bgq_open (struct adios_file_struct * fd
         if (!fd->group->prev_timing_obj)
             fd->group->prev_timing_obj = adios_timing_create (timer_count, timer_names);
     }
+    free (timer_names);
 #endif
 
-    START_TIMER (ADIOS_TIMER_MPI_BGQ_AD_OPEN);
+    START_TIMER (ADIOS_TIMER_AD_OPEN);
 
     // The following code is BGQ specific
 #define UNIT_A 2
@@ -737,64 +650,22 @@ int adios_mpi_bgq_open (struct adios_file_struct * fd
     // to calculate stripe sizes from output sizes of the processes
     // before we can do an open for any of the modes
 
-    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_AD_OPEN);
-    return 1;
-}
-
-static
-void build_offsets (struct adios_bp_buffer_struct_v1 * b
-                   ,MPI_Offset * offsets, uint64_t size, char * group_name
-                   ,struct adios_index_process_group_struct_v1 * pg_root
-                   )
-{
-    while (pg_root)
-    {
-        if (!strcasecmp (pg_root->group_name, group_name))
-        {
-            MPI_Offset size = 0;
-
-            if (pg_root->next)
-            {
-                size = pg_root->next->offset_in_file - pg_root->offset_in_file;
-            }
-            else
-            {
-                size = b->pg_index_offset - pg_root->offset_in_file;
-            }
-
-            offsets [pg_root->process_id * 3] = pg_root->offset_in_file;
-            offsets [pg_root->process_id * 3 + 1] = size;
-            offsets [pg_root->process_id * 3 + 2] = b->version;
-        }
-
-        pg_root = pg_root->next;
-    }
-}
-
-enum ADIOS_FLAG adios_mpi_bgq_should_buffer (struct adios_file_struct * fd
-                                            ,struct adios_method_struct * method
-                                            )
-{
     int i;
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
     char * name, * name_no_path, * ch;
     char * d_name;
     int err;
     int sig;    // used for coordinating the MPI_File_open
     uint16_t flag;
 
-    START_TIMER (ADIOS_TIMER_MPI_BGQ_AD_SHOULD_BUFFER);
 
     name = malloc (strlen (method->base_path) + strlen (fd->name) + 1);
     sprintf (name, "%s%s", method->base_path, fd->name);
 
-    fd->base_offset = 0;
-
     switch (fd->mode)
     {
-        case adios_mode_append:
         case adios_mode_read:
+        case adios_mode_append:
+        case adios_mode_update:
         {
             adios_error (err_invalid_file_mode, "MPI_BGQ method: specified mode is not supported.\n");
             break;
@@ -802,14 +673,6 @@ enum ADIOS_FLAG adios_mpi_bgq_should_buffer (struct adios_file_struct * fd
 
         case adios_mode_write:
         {
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                adios_error (err_no_memory, "MPI_BGQ method: ADIOS buffer needs to be enlarged! "
-                                             "Currently don't support un-buffered writes.\n");
-                exit (1);
-                break;
-            }
-
             adios_mpi_bgq_set_aggregation_parameters (method->parameters, md);
 
             if (md->partition_id == 0 && md->file_comm_rank == 0)
@@ -852,150 +715,108 @@ enum ADIOS_FLAG adios_mpi_bgq_should_buffer (struct adios_file_struct * fd
 
             free (name_no_path);
 
-            if (fd->shared_buffer == adios_flag_yes)
-            {
-                // open subfiles. Everyone should do that, which is different
-                // from AMR method.
-                md->open_thread_data = (struct adios_MPI_thread_data_open *) malloc (sizeof (struct adios_MPI_thread_data_open));
-                md->open_thread_data->md = md;
-                md->open_thread_data->parameters = method->parameters;
-
-                adios_mpi_bgq_do_open_thread ((void *) md->open_thread_data);
-            }
-
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
-
-            if (md->group_comm != MPI_COMM_NULL)
-            {
-                if (md->file_comm_rank == 0)
-                {
-                    MPI_Offset * offsets = malloc (sizeof (MPI_Offset)
-                                                   * md->file_comm_size
-                                                  );
-
-                    // round up to GPFS block size (8 MiB)
-                    if (fd->write_size_bytes % BLOCK_UNIT)
-                    {
-                        offsets [0] =  (fd->write_size_bytes / BLOCK_UNIT + 1)
-                                     * BLOCK_UNIT;
-                    }
-                    else
-                    {
-                        offsets [0] = fd->write_size_bytes;
-                    }
-
-                    MPI_Gather (MPI_IN_PLACE, 1, MPI_LONG_LONG
-                               ,offsets, 1, MPI_LONG_LONG
-                               ,0, md->file_comm
-                               );
-
-                    uint64_t last_offset = offsets [0];
-                    offsets [0] = fd->base_offset;
-                    for (i = 1; i < md->file_comm_size; i++)
-                    {
-                        uint64_t this_offset = offsets [i];
-                        offsets [i] = offsets [i - 1] + last_offset;
-                        last_offset = this_offset;
-                    }
-
-                    md->b.pg_index_offset =   offsets [md->file_comm_size - 1]
-                                            + last_offset;
-                    MPI_Scatter (offsets, 1, MPI_LONG_LONG
-                                ,MPI_IN_PLACE, 1, MPI_LONG_LONG
-                                ,0, md->file_comm
-                                );
-
-                    fd->base_offset = offsets [0];
-                    fd->pg_start_in_file = fd->base_offset;
-
-                    free (offsets);
-                }
-                else
-                {
-                    MPI_Offset offset;
-                    if (fd->write_size_bytes % BLOCK_UNIT)
-                    {
-                        offset =  (fd->write_size_bytes / BLOCK_UNIT + 1)
-                                  * BLOCK_UNIT;
-                    }
-                    else
-                    {
-                        offset = fd->write_size_bytes;
-                    }
-
-                    MPI_Gather (&offset, 1, MPI_LONG_LONG
-                               ,0, 1, MPI_LONG_LONG
-                               ,0, md->file_comm
-                               );
-
-                    MPI_Scatter (0, 1, MPI_LONG_LONG
-                                ,&offset, 1, MPI_LONG_LONG
-                                ,0, md->file_comm
-                                );
-                    fd->base_offset = offset;
-                    fd->pg_start_in_file = fd->base_offset;
-                }
-            }
-            else
-            {
-                md->b.pg_index_offset = fd->write_size_bytes;
-            }
+            // open subfiles. Everyone should do that, which is different
+            // from AMR method.
+            md->open_thread_data = (struct adios_MPI_thread_data_open *) malloc (sizeof (struct adios_MPI_thread_data_open));
+            md->open_thread_data->md = md;
+            md->open_thread_data->parameters = method->parameters;
 
+            adios_mpi_bgq_do_open_thread ((void *) md->open_thread_data);
             break;
         }
 
         default:
         {
             adios_error (err_invalid_file_mode, "MPI_BGQ method: Unknown file mode requested: %d\n", fd->mode);
-
             free (name);
-
-            return adios_flag_no;
+            return 0;
         }
     }
 
     free (name);
 
-    if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
+    STOP_TIMER (ADIOS_TIMER_AD_OPEN);
+    return 1;
+}
+
+static void build_file_offsets (struct adios_MPI_data_struct *md,
+                                       struct adios_file_struct *fd)
+{
+    int i;
+    if (md->group_comm != MPI_COMM_NULL)
     {
-        uint64_t count;
-        // write the process group header
-        adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
+        if (md->file_comm_rank == 0)
+        {
+            MPI_Offset * offsets = malloc (sizeof (MPI_Offset) * md->file_comm_size);
+
+            // round up to GPFS block size (8 MiB)
+            if (fd->bytes_written % BLOCK_UNIT)
+                offsets [0] =  (fd->bytes_written / BLOCK_UNIT + 1) * BLOCK_UNIT;
+            else
+                offsets [0] = fd->bytes_written;
+
+            MPI_Gather (MPI_IN_PLACE, 1, MPI_LONG_LONG
+                    ,offsets, 1, MPI_LONG_LONG
+                    ,0, md->file_comm
+                    );
+
+            uint64_t last_pgsize = offsets [0];
+            offsets [0] = md->b.end_of_pgs; // = 0 or where to append to existing data (if append was supported)
+            for (i = 1; i < md->file_comm_size; i++)
+            {
+                uint64_t this_offset = offsets [i];
+                offsets [i] = offsets [i - 1] + last_pgsize;
+                last_pgsize = this_offset;
+            }
+
+            md->b.pg_index_offset =   offsets [md->file_comm_size - 1]
+                                    + last_pgsize;
+            MPI_Scatter (offsets, 1, MPI_LONG_LONG
+                    ,MPI_IN_PLACE, 1, MPI_LONG_LONG
+                    ,0, md->file_comm
+                    );
 
-        if (is_aggregator (md->rank))
+            fd->current_pg->pg_start_in_file = offsets[0];
+            free (offsets);
+        }
+        else
         {
-            count = adios_mpi_bgq_striping_unit_write(
-                                  md->fh
-                                 ,fd->base_offset
-                                 ,fd->buffer
-                                 ,fd->bytes_written
-                                 );
-            if (count != fd->bytes_written)
+            MPI_Offset offset[1];
+            if (fd->bytes_written % BLOCK_UNIT)
             {
-                log_warn ("a:MPI_BGQ method tried to write %llu, only wrote %llu\n", 
-                          fd->bytes_written, count);
+                offset[0] =  (fd->bytes_written / BLOCK_UNIT + 1)
+                    * BLOCK_UNIT;
             }
+            else
+            {
+                offset[0] = fd->bytes_written;
+            }
+
+            MPI_Gather (offset, 1, MPI_LONG_LONG
+                    ,0, 1, MPI_LONG_LONG
+                    ,0, md->file_comm
+                    );
+
+            MPI_Scatter (0, 1, MPI_LONG_LONG
+                    ,offset, 1, MPI_LONG_LONG
+                    ,0, md->file_comm
+                    );
+            fd->current_pg->pg_start_in_file = offset[0];
         }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-
-        // setup for writing vars
-        adios_write_open_vars_v1 (fd);
-        md->vars_start = fd->base_offset;
-        md->vars_header_size = fd->offset;
-        fd->base_offset += fd->offset;
-        MPI_File_seek (md->fh, md->vars_header_size, MPI_SEEK_CUR);
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
     }
+    else
+    {
+        md->b.pg_index_offset = fd->bytes_written;     
+        fd->current_pg->pg_start_in_file = md->b.end_of_pgs; // 0 or where to append to existing data
+    }
+}
 
-    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_AD_SHOULD_BUFFER);
 
-    return fd->shared_buffer;
+enum BUFFERING_STRATEGY adios_mpi_bgq_should_buffer (struct adios_file_struct * fd
+                                                    ,struct adios_method_struct * method
+                                                    )
+{
+    return stop_on_overflow;
 }
 
 void adios_mpi_bgq_write (struct adios_file_struct * fd
@@ -1006,7 +827,7 @@ void adios_mpi_bgq_write (struct adios_file_struct * fd
 {
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                       method->method_data;
-    START_TIMER (ADIOS_TIMER_MPI_BGQ_AD_WRITE);
+    START_TIMER (ADIOS_TIMER_AD_WRITE);
     if (v->got_buffer == adios_flag_yes)
     {
         if (data != v->data)  // if the user didn't give back the same thing
@@ -1024,11 +845,7 @@ void adios_mpi_bgq_write (struct adios_file_struct * fd
         }
     }
 
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        log_warn ("The ADIOS buffer in the XML is not large enough for buffering.\n");
-    }
-    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_AD_WRITE);
+    STOP_TIMER (ADIOS_TIMER_AD_WRITE);
 }
 
 void adios_mpi_bgq_get_write_buffer (struct adios_file_struct * fd
@@ -1227,6 +1044,7 @@ uint32_t adios_mpi_bgq_calculate_attributes_size (struct adios_file_struct * fd)
     return overhead;
 }
 
+
 void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                                  ,struct adios_method_struct * method
                                  )
@@ -1240,7 +1058,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
     struct adios_index_var_struct_v1 * new_vars_root = 0;
     struct adios_index_attribute_struct_v1 * new_attrs_root = 0;
 
-    START_TIMER (ADIOS_TIMER_MPI_BGQ_AD_CLOSE);
+    START_TIMER (ADIOS_TIMER_AD_CLOSE);
     switch (fd->mode)
     {
         case adios_mode_read:
@@ -1256,87 +1074,77 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = md->b.pg_index_offset, index_start1;
             int * disp = 0, * sendbuf = 0, * recvbuf = 0, * attr_sizes = 0;
             void * * recv_buff = 0;
             struct adios_MPI_thread_data_write write_thread_data;
             int i, max_data_size = 0, total_data_size = 0, total_data_size1 = 0;
             MPI_Comm new_comm2;
 
-            START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+            START_TIMER (ADIOS_TIMER_COMM);
             MPI_Comm_split (md->group_comm, md->file_comm_rank, md->rank, &new_comm2);
-            STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
-
-            if (fd->shared_buffer == adios_flag_yes)
+            STOP_TIMER (ADIOS_TIMER_COMM);
+
+            /* Write data block (PG) */
+            // if we need to write > 2 GB, need to do it in parts
+            // since count is limited to MAX_MPIWRITE_SIZE (signed 32-bit max).
+            uint64_t bytes_written = 0; 
+            int32_t to_write = 0; 
+            if (fd->bytes_written > MAX_MPIWRITE_SIZE)
             {    
-                // if we need to write > 2 GB, need to do it in parts
-                // since count is limited to MAX_MPIWRITE_SIZE (signed 32-bit max).
-                uint64_t bytes_written = 0; 
-                int32_t to_write = 0; 
-                if (fd->bytes_written > MAX_MPIWRITE_SIZE)
-                {    
-                    to_write = MAX_MPIWRITE_SIZE;
-                }    
-                else 
-                {    
-                    to_write = (int32_t) fd->bytes_written;
-                }    
-
-                if (fd->base_offset + fd->bytes_written > 
-                    fd->pg_start_in_file + fd->write_size_bytes) 
-                {    
-                    adios_error (err_out_of_bound, 
-                            "MPI_BGQ method, rank %d: size of buffered data exceeds pg bound.\n"
-                            "File is corrupted. Need to enlarge group size in adios_group_size().\n"
-                            "Group size=%llu, offset at end of variable buffer=%llu\n",
-                            md->rank, 
-                            fd->write_size_bytes,
-                            fd->base_offset - fd->pg_start_in_file + fd->bytes_written);
-                }    
-
-                START_TIMER (ADIOS_TIMER_MPI_BGQ_IO);
-                while (bytes_written < fd->bytes_written)
-                {
-                    // everyone writes their data
-                    MPI_File_seek (md->fh, fd->base_offset + bytes_written
-                                  ,MPI_SEEK_SET
-                                  );   
-                    int err = MPI_File_write (md->fh, fd->buffer + bytes_written
-                                         ,to_write, MPI_BYTE, &md->status
-                                         );
+                to_write = MAX_MPIWRITE_SIZE;
+            }    
+            else 
+            {    
+                to_write = (int32_t) fd->bytes_written;
+            }    
+
+            // figure out the offsets
+            // before writing out the buffer and build the index based on target offsets
+            build_file_offsets (md, fd);
+
+            START_TIMER (ADIOS_TIMER_IO);
+            while (bytes_written < fd->bytes_written)
+            {
+                // everyone writes their data
+                MPI_File_seek (md->fh, fd->current_pg->pg_start_in_file + bytes_written
+                        ,MPI_SEEK_SET
+                        );   
+                int err = MPI_File_write (md->fh, fd->buffer + bytes_written
+                        ,to_write, MPI_BYTE, &md->status
+                        );
 
-                    if (err != MPI_SUCCESS)
+                if (err != MPI_SUCCESS)
+                {
+                    char e [MPI_MAX_ERROR_STRING];
+                    int len = 0;
+                    memset (e, 0, MPI_MAX_ERROR_STRING);
+                    MPI_Error_string (err, e, &len);
+                    adios_error (err_write_error,
+                            "MPI_BGQ method, rank %d: adios_close(): writing of buffered data "
+                            "[%llu..%llu] to file %s failed: '%s'\n",
+                            md->rank, bytes_written, bytes_written+to_write-1,
+                            fd->name, e);
+                }
+                bytes_written += to_write;
+                if (fd->bytes_written > bytes_written)
+                {
+                    if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
                     {
-                        char e [MPI_MAX_ERROR_STRING];
-                        int len = 0;
-                        memset (e, 0, MPI_MAX_ERROR_STRING);
-                        MPI_Error_string (err, e, &len);
-                        adios_error (err_write_error,
-                                "MPI_BGQ method, rank %d: adios_close(): writing of buffered data "
-                                "[%llu..%llu] to file %s failed: '%s'\n",
-                                md->rank, bytes_written, bytes_written+to_write-1,
-                                fd->name, e);
+                        to_write = MAX_MPIWRITE_SIZE;
                     }
-                    bytes_written += to_write;
-                    if (fd->bytes_written > bytes_written)
+                    else
                     {
-                        if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
-                        {
-                            to_write = MAX_MPIWRITE_SIZE;
-                        }
-                        else
-                        {
-                            to_write = fd->bytes_written - bytes_written;
-                        }
+                        to_write = fd->bytes_written - bytes_written;
                     }
                 }
-                STOP_TIMER (ADIOS_TIMER_MPI_BGQ_IO);
             }
+            STOP_TIMER (ADIOS_TIMER_IO);
 
+            /* Build the local index */
+            START_TIMER (ADIOS_TIMER_LOCALMD);
             // build index appending to any existing index
-            START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
             adios_build_index_v1 (fd, md->index);
-            STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+            STOP_TIMER (ADIOS_TIMER_LOCALMD);
 
             // if collective, gather the indexes from the rest and call
             if (md->group_comm != MPI_COMM_NULL)
@@ -1351,12 +1159,12 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                     uint32_t size = 0, total_size = 0;
                     int i;
 
-                    START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, md->file_comm
                                );
-                    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < md->file_comm_size; i++)
                     {
@@ -1367,18 +1175,18 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                     recv_buffer = malloc (total_size);
                     assert (recv_buffer);
 
-                    START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, md->file_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = md->b.buff;
                     uint64_t buffer_size_save = md->b.length;
                     uint64_t offset_save = md->b.offset;
 
-                    START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                    START_TIMER (ADIOS_TIMER_LOCALMD);
                     for (i = 1; i < md->file_comm_size; i++)
                     {
                         md->b.buff = recv_buffer + index_offsets [i];
@@ -1405,18 +1213,18 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                     free (recv_buffer);
                     free (index_sizes);
                     free (index_offsets);
-                    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                    STOP_TIMER (ADIOS_TIMER_LOCALMD);
                 }
                 else
                 {
-                    START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                    START_TIMER (ADIOS_TIMER_LOCALMD);
                     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                          ,0, md->index);
-                    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                    STOP_TIMER (ADIOS_TIMER_LOCALMD);
 
                     uint32_t temp_buffer_size = buffer_offset;
 
-                    START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
 /*
                     MPI_Gather ((uint32_t *)&buffer_size, 1, MPI_INT, 0, 0, MPI_INT
                                ,0, md->file_comm
@@ -1435,7 +1243,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->file_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
 
@@ -1443,21 +1251,13 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
             // out indexes in each subfile
             if (md->file_comm_rank == 0)
             {
-                uint32_t flag = 0;
                 int err;
 
-                START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
-                index_start = md->b.pg_index_offset;;
-
-                adios_write_index_v1 (&buffer, &buffer_size
-                                     ,&buffer_offset, index_start
-                                     ,md->index
-                                     );
+                START_TIMER (ADIOS_TIMER_LOCALMD);
+                uint64_t index_start = md->b.pg_index_offset;
 
-                adios_write_version_flag_v1 (&buffer, &buffer_size, &buffer_offset, flag);
                 adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                     ,index_start, md->index
-                                     );
+                                     ,index_start, md->index);
                 adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
                 MPI_File_seek (md->fh, md->b.pg_index_offset, MPI_SEEK_SET);
@@ -1499,7 +1299,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                             "of %llu bytes to file %s failed: '%s'\n",
                             md->rank, buffer_offset, fd->name, e);
                 }
-                STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                STOP_TIMER (ADIOS_TIMER_LOCALMD);
             }
 
             if (md->g_have_mdf)
@@ -1514,12 +1314,12 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                         char * recv_buffer = 0;
                         uint32_t size = 0, total_size = 0;
 
-                        START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
                         MPI_Gather (&size, 1, MPI_INT
                                    ,index_sizes, 1, MPI_INT
                                    ,0, new_comm2
                                    );
-                        STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
 
                         for (i = 0; i < md->n_partitions; i++)
                         {
@@ -1530,18 +1330,18 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                         recv_buffer = malloc (total_size);
                         assert (recv_buffer);
 
-                        START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
                         MPI_Gatherv (&size, 0, MPI_BYTE
                                     ,recv_buffer, index_sizes, index_offsets
                                     ,MPI_BYTE, 0, new_comm2
                                     );
-                        STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
 
                         char * buffer_save = md->b.buff;
                         uint64_t buffer_size_save = md->b.length;
                         uint64_t offset_save = md->b.offset;
 
-                        START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                        START_TIMER (ADIOS_TIMER_GLOBALMD);
                         for (i = 1; i < md->n_partitions; i++)
                         {
                             md->b.buff = recv_buffer + index_offsets [i];
@@ -1570,7 +1370,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                         free (recv_buffer);
                         free (index_sizes);
                         free (index_offsets);
-                        STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                        STOP_TIMER (ADIOS_TIMER_GLOBALMD);
                     }
                     else
                     {
@@ -1578,14 +1378,14 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                         uint64_t buffer_size2 = 0;
                         uint64_t buffer_offset2 = 0;
 
-                        START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                        START_TIMER (ADIOS_TIMER_GLOBALMD);
                         adios_write_index_v1 (&buffer2, &buffer_size2, &buffer_offset2
                                              ,0, md->index
                                              );
-                        STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                        STOP_TIMER (ADIOS_TIMER_GLOBALMD);
                         uint32_t temp_buffer_size2 = buffer_offset2;
 
-                        START_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                        START_TIMER (ADIOS_TIMER_COMM);
 /*
                         MPI_Gather (&buffer_size2, 1, MPI_INT
                                    ,0, 0, MPI_INT
@@ -1604,7 +1404,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                                     ,0, 0, 0, MPI_BYTE
                                     ,0, new_comm2
                                     );
-                        STOP_TIMER (ADIOS_TIMER_MPI_BGQ_COMM);
+                        STOP_TIMER (ADIOS_TIMER_COMM);
 
                         if (buffer2)
                         {
@@ -1626,7 +1426,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                     uint64_t global_index_start = 0;
                     uint16_t flag = 0;
 
-                    START_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                    START_TIMER (ADIOS_TIMER_GLOBALMD);
                     adios_write_index_v1 (&global_index_buffer, &global_index_buffer_size
                                          ,&global_index_buffer_offset, global_index_start
                                          ,md->index
@@ -1654,7 +1454,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
                         global_index_buffer_size = 0;
                         global_index_buffer_offset = 0;
                     }
-                    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_MD);
+                    STOP_TIMER (ADIOS_TIMER_GLOBALMD);
                 }
             }
 
@@ -1695,7 +1495,7 @@ void adios_mpi_bgq_simple_close (struct adios_file_struct * fd
     md->req = 0;
     memset (&md->status, 0, sizeof (MPI_Status));
 
-    STOP_TIMER (ADIOS_TIMER_MPI_BGQ_AD_CLOSE);
+    STOP_TIMER (ADIOS_TIMER_AD_CLOSE);
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 
@@ -1834,7 +1634,7 @@ void adios_mpi_bgq_bg_close (struct adios_file_struct * fd
 
                 if (is_aggregator (md->rank))
                 {
-                    index_start1 = 0;
+                    uint64_t index_start1 = 0;
                     for (i = 0; i < new_group_size; i++)
                     {
                         if (i + 1 < new_group_size)
@@ -2864,6 +2664,18 @@ void adios_mpi_bgq_ag_close (struct adios_file_struct * fd
     return;
 }
 
+void adios_mpi_bgq_buffer_overflow (struct adios_file_struct * fd, 
+                                    struct adios_method_struct * method)
+{
+    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
+                                                 method->method_data;
+    adios_error (err_buffer_overflow, 
+            "rank %d: MPI_BGQ method only works with complete buffering of data between adios_open() "
+            "and adios_close(). Portions of global arrays, that do not fit into the "
+            "buffer on some processors will not be written by this method to %s\n", 
+            md->rank, fd->name);
+}
+
 void adios_mpi_bgq_close (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
diff --git a/src/write/adios_mpi_lustre.c b/src/write/adios_mpi_lustre.c
index cbb5fa1..e65c267 100644
--- a/src/write/adios_mpi_lustre.c
+++ b/src/write/adios_mpi_lustre.c
@@ -17,11 +17,13 @@
 #include <mxml.h>
 
 #include "public/adios_mpi.h"
+#include "public/adios_error.h"
 #include "core/adios_transport_hooks.h"
 #include "core/adios_bp_v1.h"
 #include "core/adios_internals.h"
 #include "core/buffer.h"
 #include "core/util.h"
+#include "core/adios_logger.h"
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 #define START_TIMER(t) adios_timing_go (fd->group->timing_obj, (t) ) 
@@ -45,6 +47,7 @@ struct adios_MPI_data_struct
     MPI_Request req;
     MPI_Status status;
     MPI_Comm group_comm;
+    MPI_Info info;      // set with base hints for Lustre
     int rank;
     int size;
 
@@ -205,21 +208,9 @@ struct obd_uuid {
         char uuid[40];
 };
 
-static void trim_spaces (char * str)
-{
-    char * t = str, * p = NULL;
-    while (*t != '\0')
-    {
-        if (*t == ' ')
-        {
-            p = t + 1;
-            strcpy (t, p);
-        }
-        else
-            t++;
-    }
 
-}
+#define LUSTRE_STRIPE_UNIT 65536
+
 
 static void
 adios_mpi_lustre_set_striping_unit(char *filename, char *parameters, struct adios_MPI_data_struct * md)
@@ -259,10 +250,7 @@ adios_mpi_lustre_set_striping_unit(char *filename, char *parameters, struct adio
     //num_ost = 0;
 #endif
 
-    temp_string = (char *) malloc (strlen (parameters) + 1);
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_count = strstr (temp_string, "stripe_count")) )
     {
         char * p = strchr (p_count, '=');
@@ -281,10 +269,9 @@ adios_mpi_lustre_set_striping_unit(char *filename, char *parameters, struct adio
         striping_count = 4;
 #endif
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "stripe_size")))
     {
         char * p = strchr (p_size, '=');
@@ -299,10 +286,9 @@ adios_mpi_lustre_set_striping_unit(char *filename, char *parameters, struct adio
         if (md->striping_unit <= 0)
             md->striping_unit = 1048576;
     }
+    free (temp_string);
 
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "stripe_offset")) )
     {
         char * p = strchr (p_size, '=');
@@ -317,8 +303,6 @@ adios_mpi_lustre_set_striping_unit(char *filename, char *parameters, struct adio
         // let Lustre manage stripe offset
         stripe_offset = -1;
     }
-
-
     free (temp_string);
 
     if (fd != -1) {
@@ -347,10 +331,7 @@ adios_mpi_lustre_set_block_unit(uint64_t *block_unit, char *parameters)
 {
     char *temp_string, *p_size;
 
-    temp_string = (char *) malloc (strlen (parameters) + 1);
-    strcpy (temp_string, parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (parameters);
     if ( (p_size = strstr (temp_string, "block_size")) )
     {
         char * p = strchr (p_size, '=');
@@ -506,6 +487,10 @@ void adios_mpi_lustre_init (const PairStruct * parameters
     md->fh = 0;
     md->req = 0;
     memset (&md->status, 0, sizeof (MPI_Status));
+    MPI_Info_create (&md->info);
+    MPI_Info_set (md->info, "romio_ds_read", "disable");
+    MPI_Info_set (md->info, "romio_ds_write", "disable");
+    MPI_Info_set (md->info, "ind_wr_buffer_size", "16777216");
     md->rank = 0;
     md->size = 0;
     md->group_comm = method->init_comm;//unused, adios_open sets current comm
@@ -518,14 +503,49 @@ void adios_mpi_lustre_init (const PairStruct * parameters
     adios_buffer_struct_init (&md->b);
 }
 
-#if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
+
+static
+void build_read_offsets (struct adios_bp_buffer_struct_v1 * b
+                        ,MPI_Offset * offsets, uint64_t size, char * group_name
+                        ,struct adios_index_struct_v1 * index
+                        )
+{
+    struct adios_index_process_group_struct_v1 * pg_root = index->pg_root;
+    while (pg_root)
+    {
+        if (!strcasecmp (pg_root->group_name, group_name))
+        {
+            MPI_Offset size = 0;
+
+            if (pg_root->next)
+            {
+                size = pg_root->next->offset_in_file - pg_root->offset_in_file;
+            }
+            else
+            {
+                size = b->pg_index_offset - pg_root->offset_in_file;
+            }
+
+            offsets [pg_root->process_id * 3] = pg_root->offset_in_file;
+            offsets [pg_root->process_id * 3 + 1] = size;
+            offsets [pg_root->process_id * 3 + 2] = b->version;
+        }
+
+        pg_root = pg_root->next;
+    }
+}
+
+
 // Indices for the timer object
-int ADIOS_TIMER_MPI_LUSTRE_COMM = ADIOS_TIMING_MAX_USER_TIMERS + 0;
-int ADIOS_TIMER_MPI_LUSTRE_IO = ADIOS_TIMING_MAX_USER_TIMERS + 1;
-int ADIOS_TIMER_MPI_LUSTRE_MD = ADIOS_TIMING_MAX_USER_TIMERS + 2;
-int ADIOS_TIMER_MPI_LUSTRE_AD_WRITE = ADIOS_TIMING_MAX_USER_TIMERS + 3;
-int ADIOS_TIMER_MPI_LUSTRE_AD_CLOSE = ADIOS_TIMING_MAX_USER_TIMERS + 4;
-int ADIOS_TIMER_MPI_LUSTRE_AD_SHOULD_BUFFER = ADIOS_TIMING_MAX_USER_TIMERS + 5;
+#if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
+static int ADIOS_TIMER_COMM         = ADIOS_TIMING_MAX_USER_TIMERS + 0;
+static int ADIOS_TIMER_IO           = ADIOS_TIMING_MAX_USER_TIMERS + 1;
+static int ADIOS_TIMER_LOCALMD      = ADIOS_TIMING_MAX_USER_TIMERS + 2;
+static int ADIOS_TIMER_GLOBALMD     = ADIOS_TIMING_MAX_USER_TIMERS + 3;
+static int ADIOS_TIMER_AD_OPEN      = ADIOS_TIMING_MAX_USER_TIMERS + 4;
+static int ADIOS_TIMER_AD_WRITE     = ADIOS_TIMING_MAX_USER_TIMERS + 5;
+//static int ADIOS_TIMER_AD_OVERFLOW  = ADIOS_TIMING_MAX_USER_TIMERS + 6;
+static int ADIOS_TIMER_AD_CLOSE     = ADIOS_TIMING_MAX_USER_TIMERS + 7;
 #endif
 
 
@@ -549,15 +569,17 @@ int adios_mpi_lustre_open (struct adios_file_struct * fd
     fd->group->process_id = md->rank;
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
-    int timer_count = 6;
+    int timer_count = 8;
     char ** timer_names = (char**) malloc (timer_count * sizeof (char*) );
-    timer_names [0] = "Communication";
-    timer_names [1] = "I/O";
-    timer_names [2] = "Metadata";
-    timer_names [3] = "ad_write";
-    timer_names [4] = "ad_close";
-    timer_names [5] = "ad_should_buffer";
-   
+    timer_names [0] = "Communication   ";
+    timer_names [1] = "I/O             ";
+    timer_names [2] = "Local metadata  ";
+    timer_names [3] = "Global metadata ";
+    timer_names [4] = "adios_open()    ";
+    timer_names [5] = "adios_write()   ";
+    timer_names [6] = "adios_overflow()";
+    timer_names [7] = "adios_close()   ";
+
 
     // Ensure both timing objects exist
     // timing_obj should get created at every open
@@ -570,55 +592,11 @@ int adios_mpi_lustre_open (struct adios_file_struct * fd
         if (!fd->group->prev_timing_obj)
             fd->group->prev_timing_obj = adios_timing_create (timer_count, timer_names);
     }
-
-
+    free (timer_names);
 #endif
 
-    // we have to wait for the group_size (should_buffer) 
-    // to calculate stripe sizes from output sizes of the processes
-    // before we can do an open for any of the modes
-
-    return 1;
-}
-
-static
-void build_offsets (struct adios_bp_buffer_struct_v1 * b
-                   ,MPI_Offset * offsets, uint64_t size, char * group_name
-                   ,struct adios_index_struct_v1 * index
-                   )
-{
-    struct adios_index_process_group_struct_v1 * pg_root = index->pg_root;
-    while (pg_root)
-    {
-        if (!strcasecmp (pg_root->group_name, group_name))
-        {
-            MPI_Offset size = 0;
-
-            if (pg_root->next)
-            {
-                size = pg_root->next->offset_in_file - pg_root->offset_in_file;
-            }
-            else
-            {
-                size = b->pg_index_offset - pg_root->offset_in_file;
-            }
-
-            offsets [pg_root->process_id * 3] = pg_root->offset_in_file;
-            offsets [pg_root->process_id * 3 + 1] = size;
-            offsets [pg_root->process_id * 3 + 2] = b->version;
-        }
-
-        pg_root = pg_root->next;
-    }
-}
+    START_TIMER (ADIOS_TIMER_AD_OPEN);
 
-enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
-                                        ,struct adios_method_struct * method
-                                        )
-{
-    int i;
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
     char * name;
     int err;
     int flag;    // used for coordinating the MPI_File_open
@@ -631,9 +609,6 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
     gettimeofday (&t21, NULL);
 #endif
 
-    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_AD_SHOULD_BUFFER);
-
-
     name = malloc (strlen (method->base_path) + strlen (fd->name) + 1);
     sprintf (name, "%s%s", method->base_path, fd->name);
 
@@ -644,9 +619,6 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
     previous = md->rank - 1;
     current = md->rank;
 
-    fd->base_offset = 0;
-
-#define LUSTRE_STRIPE_UNIT 65536
 
     switch (fd->mode)
     {
@@ -718,8 +690,7 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                               );
                 adios_parse_attributes_index_v1 (&md->b, &md->index->attrs_root);
 #endif
-
-                fd->base_offset = md->b.end_of_pgs;
+                // md->b.end_of_pgs points to the end of the last PG in file
             }
 
             if (   md->group_comm != MPI_COMM_NULL
@@ -734,9 +705,9 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                     memset (offsets, 0, sizeof (MPI_Offset) * md->size * 3);
 
                     // go through the pg index to build the offsets array
-                    build_offsets (&md->b, offsets, md->size
-                                  ,fd->group->name, md->index
-                                  );
+                    build_read_offsets (&md->b, offsets, md->size
+                                       ,fd->group->name, md->index
+                                       );
                     MPI_Scatter (offsets, 3, MPI_LONG_LONG
                                 ,MPI_IN_PLACE, 3, MPI_LONG_LONG
                                 ,0, md->group_comm
@@ -811,83 +782,10 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
 
         case adios_mode_write:
         {
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
 #if COLLECT_METRICS                     
             gettimeofday (&t16, NULL);
 #endif
 
-            if (md->group_comm != MPI_COMM_NULL)
-            {
-                if (md->rank == 0)
-                {
-                    MPI_Offset * offsets = malloc (  sizeof (MPI_Offset)
-                                                   * md->size
-                                                  );
-
-                    // round up to LUSTRE_STRIPE_UNIT (64KB)
-                    if (fd->write_size_bytes % LUSTRE_STRIPE_UNIT)
-                        offsets [0] =  (fd->write_size_bytes / LUSTRE_STRIPE_UNIT + 1)
-                                     * LUSTRE_STRIPE_UNIT;
-                    else
-                        offsets [0] = fd->write_size_bytes;
-
-                    MPI_Gather (MPI_IN_PLACE, 1, MPI_LONG_LONG
-                               ,offsets, 1, MPI_LONG_LONG
-                               ,0, md->group_comm
-                               );
-
-                    uint64_t last_offset = offsets [0];
-                    offsets [0] = fd->base_offset;
-                    for (i = 1; i < md->size; i++)
-                    {
-                        uint64_t this_offset = offsets [i];
-                        offsets [i] = offsets [i - 1] + last_offset;
-                        last_offset = this_offset;
-                    }
-                    // How to handle that each processor has varying amount of data??
-                    md->striping_unit = offsets[1] - offsets[0];
-                    if (md->striping_unit > 4 * 1024 * (uint64_t) (1024 * 1024L))
-                    {
-                        md->striping_unit = 4 * 1024 * (uint64_t) (1024 * 1024L);
-                    }
-
-                    md->b.pg_index_offset =   offsets [md->size - 1]
-                                            + last_offset;
-                    MPI_Scatter (offsets, 1, MPI_LONG_LONG
-                                ,MPI_IN_PLACE, 1, MPI_LONG_LONG
-                                ,0, md->group_comm
-                                );
-                    fd->base_offset = offsets [0];
-                    fd->pg_start_in_file = fd->base_offset;
-                    free (offsets);
-                }
-                else
-                {
-                    MPI_Offset offset;
-                    if (fd->write_size_bytes % LUSTRE_STRIPE_UNIT)
-                        offset =  (fd->write_size_bytes / LUSTRE_STRIPE_UNIT + 1)
-                                  * LUSTRE_STRIPE_UNIT;
-                    else
-                        offset = fd->write_size_bytes;
-
-                    MPI_Gather (&offset, 1, MPI_LONG_LONG
-                               ,0, 1, MPI_LONG_LONG
-                               ,0, md->group_comm
-                               );
-
-                    MPI_Scatter (0, 1, MPI_LONG_LONG
-                                ,&offset, 1, MPI_LONG_LONG
-                                ,0, md->group_comm
-                                );
-                    fd->base_offset = offset;
-                    fd->pg_start_in_file = fd->base_offset;
-                }
-            }
-            else
-            {
-                md->b.pg_index_offset = fd->write_size_bytes;
-            }
 
 #if COLLECT_METRICS
             gettimeofday (&t6, NULL);
@@ -959,36 +857,46 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
         }
 
         case adios_mode_append:
+        case adios_mode_update:
         {
             int old_file = 1;
             adios_buffer_struct_clear (&md->b);
 
-            err = MPI_File_open (MPI_COMM_SELF, name, MPI_MODE_RDONLY
-                                ,MPI_INFO_NULL, &md->fh
-                                );
-
-            if (err != MPI_SUCCESS)
+            if (md->group_comm == MPI_COMM_NULL || md->rank == 0)
             {
-                old_file = 0;
-                err = MPI_File_open (MPI_COMM_SELF, name
-                                    ,MPI_MODE_WRONLY | MPI_MODE_CREATE
-                                    ,MPI_INFO_NULL, &md->fh
+                err = MPI_File_open (MPI_COMM_SELF, name, MPI_MODE_RDONLY
+                                    ,md->info, &md->fh
                                     );
 
                 if (err != MPI_SUCCESS)
                 {
-                    char e [MPI_MAX_ERROR_STRING];
-                    int len = 0;
-                    memset (e, 0, MPI_MAX_ERROR_STRING);
-                    MPI_Error_string (err, e, &len);
-                    fprintf (stderr, "MPI open write failed for %s: '%s'\n"
-                            ,name, e
-                            );
-                    free (name);
+                    old_file = 0;
+                    MPI_File_close (&md->fh);
+                    err = MPI_File_open (MPI_COMM_SELF, name
+                                        ,MPI_MODE_WRONLY | MPI_MODE_CREATE
+                                        ,md->info, &md->fh
+                                        );
 
-                    return adios_flag_no;
+                    if (err != MPI_SUCCESS)
+                    {
+                        char e [MPI_MAX_ERROR_STRING];
+                        int len = 0;
+                        memset (e, 0, MPI_MAX_ERROR_STRING);
+                        MPI_Error_string (err, e, &len);
+                        fprintf (stderr, "MPI open write failed for %s: '%s'\n"
+                                ,name, e
+                                );
+                        free (name);
+
+                        return adios_flag_no;
+                    }
                 }
-                md->striping_unit = adios_mpi_lustre_get_striping_unit(md->fh, name);
+                MPI_Bcast (&old_file, 1, MPI_INT, 0, md->group_comm);
+            }
+            else
+            {
+                if (md->group_comm != MPI_COMM_NULL)
+                    MPI_Bcast (&old_file, 1, MPI_INT, 0, md->group_comm);
             }
 
             if (old_file)
@@ -1026,7 +934,9 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                     MPI_File_read (md->fh, md->b.buff, md->b.pg_size, MPI_BYTE
                                   ,&md->status
                                   );
+
                     adios_parse_process_group_index_v1 (&md->b ,&md->index->pg_root, &md->index->pg_tail);
+
                     // find the largest time index so we can append properly
                     struct adios_index_process_group_struct_v1 * p;
                     uint32_t max_time_index = 0;
@@ -1069,144 +979,26 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                                                     ,&md->index->attrs_root
                                                     );
 
-                    fd->base_offset = md->b.end_of_pgs;
-                    fd->pg_start_in_file = fd->base_offset;
+                    // remember the end of the last PG in file. The new PG written now
+                    // will have an offset updated from here. 
+                    // md->b.end_of_pgs points to this position
+
+                    MPI_File_close (&md->fh);
                 }
                 else
                 {
-                    fd->base_offset = 0;
-                    fd->pg_start_in_file = 0;
                     MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0
                               ,md->group_comm
                               );
                 }
-
-                MPI_File_close (&md->fh);
-            }
-            else
-            {
-                fd->base_offset = 0;
-                fd->pg_start_in_file = 0;
-            }
-#if 0
-            // cascade the opens to avoid trashing the metadata server
-            if (previous == -1)
-            {
-                // we know it exists, because we created it if it didn't
-                // when reading the old file so can just open wronly
-                // but adding the create for consistency with write mode
-                // so it is easier to merge write/append later
-                err = MPI_File_open (MPI_COMM_SELF, name
-                                    ,MPI_MODE_WRONLY | MPI_MODE_CREATE
-                                    ,MPI_INFO_NULL
-                                    ,&md->fh
-                                    );
-                md->striping_unit = adios_mpi_lustre_get_striping_unit(md->fh, name);
-                if (next != -1)
-                {
-                    MPI_Isend (&flag, 1, MPI_INT, next, current
-                              ,md->group_comm, &md->req
-                              );
-                }
             }
             else
             {
-                MPI_Recv (&flag, 1, MPI_INT, previous, previous
-                         ,md->group_comm, &md->status
-                         );
-                if (next != -1)
-                {
-                    MPI_Isend (&flag, 1, MPI_INT, next, current
-                              ,md->group_comm, &md->req
-                              );
-                }
-                err = MPI_File_open (MPI_COMM_SELF, name
-                                    ,MPI_MODE_WRONLY
-                                    ,MPI_INFO_NULL
-                                    ,&md->fh
-                                    );
-                md->striping_unit = adios_mpi_lustre_get_striping_unit(md->fh, name);
-            }
-
-            if (err != MPI_SUCCESS)
-            {
-                char e [MPI_MAX_ERROR_STRING];
-                int len = 0;
-                memset (e, 0, MPI_MAX_ERROR_STRING);
-                MPI_Error_string (err, e, &len);
-                fprintf (stderr, "MPI open write failed for %s: '%s'\n"
-                        ,name, e
-                        );
-                free (name);
-
-                return adios_flag_no;
-            }
-#endif
-            if (md->group_comm != MPI_COMM_NULL)
-            {
                 if (md->rank == 0)
-                {
-                    MPI_Offset * offsets = malloc (  sizeof (MPI_Offset)
-                                                   * md->size
-                                                  );
-
-                    if (fd->write_size_bytes % LUSTRE_STRIPE_UNIT)
-                        offsets [0] =  (fd->write_size_bytes / LUSTRE_STRIPE_UNIT + 1)
-                                     * LUSTRE_STRIPE_UNIT;
-                    else
-                        offsets [0] = fd->write_size_bytes;
-
-                    MPI_Gather (MPI_IN_PLACE, 1, MPI_LONG_LONG
-                               ,offsets, 1, MPI_LONG_LONG
-                               ,0, md->group_comm
-                               );
-
-                    uint64_t last_offset = offsets [0];
-                    offsets [0] = fd->base_offset;
-                    for (i = 1; i < md->size; i++)
-                    {
-                        uint64_t this_offset = offsets [i];
-                        offsets [i] = offsets [i - 1] + last_offset;
-                        last_offset = this_offset;
-                    }
-                    md->b.pg_index_offset =   offsets [md->size - 1]
-                                            + last_offset;
-                    MPI_Scatter (offsets, 1, MPI_LONG_LONG
-                                ,MPI_IN_PLACE, 1, MPI_LONG_LONG
-                                ,0, md->group_comm
-                                );
-                    fd->base_offset = offsets [0];
-                    fd->pg_start_in_file = fd->base_offset;
-                    free (offsets);
-                }
-                else
-                {
-                    MPI_Offset offset;
-                    if (fd->write_size_bytes % LUSTRE_STRIPE_UNIT)
-                        offset =  (fd->write_size_bytes / LUSTRE_STRIPE_UNIT + 1)
-                                     * LUSTRE_STRIPE_UNIT;
-                    else
-                        offset = fd->write_size_bytes;
-
-
-                    MPI_Gather (&offset, 1, MPI_LONG_LONG
-                               ,0, 1, MPI_LONG_LONG
-                               ,0, md->group_comm
-                               );
-
-                    MPI_Scatter (0, 1, MPI_LONG_LONG
-                                ,&offset, 1, MPI_LONG_LONG
-                                ,0, md->group_comm
-                                );
-                    fd->base_offset = offset;
-                    fd->pg_start_in_file = fd->base_offset;
-                }
-            }
-            else
-            {
-                md->b.pg_index_offset = fd->write_size_bytes;
+                    MPI_File_close (&md->fh);
             }
 
+
             // cascade the opens to avoid trashing the metadata server
             if (previous == -1)
             {   
@@ -1219,7 +1011,6 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                                     ,MPI_INFO_NULL
                                     ,&md->fh
                                     );
-                md->striping_unit = adios_mpi_lustre_get_striping_unit(md->fh, name);
                 if (next != -1)
                 {   
                     MPI_Isend (&flag, 1, MPI_INT, next, current
@@ -1243,7 +1034,6 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                                     ,MPI_INFO_NULL
                                     ,&md->fh
                                     );
-                md->striping_unit = adios_mpi_lustre_get_striping_unit(md->fh, name);
             }
 
             if (err != MPI_SUCCESS)
@@ -1260,12 +1050,15 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
                 return adios_flag_no;
             }
 
+            md->striping_unit = adios_mpi_lustre_get_striping_unit(md->fh, name);
             break;
         }
 
         default:
         {
-            fprintf (stderr, "Unknown file mode: %d\n", fd->mode);
+            adios_error (err_invalid_file_mode,
+                    "MPI method: Unknown file mode requested: %d\n",
+                    fd->mode);
 
             free (name);
 
@@ -1275,48 +1068,92 @@ enum ADIOS_FLAG adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
 
     free (name);
 
-    if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
+    STOP_TIMER (ADIOS_TIMER_AD_OPEN);
+
+#if COLLECT_METRICS
+    gettimeofday (&t22, NULL);
+#endif
+    return adios_flag_yes;
+}
+
+static void build_file_offsets (struct adios_MPI_data_struct *md,
+                               struct adios_file_struct *fd)
+{
+    int i;
+    if (md->group_comm != MPI_COMM_NULL)
     {
-        // write the process group header
-        adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
-
-        uint64_t count;
-        count = adios_mpi_lustre_striping_unit_write(
-                          md->fh,
-                          fd->base_offset,
-                          fd->buffer,
-                          fd->bytes_written,
-                          md->block_unit);
-        if (count != fd->bytes_written)
+        if (md->rank == 0)
         {
-            fprintf (stderr, "a:MPI method tried to write %llu, "
-                             "only wrote %llu\n"
-                    ,fd->bytes_written
-                    ,count
+            MPI_Offset * offsets = malloc (  sizeof (MPI_Offset) * md->size);
+
+            // round up to LUSTRE_STRIPE_UNIT (64KB)
+            if (fd->bytes_written % LUSTRE_STRIPE_UNIT)
+                offsets [0] =  (fd->bytes_written / LUSTRE_STRIPE_UNIT + 1) * LUSTRE_STRIPE_UNIT;
+            else
+                offsets [0] = fd->bytes_written;
+
+            MPI_Gather (MPI_IN_PLACE, 1, MPI_LONG_LONG
+                    ,offsets, 1, MPI_LONG_LONG
+                    ,0, md->group_comm
+                    );
+
+            uint64_t last_pgsize = offsets [0];
+            offsets [0] = md->b.end_of_pgs; // 0 or where to append to existing data
+            for (i = 1; i < md->size; i++)
+            {
+                uint64_t this_offset = offsets [i];
+                offsets [i] = offsets [i - 1] + last_pgsize;
+                last_pgsize = this_offset;
+            }
+            // How to handle that each processor has varying amount of data??
+            md->striping_unit = offsets[1] - offsets[0];
+            if (md->striping_unit > 4 * 1024 * (uint64_t) (1024 * 1024L))
+            {
+                md->striping_unit = 4 * 1024 * (uint64_t) (1024 * 1024L);
+            }
+
+            md->b.pg_index_offset =   offsets [md->size - 1]
+                                    + last_pgsize;
+
+            MPI_Scatter (offsets, 1, MPI_LONG_LONG
+                    ,MPI_IN_PLACE, 1, MPI_LONG_LONG
+                    ,0, md->group_comm
                     );
+            fd->current_pg->pg_start_in_file = offsets[0];
+            free (offsets);
         }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-
-        // setup for writing vars
-        adios_write_open_vars_v1 (fd);
-        md->vars_start = fd->base_offset;
-        md->vars_header_size = fd->offset;
-        fd->base_offset += fd->offset;
-        MPI_File_seek (md->fh, md->vars_header_size, MPI_SEEK_CUR);
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-    }
+        else
+        {
+            MPI_Offset offset[1];
+            if (fd->bytes_written % LUSTRE_STRIPE_UNIT)
+                offset[0] =  (fd->bytes_written / LUSTRE_STRIPE_UNIT + 1) * LUSTRE_STRIPE_UNIT;
+            else
+                offset[0] = fd->bytes_written;
 
-    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_AD_SHOULD_BUFFER);
+            MPI_Gather (offset, 1, MPI_LONG_LONG
+                    ,0, 1, MPI_LONG_LONG
+                    ,0, md->group_comm
+                    );
 
-#if COLLECT_METRICS
-    gettimeofday (&t22, NULL);
-#endif
-    return fd->shared_buffer;
+            MPI_Scatter (0, 1, MPI_LONG_LONG
+                    ,offset, 1, MPI_LONG_LONG
+                    ,0, md->group_comm
+                    );
+            fd->current_pg->pg_start_in_file = offset[0];
+        }
+    }
+    else
+    {
+        md->b.pg_index_offset = fd->bytes_written;
+        fd->current_pg->pg_start_in_file = md->b.end_of_pgs; // 0 or where to append to existing data
+    }
+}
+
+enum BUFFERING_STRATEGY adios_mpi_lustre_should_buffer (struct adios_file_struct * fd
+                                                       ,struct adios_method_struct * method
+                                                       )
+{
+    return stop_on_overflow;
 }
 
 void adios_mpi_lustre_write (struct adios_file_struct * fd
@@ -1325,10 +1162,7 @@ void adios_mpi_lustre_write (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
 {
-    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
-                                                      method->method_data;
-
-    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_AD_WRITE);
+    START_TIMER (ADIOS_TIMER_AD_WRITE);
 
 
     if (v->got_buffer == adios_flag_yes)
@@ -1348,59 +1182,7 @@ void adios_mpi_lustre_write (struct adios_file_struct * fd
         }
     }
 
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        // var payload sent for sizing information
-        adios_write_var_header_v1 (fd, v);
-
-        uint64_t count;
-        count = adios_mpi_lustre_striping_unit_write(
-                          md->fh,
-                          -1,
-                          fd->buffer,
-                          fd->bytes_written,
-                          md->block_unit);
-        if (count != fd->bytes_written)
-        {
-            fprintf (stderr, "b:MPI method tried to write %llu, "
-                             "only wrote %llu\n"
-                    ,fd->bytes_written
-                    ,count
-                    );
-        }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-
-        // write payload
-        // adios_write_var_payload_v1 (fd, v);
-        uint64_t var_size = adios_get_var_size (v, v->data);
-        if (fd->base_offset + var_size > fd->pg_start_in_file + fd->write_size_bytes) 
-            fprintf (stderr, "adios_mpi_write exceeds pg bound. File is corrupted. "
-                             "Need to enlarge group size. \n");
-        count = adios_mpi_lustre_striping_unit_write(
-                          md->fh,
-                          -1,
-                          v->data,
-                          var_size,
-                          md->block_unit);
-        if (count != var_size)
-        {
-            fprintf (stderr, "c:MPI method tried to write %llu, "
-                             "only wrote %llu\n"
-                    ,var_size
-                    ,count
-                    );
-        }
-        fd->base_offset += count;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&md->b);
-    }
-
-    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_AD_WRITE);
-
+    STOP_TIMER (ADIOS_TIMER_AD_WRITE);
 
 #if COLLECT_METRICS
     static int writes_seen = 0;
@@ -1440,7 +1222,7 @@ void adios_mpi_lustre_get_write_buffer (struct adios_file_struct * fd
         if (!*buffer)
         {
             adios_method_buffer_free (mem_allowed);
-            fprintf (stderr, "Out of memory allocating %llu bytes for %s\n"
+            fprintf (stderr, "Out of memory allocating %" PRIu64 " bytes for %s\n"
                     ,*size, v->name
                     );
             v->got_buffer = adios_flag_no;
@@ -1461,8 +1243,7 @@ void adios_mpi_lustre_get_write_buffer (struct adios_file_struct * fd
     else
     {
         adios_method_buffer_free (mem_allowed);
-        fprintf (stderr, "OVERFLOW: Cannot allocate requested buffer of %llu "
-                         "bytes for %s\n"
+        fprintf (stderr, "OVERFLOW: Cannot allocate requested buffer of %" PRIu64 " bytes for %s\n"
                 ,*size
                 ,v->name
                 );
@@ -1582,13 +1363,26 @@ static void adios_mpi_lustre_do_read (struct adios_file_struct * fd
     adios_buffer_struct_clear (&md->b);
 }
 
+
+void adios_mpi_lustre_buffer_overflow (struct adios_file_struct * fd, 
+                                       struct adios_method_struct * method)
+{
+    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
+                                                 method->method_data;
+    adios_error (err_buffer_overflow, 
+            "rank %d: MPI_LUSTRE method only works with complete buffering of data between adios_open() "
+            "and adios_close(). Portions of global arrays, that do not fit into the "
+            "buffer on some processors will not be written by this method to %s\n", 
+            md->rank, fd->name);
+}
+
 void adios_mpi_lustre_close (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
 {
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
-    struct adios_attribute_struct * a = fd->group->attributes;
+    //struct adios_attribute_struct * a = fd->group->attributes;
 
     struct adios_index_process_group_struct_v1 * new_pg_root = 0;
     struct adios_index_var_struct_v1 * new_vars_root = 0;
@@ -1598,7 +1392,7 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
     static int iteration = 0;
 #endif
 
-    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_AD_CLOSE);
+    START_TIMER (ADIOS_TIMER_AD_CLOSE);
 
     switch (fd->mode)
     {
@@ -1621,118 +1415,22 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = md->b.pg_index_offset;
-
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                MPI_Offset new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                MPI_File_get_position (md->fh, &new_off);
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                uint64_t count;
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                count = adios_mpi_lustre_striping_unit_write(
-                                  md->fh,
-                                  md->vars_start,
-                                  fd->buffer,
-                                  md->vars_header_size,
-                                  md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                if (count != md->vars_header_size)
-                {
-                    fprintf (stderr, "d:MPI method tried to write %llu, "
-                                     "only wrote %llu\n"
-                            ,md->vars_header_size
-                            ,count
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&md->b);
-
-                adios_write_open_attributes_v1 (fd);
-                md->vars_start = new_off;
-                md->vars_header_size = fd->offset;
-                MPI_File_seek (md->fh, new_off + md->vars_header_size
-                              ,MPI_SEEK_SET
-                              ); // go back to end, but after attr header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-                        if (fd->base_offset + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-                            fprintf (stderr, "adios_mpi_write exceeds pg bound. File is corrupted. "
-                                    "Need to enlarge group size. \n");
-                        START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                        count = adios_mpi_lustre_striping_unit_write(
-                                md->fh,
-                                -1,
-                                fd->buffer,
-                                fd->bytes_written,
-                                md->block_unit);
-                        STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                        if (count != fd->bytes_written)
-                        {
-                            fprintf (stderr, "e:MPI method tried to write %llu, "
-                                    "only wrote %llu\n"
-                                    ,fd->bytes_written
-                                    ,count
-                                    );
-                        }
-                        fd->base_offset += count;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&md->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                adios_write_close_attributes_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                count = adios_mpi_lustre_striping_unit_write(
-                                  md->fh,
-                                  md->vars_start,
-                                  fd->buffer,
-                                  md->vars_header_size,
-                                  md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                if (count != md->vars_header_size)
-                {
-                    fprintf (stderr, "f:MPI method tried to write %llu, "
-                                     "only wrote %llu\n"
-                            ,md->vars_header_size
-                            ,count
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
 
 #if COLLECT_METRICS
             gettimeofday (&t19, NULL);
-#endif
-#if COLLECT_METRICS
             gettimeofday (&t7, NULL);
-#endif
-#if COLLECT_METRICS
             gettimeofday (&t12, NULL);
 #endif
+
+            START_TIMER (ADIOS_TIMER_LOCALMD);
+            // figure out the offsets
+            // before writing out the buffer and build the index based on target offsets
+            build_file_offsets (md, fd);
+
             // build index appending to any existing index
             adios_build_index_v1 (fd, md->index);
+            STOP_TIMER (ADIOS_TIMER_LOCALMD);
+
             // if collective, gather the indexes from the rest and call
             if (md->group_comm != MPI_COMM_NULL)
             {
@@ -1745,12 +1443,12 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
                     uint32_t total_size = 0;
                     int i;
 
-                    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, md->group_comm
                                );
-                    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < md->size; i++)
                     {
@@ -1760,12 +1458,12 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
 
                     recv_buffer = malloc (total_size);
 
-                    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, md->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = md->b.buff;
                     uint64_t buffer_size_save = md->b.length;
@@ -1804,7 +1502,7 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
                     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                          ,0, md->index);
 
-                    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&buffer_offset, 1, MPI_INT, 0, 0, MPI_INT
                                ,0, md->group_comm
                                );
@@ -1812,52 +1510,45 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
 
 #if COLLECT_METRICS
             gettimeofday (&t13, NULL);
 #endif
-            if (fd->shared_buffer == adios_flag_yes)
-            {
-                // everyone writes their data
-                if (fd->base_offset + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-                    fprintf (stderr, "adios_mpi_write exceeds pg bound. File is corrupted. "
-                             "Need to enlarge group size. \n");
 
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_IO);
-                adios_mpi_lustre_striping_unit_write(
-                                  md->fh,
-                                  fd->base_offset,
-                                  fd->buffer,
-                                  fd->bytes_written,
-                                  md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_IO);
-            }
+            /* Write the data buffer */
 
+            START_TIMER (ADIOS_TIMER_IO);
+            adios_mpi_lustre_striping_unit_write(
+                    md->fh,
+                    fd->current_pg->pg_start_in_file,
+                    fd->buffer,
+                    fd->bytes_written,
+                    md->block_unit);
+            STOP_TIMER (ADIOS_TIMER_IO);
+
+            /* Rank 0 write the index */
             if (md->rank == 0)
             {
                 adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                     ,index_start, md->index);
+                                     ,md->b.pg_index_offset, md->index);
                 adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
+                START_TIMER (ADIOS_TIMER_GLOBALMD);
                 adios_mpi_lustre_striping_unit_write(
                                   md->fh,
                                   md->b.pg_index_offset,
                                   buffer,
                                   buffer_offset,
                                   md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
+                STOP_TIMER (ADIOS_TIMER_GLOBALMD);
             }
+
 #if COLLECT_METRICS
             gettimeofday (&t8, NULL);
-#endif
-#if COLLECT_METRICS
             gettimeofday (&t20, NULL);
-#endif
-#if COLLECT_METRICS
             gettimeofday (&t14, NULL);
 #endif
 
@@ -1879,110 +1570,21 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
         }
 
         case adios_mode_append:
+        case adios_mode_update:
         {
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = md->b.pg_index_offset;
-
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                MPI_Offset new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                MPI_File_get_position (md->fh, &new_off);
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                uint64_t count;
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                count = adios_mpi_lustre_striping_unit_write(
-                                  md->fh,
-                                  md->vars_start,
-                                  fd->buffer,
-                                  md->vars_header_size,
-                                  md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                if (count != md->vars_header_size)
-                {
-                    fprintf (stderr, "d:MPI method tried to write %llu, "
-                                     "only wrote %llu\n"
-                            ,md->vars_header_size
-                            ,count
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&md->b);
-
-                adios_write_open_attributes_v1 (fd);
-                md->vars_start = new_off;
-                md->vars_header_size = fd->offset;
-                MPI_File_seek (md->fh, new_off + md->vars_header_size
-                              ,MPI_SEEK_SET
-                              ); // go back to end, but after attr header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-                        START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                        count = adios_mpi_lustre_striping_unit_write(
-                                md->fh,
-                                -1,
-                                fd->buffer,
-                                fd->bytes_written,
-                                md->block_unit);
-                        STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                        if (count != fd->bytes_written)
-                        {
-                            fprintf (stderr, "e:MPI method tried to write %llu, "
-                                    "only wrote %llu\n"
-                                    ,fd->bytes_written
-                                    ,count
-                                    );
-                        }
-                        fd->base_offset += count;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&md->b);
 
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - md->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                count = adios_mpi_lustre_striping_unit_write(
-                                  md->fh,
-                                  md->vars_start,
-                                  fd->buffer,
-                                  md->vars_header_size,
-                                  md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
-                if (count != md->vars_header_size)
-                {
-                    fprintf (stderr, "f:MPI method tried to write %llu, "
-                                     "only wrote %llu\n"
-                            ,md->vars_header_size
-                            ,count
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
+            START_TIMER (ADIOS_TIMER_LOCALMD);
+            // figure out the offsets
+            // before writing out the buffer and build the index based on target offsets
+            build_file_offsets (md, fd);
 
             // build index appending to any existing index
             adios_build_index_v1 (fd, md->index);
+            STOP_TIMER (ADIOS_TIMER_LOCALMD);
+
             // if collective, gather the indexes from the rest and call
             if (md->group_comm != MPI_COMM_NULL)
             {
@@ -1995,12 +1597,12 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
                     uint32_t total_size = 0;
                     int i;
 
-                    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, md->group_comm
                                );
-                    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < md->size; i++)
                     {
@@ -2010,12 +1612,12 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
 
                     recv_buffer = malloc (total_size);
 
-                    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, md->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = md->b.buff;
                     uint64_t buffer_size_save = md->b.length;
@@ -2054,7 +1656,7 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
                     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                          ,0, md->index);
 
-                    START_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&buffer_offset, 1, MPI_INT, 0, 0, MPI_INT
                                ,0, md->group_comm
                                );
@@ -2062,37 +1664,35 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
 
-            if (fd->shared_buffer == adios_flag_yes)
-            {
-                // everyone writes their data
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_IO);
-                adios_mpi_lustre_striping_unit_write(
-                                  md->fh,
-                                  fd->base_offset,
-                                  fd->buffer,
-                                  fd->bytes_written,
-                                  md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_IO);
-            }
-
+            /* Write data buffer */
+            START_TIMER (ADIOS_TIMER_IO);
+            adios_mpi_lustre_striping_unit_write(
+                    md->fh,
+                    fd->current_pg->pg_start_in_file,
+                    fd->buffer,
+                    fd->bytes_written,
+                    md->block_unit);
+            STOP_TIMER (ADIOS_TIMER_IO);
+
+            /* Rank 0 write index buffer */
             if (md->rank == 0)
             {
                 adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                     ,index_start, md->index);
+                                     ,md->b.pg_index_offset, md->index);
                 adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
-                START_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
+                START_TIMER (ADIOS_TIMER_GLOBALMD);
                 adios_mpi_lustre_striping_unit_write(
                                   md->fh,
                                   md->b.pg_index_offset,
                                   buffer,
                                   buffer_offset,
                                   md->block_unit);
-                STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_MD);
+                STOP_TIMER (ADIOS_TIMER_GLOBALMD);
             }
 
             free (buffer);
@@ -2102,7 +1702,9 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
 
         default:
         {
-            fprintf (stderr, "Unknown file mode: %d\n", fd->mode);
+            adios_error (err_invalid_file_mode,
+                    "MPI method: Unknown file mode: %d in adios_close()\n",
+                    fd->mode);
         }
     }
 
@@ -2124,7 +1726,7 @@ void adios_mpi_lustre_close (struct adios_file_struct * fd
 
     adios_clear_index_v1 (md->index);
 
-    STOP_TIMER (ADIOS_TIMER_MPI_LUSTRE_AD_CLOSE);
+    STOP_TIMER (ADIOS_TIMER_AD_CLOSE);
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 
@@ -2149,6 +1751,7 @@ void adios_mpi_lustre_finalize (int mype, struct adios_method_struct * method)
     struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
                                                  method->method_data;
     adios_free_index_v1 (md->index);
+    adios_buffer_struct_clear (&md->b);
 
     if (adios_mpi_lustre_initialized)
         adios_mpi_lustre_initialized = 0;
diff --git a/src/write/adios_nc4.c b/src/write/adios_nc4.c
index 9c97966..f84428a 100644
--- a/src/write/adios_nc4.c
+++ b/src/write/adios_nc4.c
@@ -206,9 +206,9 @@ static struct open_file *open_file_delete(const char *path, const char *name)
         if ((strcmp(path, of->fpath) == 0) && (strcmp(name, of->fname) == 0)) {
             if (DEBUG>3) printf("fpath(%s) fname(%s) matches search\n", of->fpath, of->fname);
             if (list_is_head(&open_file_list, elmt)) {
-                list_rem_next(&open_file_list, NULL, &of);
+                list_rem_next(&open_file_list, NULL, (void**)&of);
             } else {
-                list_rem_next(&open_file_list, prev, &of);
+                list_rem_next(&open_file_list, prev, (void**)&of);
             }
         }
         prev = elmt;
@@ -1333,7 +1333,7 @@ void adios_nc4_init(
 //    md->size       = 0;
 }
 
-enum ADIOS_FLAG adios_nc4_should_buffer(
+enum BUFFERING_STRATEGY adios_nc4_should_buffer(
         struct adios_file_struct *fd,
         struct adios_method_struct *method)
 {
@@ -1416,7 +1416,7 @@ enum ADIOS_FLAG adios_nc4_should_buffer(
 
     free(name);
 
-    return adios_flag_no;
+    return no_buffering;
 }
 
 int adios_nc4_open(
@@ -1468,7 +1468,7 @@ int adios_nc4_open(
 void adios_nc4_write(
         struct adios_file_struct *fd,
         struct adios_var_struct *v,
-        void *data,
+        const void *data,
         struct adios_method_struct *method)
 {
     struct open_file *of=NULL;
@@ -1563,6 +1563,12 @@ void adios_nc4_read(
     }
 }
 
+void adios_nc4_buffer_overflow (struct adios_file_struct * fd, 
+                                struct adios_method_struct * method)
+{
+    // this never happens without shared buffering
+}
+
 void adios_nc4_close(
         struct adios_file_struct *fd,
         struct adios_method_struct *method)
diff --git a/src/write/adios_nssi.c b/src/write/adios_nssi.c
deleted file mode 100644
index 7840a37..0000000
--- a/src/write/adios_nssi.c
+++ /dev/null
@@ -1,1648 +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.
- */
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "config.h"
-#include "mpi.h"
-#include "adios.h"
-#include "adios_types.h"
-#include "adios_bp_v1.h"
-#include "adios_transport_hooks.h"
-#include "adios_internals.h"
-#include "util.h"
-#ifdef HAVE_NSSI
-#include "nssi_client.h"
-#include "adios_nssi_args.h"
-#include "adios_nssi_config.h"
-#include "nssi_logger.h"
-#endif
-
-#include "io_timer.h"
-
-
-#define NUM_GP 24
-void adios_nssi_get_write_buffer(
-        struct adios_file_struct *f,
-        struct adios_var_struct *v,
-        uint64_t *size,
-        void **buffer,
-        struct adios_method_struct *method)
-{
-}
-
-///////////////////////////
-// Datatypes
-///////////////////////////
-struct adios_nssi_file_data_struct
-{
-    int      fd;
-    MPI_Comm group_comm;
-    int      size;
-    int      rank;
-
-    int      svc_index;
-    MPI_Comm collective_op_comm;
-    int      collective_op_size;
-    int      collective_op_rank;
-
-    int8_t use_single_server;
-};
-
-struct adios_nssi_method_data_struct
-{
-    nssi_request start_calc_req;
-    int          has_outstanding_req;
-    int          default_svc_index;  /* service to use when there is no open file (eg. finalize) */
-};
-
-/* Need a struct to encapsulate var offset info.
- */
-struct var_offset {
-    struct adios_group_struct *ogroup;
-    uint16_t  oid;
-    char      opath[ADIOS_PATH_MAX];
-    char      oname[ADIOS_PATH_MAX];
-    void     *ovalue;
-    uint64_t  osize;
-    uint8_t   is_anonymous;
-};
-
-/* list of variable offsets */
-static List var_offset_list;
-
-/* Need a struct to encapsulate var dim info.
- */
-struct var_dim {
-    struct adios_group_struct *dgroup;
-    uint16_t  did;
-    char      dpath[ADIOS_PATH_MAX];
-    char      dname[ADIOS_PATH_MAX];
-    void     *dvalue;
-    uint64_t  dsize;
-    uint8_t   is_anonymous;
-};
-
-/* list of variable offsets */
-static List var_dim_list;
-
-/* Need a struct to encapsulate open file info
- */
-struct open_file {
-    char                           fpath[ADIOS_PATH_MAX];
-    char                           fname[ADIOS_PATH_MAX];
-    struct adios_nssi_file_data_struct *file_data;
-    struct adios_file_struct      *f;
-    nssi_request                   start_calc_req;
-    int                            has_outstanding_req;
-//    List                           outstanding_reqs;
-};
-
-/* list of variable offsets */
-static List open_file_list;
-
-///////////////////////////
-// Global Variables
-///////////////////////////
-static int adios_nssi_initialized = 0;
-
-static char *job_id=NULL;
-static int global_rank=-1;
-static int global_size=-1;
-static nssi_service *svcs;
-struct adios_nssi_config nssi_cfg;
-
-//static log_level adios_nssi_debug_level;
-static int DEBUG=0;
-
-
-///////////////////////////
-// Function Declarations
-///////////////////////////
-
-
-///////////////////////////
-// Function Definitions
-///////////////////////////
-
-static struct open_file *open_file_create(const char *path, const char *name, struct adios_nssi_file_data_struct *file_private_data)
-{
-    struct open_file *of=calloc(1,sizeof(struct open_file));
-
-    strcpy(of->fpath, path);
-    strcpy(of->fname, name);
-    of->file_data = file_private_data;
-    of->has_outstanding_req=FALSE;
-//    list_init(&(of->outstanding_reqs), free);
-
-    return(of);
-}
-static void open_file_free(void *of)
-{
-//    list_destroy((List *)&(of->outstanding_reqs));
-    free(of);
-}
-static int open_file_equal(const struct open_file *of1, const struct open_file *of2)
-{
-    if ((strcmp(of1->fpath, of2->fpath) == 0) && (strcmp(of1->fname, of2->fname) == 0)) return TRUE;
-
-    return FALSE;
-}
-static struct open_file *open_file_find(const char *path, const char *name)
-{
-    ListElmt *elmt;
-    struct open_file *of;
-
-    if (DEBUG>3) printf("looking for fpath(%s) fname(%s)\n", path, name);
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        if (DEBUG>3) printf("comparing to fpath(%s) fname(%s)\n", of->fpath, of->fname);
-        if ((strcmp(path, of->fpath) == 0) && (strcmp(name, of->fname) == 0)) {
-            if (DEBUG>3) printf("fpath(%s) fname(%s) matches search\n", of->fpath, of->fname);
-            return of;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static struct open_file *open_file_delete(const char *path, const char *name)
-{
-    ListElmt *elmt, *prev;
-    struct open_file *of;
-
-    if (DEBUG>3) printf("trying to delete fpath(%s) fname(%s)\n", path, name);
-
-    prev = elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        if (DEBUG>3) printf("comparing to fpath(%s) fname(%s)\n", of->fpath, of->fname);
-        if ((strcmp(path, of->fpath) == 0) && (strcmp(name, of->fname) == 0)) {
-            if (DEBUG>3) printf("fpath(%s) fname(%s) matches search\n", of->fpath, of->fname);
-            if (list_is_head(&open_file_list, elmt)) {
-                list_rem_next(&open_file_list, NULL, &of);
-            } else {
-                list_rem_next(&open_file_list, prev, &of);
-            }
-        }
-        prev = elmt;
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static void open_file_printall(void)
-{
-    ListElmt *elmt;
-    struct open_file *of;
-
-    elmt = list_head(&open_file_list);
-    while(elmt) {
-        of = list_data(elmt);
-        if (DEBUG>3) printf("fpath(%s) fname(%s)\n", of->fpath, of->fname);
-        elmt = list_next(elmt);
-    }
-}
-
-static struct var_offset *var_offset_create(const char *path, const char *name, void *value, uint64_t size, uint16_t id, struct adios_group_struct *group)
-{
-    struct var_offset *vo=calloc(1,sizeof(struct var_offset));
-
-    vo->ogroup = group;
-    vo->oid = id;
-    strcpy(vo->opath, path);
-    strcpy(vo->oname, name);
-    vo->ovalue = value;
-    vo->osize  = size;
-
-    return(vo);
-}
-static void var_offset_free(void *vo)
-{
-    free(vo);
-}
-static int var_offset_equal(const struct var_offset *vo1, const struct var_offset *vo2)
-{
-    if ((strcmp(vo1->opath, vo2->opath) == 0) && (strcmp(vo1->oname, vo2->oname) == 0)) return TRUE;
-
-    return FALSE;
-}
-static struct var_offset *var_offset_find(struct adios_group_struct *group, const char *path, const char *name)
-{
-    ListElmt *elmt;
-    struct var_offset *vo;
-
-    if (DEBUG>2) printf("looking for group(%p) opath(%s) oname(%s)\n", group, path, name);
-
-    elmt = list_head(&var_offset_list);
-    while(elmt) {
-        vo = list_data(elmt);
-        if (DEBUG>2) printf("comparing to group(%p) opath(%s) oname(%s)\n", vo->ogroup, vo->opath, vo->oname);
-        if ((group == vo->ogroup) && (strcmp(path, vo->opath) == 0) && (strcmp(name, vo->oname) == 0)) {
-            if (DEBUG>2) printf("group(%p) opath(%s) oname(%s) matches search\n", vo->ogroup, vo->opath, vo->oname);
-            return vo;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static struct var_offset *var_offset_find_by_id(const uint16_t id)
-{
-    ListElmt *elmt;
-    struct var_offset *vo;
-
-    if (DEBUG>2) printf("looking for oid(%d)\n", id);
-
-    elmt = list_head(&var_offset_list);
-    while(elmt) {
-        vo = list_data(elmt);
-        if (DEBUG>2) printf("comparing to oid(%d)\n", vo->oid);
-        if (vo->oid == id) {
-            if (DEBUG>2) printf("oid(%d) opath(%s) oname(%s) matches search\n", vo->oid, vo->opath, vo->oname);
-            return vo;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static void var_offset_printall(void)
-{
-    ListElmt *elmt;
-    struct var_offset *vo;
-
-    elmt = list_head(&var_offset_list);
-    while(elmt) {
-        vo = list_data(elmt);
-        if (DEBUG>3) printf("opath(%s) oname(%s)\n", vo->opath, vo->oname);
-        elmt = list_next(elmt);
-    }
-}
-
-static struct var_dim *var_dim_create(const char *path, const char *name, void *value, uint64_t size, uint16_t id, struct adios_group_struct *group)
-{
-    struct var_dim *vd=calloc(1,sizeof(struct var_dim));
-
-    vd->dgroup = group;
-    vd->did = id;
-    strcpy(vd->dpath, path);
-    strcpy(vd->dname, name);
-    vd->dvalue = value;
-    vd->dsize  = size;
-
-    return(vd);
-}
-static void var_dim_free(void *vd)
-{
-    free(vd);
-}
-static int var_dim_equal(const struct var_dim *vd1, const struct var_dim *vd2)
-{
-    if ((strcmp(vd1->dpath, vd2->dpath) == 0) && (strcmp(vd1->dname, vd2->dname) == 0)) return TRUE;
-
-    return FALSE;
-}
-static struct var_dim *var_dim_find(struct adios_group_struct *group, const char *path, const char *name)
-{
-    ListElmt *elmt;
-    struct var_dim *vd;
-
-    if (DEBUG>2) printf("looking for group(%p) dpath(%s) dname(%s)\n", group, path, name);
-
-    elmt = list_head(&var_dim_list);
-    while(elmt) {
-        vd = list_data(elmt);
-        if (DEBUG>2) printf("comparing to group(%p) dpath(%s) dname(%s)\n", vd->dgroup, vd->dpath, vd->dname);
-        if ((group == vd->dgroup) && (strcmp(path, vd->dpath) == 0) && (strcmp(name, vd->dname) == 0)) {
-            if (DEBUG>2) printf(" group(%p) dpath(%s) dname(%s) matches search\n", vd->dgroup, vd->dpath, vd->dname);
-            return vd;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static struct var_dim *var_dim_find_by_id(const uint16_t id)
-{
-    ListElmt *elmt;
-    struct var_dim *vd;
-
-    if (DEBUG>2) printf("looking for did(%d)\n", id);
-
-    elmt = list_head(&var_dim_list);
-    while(elmt) {
-        vd = list_data(elmt);
-        if (DEBUG>2) printf("comparing to did(%d)\n", vd->did);
-        if (vd->did == id) {
-            if (DEBUG>2) printf("did(%d) dpath(%s) dname(%s) matches search\n", vd->did, vd->dpath, vd->dname);
-            return vd;
-        }
-        elmt = list_next(elmt);
-    }
-
-    return NULL;
-}
-static void var_dim_printall(void)
-{
-    ListElmt *elmt;
-    struct var_dim *vd;
-
-    elmt = list_head(&var_dim_list);
-    while(elmt) {
-        vd = list_data(elmt);
-        if (DEBUG>3) printf("dpath(%s) dname(%s)\n", vd->dpath, vd->dname);
-        elmt = list_next(elmt);
-    }
-}
-
-static void parse_dimension_size(
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_dimension_item_struct *dim,
-        size_t *dimsize)
-{
-    struct adios_var_struct *var_linked = NULL;
-    struct adios_attribute_struct *attr_linked;
-    if (dim->id) {
-        var_linked = adios_find_var_by_id (pvar_root , dim->id);
-        if (!var_linked) {
-            attr_linked = adios_find_attribute_by_id (patt_root, dim->id);
-            if (!attr_linked->var) {
-                switch (attr_linked->type) {
-                case adios_unsigned_byte:
-                    *dimsize = *(uint8_t *)attr_linked->value;
-                    break;
-                case adios_byte:
-                    *dimsize = *(int8_t *)attr_linked->value;
-                    break;
-                case adios_unsigned_short:
-                    *dimsize = *(uint16_t *)attr_linked->value;
-                    break;
-                case adios_short:
-                    *dimsize = *(int16_t *)attr_linked->value;
-                    break;
-                case adios_unsigned_integer:
-                    *dimsize = *(uint32_t *)attr_linked->value;
-                    break;
-                case adios_integer:
-                    *dimsize = *(int32_t *)attr_linked->value;
-                    break;
-                case adios_unsigned_long:
-                    *dimsize = *(uint64_t *)attr_linked->value;
-                    break;
-                case adios_long:
-                    *dimsize = *(int64_t *)attr_linked->value;
-                    break;
-                default:
-                    fprintf (stderr, "Invalid datatype for array dimension on "
-                            "var %s: %s\n"
-                            ,attr_linked->name
-                            ,adios_type_to_string_int (var_linked->type)
-                    );
-                    break;
-                }
-            } else {
-                var_linked = attr_linked->var;
-            }
-        }
-        if (var_linked && var_linked->data) {
-            *dimsize = *(int *)var_linked->data;
-        }
-    } else {
-        if (dim->time_index == adios_flag_yes) {
-            *dimsize = 1;
-        } else {
-            *dimsize = dim->rank;
-        }
-    }
-
-    return;
-}
-static void parse_dimension_name(
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_dimension_item_struct *dim,
-        char *dimname)
-{
-    struct adios_var_struct *var_linked = NULL;
-    struct adios_attribute_struct *attr_linked;
-    if (dim->id) {
-        var_linked = adios_find_var_by_id (pvar_root , dim->id);
-        if (!var_linked) {
-            attr_linked = adios_find_attribute_by_id (patt_root, dim->id);
-            if (!attr_linked->var) {
-//                strcpy(dimname, attr_linked->name);
-                sprintf(dimname, "%s", attr_linked->name);
-            } else {
-                var_linked = attr_linked->var;
-            }
-        }
-        if (var_linked && var_linked->name) {
-//            strcpy(dimname, var_linked->name);
-            sprintf(dimname, "%s", var_linked->name);
-        }
-    } else {
-        if (dim->time_index == adios_flag_yes) {
-//            strcpy(dimname, group->time_index_name);
-            sprintf(dimname, "%s", group->time_index_name);
-        } else {
-            dimname[0] = '\0';
-        }
-    }
-
-    return;
-}
-
-
-static int gen_offset_list(
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root)
-{
-    struct adios_var_struct *v;
-    struct adios_dimension_struct *dims;
-    struct var_info *vi;
-    char offset_name[255];
-    uint64_t *value;
-
-    v = pvar_root;
-    while (v) {
-        dims=v->dimensions;
-        int loffs_idx=0;
-        while (dims) {
-            parse_dimension_name(group, pvar_root, patt_root, &dims->local_offset, offset_name);
-            if (offset_name[0] == '\0') {
-                sprintf(offset_name, "offset_%d", loffs_idx);
-            }
-            if (DEBUG>3) printf("gen: offset_name(%s)\n", offset_name);
-            value=calloc(1,sizeof(uint64_t));
-            parse_dimension_size(group, pvar_root, patt_root, &dims->local_offset, value);
-
-            uint64_t vsize = 4; /* adios_get_var_size(v, group, value); */
-            vi = var_offset_create(v->path, offset_name, value, vsize, dims->local_offset.id, group);
-            list_ins_next(&var_offset_list, list_tail(&var_offset_list), vi);
-
-            loffs_idx++;
-            dims = dims->next;
-        }
-        v = v->next;
-    }
-}
-
-static void create_offset_list_for_var(
-        struct adios_var_struct *v,
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        u_int *offset_count,
-        struct adios_var **offset_values)
-{
-    struct adios_dimension_struct *dims;
-    char offset_name[255];
-
-    *offset_count=0;
-    *offset_values=NULL;
-
-    if ((v) && (v->dimensions)) {
-        int local_offset_count=0;
-        dims=v->dimensions;
-        while (dims) {
-            if (dims->dimension.time_index == adios_flag_yes) {
-                dims = dims->next;
-                continue;
-            }
-            parse_dimension_name(group, pvar_root, patt_root, &dims->local_offset, offset_name);
-            local_offset_count++;
-            dims = dims->next;
-        }
-
-        *offset_count=local_offset_count;
-        *offset_values=calloc(local_offset_count, sizeof(struct adios_var));
-
-        dims=v->dimensions;
-        int loffs_idx=0;
-        while (dims) {
-            if (dims->dimension.time_index == adios_flag_yes) {
-                dims = dims->next;
-                continue;
-            }
-            parse_dimension_name(group, pvar_root, patt_root, &dims->local_offset, offset_name);
-            if (offset_name[0] == '\0') {
-                sprintf(offset_name, "%s_%s_offset_%d", /*v->path*/"", v->name, loffs_idx);
-                (*offset_values)[loffs_idx].is_anonymous=TRUE;
-            }
-            (*offset_values)[loffs_idx].vpath=strdup(v->path);
-            (*offset_values)[loffs_idx].vname=strdup(offset_name);
-//            struct var_offset *vo=var_offset_find("", offset_name);
-//            memcpy(&(args->offsets.offsets_val[loffs_idx].vdata), vo->ovalue, vo->osize);
-//            args->offsets.offsets_val[loffs_idx].vdatasize=vo->osize;
-//            printf("create: offset_name(%s) offset_value(%lu)\n", offset_name, vo->ovalue);
-            uint64_t value=0;
-            parse_dimension_size(group, pvar_root, patt_root, &dims->local_offset, &value);
-            memcpy(&((*offset_values)[loffs_idx].vdata), &value, 4);
-            (*offset_values)[loffs_idx].vdatasize=4;
-            if (DEBUG>3) printf("create: offset_name(%s) offset_value(%lu)\n", offset_name, value);
-
-            loffs_idx++;
-            dims = dims->next;
-        }
-    }
-}
-
-static int gen_ldim_list(
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root)
-{
-    struct adios_var_struct *v;
-    struct adios_dimension_struct *dims;
-    struct var_info *vi;
-    char dim_name[255];
-    uint64_t *value;
-
-    v = pvar_root;
-    while (v) {
-        dims=v->dimensions;
-        int dim_idx=0;
-        while (dims) {
-            parse_dimension_name(group, pvar_root, patt_root, &dims->dimension, dim_name);
-            if (dim_name[0] == '\0') {
-                sprintf(dim_name, "dim_%d", dim_idx);
-            }
-            if (DEBUG>3) printf("gen: dim_name(%s)\n", dim_name);
-            value=calloc(1,sizeof(uint64_t));
-            parse_dimension_size(group, pvar_root, patt_root, &dims->dimension, value);
-            if (global_rank==0) {
-                if (DEBUG>3) printf(":o(%d)", *value);
-            }
-
-            uint64_t vsize = 4; /* adios_get_var_size(v, group, value); */
-            vi = var_dim_create(v->path, dim_name, value, vsize, dims->dimension.id, group);
-            list_ins_next(&var_dim_list, list_tail(&var_dim_list), vi);
-
-            dim_idx++;
-            dims = dims->next;
-        }
-        v = v->next;
-    }
-}
-
-static void create_ldim_list_for_var(
-        struct adios_var_struct *v,
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        u_int *dim_count,
-        struct adios_var **dim_values)
-{
-    struct adios_dimension_struct *dims;
-    char dim_name[255];
-
-    *dim_count=0;
-    *dim_values=NULL;
-
-    if ((v) && (v->dimensions)) {
-        int local_dim_count=0;
-        dims=v->dimensions;
-        while (dims) {
-            if (dims->dimension.time_index == adios_flag_yes) {
-                dims = dims->next;
-                continue;
-            }
-            parse_dimension_name(group, pvar_root, patt_root, &dims->dimension, dim_name);
-            local_dim_count++;
-            dims = dims->next;
-        }
-
-        *dim_count=local_dim_count;
-        *dim_values=calloc(local_dim_count, sizeof(struct adios_var));
-
-        dims=v->dimensions;
-        int dim_idx=0;
-        while (dims) {
-            if (dims->dimension.time_index == adios_flag_yes) {
-                dims = dims->next;
-                continue;
-            }
-            parse_dimension_name(group, pvar_root, patt_root, &dims->dimension, dim_name);
-            if (dim_name[0] == '\0') {
-                sprintf(dim_name, "%s_%s_dim_%d", /*v->path*/"", v->name, dim_idx);
-                (*dim_values)[dim_idx].is_anonymous=TRUE;
-            }
-            (*dim_values)[dim_idx].vpath=strdup(v->path);
-            (*dim_values)[dim_idx].vname=strdup(dim_name);
-//            struct var_dim *vd=var_dim_find("", dim_name);
-//            memcpy(&(args->dims.dims_val[dim_idx].vdata), vd->dvalue, vd->dsize);
-//            args->dims.dims_val[dim_idx].vdatasize=vd->dsize;
-            uint64_t value=0;
-            parse_dimension_size(group, pvar_root, patt_root, &dims->dimension, &value);
-            memcpy(&((*dim_values)[dim_idx].vdata), &value, 4);
-            (*dim_values)[dim_idx].vdatasize=4;
-            if (DEBUG>3) printf("create: dim_name(%s) dvalue(%lu)\n", dim_name, value);
-            if (global_rank==0) {
-                if (DEBUG>3) printf(":o(%d)", value);
-            }
-
-            dim_idx++;
-            dims = dims->next;
-        }
-    }
-}
-
-static void create_gdim_list_for_var(
-        struct adios_var_struct *v,
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        u_int *dim_count,
-        struct adios_var **dim_values)
-{
-    struct adios_dimension_struct *dims;
-    char dim_name[255];
-
-    *dim_count=0;
-    *dim_values=NULL;
-
-    if ((v) && (v->dimensions)) {
-        int global_dim_count=0;
-        dims=v->dimensions;
-        while (dims) {
-            if (dims->dimension.time_index == adios_flag_yes) {
-                dims = dims->next;
-                continue;
-            }
-            parse_dimension_name(group, pvar_root, patt_root, &dims->global_dimension, dim_name);
-            global_dim_count++;
-            dims = dims->next;
-        }
-
-        *dim_count=global_dim_count;
-        *dim_values=calloc(global_dim_count, sizeof(struct adios_var));
-
-        dims=v->dimensions;
-        int dim_idx=0;
-        while (dims) {
-            if (dims->dimension.time_index == adios_flag_yes) {
-                dims = dims->next;
-                continue;
-            }
-            parse_dimension_name(group, pvar_root, patt_root, &dims->global_dimension, dim_name);
-            if (dim_name[0] == '\0') {
-                sprintf(dim_name, "%s_%s_dim_%d", /*v->path*/"", v->name, dim_idx);
-                (*dim_values)[dim_idx].is_anonymous=TRUE;
-            }
-            (*dim_values)[dim_idx].vpath=strdup(v->path);
-            (*dim_values)[dim_idx].vname=strdup(dim_name);
-//            struct var_dim *vd=var_dim_find("", dim_name);
-//            memcpy(&(args->dims.dims_val[dim_idx].vdata), vd->dvalue, vd->dsize);
-//            args->dims.dims_val[dim_idx].vdatasize=vd->dsize;
-            uint64_t value=0;
-            parse_dimension_size(group, pvar_root, patt_root, &dims->global_dimension, &value);
-            memcpy(&((*dim_values)[dim_idx].vdata), &value, 4);
-            (*dim_values)[dim_idx].vdatasize=4;
-            if (DEBUG>3) printf("create: dim_name(%s) dvalue(%lu)\n", dim_name, value);
-            if (global_rank==0) {
-                if (DEBUG>3) printf(":o(%d)", value);
-            }
-
-            dim_idx++;
-            dims = dims->next;
-        }
-    }
-}
-
-static int read_var(
-        struct adios_nssi_file_data_struct *file_data,
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_var_struct *pvar)
-{
-    int return_code=0;
-    int i, rc;
-
-    adios_read_args args;
-    adios_read_res  res;
-
-    memset(&args, 0, sizeof(args));
-    memset(&res, 0, sizeof(res));
-    args.fd    = file_data->fd;
-    args.max_read = pvar->data_size;
-    args.vpath = strdup(pvar->path);
-    args.vname = strdup(pvar->name);
-
-
-    if (pvar->dimensions) {
-        args.is_scalar = FALSE;
-    } else {
-        args.is_scalar = TRUE;
-    }
-
-    args.offsets.offsets_len=0;
-    args.offsets.offsets_val=NULL;
-    args.ldims.ldims_len=0;
-    args.ldims.ldims_val=NULL;
-    args.gdims.gdims_len=0;
-    args.gdims.gdims_val=NULL;
-    if (pvar->dimensions) {
-        create_offset_list_for_var(
-                 pvar,
-                 group,
-                 group->vars,
-                 group->attributes,
-                 &args.offsets.offsets_len,
-                 &args.offsets.offsets_val);
-        create_ldim_list_for_var(
-                 pvar,
-                 group,
-                 group->vars,
-                 group->attributes,
-                 &args.ldims.ldims_len,
-                 &args.ldims.ldims_val);
-        create_gdim_list_for_var(
-                 pvar,
-                 group,
-                 group->vars,
-                 group->attributes,
-                 &args.gdims.gdims_len,
-                 &args.gdims.gdims_val);
-     }
-
-    Func_Timer("ADIOS_READ_OP",
-            rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-            ADIOS_READ_OP,
-            &args,
-            pvar->data,
-            pvar->data_size,
-            &res););
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: ADIOS_READ_OP failed\n");
-        return_code=-2;
-    }
-
-    free(args.vpath);
-    free(args.vname);
-    if (pvar->dimensions) {
-        for (i=0;i<args.offsets.offsets_len;i++) {
-            free(args.offsets.offsets_val[i].vpath);
-            free(args.offsets.offsets_val[i].vname);
-        }
-        free(args.offsets.offsets_val);
-        for (i=0;i<args.ldims.ldims_len;i++) {
-            free(args.ldims.ldims_val[i].vpath);
-            free(args.ldims.ldims_val[i].vname);
-        }
-        free(args.ldims.ldims_val);
-        for (i=0;i<args.gdims.gdims_len;i++) {
-            free(args.gdims.gdims_val[i].vpath);
-            free(args.gdims.gdims_val[i].vname);
-        }
-        free(args.gdims.gdims_val);
-    }
-
-    return return_code;
-}
-static int write_var(
-        struct adios_nssi_file_data_struct *file_data,
-        struct adios_group_struct *group,
-        struct adios_var_struct *pvar_root,
-        struct adios_attribute_struct *patt_root,
-        struct adios_var_struct *pvar,
-        uint64_t var_size,
-        enum ADIOS_FLAG fortran_flag)
-{
-    int i;
-    int rc;
-    int return_code=0;
-
-    adios_write_args args;
-    adios_write_res  res;
-
-//    var_offset_printall();
-
-    memset(&args, 0, sizeof(args));
-    memset(&res, 0, sizeof(res));
-    args.fd    = file_data->fd;
-    args.vpath = strdup(pvar->path);
-    args.vname = strdup(pvar->name);
-    args.vsize = var_size;
-    args.atype = pvar->type;
-    if (pvar->dimensions) {
-        args.is_scalar = FALSE;
-    } else {
-        args.is_scalar = TRUE;
-    }
-    args.writer_rank=file_data->rank;
-    args.offsets.offsets_len=0;
-    args.offsets.offsets_val=NULL;
-    args.ldims.ldims_len=0;
-    args.ldims.ldims_val=NULL;
-    args.gdims.gdims_len=0;
-    args.gdims.gdims_val=NULL;
-    if (pvar->dimensions) {
-        create_offset_list_for_var(
-                 pvar,
-                 group,
-                 group->vars,
-                 group->attributes,
-                 &args.offsets.offsets_len,
-                 &args.offsets.offsets_val);
-        create_ldim_list_for_var(
-                 pvar,
-                 group,
-                 group->vars,
-                 group->attributes,
-                 &args.ldims.ldims_len,
-                 &args.ldims.ldims_val);
-        create_gdim_list_for_var(
-                 pvar,
-                 group,
-                 group->vars,
-                 group->attributes,
-                 &args.gdims.gdims_len,
-                 &args.gdims.gdims_val);
-     }
-
-    Func_Timer("ADIOS_WRITE_OP",
-            rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-            ADIOS_WRITE_OP,
-            &args,
-            pvar->data,
-            var_size,
-            &res););
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: ADIOS_WRITE_OP failed\n");
-        return_code=-2;
-    }
-
-    // looking for alternatives to this barrier.
-    // if variable writes on the staging server are collective (NC4), then clients must stay in sync.
-    // one solution is to cache scalar writes in addition to array writes.
-    MPI_Barrier(file_data->group_comm);
-
-    free(args.vpath);
-    free(args.vname);
-    if (pvar->dimensions) {
-        for (i=0;i<args.offsets.offsets_len;i++) {
-            free(args.offsets.offsets_val[i].vpath);
-            free(args.offsets.offsets_val[i].vname);
-        }
-        free(args.offsets.offsets_val);
-        for (i=0;i<args.ldims.ldims_len;i++) {
-            free(args.ldims.ldims_val[i].vpath);
-            free(args.ldims.ldims_val[i].vname);
-        }
-        free(args.ldims.ldims_val);
-        for (i=0;i<args.gdims.gdims_len;i++) {
-            free(args.gdims.gdims_val[i].vpath);
-            free(args.gdims.gdims_val[i].vname);
-        }
-        free(args.gdims.gdims_val);
-    }
-
-    return return_code;
-}
-
-
-void adios_nssi_init(
-        const PairStruct *parameters,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-    int verbose=5;
-    char logfile[1024];
-    int log_rank;
-    struct adios_nssi_method_data_struct *private;
-
-    if (!adios_nssi_initialized) {
-        adios_nssi_initialized = 1;
-    }
-
-    MPI_Comm_rank(method->init_comm, &global_rank);
-    MPI_Comm_size(method->init_comm, &global_size);
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_init\n", global_rank);
-
-//    MPI_Comm_rank(file_data->group_comm, &log_rank);
-//    sprintf(logfile, "%s.%04d", "adios_nssi_client.log", log_rank);
-//    logger_init((log_level)verbose, logfile);
-
-//    logger_init((log_level)verbose, NULL);
-
-#ifdef HAVE_PORTALS
-    nssi_ptl_init(PTL_IFACE_CLIENT, getpid() + 1000);
-    nssi_rpc_init(NSSI_RPC_PTL, NSSI_RPC_XDR);
-#endif
-#ifdef HAVE_INFINIBAND
-    nssi_ib_init(NULL);
-    rc = nssi_rpc_init(NSSI_RPC_IB, NSSI_RPC_XDR);
-#endif
-
-    /* Register the client operations */
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_OPEN_OP, adios_open_args, void, adios_open_res);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_GROUP_SIZE_OP, adios_group_size_args, void, void);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_READ_OP, adios_read_args, void, adios_read_res);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_WRITE_OP, adios_write_args, void, adios_write_res);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_END_ITER_OP, adios_end_iter_args, void, void);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_START_CALC_OP, adios_start_calc_args, void, void);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_STOP_CALC_OP, adios_stop_calc_args, void, void);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_CLOSE_OP, adios_close_args, void, void);
-    NSSI_REGISTER_CLIENT_STUB(ADIOS_FINALIZE_OP, adios_finalize_args, void, void);
-
-    list_init(&open_file_list, open_file_free);
-    list_init(&var_offset_list, var_offset_free);
-    list_init(&var_dim_list, var_dim_free);
-
-    private = malloc(sizeof(struct adios_nssi_method_data_struct));
-    private->has_outstanding_req=FALSE;
-    private->default_svc_index=-1;
-    method->method_data = private;
-
-    parse_nssi_config(getenv("ADIOS_NSSI_CONFIG_FILE"), &nssi_cfg);
-
-    return;
-}
-
-
-enum ADIOS_FLAG adios_nssi_should_buffer(
-        struct adios_file_struct *f,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-
-    adios_group_size_args args;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-
-    uint64_t max_data_size=0;
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "file is not open.  FAIL.\n");
-        return adios_flag_no;
-    }
-    file_data=of->file_data;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_should_buffer (write_size_bytes=%lu)\n", global_rank, f->write_size_bytes);
-
-    memset(&args, 0, sizeof(args));
-    args.fd = file_data->fd;
-    MPI_Reduce(
-            &f->write_size_bytes,
-            &max_data_size,
-            1,
-            MPI_UNSIGNED_LONG,
-            MPI_SUM,
-            0,
-            file_data->collective_op_comm);
-    if (file_data->collective_op_rank == 0) {
-        if (DEBUG > 3) printf("max_data_size==%lu\n", max_data_size);
-        args.data_size = max_data_size*file_data->collective_op_size;
-        args.data_size = max_data_size;
-        if (DEBUG > 3) printf("args.data_size==%lu\n", args.data_size);
-
-        Func_Timer("ADIOS_GROUP_SIZE_OP",
-                rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-                        ADIOS_GROUP_SIZE_OP,
-                        &args,
-                        NULL,
-                        0,
-                        NULL););
-        if (rc != NSSI_OK) {
-            fprintf(stderr, "NSSI ERROR: ADIOS_GROUP_SIZE_OP failed\n");
-        }
-    }
-    // this barrier ensures that none of the clients race ahead and
-    // attempt writes before the file is open and prepped on the staging server.
-    MPI_Barrier(file_data->group_comm);
-
-    return adios_flag_no;
-}
-
-int adios_nssi_open(
-        struct adios_file_struct *f,
-        struct adios_method_struct *method,
-        MPI_Comm comm)
-{
-    int rc=NSSI_OK;
-
-    adios_open_args args;
-    adios_open_res  res;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-    struct adios_nssi_method_data_struct *private=(struct adios_nssi_method_data_struct *)method->method_data;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_open\n", global_rank);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        file_data             = malloc(sizeof(struct adios_nssi_file_data_struct));
-        file_data->fd         = -1;
-        file_data->group_comm = MPI_COMM_NULL;
-        file_data->size       = 0;
-        file_data->rank       = 0;
-
-        file_data->svc_index=-1;
-        file_data->collective_op_comm=MPI_COMM_NULL;
-        file_data->collective_op_size=0;
-        file_data->collective_op_rank=-1;
-
-        file_data->use_single_server=FALSE;
-
-        of=open_file_create(method->base_path, f->name, file_data);
-    } else {
-        // sanity check
-        if (file_data->fd == -1) {
-            if (DEBUG>3) printf("open: %s is open but fd==-1.  sanity check failed.  attempting reopen.\n", f->name);
-            open_file_delete(of->fpath, of->fname);
-        } else {
-            // file already open
-            return adios_flag_no;
-        }
-    }
-
-    if (DEBUG>3) printf("global_rank(%d): enter adios_nssi_open (%s)\n", global_rank, f->name);
-
-    file_data->group_comm = comm;
-    if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: setup group_comm\n", global_rank);
-    if (file_data->group_comm != MPI_COMM_NULL) {
-        if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: get rank and size\n", global_rank);
-        MPI_Comm_rank(file_data->group_comm, &file_data->rank);
-        MPI_Comm_size(file_data->group_comm, &file_data->size);
-        if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: size(%d) rank(%d)\n", global_rank, file_data->size, file_data->rank);
-    } else {
-        file_data->group_comm=MPI_COMM_SELF;
-    }
-    f->group->process_id = file_data->rank;
-
-    if (file_data->size <= nssi_cfg.num_servers) {
-        // there are fewer clients than servers.
-        // assume file-per-process and use a single server for this file.
-        file_data->use_single_server=TRUE;
-        if (file_data->size < global_size) {
-            // a subset of all clients is writing
-            file_data->svc_index = ((global_rank/file_data->size)%nssi_cfg.num_servers);
-        } else {
-            file_data->svc_index = 0;
-        }
-    } else {
-        file_data->use_single_server=FALSE;
-        if ((file_data->size%nssi_cfg.num_servers) > 0) {
-            file_data->svc_index = file_data->rank/((file_data->size/nssi_cfg.num_servers)+1);
-        } else {
-            file_data->svc_index = file_data->rank/(file_data->size/nssi_cfg.num_servers);
-        }
-    }
-    if (private->default_svc_index == -1) {
-        private->default_svc_index=file_data->svc_index;
-    }
-
-    /* create a new communicator for just those clients, who share a default service. */
-    if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: before MPI_Comm_split\n", global_rank);
-    MPI_Comm_split(file_data->group_comm, file_data->svc_index, file_data->rank, &file_data->collective_op_comm);
-    if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: after MPI_Comm_split\n", global_rank);
-    /* find my rank in the new communicator */
-    if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: before MPI_Comm_size\n", global_rank);
-    MPI_Comm_size(file_data->collective_op_comm, &file_data->collective_op_size);
-    if (DEBUG>3) printf("global_rank(%d): adios_nssi_open: before MPI_Comm_rank\n", global_rank);
-    MPI_Comm_rank(file_data->collective_op_comm, &file_data->collective_op_rank);
-
-    if (DEBUG>3) printf("global_rank(%d) file_data->rank(%d) file_data->collective_op_rank(%d) default_service(%d)\n", global_rank, file_data->rank, file_data->collective_op_rank, file_data->svc_index);
-
-    svcs=(nssi_service *)calloc(nssi_cfg.num_servers, sizeof(nssi_service));
-    /* !global_rank0 has a preferred server for data transfers.  connect to preferred server.
-     * connect to other servers on-demand.
-     */
-    double GetSvcTime=MPI_Wtime();
-    if (DEBUG>3) printf("get staging-service: file_data->svc_index(%d) nid(%lld) pid(%llu) hostname(%s) port(%d)\n",
-            file_data->svc_index,
-            nssi_cfg.nssi_server_ids[file_data->svc_index].nid,
-            nssi_cfg.nssi_server_ids[file_data->svc_index].pid,
-            nssi_cfg.nssi_server_ids[file_data->svc_index].hostname,
-            nssi_cfg.nssi_server_ids[file_data->svc_index].port);
-    rc = nssi_get_service(nssi_cfg.nssi_server_ids[file_data->svc_index], -1, &svcs[file_data->svc_index]);
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: nssi_get_service failed\n");
-        return;
-    }
-
-
-    if (job_id==NULL) {
-        if (file_data->rank==0) {
-            job_id = getenv("PBS_JOBID");
-            if (job_id == NULL) {
-                fprintf(stderr, "adios_nssi_open: unable to determine job id.  defaulting id to \"UNKNOWN_JOB_ID\".\n");
-                job_id = strdup("UNKNOWN_JOB_ID");
-            } else {
-                int len=strlen(job_id)+36+1;
-                job_id=calloc(len,1);
-
-                struct uuid_st;
-                extern int uuid_create   (      struct uuid_st **_uuid);
-                extern int uuid_destroy  (      struct uuid_st  *_uuid);
-                extern int uuid_make     (      struct uuid_st  *_uuid, unsigned int _mode, ...);
-                extern int uuid_export   (const struct uuid_st  *_uuid, unsigned int _fmt,       void **_data_ptr, size_t *_data_len);
-
-                struct uuid_st *uuid;
-                char *uuid_str=NULL;
-                uuid_create(&uuid);
-                uuid_make(uuid, 1);
-                uuid_export(uuid, 1, &uuid_str, NULL);
-                uuid_destroy(uuid);
-
-                sprintf(job_id, "%s.%s", getenv("PBS_JOBID"), uuid_str);
-
-                free(uuid_str);
-
-                MPI_Bcast (job_id, len, MPI_BYTE, 0, file_data->group_comm);
-            }
-        } else {
-            job_id = getenv("PBS_JOBID");
-            if (job_id == NULL) {
-                fprintf(stderr, "adios_nssi_open: unable to determine job id.  defaulting id to \"UNKNOWN_JOB_ID\".\n");
-                job_id = strdup("UNKNOWN_JOB_ID");
-            } else {
-                int len=strlen(job_id)+36+1;
-                job_id=calloc(len,1);
-
-                MPI_Bcast (job_id, len, MPI_BYTE, 0, file_data->group_comm);
-            }
-        }
-    }
-
-    fprintf(stderr, "adios_nssi_open: job_id=%s\n", job_id);
-
-
-
-
-    gen_offset_list(
-            f->group,
-            f->group->vars,
-            f->group->attributes);
-    gen_ldim_list(
-            f->group,
-            f->group->vars,
-            f->group->attributes);
-    var_offset_printall();
-
-    memset(&args, 0, sizeof(args));
-    memset(&res, 0, sizeof(res));
-    args.client_id = strdup(job_id);
-    args.fname = malloc(sizeof(char) * (strlen(method->base_path) + strlen(f->name) + 1));
-    sprintf(args.fname, "%s%s", method->base_path, f->name);
-    args.gname = strdup(method->group->name);
-    switch(f->mode) {
-        case adios_mode_read:
-            args.mode = ADIOS_MODE_READ;
-            break;
-        case adios_mode_write:
-            args.mode = ADIOS_MODE_WRITE;
-            break;
-        case adios_mode_append:
-            args.mode = ADIOS_MODE_APPEND;
-            break;
-        case adios_mode_update:
-            args.mode = ADIOS_MODE_UPDATE;
-            break;
-    }
-    args.use_single_server=file_data->use_single_server;
-
-    Func_Timer("ADIOS_OPEN_OP",
-            rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-            ADIOS_OPEN_OP,
-            &args,
-            NULL,
-            0,
-            &res););
-    if (rc != NSSI_OK) {
-        fprintf(stderr, "NSSI ERROR: ADIOS_OPEN_OP failed\n");
-    }
-
-    file_data->fd = res.fd;
-
-    list_ins_next(&open_file_list, list_tail(&open_file_list), of);
-
-    free(args.fname);
-    free(args.gname);
-
-    return 1;
-}
-
-void adios_nssi_start_calculation(
-        struct adios_method_struct * method)
-{
-    int rc=NSSI_OK;
-    int myrank;
-
-    adios_start_calc_args args;
-
-    ListElmt *of_elmt;
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_start_calc\n", global_rank);
-
-    of_elmt = list_head(&open_file_list);
-    while(of_elmt) {
-        of = list_data(of_elmt);
-        if (of == NULL) {
-            fprintf(stderr, "file is not open.  FAIL.");
-            return;
-        }
-        file_data=of->file_data;
-        myrank=file_data->rank;
-
-        if (of->has_outstanding_req == FALSE) {
-            if (file_data->collective_op_rank == 0) {
-                memset(&args, 0, sizeof(args));
-                args.fd = file_data->fd;
-                Func_Timer("ADIOS_START_CALC_OP",
-                        rc = nssi_call_rpc(&svcs[file_data->svc_index],
-                                ADIOS_START_CALC_OP,
-                                &args,
-                                NULL,
-                                0,
-                                NULL,
-                                &of->start_calc_req););
-                if (rc != NSSI_OK) {
-                    fprintf(stderr, "NSSI ERROR: ADIOS_START_CALC_OP failed\n");
-                } else {
-                    of->has_outstanding_req=TRUE;
-                }
-            }
-        } else {
-            if (DEBUG>3) fprintf(stderr, "rank(%d) has an outstanding ADIOS_START_CALC_OP.  skipping.\n", global_rank);
-        }
-
-        of_elmt = list_next(of_elmt);
-    }
-
-    if (DEBUG>3) printf("rank(%d) exit adios_nssi_start_calc\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_end_iteration(
-        struct adios_method_struct * method)
-{
-    int rc=NSSI_OK;
-    int myrank;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_end_iter\n", global_rank);
-
-
-//    adios_end_iter_args args;
-//
-//    struct open_file *of=NULL;
-//    struct adios_nssi_file_data_struct *file_data=NULL;
-//
-//    of=open_file_find(method->base_path, f->name);
-//    if (of == NULL) {
-//        fprintf(stderr, "file is not open.  FAIL.");
-//        return;
-//    }
-//    file_data=of->file_data;
-//
-//    myrank=file_data->rank;
-//
-//    if (file_data->collective_op_rank == 0) {
-//        args.fd = file_data->fd;
-//        Func_Timer("ADIOS_END_ITER_OP",
-//                rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-//                ADIOS_END_ITER_OP,
-//                &args,
-//                NULL,
-//                0,
-//                NULL););
-//        if (rc != NSSI_OK) {
-//            //log_error(adios_nssi_debug_level, "unable to call remote adios_read");
-//        }
-//    }
-
-    return;
-}
-
-void adios_nssi_stop_calculation(
-        struct adios_method_struct * method)
-{
-    int rc=NSSI_OK;
-    int remote_rc=NSSI_OK;
-    int myrank;
-
-    adios_stop_calc_args args;
-
-    ListElmt *of_elmt;
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_stop_calc\n", global_rank);
-
-
-    of_elmt = list_head(&open_file_list);
-    while(of_elmt) {
-        of = list_data(of_elmt);
-        if (of == NULL) {
-            fprintf(stderr, "file is not open.  FAIL.");
-            return;
-        }
-        file_data=of->file_data;
-        myrank=file_data->rank;
-
-        if (of->has_outstanding_req == TRUE) {
-            // wait for any async writes to finish
-            if (file_data->collective_op_rank == 0) {
-                Func_Timer("ADIOS_START_CALC_OP nssi_wait",
-                        rc=nssi_wait(&of->start_calc_req, &remote_rc););
-                if (rc != NSSI_OK) {
-                    fprintf(stderr, "NSSI ERROR: unable to wait for remote ADIOS_START_CALC_OP\n");
-                }
-                if (remote_rc != NSSI_OK) {
-                    fprintf(stderr, "NSSI ERROR: ADIOS_START_CALC_OP failed\n");
-                }
-                of->has_outstanding_req = FALSE;
-            }
-        } else {
-            if (DEBUG>3) fprintf(stderr, "rank(%d) has no outstanding ADIOS_START_CALC_OP.  skipping.\n", global_rank);
-        }
-
-        of_elmt = list_next(of_elmt);
-    }
-
-
-    of_elmt = list_head(&open_file_list);
-    while(of_elmt) {
-        of = list_data(of_elmt);
-        if (of == NULL) {
-            fprintf(stderr, "file is not open.  FAIL.");
-            return;
-        }
-        file_data=of->file_data;
-        myrank=file_data->rank;
-
-        if (file_data->collective_op_rank == 0) {
-            memset(&args, 0, sizeof(args));
-            args.fd = file_data->fd;
-            Func_Timer("ADIOS_STOP_CALC_OP",
-                    rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-                            ADIOS_STOP_CALC_OP,
-                            &args,
-                            NULL,
-                            0,
-                            NULL););
-            if (rc != NSSI_OK) {
-                fprintf(stderr, "NSSI ERROR: ADIOS_STOP_CALC_OP failed\n");
-            }
-        }
-
-        of_elmt = list_next(of_elmt);
-    }
-
-    if (DEBUG>3) printf("rank(%d) exit adios_nssi_stop_calc\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_write(
-        struct adios_file_struct *f,
-        struct adios_var_struct *v,
-        void *data,
-        struct adios_method_struct *method)
-{
-    static int first_write = 1;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_write\n", global_rank);
-
-//    struct var_offset *vo = var_offset_find_by_id(v->id);
-    struct var_offset *vo = var_offset_find(f->group, "/", v->name);
-    if (vo != NULL) {
-        if (DEBUG>2) printf("rank(%d) var(%s, %s) is an offset.  skip write.\n", global_rank, v->path, v->name);
-        return;
-    }
-//    struct var_dim *vd = var_dim_find_by_id(v->id);
-    struct var_dim *vd = var_dim_find(f->group, "/", v->name);
-    if (vd != NULL) {
-        if (DEBUG>2) printf("rank(%d) var(%s, %s) is a dimension.  skip write.\n", global_rank, v->path, v->name);
-        return;
-    }
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "file is not open.  FAIL.");
-        return;
-    }
-    file_data=of->file_data;
-
-    if (f->mode == adios_mode_write || f->mode == adios_mode_append) {
-
-        if (file_data->rank==0) {
-            if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-            if (DEBUG>3) fprintf(stderr, "write var: %s start!\n", v->name);
-        }
-        uint64_t var_size = adios_get_var_size (v, data);
-        if (DEBUG>2) printf("rank (%d) adios_nssi_write: vpath(%s) vname(%s) vsize(%ld)\n", global_rank, v->path, v->name, var_size);
-        write_var(file_data,
-                f->group,
-                f->group->vars,
-                f->group->attributes,
-                v,
-                var_size,
-                f->group->adios_host_language_fortran);
-    } else {
-        if (DEBUG>3) fprintf(stderr, "entering unknown nc4 mode %d!\n", f->mode);
-    }
-    if (file_data->rank==0) {
-        if (DEBUG>3) fprintf(stderr, "write var: %s end!\n", v->name);
-        if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-    }
-
-    return;
-}
-
-
-void adios_nssi_read(
-        struct adios_file_struct *f,
-        struct adios_var_struct *v,
-        void *buffer,
-        uint64_t buffersize,
-        struct adios_method_struct *method)
-{
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_read\n", global_rank);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "file is not open.  FAIL.");
-        return;
-    }
-    file_data=of->file_data;
-
-    if(f->mode == adios_mode_read) {
-        v->data = buffer;
-        v->data_size = buffersize;
-
-        if (v->is_dim == adios_flag_yes) {
-            // this is a dimension variable.  values in the file are unreliable.
-            // assume the caller provided a valid value in 'buffer'.
-            if (DEBUG>3) fprintf(stderr, "------------------------------\n");
-            if (DEBUG>3) fprintf(stderr, "read var: %s! skipping dim var\n", v->name);
-            if (DEBUG>3) fprintf(stderr, "------------------------------\n");
-            return;
-        }
-
-        if (file_data->rank==0) {
-            if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-            if (DEBUG>3) fprintf(stderr, "read var: %s! start\n", v->name);
-        }
-        if (DEBUG>3) printf("rank (%d) adios_nssi_read: vname(%s) vsize(%ld)\n", global_rank, v->name, v->data_size);
-        read_var(file_data,
-                f->group,
-                f->group->vars,
-                f->group->attributes,
-                v);
-        if (file_data->rank==0) {
-            if (DEBUG>3) fprintf(stderr, "read var: %s! end\n", v->name);
-            if (DEBUG>3) fprintf(stderr, "-------------------------\n");
-        }
-    }
-
-    return;
-}
-
-void adios_nssi_close(
-        struct adios_file_struct *f,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-    struct adios_attribute_struct * a = f->group->attributes;
-    int myrank;
-
-    adios_close_args close_args;
-
-    struct open_file *of=NULL;
-    struct adios_nssi_file_data_struct *file_data=NULL;
-
-    if (DEBUG>3) printf("global_rank(%d) enter adios_nssi_close\n", global_rank);
-
-    of=open_file_find(method->base_path, f->name);
-    if (of == NULL) {
-        fprintf(stderr, "file is not open.  FAIL.");
-        return;
-    }
-    file_data=of->file_data;
-    myrank=file_data->rank;
-
-    if (DEBUG>3) printf("myrank(%d) enter adios_nssi_close\n", myrank);
-
-    if (f->mode == adios_mode_read) {
-        struct adios_var_struct * v = f->group->vars;
-        while (v)
-        {
-            v->data = v->adata = 0;
-            v = v->next;
-        }
-
-        if (file_data->rank==0) {
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-            if (DEBUG>1) fprintf(stderr, "reading done, NSSI file is virtually closed;\n");
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-        }
-    } else if (f->mode == adios_mode_write || f->mode == adios_mode_append) {
-        //fprintf(stderr, "entering nc4 write attribute mode!\n");
-        if (file_data->rank==0) {
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-            if (DEBUG>1) fprintf(stderr, "writing done, NSSI file is virtually closed;\n");
-            if (DEBUG>1) fprintf(stderr, "-------------------------\n");
-        }
-    }
-
-//    // make sure all clients have finsihed I/O before closing
-//    MPI_Barrier(file_data->group_comm);
-    if (file_data->collective_op_rank == 0) {
-        memset(&close_args, 0, sizeof(close_args));
-        close_args.fname = malloc(sizeof(char) * (strlen(method->base_path) + strlen(f->name) + 1));
-        sprintf(close_args.fname, "%s%s", method->base_path, f->name);
-        close_args.fd = file_data->fd;
-        if (DEBUG>3) printf("rank(%d) sending ADIOS_CLOSE_OP\n", myrank);
-        Func_Timer("ADIOS_CLOSE_OP",
-                rc = nssi_call_rpc_sync(&svcs[file_data->svc_index],
-                ADIOS_CLOSE_OP,
-                &close_args,
-                NULL,
-                0,
-                NULL););
-        if (rc != NSSI_OK) {
-            fprintf(stderr, "NSSI ERROR: ADIOS_CLOSE_OP failed\n");
-        }
-        free(close_args.fname);
-    }
-
-    open_file_delete(method->base_path, f->name);
-
-    file_data->group_comm = MPI_COMM_NULL;
-    file_data->fd = -1;
-    file_data->rank = -1;
-    file_data->size = 0;
-
-    if (DEBUG>3) printf("global_rank(%d) exit adios_nssi_close\n", global_rank);
-
-    return;
-}
-
-void adios_nssi_finalize(
-        int mype,
-        struct adios_method_struct *method)
-{
-    int rc=NSSI_OK;
-    int myrank;
-    adios_finalize_args finalize_args;
-    struct adios_nssi_method_data_struct *private=(struct adios_nssi_method_data_struct *)method->method_data;
-
-    if (DEBUG>3) printf("rank(%d) enter adios_nssi_finalize\n", global_rank);
-
-    if (global_rank == 0) {
-        if (job_id==NULL) {
-            if (DEBUG>2) fprintf(stderr, "adios_nssi_finalize - adios_nssi_open was never called.  skipping finalize.\n");
-        } else {
-            memset(&finalize_args, 0, sizeof(finalize_args));
-            finalize_args.client_id = strdup(job_id);
-            if (DEBUG>3) printf("rank(%d) sending ADIOS_FINALIZE_OP\n", myrank);
-            Func_Timer("ADIOS_FINALIZE_OP",
-                    rc = nssi_call_rpc_sync(&svcs[private->default_svc_index],
-                            ADIOS_FINALIZE_OP,
-                            &finalize_args,
-                            NULL,
-                            0,
-                            NULL););
-            if (rc != NSSI_OK) {
-                fprintf(stderr, "NSSI ERROR: ADIOS_FINALIZE_OP failed\n");
-            }
-            free(finalize_args.client_id);
-        }
-    }
-
-    free_nssi_config(&nssi_cfg);
-
-    if (adios_nssi_initialized)
-        adios_nssi_initialized = 0;
-}
diff --git a/src/write/adios_phdf5.c b/src/write/adios_phdf5.c
index 70ea2a1..de16b54 100644
--- a/src/write/adios_phdf5.c
+++ b/src/write/adios_phdf5.c
@@ -50,9 +50,10 @@ void adios_phdf5_init(const PairStruct * parameters
                      ,struct adios_method_struct * method
                      ){}
 void adios_phdf5_finalize (int mype, struct adios_method_struct * method){}
-enum ADIOS_FLAG adios_phdf5_should_buffer (struct adios_file_struct * fd
-                            ,struct adios_method_struct * method
-                            ){ return adios_flag_unknown; }
+enum BUFFERING_STRATEGY adios_phdf5_should_buffer (
+                     struct adios_file_struct * fd
+                    ,struct adios_method_struct * method
+                    ){ return no_buffering; }
 int adios_phdf5_open(struct adios_file_struct *fd
                     ,struct adios_method_struct * method
                     ,MPI_Comm comm
@@ -133,13 +134,11 @@ void adios_phdf5_init(const PairStruct * parameters
     md->size = 0;
     md->group_comm = MPI_COMM_NULL;
 }
-enum ADIOS_FLAG adios_phdf5_should_buffer (struct adios_file_struct * fd
-                            ,struct adios_method_struct * method
-                            )
+enum BUFFERING_STRATEGY adios_phdf5_should_buffer (struct adios_file_struct * fd
+                                                  ,struct adios_method_struct * method
+                                                  )
 {
-    //struct adios_phdf5_data_struct * md = (struct adios_phdf5_data_struct *)
-    //                                                  method->method_data;
-    return adios_flag_no;
+    return no_buffering;
 }
  
 int adios_phdf5_open(struct adios_file_struct *fd
@@ -190,6 +189,7 @@ int adios_phdf5_open(struct adios_file_struct *fd
         }
         case adios_mode_write:
         case adios_mode_append:
+        case adios_mode_update:
             md->fh = H5Fcreate (name, H5F_ACC_EXCL, H5P_DEFAULT, fapl_id);
             if (md->fh < 0)
             {
@@ -276,11 +276,18 @@ void adios_phdf5_read (struct adios_file_struct * fd
     }
 }
 
-static void adios_phdf5_do_read (struct adios_file_struct * fd
+/*static void adios_phdf5_do_read (struct adios_file_struct * fd
                               ,struct adios_method_struct * method
                               )
 {
 // This function is not useful for phdf5 since adios_read/write do real read/write 
+}*/
+
+
+void adios_phdf5_buffer_overflow (struct adios_file_struct * fd, 
+                                  struct adios_method_struct * method)
+{
+    // this never happens without shared buffering
 }
 
 void adios_phdf5_close (struct adios_file_struct * fd
@@ -347,11 +354,9 @@ int hw_attribute ( hid_t root_id
 
     H5Eset_auto ( NULL, NULL);
     int i, rank = 0, level;
-    char * name;
-    herr_t  status; 
     hid_t   h5_plist_id, h5_type_id, h5_dataspace_id;
-    hid_t h5_attribute_id, h5_memspace_id, grp_ids[NUM_GP];
-    hsize_t * h5_globaldims, * h5_localdims, * h5_offsets, * h5_strides; 
+    hid_t h5_attribute_id, grp_ids[NUM_GP];
+    hsize_t * h5_localdims;
     struct adios_dimension_struct * dims;
     struct adios_var_struct * var_linked;
     enum ADIOS_FLAG flag = adios_flag_unknown;
@@ -487,8 +492,6 @@ int hr_var (hid_t root_id
 
     H5Eset_auto ( NULL, NULL);
     int i, rank = 0, level, err_code = -2;
-    char * name;
-    herr_t  status; 
     hid_t   h5_plist_id, h5_type_id, h5_dataspace_id, h5_dataset_id, h5_memspace_id, grp_ids[NUM_GP];
     struct adios_dimension_struct * dims = pvar->dimensions;
     enum ADIOS_FLAG flag_yes = adios_flag_yes;
@@ -653,7 +656,7 @@ int hr_var (hid_t root_id
             }
             else
                 fprintf ( stderr, "PHDF5 ERROR:  cannot create dataset id for var: %s\n", pvar->name);
-            status = H5Sclose (h5_dataspace_id);
+            H5Sclose (h5_dataspace_id);
         }
         else
             fprintf (stderr, "PHDF5 ERROR: cannot create dataset space %s for var!\n", pvar->name);
@@ -675,8 +678,6 @@ int hw_var (hid_t root_id
 
     H5Eset_auto ( NULL, NULL);
     int i, rank = 0, level;
-    char * name;
-    herr_t  status; 
     hid_t   h5_plist_id, h5_type_id, h5_dataspace_id, h5_dataset_id, h5_memspace_id, grp_ids[NUM_GP];
     struct adios_dimension_struct * dims = pvar->dimensions;
     enum ADIOS_FLAG flag_yes = adios_flag_yes;
@@ -717,14 +718,13 @@ int hw_var (hid_t root_id
                 fprintf (stderr, "PHDF5 ERROR: can not create scalar %s in hw_var!\n", pvar->name); 
         }
         if (h5_dataset_id>0 ) {
-            status = -1;
-            if ( myrank==1)
-                status = H5Dwrite (h5_dataset_id, h5_type_id, H5S_ALL
-                                  ,H5S_ALL, h5_plist_id, pvar->data
-                                  );
+        	if ( myrank==1)
+        		H5Dwrite (h5_dataset_id, h5_type_id, H5S_ALL
+        				  ,H5S_ALL, h5_plist_id, pvar->data
+        		         );
             //printf("groupid=%d level=%d datasetid=%d\n",grp_ids[level],level,h5_dataset_id);
-            //printf("write dataset: name=%s/%s status=%d myrank=%d\n"
-            //         , pvar->path,pvar->name,status, myrank);
+            //printf("write dataset: name=%s/%s myrank=%d\n"
+            //         , pvar->path,pvar->name,myrank);
             H5Dclose (h5_dataset_id); 
         }
         H5Sclose (h5_dataspace_id); 
@@ -813,7 +813,7 @@ int hw_var (hid_t root_id
             return -1; 
          } 
 
-         status = H5Sselect_hyperslab (h5_dataspace_id, H5S_SELECT_SET
+         H5Sselect_hyperslab (h5_dataspace_id, H5S_SELECT_SET
                                   ,h5_offsets, h5_strides, h5_localdims, 0 
                                   );
 
@@ -836,13 +836,13 @@ int hw_var (hid_t root_id
                       " var: %s\n"
                      ,pvar->name);
             return -1; 
-         } 
-         status = H5Dwrite (h5_dataset_id, h5_type_id, h5_memspace_id 
+        }
+        H5Dwrite (h5_dataset_id, h5_type_id, h5_memspace_id
                            ,h5_dataspace_id, h5_plist_id, pvar->data
                            );
-        status = H5Dclose (h5_dataset_id);
-        status = H5Sclose (h5_dataspace_id);
-        status = H5Sclose (h5_memspace_id);
+        H5Dclose (h5_dataset_id);
+        H5Sclose (h5_dataspace_id);
+        H5Sclose (h5_memspace_id);
         free (h5_gbdims);  
         free (h5_strides);  
     }
@@ -850,7 +850,7 @@ int hw_var (hid_t root_id
         h5_localdims = (hsize_t *) malloc (rank * sizeof(hsize_t));
         hid_t h5p_dset_id;
         enum ADIOS_FLAG is_timeindex = adios_flag_no;
-        int  srank, dimindex = 0;
+        int  dimindex = 0;
         for ( i = 0; i < rank; i++) {
             h5_localdims [i] = parse_dimension(pvar_root, patt_root, &dims->dimension);
             if ( dims->dimension.is_time_index == adios_flag_yes) {
@@ -873,7 +873,7 @@ int hw_var (hid_t root_id
                     h5_strides [i] = 1; 
                 }
                 h5_dataspace_id = H5Dget_space(h5_dataset_id);
-                srank = H5Sget_simple_extent_ndims (h5_dataspace_id);
+                H5Sget_simple_extent_ndims (h5_dataspace_id);
                 //fprintf(stderr, "var %s has time index %d %d \n"
                 //       ,pvar->name, h5_offsets[1], h5_globaldims[1]); 
                 H5Sget_simple_extent_dims (h5_dataspace_id, h5_globaldims, NULL);
@@ -956,7 +956,7 @@ int hw_var (hid_t root_id
  */
 int getH5TypeId(enum ADIOS_DATATYPES type, hid_t* h5_type_id \
                ,enum ADIOS_FLAG fortran_flag) {
-    int size, status=0;
+    int status=0;
     switch (type)
     {
         case adios_byte:
@@ -1139,7 +1139,7 @@ void hw_gopen (hid_t root_id, char * path, hid_t * grp_id, int * level, enum ADI
 hsize_t parse_dimension(struct adios_var_struct *pvar_root,
                         struct adios_attribute_struct *patt_root, 
                         struct adios_dimension_item_struct * dim) {
-    hsize_t dimsize;
+    hsize_t dimsize = 0;
     struct adios_var_struct *var_linked = NULL;
     struct adios_attribute_struct *attr_linked;
     if ( dim->var) {
diff --git a/src/write/adios_posix.c b/src/write/adios_posix.c
index ae4ef9f..e9da157 100644
--- a/src/write/adios_posix.c
+++ b/src/write/adios_posix.c
@@ -1,4 +1,4 @@
-/* 
+           /* 
  * 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.
  *
@@ -13,6 +13,7 @@
 #include <math.h>
 #include <string.h>
 #include <stdint.h>
+#include <assert.h>
 
 // see if we have MPI or other tools
 #include "config.h"
@@ -27,8 +28,9 @@
 #include "core/adios_internals.h"
 #include "core/buffer.h"
 #include "core/util.h"
+#include "core/adios_logger.h"
 
-#if defined(__APPLE__) 
+#if defined(__APPLE__)  || defined(__CYGWIN__)
 #    define O_LARGEFILE 0
 #endif
 
@@ -55,8 +57,6 @@ struct adios_POSIX_data_struct
     // old index structs we read in and have to be merged in
     struct adios_index_struct_v1 * index;
 
-    uint64_t vars_start;
-    uint64_t vars_header_size;
 #ifdef HAVE_MPI
     // Metadata file handle
     int mf;
@@ -65,9 +65,18 @@ struct adios_POSIX_data_struct
     int size;
 #endif
     int g_have_mdf;
+    int file_is_open; // = 1 if in append mode we leave the file open (close at finalize)
+    int index_is_in_memory; // = 1 when index is kept in memory, no need to read from file. =1 after first 'append/update' is completed but not after first 'write'.
+    uint64_t pg_start_next; // remember end of PG data for future append steps
+
+    uint64_t total_bytes_written;  /* bytes including all PGs written during one open()..close() with overflows
+          index position will be fd->current_pg->pg_start_in_file + total_bytes_written
+          it is calculated but not used; fd->current_pg->pg_start_in_file will point to index beginning
+          */
 };
 
 
+/* For each group and each method, init is called, 'method' is unique for each call */
 void adios_posix_init (const PairStruct * parameters
                       ,struct adios_method_struct * method
                       )
@@ -83,8 +92,6 @@ void adios_posix_init (const PairStruct * parameters
     p = (struct adios_POSIX_data_struct *) method->method_data;
     adios_buffer_struct_init (&p->b);
     p->index = adios_alloc_index_v1(1); // with hashtables
-    p->vars_start = 0;
-    p->vars_header_size = 0;
 #ifdef HAVE_MPI
     p->mf = 0;
     p->group_comm = MPI_COMM_NULL;
@@ -92,18 +99,23 @@ void adios_posix_init (const PairStruct * parameters
     p->size = 0;
 #endif
     p->g_have_mdf = 1;
+    p->file_is_open = 0;  // = 1 when posix file is open (used in append mode only)
+    p->index_is_in_memory = 0; 
+    p->pg_start_next = 0;
+    p->total_bytes_written = 0;
 }
 
 
 // Indices for the timer object
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
-int ADIOS_TIMER_POSIX_COMM = ADIOS_TIMING_MAX_USER_TIMERS + 0;
-int ADIOS_TIMER_POSIX_IO = ADIOS_TIMING_MAX_USER_TIMERS + 1;
-int ADIOS_TIMER_POSIX_MD = ADIOS_TIMING_MAX_USER_TIMERS + 2;
-int ADIOS_TIMER_POSIX_AD_OPEN = ADIOS_TIMING_MAX_USER_TIMERS + 3;
-int ADIOS_TIMER_POSIX_AD_WRITE = ADIOS_TIMING_MAX_USER_TIMERS + 4;
-int ADIOS_TIMER_POSIX_AD_CLOSE = ADIOS_TIMING_MAX_USER_TIMERS + 5;
-int ADIOS_TIMER_POSIX_AD_SHOULD_BUFFER = ADIOS_TIMING_MAX_USER_TIMERS + 6;
+static int ADIOS_TIMER_COMM         = ADIOS_TIMING_MAX_USER_TIMERS + 0;
+static int ADIOS_TIMER_IO           = ADIOS_TIMING_MAX_USER_TIMERS + 1;
+static int ADIOS_TIMER_LOCALMD      = ADIOS_TIMING_MAX_USER_TIMERS + 2;
+static int ADIOS_TIMER_GLOBALMD     = ADIOS_TIMING_MAX_USER_TIMERS + 3;
+static int ADIOS_TIMER_AD_OPEN      = ADIOS_TIMING_MAX_USER_TIMERS + 4;
+static int ADIOS_TIMER_AD_WRITE     = ADIOS_TIMING_MAX_USER_TIMERS + 5;
+static int ADIOS_TIMER_AD_OVERFLOW  = ADIOS_TIMING_MAX_USER_TIMERS + 6;
+static int ADIOS_TIMER_AD_CLOSE     = ADIOS_TIMING_MAX_USER_TIMERS + 7;
 #endif
 
 int adios_posix_open (struct adios_file_struct * fd
@@ -118,10 +130,7 @@ int adios_posix_open (struct adios_file_struct * fd
 
     char *temp_string, *m_size;
 
-    temp_string = (char *) malloc (strlen (method->parameters) + 1);
-    strcpy (temp_string, method->parameters);
-    trim_spaces (temp_string);
-
+    temp_string = a2s_trim_spaces (method->parameters);
     if ( (m_size = strstr (temp_string, "have_metadata_file")) )
     {
         char * m = strchr (m_size, '=');
@@ -137,17 +146,19 @@ int adios_posix_open (struct adios_file_struct * fd
         // by default, write metadata file. 
         p->g_have_mdf = 1;
     }
+    free (temp_string);
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
-    int timer_count = 7;
+    int timer_count = 8;
     char ** timer_names = (char**) malloc (timer_count * sizeof (char*) );
     timer_names [0] = "Communication";
     timer_names [1] = "I/O";
-    timer_names [2] = "Metadata";
-    timer_names [3] = "ad_open";
-    timer_names [4] = "ad_write";
-    timer_names [5] = "ad_close";
-    timer_names [6] = "ad_should_buffer";
+    timer_names [2] = "Local metadata";
+    timer_names [3] = "Global metadata";
+    timer_names [4] = "ad_open";
+    timer_names [5] = "ad_write";
+    timer_names [6] = "ad_overflow";
+    timer_names [7] = "ad_close";
 
 
     // Ensure both timing objects exist
@@ -161,11 +172,10 @@ int adios_posix_open (struct adios_file_struct * fd
         if (!fd->group->prev_timing_obj)
             fd->group->prev_timing_obj = adios_timing_create (timer_count, timer_names);
     }
-
-
+    free (timer_names);
 #endif
 
-START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
+START_TIMER (ADIOS_TIMER_AD_OPEN);
 
 #ifdef HAVE_MPI
     // Need to figure out new the new fd->name, such as restart.bp.0, restart.bp.1....
@@ -236,9 +246,7 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
     fd->subfile_index = p->rank; // Only if HAVE_MPI
 #endif
 
-    struct stat s;
-    if (stat (subfile_name, &s) == 0)
-        p->b.file_size = s.st_size;
+    p->total_bytes_written = 0; // counts bytes written only in this open()..close() step
 
     switch (fd->mode)
     {
@@ -253,8 +261,10 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
 
                 return 0;
             }
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
+            struct stat s;
+            if (fstat (p->b.f, &s) == 0)
+                p->b.file_size = s.st_size;
+            p->file_is_open = 1;
 
             break;
         }
@@ -300,6 +310,7 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
 
 #ifdef HAVE_MPI
             // open metadata file
+            START_TIMER (ADIOS_TIMER_GLOBALMD);
             if (p->group_comm != MPI_COMM_SELF && p->g_have_mdf)
             {
                 if (p->rank == 0)
@@ -323,9 +334,10 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
                     }
                 }
             }
+            STOP_TIMER (ADIOS_TIMER_GLOBALMD);
 #endif
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
+            p->file_is_open = 1;
+            p->pg_start_next = 0;
 
             break;
         }
@@ -334,8 +346,13 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
         case adios_mode_update:
         {
             int old_file = 1;
+            
 #ifdef HAVE_MPI
-            if (p->group_comm != MPI_COMM_SELF)
+            /* FIXME: we need to do this synchronisation only if we don't have
+               the subdirectory already created. p->index_is_in_memory will be
+               true from the second append call, at which point this subdir
+               must exist */
+            if (p->group_comm != MPI_COMM_SELF && !p->index_is_in_memory)
             {
                 if (p->rank == 0)
                 {
@@ -352,123 +369,152 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
                 MPI_Barrier (p->group_comm);
             }
 #endif
-            p->b.f = open (subfile_name, O_RDWR | O_LARGEFILE);
-            if (p->b.f == -1)
+           
+
+            // if file was not closed in previous append steps, then we are good, otherwise open file
+            if (!p->file_is_open) 
             {
-                old_file = 0;
-                p->b.f = open (subfile_name,  O_WRONLY | O_CREAT | O_LARGEFILE
-                                ,  S_IRUSR | S_IWUSR
-                                 | S_IRGRP | S_IWGRP
-                                 | S_IROTH | S_IWOTH
-                                );
+                p->b.f = open (subfile_name, O_RDWR | O_LARGEFILE);
                 if (p->b.f == -1)
                 {
-                    fprintf (stderr, "adios_posix_open failed for "
-                                     "base_path %s, name %s\n"
-                            ,method->base_path, fd->name
-                            );
+                    old_file = 0;
+                    p->b.f = open (subfile_name,  O_WRONLY | O_CREAT | O_LARGEFILE,
+                                  S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+                    if (p->b.f == -1)
+                    {
+                        fprintf (stderr, "adios_posix_open failed to create  file %s\n" ,subfile_name);
 
-                    free (subfile_name);
-                    free (mdfile_name);
+                        free (subfile_name);
+                        free (mdfile_name);
 
-                    return 0;
+                        return 0;
+                    }
                 }
+                p->file_is_open = 1;
             }
+
 #ifdef HAVE_MPI
-            // open metadata file
-            if (p->group_comm != MPI_COMM_SELF)
+            // open metadata file by rank 0, if user wants to write it
+            START_TIMER (ADIOS_TIMER_GLOBALMD);
+            if (p->group_comm != MPI_COMM_SELF && 
+                p->g_have_mdf &&
+                p->rank == 0)
             {
-                if (p->rank == 0)
+                p->mf = open (mdfile_name, O_WRONLY | O_TRUNC | O_LARGEFILE
+                        , S_IRUSR | S_IWUSR
+                        | S_IRGRP | S_IWGRP
+                        | S_IROTH | S_IWOTH
+                        );
+                if (p->mf == -1)
                 {
-                    p->mf = open (mdfile_name, O_WRONLY | O_TRUNC | O_LARGEFILE
-                                              , S_IRUSR | S_IWUSR
-                                              | S_IRGRP | S_IWGRP
-                                              | S_IROTH | S_IWOTH
-                                 );
+                    p->mf = open (mdfile_name, O_WRONLY| O_CREAT | O_LARGEFILE
+                            , S_IRUSR | S_IWUSR
+                            | S_IRGRP | S_IWGRP
+                            | S_IROTH | S_IWOTH
+                            );
                     if (p->mf == -1)
                     {
-                        p->mf = open (mdfile_name, O_WRONLY| O_CREAT | O_LARGEFILE
-                                                 , S_IRUSR | S_IWUSR
-                                                 | S_IRGRP | S_IWGRP
-                                             | S_IROTH | S_IWOTH
-                                     );
-                        if (p->mf == -1)
-                        {
-                            fprintf (stderr, "adios_posix_open failed for "
-                                             "base_path %s, name %s\n"
-                                    ,method->base_path, fd->name
-                                    );
-
-                            free (subfile_name);
-                            free (mdfile_name);
+                        fprintf (stderr, "adios_posix_open failed to create  file %s\n" ,mdfile_name);
+                        free (subfile_name);
+                        free (mdfile_name);
 
-                            return 0;
-                        }
+                        return 0;
                     }
                 }
             }
+            STOP_TIMER (ADIOS_TIMER_GLOBALMD);
 #endif
+            START_TIMER (ADIOS_TIMER_LOCALMD);
             if (old_file)
             {
-                // now we have to read the old stuff so we can merge it
-                // in at the end and set the base_offset for the old index
-                // start
-                uint32_t version;
-                adios_posix_read_version (&p->b);
-                adios_parse_version (&p->b, &version);
-
-                switch (version & ADIOS_VERSION_NUM_MASK)
-                {
-                    case 1:
-                    case 2:
-                    case 3:
-                        // read the old stuff and set the base offset
-                        adios_posix_read_index_offsets (&p->b);
-                        adios_parse_index_offsets_v1 (&p->b);
-
-                        adios_posix_read_process_group_index (&p->b);
-                        adios_parse_process_group_index_v1 (&p->b, &p->index->pg_root, &p->index->pg_tail);
-
-                        // find the largest time index so we can append properly
-                        struct adios_index_process_group_struct_v1 * pg;
-                        uint32_t max_time_index = 0;
-                        pg = p->index->pg_root;
-                        while (pg)
-                        {
-                            if (pg->time_index > max_time_index)
-                                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);
-                        adios_parse_vars_index_v1 (&p->b, &p->index->vars_root, 
-                                                   p->index->hashtbl_vars,
-                                                   &p->index->vars_tail);
-
-                        adios_posix_read_attributes_index (&p->b);
-                        adios_parse_attributes_index_v1 (&p->b, &p->index->attrs_root);
+                // There is previous data in file. Metadata is in memory 
+                // from the second append step. Metadata is only in the 
+                // existing file at first append (even if the file was
+                // created by a 'w' mode write step in this run
 
-                        fd->base_offset = p->b.end_of_pgs;
-                        fd->pg_start_in_file = p->b.end_of_pgs;
-                        break;
-
-                    default:
-                        fprintf (stderr, "Unknown bp version: %d.  "
-                                         "Cannot append\n"
-                                ,version
-                                );
+                if (!p->index_is_in_memory)
+                {
+                    // now we have to read the old stuff so we can merge it
+                    // in at the end and set the base_offset for the old index
+                    // start
+                    uint32_t version;
+                    struct stat s;
+                    if (fstat (p->b.f, &s) == 0)
+                        p->b.file_size = s.st_size;
+                    adios_posix_read_version (&p->b);
+                    adios_parse_version (&p->b, &version);
+
+                    switch (version & ADIOS_VERSION_NUM_MASK)
+                    {
+                        case 1:
+                        case 2:
+                        case 3:
+                            // read the old stuff and set the base offset
+                            adios_posix_read_index_offsets (&p->b);
+                            adios_parse_index_offsets_v1 (&p->b);
+
+                            adios_posix_read_process_group_index (&p->b);
+                            adios_parse_process_group_index_v1 (&p->b, &p->index->pg_root, &p->index->pg_tail);
+
+                            // find the largest time index so we can append properly
+                            struct adios_index_process_group_struct_v1 * pg;
+                            uint32_t max_time_index = 0;
+                            pg = p->index->pg_root;
+                            while (pg)
+                            {
+                                if (pg->time_index > max_time_index)
+                                    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);
+                            adios_parse_vars_index_v1 (&p->b, &p->index->vars_root, 
+                                    p->index->hashtbl_vars,
+                                    &p->index->vars_tail);
+
+                            adios_posix_read_attributes_index (&p->b);
+                            adios_parse_attributes_index_v1 (&p->b, &p->index->attrs_root);
+
+                            // write data where previous steps finished (minus the index)
+                            p->pg_start_next = p->b.end_of_pgs;
+
+                            break;
+
+                        default:
+                            fprintf (stderr, "Unknown bp version: %d.  "
+                                    "Cannot append\n"
+                                    ,version
+                                    );
 
-                        free (subfile_name);
-                        free (mdfile_name);
+                            free (subfile_name);
+                            free (mdfile_name);
 
-                        return 0;
+                            return 0;
+                    }
+                }
+                else 
+                {
+                    // index is in memory, update time index and offsets
+                    if (fd->mode == adios_mode_append) {
+                        fd->group->time_index++;
+                    }
                 }
             }
+            else 
+            {
+                // there is no previous data, start from offset 0
+                p->pg_start_next = 0;
+            }
+            STOP_TIMER (ADIOS_TIMER_LOCALMD);
+            //printf ("adios_posix_open append/update, old_file=%d, index_is_in_memory=%d, "
+            //        "pg_start=%" PRId64 "\n",
+            //        old_file, p->index_is_in_memory, p>pg_start_next);
 
+            p->index_is_in_memory = 1; // to notify future append steps about the good news
             break;
         }
 
@@ -493,57 +539,16 @@ START_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
         free (mdfile_name);
     }
 
-    STOP_TIMER (ADIOS_TIMER_POSIX_AD_OPEN);
+    STOP_TIMER (ADIOS_TIMER_AD_OPEN);
 
     return 1;
 }
 
-enum ADIOS_FLAG adios_posix_should_buffer (struct adios_file_struct * fd
-                                          ,struct adios_method_struct * method
-                                          )
+enum BUFFERING_STRATEGY adios_posix_should_buffer (struct adios_file_struct * fd
+                                                  ,struct adios_method_struct * method
+                                                  )
 {
-    struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
-                                                          method->method_data;
-
-    START_TIMER (ADIOS_TIMER_POSIX_AD_SHOULD_BUFFER);
-
-    if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
-    {
-        // write the process group header
-        adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
-
-        lseek (p->b.f, fd->base_offset, SEEK_SET);
-        START_TIMER (ADIOS_TIMER_POSIX_MD);
-        ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-        STOP_TIMER (ADIOS_TIMER_POSIX_MD);
-        if (s != fd->bytes_written)
-        {
-            fprintf (stderr, "POSIX method tried to write %llu, "
-                             "only wrote %lld. %s:%d\n"
-                    ,fd->bytes_written
-                    ,(int64_t)s
-                    ,__func__, __LINE__
-                    );
-        }
-        fd->base_offset += s;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-
-        // setup for writing vars
-        adios_write_open_vars_v1 (fd);
-        p->vars_start = lseek (p->b.f, fd->offset, SEEK_CUR);  // save loc
-        p->vars_header_size = p->vars_start - fd->base_offset;  // the size
-        p->vars_start -= fd->offset; // adjust to start of header
-        fd->base_offset += fd->offset;  // add the size of the vars header
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-    }
-
-    STOP_TIMER (ADIOS_TIMER_POSIX_AD_SHOULD_BUFFER);
-
-    return fd->shared_buffer;   // buffer if there is space
+    return continue_with_new_pg;
 }
 
 void adios_posix_write (struct adios_file_struct * fd
@@ -552,11 +557,7 @@ void adios_posix_write (struct adios_file_struct * fd
                        ,struct adios_method_struct * method
                        )
 {
-    struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
-                                                          method->method_data;
-
-    START_TIMER (ADIOS_TIMER_POSIX_AD_WRITE);
-
+    START_TIMER (ADIOS_TIMER_AD_WRITE);
     if (v->got_buffer == adios_flag_yes)
     {
         if (data != v->data)  // if the user didn't give back the same thing
@@ -573,84 +574,7 @@ void adios_posix_write (struct adios_file_struct * fd
             return;
         }
     }
-
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        // var payload sent for sizing information
-        adios_write_var_header_v1 (fd, v);
-        START_TIMER (ADIOS_TIMER_POSIX_MD);
-        ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-        STOP_TIMER (ADIOS_TIMER_POSIX_MD);
-        if (s != fd->bytes_written)
-        {
-            fprintf (stderr, "POSIX method tried to write %llu, "
-                             "only wrote %lld. %s:%d\n"
-                    ,fd->bytes_written
-                    ,(int64_t)s
-                    ,__func__, __LINE__
-                    );
-        }
-        fd->base_offset += s;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-
-        // write payload
-        adios_write_var_payload_v1 (fd, v);
-        uint64_t var_size = adios_get_var_size (v, v->data);
-        if (fd->base_offset + var_size > fd->pg_start_in_file + fd->write_size_bytes)
-            fprintf (stderr, "adios_posix_write exceeds pg bound. File is corrupted. "
-                             "Need to enlarge group size. \n"); 
-
-        int32_t to_write;
-        uint64_t bytes_written = 0;
-        if (var_size > MAX_MPIWRITE_SIZE)
-        {
-            to_write = MAX_MPIWRITE_SIZE;
-        }
-        else
-        {
-            to_write = (int32_t) fd->bytes_written;
-        }
-
-        while (bytes_written < var_size)
-        {
-            START_TIMER (ADIOS_TIMER_POSIX_IO);
-            bytes_written += write (p->b.f, v->data + bytes_written, to_write);
-            STOP_TIMER (ADIOS_TIMER_POSIX_IO);
-            if (var_size > bytes_written)
-            {
-                if (var_size - bytes_written > MAX_MPIWRITE_SIZE)
-                {
-                    to_write = MAX_MPIWRITE_SIZE;
-                }
-                else
-                {
-                    to_write = var_size - bytes_written;
-                }
-            }
-        }
-
-        START_TIMER (ADIOS_TIMER_POSIX_IO);
-        s = write (p->b.f, v->data, var_size);
-        STOP_TIMER (ADIOS_TIMER_POSIX_IO);
-        s = bytes_written;
-        if (s != var_size)
-        {
-            fprintf (stderr, "POSIX method tried to write %llu, "
-                             "only wrote %lld. %s:%d\n"
-                    ,var_size
-                    ,(int64_t)s
-                    ,__func__, __LINE__
-                    );
-        }
-        fd->base_offset += s;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-    }
-
-    STOP_TIMER (ADIOS_TIMER_POSIX_AD_WRITE);
+    STOP_TIMER (ADIOS_TIMER_AD_WRITE);
 }
 
 void adios_posix_get_write_buffer (struct adios_file_struct * fd
@@ -682,7 +606,7 @@ void adios_posix_get_write_buffer (struct adios_file_struct * fd
         if (!*buffer)
         {
             adios_method_buffer_free (mem_allowed);
-            fprintf (stderr, "Out of memory allocating %llu bytes for %s\n"
+            fprintf (stderr, "Out of memory allocating %" PRIu64 " bytes for %s\n"
                     ,*size, v->name
                     );
             v->got_buffer = adios_flag_no;
@@ -703,7 +627,7 @@ void adios_posix_get_write_buffer (struct adios_file_struct * fd
     else
     {
         adios_method_buffer_free (mem_allowed);
-        fprintf (stderr, "OVERFLOW: Cannot allocate requested buffer of %llu "
+        fprintf (stderr, "OVERFLOW: Cannot allocate requested buffer of %" PRIu64 " "
                          "bytes for %s\n"
                 ,*size
                 ,v->name
@@ -724,10 +648,8 @@ void adios_posix_read (struct adios_file_struct * fd
     v->data_size = buffer_size;
 }
 
-static void adios_posix_do_write (struct adios_file_struct * fd
+static void adios_posix_write_pg (struct adios_file_struct * fd
                                  ,struct adios_method_struct * method
-                                 ,char * buffer
-                                 ,uint64_t buffer_size
                                  )
 {
     struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
@@ -735,55 +657,84 @@ static void adios_posix_do_write (struct adios_file_struct * fd
     int32_t to_write;
     uint64_t bytes_written = 0;
 
-    if (fd->shared_buffer == adios_flag_yes)
-    {
-        lseek (p->b.f, p->b.end_of_pgs, SEEK_SET);
-        if (p->b.end_of_pgs + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-            fprintf (stderr, "adios_posix_write exceeds pg bound. File is corrupted. "
-                             "Need to enlarge group size. \n");
+    // use offsets set at the end of previous append step
+    // fd->current_pg->pg_start_in_file needs to be correctly set before
+    // calling adios_build_index_v1()
+    fd->current_pg->pg_start_in_file = p->pg_start_next;
 
-        if (fd->bytes_written > MAX_MPIWRITE_SIZE)
-        {
-            to_write = MAX_MPIWRITE_SIZE;
-        }
-        else
-        {
-            to_write = (int32_t) fd->bytes_written;
-        }
+    off_t offset = fd->current_pg->pg_start_in_file;
+
+    /* FIXME: what is this check? Should never happen ? */
+    assert (p->b.end_of_pgs <= fd->current_pg->pg_start_in_file);
+    if (p->b.end_of_pgs > fd->current_pg->pg_start_in_file)
+        offset = p->b.end_of_pgs;
+
+    /*printf ("Write PG: pg_start_in_file = %" PRIu64 "  pg_start_next = %" PRIu64 "  "
+            "buffer offset = %" PRIu64 "  total_bytes_written = %" PRIu64 "\n",
+            fd->current_pg->pg_start_in_file, p->pg_start_next, fd->offset, p->total_bytes_written);*/
+
+    lseek (p->b.f, offset, SEEK_SET);
+
+    if (fd->bytes_written > MAX_MPIWRITE_SIZE)
+    {
+        to_write = MAX_MPIWRITE_SIZE;
+    }
+    else
+    {
+        to_write = (int32_t) fd->bytes_written;
+    }
 
-        while (bytes_written < fd->bytes_written)
+    while (bytes_written < fd->bytes_written)
+    {
+        write (p->b.f, fd->buffer, to_write);
+        bytes_written += to_write;
+        if (fd->bytes_written > bytes_written)
         {
-            write (p->b.f, fd->buffer, to_write);
-            bytes_written += to_write;
-            if (fd->bytes_written > bytes_written)
+            if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
             {
-                if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
-                {
-                    to_write = MAX_MPIWRITE_SIZE;
-                }
-                else
-                {
-                    to_write = fd->bytes_written - bytes_written;
-                }
+                to_write = MAX_MPIWRITE_SIZE;
+            }
+            else
+            {
+                to_write = fd->bytes_written - bytes_written;
             }
         }
     }
 
-    // index location calculation:
-    // for buffered, base_offset = 0, fd->offset = write loc
-    // for unbuffered, base_offset = write loc, fd->offset = 0
-    // for append buffered, base_offset = start, fd->offset = size
-    lseek (p->b.f, fd->base_offset + fd->offset, SEEK_SET);
-    write (p->b.f, buffer, buffer_size);
+    p->total_bytes_written += bytes_written;
+    // remember end of PG data (before index) in case overflow or close, or future append needs it
+    // also, next PG will be written to this offset in overflow or close()
+    p->pg_start_next += bytes_written; 
+
+    /*printf ("Completed PG: pg_start_in_file = %" PRIu64 "  pg_start_next = %" PRIu64 "  "
+            "buffer offset = %" PRIu64 "  total_bytes_written = %" PRIu64 "  bytes_written = %" PRIu64 "\n",
+            fd->current_pg->pg_start_in_file, p->pg_start_next, fd->offset, p->total_bytes_written, bytes_written);*/
 
 }
 
-static void adios_posix_do_read (struct adios_file_struct * fd
-                                ,struct adios_method_struct * method
-                                )
+static void adios_posix_write_index (struct adios_file_struct * fd
+        ,struct adios_method_struct * method
+        ,char * buffer
+        ,uint64_t buffer_size
+        )
 {
     struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
                                                           method->method_data;
+    // index location: p->pg_start_next points to the end of the last written PG
+    /*printf ("Write Index: pg_start_next = %" PRIu64 "  "
+            "buffer size = %" PRIu64 " total_bytes_written = %" PRIu64 "\n",
+            p->pg_start_next, buffer_size, p->total_bytes_written);*/
+
+    lseek (p->b.f, p->pg_start_next, SEEK_SET);
+    write (p->b.f, buffer, buffer_size);
+}
+
+static void adios_posix_do_read (struct adios_file_struct * fd
+        ,struct adios_method_struct * method
+        )
+{
+    struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
+        method->method_data;
     struct adios_var_struct * v = fd->group->vars;
 
     uint32_t version = 0;
@@ -907,128 +858,65 @@ static void adios_posix_do_read (struct adios_file_struct * fd
     adios_buffer_struct_clear (&p->b);
 }
 
+void adios_posix_buffer_overflow (struct adios_file_struct * fd, 
+                                  struct adios_method_struct * method)
+{
+    START_TIMER (ADIOS_TIMER_AD_OVERFLOW);
+    /* We get a full PG at this point that we can write out now. 
+       The index should be built in close() after writing the rest of a PG there.
+    */
+    START_TIMER (ADIOS_TIMER_IO);
+    adios_posix_write_pg (fd, method); // Buffered vars written here
+    STOP_TIMER (ADIOS_TIMER_IO);
+
+    STOP_TIMER (ADIOS_TIMER_AD_OVERFLOW);
+}
+
 void adios_posix_close (struct adios_file_struct * fd
                        ,struct adios_method_struct * method
                        )
 {
     struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
                                                           method->method_data;
-    struct adios_attribute_struct * a = fd->group->attributes;
-
     struct adios_index_process_group_struct_v1 * new_pg_root = 0;
     struct adios_index_var_struct_v1 * new_vars_root = 0;
     struct adios_index_attribute_struct_v1 * new_attrs_root = 0;
 
-    START_TIMER (ADIOS_TIMER_POSIX_AD_CLOSE);
+    START_TIMER (ADIOS_TIMER_AD_CLOSE);
 
     switch (fd->mode)
     {
         case adios_mode_write:
         {
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                off_t new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                new_off = lseek (p->b.f, 0, SEEK_CUR);
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                START_TIMER (ADIOS_TIMER_POSIX_IO);
-                ssize_t s = write (p->b.f, fd->buffer, p->vars_header_size);
-                STOP_TIMER (ADIOS_TIMER_POSIX_IO);
-                if (s != fd->vars_start)
-                {
-                    fprintf (stderr, "POSIX method tried to write %llu, "
-                                     "only wrote %lld. %s:%d\n"
-                            ,fd->vars_start
-                            ,(int64_t)s
-                            ,__func__, __LINE__
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&p->b);
-
-                new_off = lseek (p->b.f, new_off, SEEK_SET);  // go back to end
-                adios_write_open_attributes_v1 (fd);
-                p->vars_start = lseek (p->b.f, fd->offset, SEEK_CUR); // save loc
-                p->vars_header_size = p->vars_start - fd->base_offset;
-                p->vars_start -= fd->offset; // adjust to start of header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-                        if (fd->base_offset + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-                            fprintf (stderr, "adios_posix_write exceeds pg bound. File is corrupted. "
-                                    "Need to enlarge group size. \n");
-                        START_TIMER (ADIOS_TIMER_POSIX_MD);
-                        ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-                        STOP_TIMER (ADIOS_TIMER_POSIX_MD);
-                        if (s != fd->bytes_written)
-                        {
-                            fprintf (stderr, "POSIX method tried to write %llu, "
-                                    "only wrote %lld. %s:%d\n"
-                                    ,fd->bytes_written
-                                    ,(int64_t)s
-                                    ,__func__, __LINE__
-                                    );
-                        }
-                        fd->base_offset += s;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&p->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                // fd->vars_start gets updated with the size written
-                START_TIMER (ADIOS_TIMER_POSIX_MD);
-                s = write (p->b.f, fd->buffer, p->vars_header_size);
-                STOP_TIMER (ADIOS_TIMER_POSIX_MD);
-                if (s != p->vars_header_size)
-                {
-                    fprintf (stderr, "POSIX method tried to write %llu, "
-                                     "only wrote %lld. %s:%d\n"
-                            ,p->vars_header_size
-                            ,(int64_t)s
-                            ,__func__, __LINE__
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
-
             // buffering or not, write the index
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = fd->base_offset + fd->offset;
 
-            // build index
+            // write buffered data now
+            START_TIMER (ADIOS_TIMER_IO);
+            adios_posix_write_pg (fd, method); 
+            STOP_TIMER (ADIOS_TIMER_IO);
+
+            // Note: adios_posix_write_pg() sets the fd->current_pg->pg_start_in_file
+            // to the correct offset, which is used in the build index. If you want 
+            // to move the write_pg after building the index, set the offset here in advance:
+            //    fd->current_pg->pg_start_in_file = p->pg_start_next;
+            //    index_start = p->pg_start_next + fd->offset
+
+            START_TIMER (ADIOS_TIMER_LOCALMD);
+            uint64_t index_start = p->pg_start_next;
+            // build new index for this step
             adios_build_index_v1 (fd, p->index);
             // if collective, gather the indexes from the rest and call
             // adios_merge_index_v1 (&new_pg_root, &new_vars_root, pg, vars);
             adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                  ,index_start, p->index);
             adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
-            START_TIMER (ADIOS_TIMER_POSIX_IO);
-            adios_posix_do_write (fd, method, buffer, buffer_offset); // Buffered vars written here
-            STOP_TIMER (ADIOS_TIMER_POSIX_IO);
+            STOP_TIMER (ADIOS_TIMER_LOCALMD);
+
 #ifdef HAVE_MPI
+            START_TIMER (ADIOS_TIMER_GLOBALMD);
             if (p->group_comm != MPI_COMM_SELF && p->g_have_mdf)
             {
                 if (p->rank == 0)
@@ -1039,12 +927,12 @@ void adios_posix_close (struct adios_file_struct * fd
                     int i;
                     uint32_t size = 0, total_size = 0;
 
-                    START_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, p->group_comm
                                );
-                    STOP_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < p->size; i++)
                     {
@@ -1053,12 +941,12 @@ void adios_posix_close (struct adios_file_struct * fd
                     }
 
                     recv_buffer = malloc (total_size);
-                    START_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, p->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = p->b.buff;
                     uint64_t buffer_size_save = p->b.length;
@@ -1111,13 +999,13 @@ void adios_posix_close (struct adios_file_struct * fd
                                                 ,&global_index_buffer_offset
                                                 ,flag
                                                 );
-                    START_TIMER (ADIOS_TIMER_POSIX_MD);
+                    START_TIMER (ADIOS_TIMER_IO);
                     ssize_t s = write (p->mf, global_index_buffer, global_index_buffer_offset);
-                    STOP_TIMER (ADIOS_TIMER_POSIX_MD);
+                    STOP_TIMER (ADIOS_TIMER_IO);
                     if (s != global_index_buffer_offset)
                     {
-                        fprintf (stderr, "POSIX method tried to write %llu, "
-                                         "only wrote %lld. %s:%d\n"
+                        fprintf (stderr, "POSIX method tried to write %" PRIu64 ", "
+                                         "only wrote %" PRId64 ". %s:%d\n"
                                          ,fd->bytes_written
                                          ,(int64_t)s
                                          ,__func__, __LINE__
@@ -1129,7 +1017,7 @@ void adios_posix_close (struct adios_file_struct * fd
                 }
                 else
                 {
-                    START_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    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;
                     MPI_Gather (&i_buffer_size, 1, MPI_INT
@@ -1141,10 +1029,25 @@ void adios_posix_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, p->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
+            STOP_TIMER (ADIOS_TIMER_GLOBALMD);
 #endif
+
+            // write buffered index now
+            START_TIMER (ADIOS_TIMER_IO);
+            adios_posix_write_index (fd, method, buffer, buffer_offset); 
+            STOP_TIMER (ADIOS_TIMER_IO);
+
+            // close the file assuming we are done in 'w' mode
+            adios_posix_close_internal (&p->b);
+            p->file_is_open = 0;
+            // in 'w' mode we forget about index, first append needs to read it from file
+            adios_clear_index_v1 (p->index); 
+            // notify future append steps that write mode does not keep the index in memory
+            p->index_is_in_memory = 0; 
+
             free (buffer);
 
             break;
@@ -1153,100 +1056,42 @@ void adios_posix_close (struct adios_file_struct * fd
         case adios_mode_append:
         case adios_mode_update:
         {
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                off_t new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                new_off = lseek (p->b.f, 0, SEEK_CUR);
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                START_TIMER (ADIOS_TIMER_POSIX_IO);
-                ssize_t s = write (p->b.f, fd->buffer, p->vars_header_size);
-                STOP_TIMER (ADIOS_TIMER_POSIX_IO);
-                if (s != fd->vars_start)
-                {
-                    fprintf (stderr, "POSIX method tried to write %llu, "
-                                     "only wrote %lld. %s:%d\n"
-                            ,fd->vars_start
-                            ,(int64_t)s
-                            ,__func__, __LINE__
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&p->b);
-
-                new_off = lseek (p->b.f, new_off, SEEK_SET);  // go back to end
-                adios_write_open_attributes_v1 (fd);
-                p->vars_start = lseek (p->b.f, fd->offset, SEEK_CUR); // save loc
-                p->vars_header_size = p->vars_start - fd->base_offset;
-                p->vars_start -= fd->offset; // adjust to start of header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                if (!fd->group->process_id) { // from ADIOS 1.4, only rank 0 writes attributes
-                    while (a)
-                    {
-                        adios_write_attribute_v1 (fd, a);
-                        START_TIMER (ADIOS_TIMER_POSIX_MD);
-                        ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-                        STOP_TIMER (ADIOS_TIMER_POSIX_MD);
-                        if (s != fd->bytes_written)
-                        {
-                            fprintf (stderr, "POSIX method tried to write %llu, "
-                                    "only wrote %lld. %s:%d\n"
-                                    ,fd->bytes_written
-                                    ,(int64_t)s
-                                    ,__func__, __LINE__
-                                    );
-                        }
-                        fd->base_offset += s;
-                        fd->offset = 0;
-                        fd->bytes_written = 0;
-                        adios_shared_buffer_free (&p->b);
-
-                        a = a->next;
-                    }
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                // fd->vars_start gets updated with the size written
-                START_TIMER (ADIOS_TIMER_POSIX_MD);
-                s = write (p->b.f, fd->buffer, p->vars_header_size);
-                STOP_TIMER (ADIOS_TIMER_POSIX_MD);
-                if (s != p->vars_header_size)
-                {
-                    fprintf (stderr, "POSIX method tried to write %llu, "
-                                     "only wrote %lld. %s:%d\n"
-                            ,p->vars_header_size
-                            ,(int64_t)s
-                            ,__func__, __LINE__
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
 
             char * buffer = 0;
             uint64_t buffer_size = 0;
             uint64_t buffer_offset = 0;
-            uint64_t index_start = fd->base_offset + fd->offset;
 
-            // build index
-            adios_build_index_v1 (fd, p->index);
+            // write buffered data now
+            START_TIMER (ADIOS_TIMER_IO);
+            adios_posix_write_pg (fd, method); 
+            STOP_TIMER (ADIOS_TIMER_IO);
+
+            // Note: adios_posix_write_pg() sets the fd->current_pg->pg_start_in_file
+            // to the correct offset, which is used in the build index. If you want 
+            // to move the write_pg after building the index, set the offset here in advance:
+            //    fd->current_pg->pg_start_in_file = p->pg_start_next;
+            //    index_start = p->pg_start_next + fd->offset
+
+            START_TIMER (ADIOS_TIMER_LOCALMD);
+            uint64_t index_start = p->pg_start_next;
+            // build index for current step and merge it into the 
+            // existing index for previous steps
+            struct adios_index_struct_v1 * current_index;
+            current_index = adios_alloc_index_v1(1); // no hashtables
+            adios_build_index_v1 (fd, current_index);
+            // new timestep so sorting is not needed during merge
+            adios_merge_index_v1 (p->index, current_index->pg_root, 
+                    current_index->vars_root, current_index->attrs_root, 0);
             adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
                                  ,index_start, p->index);
+            // free current_index structure but do not clear it's content, which is merged
+            // into p->index
+            adios_free_index_v1 (current_index);
+            adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
+            STOP_TIMER (ADIOS_TIMER_LOCALMD);
+
 #ifdef HAVE_MPI
+            START_TIMER (ADIOS_TIMER_GLOBALMD);
             if (p->group_comm != MPI_COMM_SELF && p->g_have_mdf)
             {
                 if (p->rank == 0)
@@ -1255,52 +1100,64 @@ void adios_posix_close (struct adios_file_struct * fd
                     int * index_offsets = malloc (4 * p->size);
                     char * recv_buffer = 0;
                     int i;
-                    uint32_t size = 0, total_size = 0;
-
-                    START_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    uint32_t size = buffer_size;
+                    uint32_t total_size = 0;
+
+                    // Need to make a temporary copy of p->index and merge
+                    // into that. p->index (or rank 0)  must be kept intact for 
+                    // future append steps.
+                    // Therefore rank 0 will parse it's own buffer too
+                    // and merge it into a new index
+                    struct adios_index_struct_v1 * gindex;
+                    gindex = adios_alloc_index_v1(1); // no hashtables
+
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&size, 1, MPI_INT
                                ,index_sizes, 1, MPI_INT
                                ,0, p->group_comm
                                );
-                    STOP_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     for (i = 0; i < p->size; i++)
                     {
                         index_offsets [i] = total_size;
                         total_size += index_sizes [i];
+                        //printf ("index %d offset %d  size %d  total size %u\n",
+                        //         i, index_offsets[i], index_sizes[i], total_size);
                     }
 
                     recv_buffer = malloc (total_size);
+                    memcpy (recv_buffer, buffer, index_sizes[0]);
 
-                    START_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gatherv (&size, 0, MPI_BYTE
                                 ,recv_buffer, index_sizes, index_offsets
                                 ,MPI_BYTE, 0, p->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
 
                     char * buffer_save = p->b.buff;
                     uint64_t buffer_size_save = p->b.length;
                     uint64_t offset_save = p->b.offset;
 
-                    for (i = 1; i < p->size; i++)
+                    for (i = 0; i < p->size; i++)
                     {
                         p->b.buff = recv_buffer + index_offsets [i];
                         p->b.length = index_sizes [i];
                         p->b.offset = 0;
 
+                        //printf ("parse index %d offset %d  size %d\n",
+                        //        i, index_offsets[i], index_sizes[i]);
                         adios_parse_process_group_index_v1 (&p->b, &new_pg_root, NULL);
                         adios_parse_vars_index_v1 (&p->b, &new_vars_root, NULL, NULL);
                         // do not merge attributes from other processes from 1.4
-                        /*
-                        adios_parse_attributes_index_v1 (&p->b
-                                                        ,&new_attrs_root
-                                                        );
-                         */
+                        if (i==0) {
+                            adios_parse_attributes_index_v1 (&p->b, &new_attrs_root);
+                        }
 
                         // global index would become unsorted on main aggregator during merging 
                         // so sort timesteps in this case (appending)
-                        adios_merge_index_v1 (p->index, new_pg_root, 
+                        adios_merge_index_v1 (gindex, new_pg_root, 
                                               new_vars_root, new_attrs_root, 1);
                     
                         new_pg_root = 0;
@@ -1324,7 +1181,7 @@ void adios_posix_close (struct adios_file_struct * fd
 
                     adios_write_index_v1 (&global_index_buffer, &global_index_buffer_size
                                          ,&global_index_buffer_offset, global_index_start
-                                         ,p->index);
+                                         ,gindex);
 
                     flag |= ADIOS_VERSION_HAVE_SUBFILE;
 
@@ -1334,13 +1191,13 @@ void adios_posix_close (struct adios_file_struct * fd
                                                 ,flag
                                                 );
 
-                    START_TIMER (ADIOS_TIMER_POSIX_MD);
+                    START_TIMER (ADIOS_TIMER_IO);
                     ssize_t s = write (p->mf, global_index_buffer, global_index_buffer_offset);
-                    STOP_TIMER (ADIOS_TIMER_POSIX_MD);
+                    STOP_TIMER (ADIOS_TIMER_IO);
                     if (s != global_index_buffer_offset)
                     {
-                        fprintf (stderr, "POSIX method tried to write %llu, "
-                                         "only wrote %lld, Mode: a. %s:%d\n"
+                        fprintf (stderr, "POSIX method tried to write %" PRIu64 ", "
+                                         "only wrote %" PRId64 ", Mode: a. %s:%d\n"
                                          ,global_index_buffer_offset
                                          ,(int64_t)s
                                          ,__func__, __LINE__
@@ -1350,10 +1207,12 @@ void adios_posix_close (struct adios_file_struct * fd
                     close (p->mf);
 
                     free (global_index_buffer);
+                    adios_clear_index_v1 (gindex);
+                    adios_free_index_v1 (gindex);
                 }
                 else
                 {
-                    START_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    START_TIMER (ADIOS_TIMER_COMM);
                     MPI_Gather (&buffer_size, 1, MPI_INT
                                ,0, 0, MPI_INT
                                ,0, p->group_comm
@@ -1363,14 +1222,16 @@ void adios_posix_close (struct adios_file_struct * fd
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, p->group_comm
                                 );
-                    STOP_TIMER (ADIOS_TIMER_POSIX_COMM);
+                    STOP_TIMER (ADIOS_TIMER_COMM);
                 }
             }
+            STOP_TIMER (ADIOS_TIMER_GLOBALMD);
 #endif
-            adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
-            START_TIMER (ADIOS_TIMER_POSIX_MD);
-            adios_posix_do_write (fd, method, buffer, buffer_offset);
-            STOP_TIMER (ADIOS_TIMER_POSIX_MD);
+
+            // write buffered index now
+            START_TIMER (ADIOS_TIMER_IO);
+            adios_posix_write_index (fd, method, buffer, buffer_offset); 
+            STOP_TIMER (ADIOS_TIMER_IO);
 
             free (buffer);
 
@@ -1399,10 +1260,7 @@ void adios_posix_close (struct adios_file_struct * fd
         }
     }
 
-    adios_posix_close_internal (&p->b);
-    adios_clear_index_v1 (p->index);
-
-    STOP_TIMER (ADIOS_TIMER_POSIX_AD_CLOSE);
+    STOP_TIMER (ADIOS_TIMER_AD_CLOSE);
 
 #if defined ADIOS_TIMERS || defined ADIOS_TIMER_EVENTS
 
@@ -1418,11 +1276,20 @@ void adios_posix_close (struct adios_file_struct * fd
 
 }
 
+/* For each group's each method, a finalize function is called */ 
 void adios_posix_finalize (int mype, struct adios_method_struct * method)
 {
     struct adios_POSIX_data_struct * p = (struct adios_POSIX_data_struct *)
                                                           method->method_data;
+    if (p->file_is_open) {
+        adios_clear_index_v1 (p->index); // append and update methods never cleared the index
+        adios_posix_close_internal (&p->b);
+        p->file_is_open = 0;
+    }
+    p->index_is_in_memory = 0; 
+
     adios_free_index_v1 (p->index);
+
     if (adios_posix_initialized)
         adios_posix_initialized = 0;
 }
diff --git a/src/write/adios_posix1.c b/src/write/adios_posix1.c
deleted file mode 100644
index 8d30a1b..0000000
--- a/src/write/adios_posix1.c
+++ /dev/null
@@ -1,876 +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.
- */
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <stdint.h>
-
-// see if we have MPI or other tools
-#include "config.h"
-
-// xml parser
-#include <mxml.h>
-
-#include "public/adios_mpi.h" // MPI or dummy MPI
-#include "core/adios_transport_hooks.h"
-#include "core/adios_bp_v1.h"
-#include "core/adios_internals.h"
-#include "core/buffer.h"
-#include "core/util.h"
-
-static int adios_posix1_initialized = 0;
-
-struct adios_POSIX1_data_struct
-{
-    // our file bits
-    struct adios_bp_buffer_struct_v1 b;
-
-    // old index structs we read in and have to be merged in
-    struct adios_index_struct_v1 * index;
-
-    uint64_t vars_start;
-    uint64_t vars_header_size;
-};
-
-void adios_posix1_init (const PairStruct * parameters
-                      ,struct adios_method_struct * method
-                      )
-{
-    struct adios_POSIX1_data_struct * p = 0;
-
-    if (!adios_posix1_initialized)
-    {
-        adios_posix1_initialized = 1;
-    }
-    method->method_data = malloc (sizeof (struct adios_POSIX1_data_struct));
-    p = (struct adios_POSIX1_data_struct *) method->method_data;
-    adios_buffer_struct_init (&p->b);
-    p->index = adios_alloc_index_v1(1); // with hashtables
-    p->vars_start = 0;
-    p->vars_header_size = 0;
-}
-
-int adios_posix1_open (struct adios_file_struct * fd
-                     ,struct adios_method_struct * method, MPI_Comm comm
-                     )
-{
-    char * name;
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-                                                          method->method_data;
-
-    // figure out the actual name of the file.
-    name = malloc (strlen (method->base_path) + strlen (fd->name) + 1);
-    sprintf (name, "%s%s", method->base_path, fd->name);
-    struct stat s;
-    if (stat (name, &s) == 0)
-        p->b.file_size = s.st_size;
-
-    switch (fd->mode)
-    {
-        case adios_mode_read:
-        {
-            p->b.f = open (name, O_RDONLY
-#ifndef __APPLE__
-| O_LARGEFILE
-#endif
-);
-            if (p->b.f == -1)
-            {
-                fprintf (stderr, "ADIOS POSIX1: file not found: %s\n", fd->name);
-
-                free (name);
-
-                return 0;
-            }
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
-
-            break;
-        }
-
-        case adios_mode_write:
-        {
-            p->b.f = open (name, O_WRONLY | O_CREAT | O_TRUNC
-#ifndef __APPLE__
-| O_LARGEFILE
-#endif
-                            ,  S_IRUSR | S_IWUSR
-                             | S_IRGRP | S_IWGRP
-                             | S_IROTH | S_IWOTH
-                            );
-            if (p->b.f == -1)
-            {
-                fprintf (stderr, "adios_posix1_open failed for "
-                                 "base_path %s, name %s\n"
-                        ,method->base_path, fd->name
-                        );
-
-                free (name);
-
-                return 0;
-            }
-            fd->base_offset = 0;
-            fd->pg_start_in_file = 0;
-
-            break;
-        }
-
-        case adios_mode_append:
-        {
-            int old_file = 1;
-            p->b.f = open (name, O_RDWR
-#ifndef __APPLE__
-| O_LARGEFILE
-#endif
-);
-            if (p->b.f == -1)
-            {
-                old_file = 0;
-                p->b.f = open (name,  O_WRONLY | O_CREAT
-#ifndef __APPLE__
-| O_LARGEFILE
-#endif
-                                ,  S_IRUSR | S_IWUSR
-                                 | S_IRGRP | S_IWGRP
-                                 | S_IROTH | S_IWOTH
-                                );
-                if (p->b.f == -1)
-                {
-                    fprintf (stderr, "adios_posix1_open failed for "
-                                     "base_path %s, name %s\n"
-                            ,method->base_path, fd->name
-                            );
-
-                    free (name);
-
-                    return 0;
-                }
-            }
-
-            if (old_file)
-            {
-                // now we have to read the old stuff so we can merge it
-                // in at the end and set the base_offset for the old index
-                // start
-                uint32_t version;
-                adios_posix_read_version (&p->b);
-                adios_parse_version (&p->b, &version);
-
-                switch (version & ADIOS_VERSION_NUM_MASK)
-                {
-                    case 1:
-                    case 2:
-                    case 3:
-                        // read the old stuff and set the base offset
-                        adios_posix_read_index_offsets (&p->b);
-                        adios_parse_index_offsets_v1 (&p->b);
-
-                        adios_posix_read_process_group_index (&p->b);
-                        adios_parse_process_group_index_v1 (&p->b, &p->index->pg_root, &p->index->pg_tail);
-
-                        // find the largest time index so we can append properly
-                        struct adios_index_process_group_struct_v1 * pg;
-                        uint32_t max_time_index = 0;
-                        pg = p->index->pg_root;
-                        while (pg)
-                        {
-                            if (pg->time_index > max_time_index)
-                                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);
-                        adios_parse_vars_index_v1 (&p->b, &p->index->vars_root, 
-                                                   p->index->hashtbl_vars,
-                                                   &p->index->vars_tail);
-
-                        adios_posix_read_attributes_index (&p->b);
-                        adios_parse_attributes_index_v1 (&p->b
-                                                        ,&p->index->attrs_root
-                                                        );
-
-                        fd->base_offset = p->b.end_of_pgs;
-                        fd->pg_start_in_file = p->b.end_of_pgs;
-                        break;
-
-                    default:
-                        fprintf (stderr, "Unknown bp version: %d.  "
-                                         "Cannot append\n"
-                                ,version
-                                );
-
-                        free (name);
-
-                        return 0;
-                }
-            }
-
-            break;
-        }
-
-        default:
-        {
-            fprintf (stderr, "Unknown file mode: %d\n", fd->mode);
-
-            free (name);
-
-            return 0;
-        }
-    }
-
-    free (name);
-
-    return 1;
-}
-
-enum ADIOS_FLAG adios_posix1_should_buffer (struct adios_file_struct * fd
-                                          ,struct adios_method_struct * method
-                                          )
-{
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-                                                          method->method_data;
-
-    if (fd->shared_buffer == adios_flag_no && fd->mode != adios_mode_read)
-    {
-        // write the process group header
-        adios_write_process_group_header_v1 (fd, fd->write_size_bytes);
-
-        lseek (p->b.f, fd->base_offset, SEEK_SET);
-        ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-        if (s != fd->bytes_written)
-        {
-            fprintf (stderr, "POSIX1 method tried to write %llu, "
-                             "only wrote %lld\n"
-                    ,fd->bytes_written
-                    ,(int64_t)s
-                    );
-        }
-        fd->base_offset += s;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-
-        // setup for writing vars
-        adios_write_open_vars_v1 (fd);
-        p->vars_start = lseek (p->b.f, fd->offset, SEEK_CUR);  // save loc
-        p->vars_header_size = p->vars_start - fd->base_offset;  // the size
-        p->vars_start -= fd->offset; // adjust to start of header
-        fd->base_offset += fd->offset;  // add the size of the vars header
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-    }
-
-    return fd->shared_buffer;   // buffer if there is space
-}
-
-void adios_posix1_write (struct adios_file_struct * fd
-                       ,struct adios_var_struct * v
-                       ,const void * data
-                       ,struct adios_method_struct * method
-                       )
-{
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-                                                          method->method_data;
-
-    if (v->got_buffer == adios_flag_yes)
-    {
-        if (data != v->data)  // if the user didn't give back the same thing
-        {
-            if (v->free_data == adios_flag_yes)
-            {
-                free (v->adata);
-                adios_method_buffer_free (v->data_size);
-            }
-        }
-        else
-        {
-            // we already saved all of the info, so we're ok.
-            return;
-        }
-    }
-
-    if (fd->shared_buffer == adios_flag_no)
-    {
-        // var payload sent for sizing information
-        adios_write_var_header_v1 (fd, v);
-        ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-        if (s != fd->bytes_written)
-        {
-            fprintf (stderr, "POSIX1 method tried to write %llu, "
-                             "only wrote %lld\n"
-                    ,fd->bytes_written
-                    ,(int64_t)s
-                    );
-        }
-        fd->base_offset += s;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-
-        // write payload
-        // adios_write_var_payload_v1 (fd, v);
-        uint64_t var_size = adios_get_var_size (v, v->data);
-        if (fd->base_offset + var_size > fd->pg_start_in_file + fd->write_size_bytes)
-            fprintf (stderr, "adios_posix1_write exceeds pg bound. File is corrupted. "
-                             "Need to enlarge group size. \n"); 
-
-        int32_t to_write;
-        uint64_t bytes_written = 0;
-        if (var_size > MAX_MPIWRITE_SIZE)
-        {
-            to_write = MAX_MPIWRITE_SIZE;
-        }
-        else
-        {
-            to_write = (int32_t) fd->bytes_written;
-        }
-
-        while (bytes_written < var_size)
-        {
-            bytes_written += write (p->b.f, v->data + bytes_written, to_write);
-            if (var_size > bytes_written)
-            {
-                if (var_size - bytes_written > MAX_MPIWRITE_SIZE)
-                {
-                    to_write = MAX_MPIWRITE_SIZE;
-                }
-                else
-                {
-                    to_write = var_size - bytes_written;
-                }
-            }
-        }
-
-//        s = write (p->b.f, v->data, var_size);
-        s = bytes_written;
-        if (s != var_size)
-        {
-            fprintf (stderr, "POSIX1 method tried to write %llu, "
-                             "only wrote %lld\n"
-                    ,var_size
-                    ,(int64_t)s
-                    );
-        }
-        fd->base_offset += s;
-        fd->offset = 0;
-        fd->bytes_written = 0;
-        adios_shared_buffer_free (&p->b);
-    }
-}
-
-void adios_posix1_get_write_buffer (struct adios_file_struct * fd
-                                  ,struct adios_var_struct * v
-                                  ,uint64_t * size
-                                  ,void ** buffer
-                                  ,struct adios_method_struct * method
-                                  )
-{
-    uint64_t mem_allowed;
-
-    if (*size == 0)
-    {
-        *buffer = 0;
-
-        return;
-    }
-
-    if (v->adata && v->free_data)
-    {
-        adios_method_buffer_free (v->data_size);
-        free (v->adata);
-    }
-
-    mem_allowed = adios_method_buffer_alloc (*size);
-    if (mem_allowed == *size)
-    {
-        *buffer = malloc (*size);
-        if (!*buffer)
-        {
-            adios_method_buffer_free (mem_allowed);
-            fprintf (stderr, "Out of memory allocating %llu bytes for %s\n"
-                    ,*size, v->name
-                    );
-            v->got_buffer = adios_flag_no;
-            v->free_data = adios_flag_no;
-            v->data_size = 0;
-            v->data = 0;
-            *size = 0;
-            *buffer = 0;
-        }
-        else
-        {
-            v->got_buffer = adios_flag_yes;
-            v->free_data = adios_flag_yes;
-            v->data_size = mem_allowed;
-            v->data = *buffer;
-        }
-    }
-    else
-    {
-        adios_method_buffer_free (mem_allowed);
-        fprintf (stderr, "OVERFLOW: Cannot allocate requested buffer of %llu "
-                         "bytes for %s\n"
-                ,*size
-                ,v->name
-                );
-        *size = 0;
-        *buffer = 0;
-    }
-}
-
-void adios_posix1_read (struct adios_file_struct * fd
-                      ,struct adios_var_struct * v
-                      ,void * buffer
-                      ,uint64_t buffer_size
-                      ,struct adios_method_struct * method
-                      )
-{
-    v->data = v->adata = buffer;
-    v->data_size = buffer_size;
-}
-
-static void adios_posix1_do_write (struct adios_file_struct * fd
-                                 ,struct adios_method_struct * method
-                                 ,char * buffer
-                                 ,uint64_t buffer_size
-                                 )
-{
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-                                                          method->method_data;
-    int32_t to_write;
-    uint64_t bytes_written = 0;
-
-    if (fd->shared_buffer == adios_flag_yes)
-    {
-        lseek (p->b.f, p->b.end_of_pgs, SEEK_SET);
-        if (p->b.end_of_pgs + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-            fprintf (stderr, "adios_posix1_write exceeds pg bound. File is corrupted. "
-                             "Need to enlarge group size. \n");
-
-        if (fd->bytes_written > MAX_MPIWRITE_SIZE)
-        {
-            to_write = MAX_MPIWRITE_SIZE;
-        }
-        else
-        {
-            to_write = (int32_t) fd->bytes_written;
-        }
-
-        while (bytes_written < fd->bytes_written)
-        {
-            write (p->b.f, fd->buffer, to_write);
-            bytes_written += to_write;
-            if (fd->bytes_written > bytes_written)
-            {
-                if (fd->bytes_written - bytes_written > MAX_MPIWRITE_SIZE)
-                {
-                    to_write = MAX_MPIWRITE_SIZE;
-                }
-                else
-                {
-                    to_write = fd->bytes_written - bytes_written;
-                }
-            }
-        }
-    }
-
-    // index location calculation:
-    // for buffered, base_offset = 0, fd->offset = write loc
-    // for unbuffered, base_offset = write loc, fd->offset = 0
-    // for append buffered, base_offset = start, fd->offset = size
-    lseek (p->b.f, fd->base_offset + fd->offset, SEEK_SET);
-    write (p->b.f, buffer, buffer_size);
-}
-
-static void adios_posix1_do_read (struct adios_file_struct * fd
-                                ,struct adios_method_struct * method
-                                )
-{
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-                                                          method->method_data;
-    struct adios_var_struct * v = fd->group->vars;
-
-    uint32_t version = 0;
-
-    adios_posix_read_version (&p->b);
-    adios_parse_version (&p->b, &version);
-    version &= ADIOS_VERSION_NUM_MASK;
-
-    switch (version)
-    {
-        case 1:
-        case 2:
-        case 3:
-        {
-            struct adios_index_struct_v1 * index = adios_alloc_index_v1(0); // no hashtables
-            struct adios_index_process_group_struct_v1 * pg_root = index->pg_root;
-            struct adios_index_process_group_struct_v1 * pg_root_temp = 0;
-
-            adios_posix_read_index_offsets (&p->b);
-            adios_parse_index_offsets_v1 (&p->b);
-
-            adios_posix_read_process_group_index (&p->b);
-            adios_parse_process_group_index_v1 (&p->b, &pg_root, NULL);
-#if 1
-            adios_posix_read_vars_index (&p->b);
-            adios_parse_vars_index_v1 (&p->b, &index->vars_root, NULL, NULL);
-
-            adios_posix_read_attributes_index (&p->b);
-            adios_parse_attributes_index_v1 (&p->b, &index->attrs_root);
-#endif
-
-            // the three section headers
-            struct adios_process_group_header_struct_v1 pg_header;
-            struct adios_vars_header_struct_v1 vars_header;
-            struct adios_attributes_header_struct_v1 attrs_header;
-
-            struct adios_var_header_struct_v1 var_header;
-            struct adios_var_payload_struct_v1 var_payload;
-            struct adios_attribute_struct_v1 attribute;
-
-            int i;
-
-            pg_root_temp = pg_root;
-            while (pg_root_temp && pg_root_temp->next)
-                pg_root_temp = pg_root_temp->next;
-
-            p->b.read_pg_offset = pg_root_temp->offset_in_file;
-            if (pg_root_temp->next)
-            {
-                p->b.read_pg_size =   pg_root_temp->next->offset_in_file
-                                    - pg_root_temp->offset_in_file;
-            }
-            else
-            {
-                p->b.read_pg_size =   p->b.pg_index_offset
-                                    - pg_root_temp->offset_in_file;
-            }
-
-            adios_posix_read_process_group (&p->b);
-            adios_parse_process_group_header_v1 (&p->b, &pg_header);
-
-            adios_parse_vars_header_v1 (&p->b, &vars_header);
-
-            for (i = 0; i < vars_header.count; i++)
-            {
-                memset (&var_payload, 0
-                       ,sizeof (struct adios_var_payload_struct_v1)
-                       );
-                adios_parse_var_data_header_v1 (&p->b, &var_header);
-
-                struct adios_var_struct * v1 = v;
-                while (v1)
-                {
-                    if (   strcasecmp (var_header.name, v1->name)
-                        || strcasecmp (var_header.path, v1->path)
-                       )
-                    {
-                        v1 = v1->next;
-                    }
-                    else
-                        break;
-                }
-
-                if (v1)
-                {
-                    var_payload.payload = v1->adata;
-                    adios_parse_var_data_payload_v1 (&p->b, &var_header
-                                                    ,&var_payload
-                                                    ,v1->data_size
-                                                    );
-                }
-                else
-                {
-                    adios_parse_var_data_payload_v1 (&p->b, &var_header
-                                                    ,NULL, 0
-                                                    );
-                }
-
-                adios_clear_var_header_v1 (&var_header);
-            }
-
-#if 1
-            adios_parse_attributes_header_v1 (&p->b, &attrs_header);
-
-            for (i = 0; i < attrs_header.count; i++)
-            {
-                adios_parse_attribute_v1 (&p->b, &attribute);
-                adios_clear_attribute_v1 (&attribute);
-            }
-#endif
-            adios_clear_process_group_header_v1 (&pg_header);
-            adios_clear_index_v1 (index);
-            break;
-        }
-
-        default:
-            fprintf (stderr, "POSIX1 read: file version unknown: %u\n", version);
-            return;
-    }
-
-    adios_buffer_struct_clear (&p->b);
-}
-
-void adios_posix1_close (struct adios_file_struct * fd
-                       ,struct adios_method_struct * method
-                       )
-{
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-                                                          method->method_data;
-    struct adios_attribute_struct * a = fd->group->attributes;
-
-    switch (fd->mode)
-    {
-        case adios_mode_write:
-        {
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                off_t new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                new_off = lseek (p->b.f, 0, SEEK_CUR);
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                ssize_t s = write (p->b.f, fd->buffer, p->vars_header_size);
-                if (s != fd->vars_start)
-                {
-                    fprintf (stderr, "POSIX1 method tried to write %llu, "
-                                     "only wrote %lld\n"
-                            ,fd->vars_start
-                            ,(int64_t)s
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&p->b);
-
-                new_off = lseek (p->b.f, new_off, SEEK_SET);  // go back to end
-                adios_write_open_attributes_v1 (fd);
-                p->vars_start = lseek (p->b.f, fd->offset, SEEK_CUR); // save loc
-                p->vars_header_size = p->vars_start - fd->base_offset;
-                p->vars_start -= fd->offset; // adjust to start of header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                while (a)
-                {
-                    adios_write_attribute_v1 (fd, a);
-                    if (fd->base_offset + fd->bytes_written > fd->pg_start_in_file + fd->write_size_bytes)
-                        fprintf (stderr, "adios_posix1_write exceeds pg bound. File is corrupted. "
-                                         "Need to enlarge group size. \n");
-                    ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-                    if (s != fd->bytes_written)
-                    {
-                        fprintf (stderr, "POSIX1 method tried to write %llu, "
-                                         "only wrote %lld\n"
-                                ,fd->bytes_written
-                                ,(int64_t)s
-                                );
-                    }
-                    fd->base_offset += s;
-                    fd->offset = 0;
-                    fd->bytes_written = 0;
-                    adios_shared_buffer_free (&p->b);
-
-                    a = a->next;
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                // fd->vars_start gets updated with the size written
-                s = write (p->b.f, fd->buffer, p->vars_header_size);
-                if (s != p->vars_header_size)
-                {
-                    fprintf (stderr, "POSIX1 method tried to write %llu, "
-                                     "only wrote %lld\n"
-                            ,p->vars_header_size
-                            ,(int64_t)s
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
-
-            // buffering or not, write the index
-            char * buffer = 0;
-            uint64_t buffer_size = 0;
-            uint64_t buffer_offset = 0;
-            uint64_t index_start = fd->base_offset + fd->offset;
-
-            // build index
-            adios_build_index_v1 (fd, p->index);
-            adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                 ,index_start, p->index);
-            adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
-            adios_posix1_do_write (fd, method, buffer, buffer_offset);
-
-            free (buffer);
-
-            break;
-        }
-
-        case adios_mode_append:
-        {
-            if (fd->shared_buffer == adios_flag_no)
-            {
-                off_t new_off;
-                // set it up so that it will start at 0, but have correct sizes
-                new_off = lseek (p->b.f, 0, SEEK_CUR);
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_vars_v1 (fd);
-                // fd->vars_start gets updated with the size written
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                ssize_t s = write (p->b.f, fd->buffer, p->vars_header_size);
-                if (s != fd->vars_start)
-                {
-                    fprintf (stderr, "POSIX1 method tried to write %llu, "
-                                     "only wrote %lld\n"
-                            ,fd->vars_start
-                            ,(int64_t)s
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-                adios_shared_buffer_free (&p->b);
-
-                new_off = lseek (p->b.f, new_off, SEEK_SET);  // go back to end
-                adios_write_open_attributes_v1 (fd);
-                p->vars_start = lseek (p->b.f, fd->offset, SEEK_CUR); // save loc
-                p->vars_header_size = p->vars_start - fd->base_offset;
-                p->vars_start -= fd->offset; // adjust to start of header
-                fd->base_offset += fd->offset;  // add size of header
-                fd->offset = 0;
-                fd->bytes_written = 0;
-
-                while (a)
-                {
-                    adios_write_attribute_v1 (fd, a);
-                    ssize_t s = write (p->b.f, fd->buffer, fd->bytes_written);
-                    if (s != fd->bytes_written)
-                    {
-                        fprintf (stderr, "POSIX1 method tried to write %llu, "
-                                         "only wrote %lld\n"
-                                ,fd->bytes_written
-                                ,(int64_t)s
-                                );
-                    }
-                    fd->base_offset += s;
-                    fd->offset = 0;
-                    fd->bytes_written = 0;
-                    adios_shared_buffer_free (&p->b);
-
-                    a = a->next;
-                }
-
-                // set it up so that it will start at 0, but have correct sizes
-                fd->offset = fd->base_offset - p->vars_start;
-                fd->vars_start = 0;
-                fd->buffer_size = 0;
-                adios_write_close_attributes_v1 (fd);
-                fd->offset = lseek (p->b.f, p->vars_start, SEEK_SET);
-                // fd->vars_start gets updated with the size written
-                s = write (p->b.f, fd->buffer, p->vars_header_size);
-                if (s != p->vars_header_size)
-                {
-                    fprintf (stderr, "POSIX1 method tried to write %llu, "
-                                     "only wrote %lld\n"
-                            ,p->vars_header_size
-                            ,(int64_t)s
-                            );
-                }
-                fd->offset = 0;
-                fd->bytes_written = 0;
-            }
-
-            char * buffer = 0;
-            uint64_t buffer_size = 0;
-            uint64_t buffer_offset = 0;
-            uint64_t index_start = fd->base_offset + fd->offset;
-
-            // build index. Note: It merges with old indices already stored 
-            //                    in p->index in adios_posix_open's append case
-            adios_build_index_v1 (fd, p->index);
-            // merge in old indicies
-            //adios_merge_index_v1 (p->index, new_pg_root, 
-            //                      new_vars_root, new_attrs_root
-            //                     );
-            adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
-                                 ,index_start, p->index);
-            adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
-            adios_posix1_do_write (fd, method, buffer, buffer_offset);
-
-            free (buffer);
-
-            break;
-        }
-
-        case adios_mode_read:
-        {
-            // read the index to find the place to start reading
-            adios_posix1_do_read (fd, method);
-            struct adios_var_struct * v = fd->group->vars;
-            while (v)
-            {
-                v->data = v->adata = 0;
-                v = v->next;
-            }
-
-            break;
-        }
-
-        default:
-        {
-            fprintf (stderr, "Unknown file mode: %d\n", fd->mode);
-
-            return;
-        }
-    }
-
-    adios_posix_close_internal (&p->b);
-    adios_clear_index_v1 (p->index);
-}
-
-void adios_posix1_finalize (int mype, struct adios_method_struct * method)
-{
-    struct adios_POSIX1_data_struct * p = (struct adios_POSIX1_data_struct *)
-        method->method_data;
-    adios_free_index_v1 (p->index);
-    if (adios_posix1_initialized)
-        adios_posix1_initialized = 0;
-}
-
-void adios_posix1_end_iteration (struct adios_method_struct * method)
-{
-}
-
-void adios_posix1_start_calculation (struct adios_method_struct * method)
-{
-}
-
-void adios_posix1_stop_calculation (struct adios_method_struct * method)
-{
-}
diff --git a/src/write/adios_var_merge.c b/src/write/adios_var_merge.c
index 37f9b7c..7a20f43 100644
--- a/src/write/adios_var_merge.c
+++ b/src/write/adios_var_merge.c
@@ -29,7 +29,6 @@
 #define FORWARD 0
 #define REVERSE 1
 
-extern struct adios_transport_struct * adios_transports;
 static int varcnt=0;
 static char io_method[16]; //the IO method for data output
 static char io_parameters[256]; //the IO method parameters
@@ -905,8 +904,8 @@ int adios_var_merge_open (struct adios_file_struct * fd
     return 1;
 }
 
-enum ADIOS_FLAG adios_var_merge_should_buffer (struct adios_file_struct * fd
-                                         ,struct adios_method_struct * method)
+enum BUFFERING_STRATEGY adios_var_merge_should_buffer (struct adios_file_struct * fd
+                                                      ,struct adios_method_struct * method)
 {
 
     switch (fd->mode)
@@ -926,12 +925,12 @@ enum ADIOS_FLAG adios_var_merge_should_buffer (struct adios_file_struct * fd
         default:
         {
             adios_error (err_invalid_file_mode, "VAR_MERGE method: Unknown file mode requested: %d\n", fd->mode);
-            return adios_flag_no;
+            return no_buffering;
         }
     }
 
     //this method handles its own buffering
-    return adios_flag_no;
+    return no_buffering;
 }
 
 #if 0
@@ -1024,25 +1023,25 @@ void adios_var_merge_write (struct adios_file_struct * fd
             dim = get_value_for_dim (&d->dimension);
             ldims[dims_count]=dim;
             if(dims_count==0)
-                sprintf(vars->dimensions,"%llu", dim);
+                sprintf(vars->dimensions,"%" PRIu64 , dim);
             else
-                sprintf(vars->dimensions,"%s,%llu",vars->dimensions, dim);
+                sprintf(vars->dimensions,"%s,%" PRIu64 ,vars->dimensions, dim);
 
             //global dimension
             dim = get_value_for_dim (&d->global_dimension);
             gdims[dims_count]=dim;
             if(dims_count==0)
-                sprintf(vars->global_dimensions,"%llu", dim);
+                sprintf(vars->global_dimensions,"%" PRIu64 , dim);
             else
-                sprintf(vars->global_dimensions,"%s,%llu",vars->global_dimensions, dim);
+                sprintf(vars->global_dimensions,"%s,%" PRIu64 ,vars->global_dimensions, dim);
 
             //local offsets
             dim = get_value_for_dim (&d->local_offset);
             offsets[dims_count]=dim;
             if(dims_count==0)
-                sprintf(vars->local_offsets,"%llu", dim);
+                sprintf(vars->local_offsets,"%" PRIu64 , dim);
             else
-                sprintf(vars->local_offsets,"%s,%llu",vars->local_offsets, dim);
+                sprintf(vars->local_offsets,"%s,%" PRIu64 ,vars->local_offsets, dim);
 
             dims_count++;
             d=d->next;
@@ -1196,6 +1195,16 @@ void release_resource()
     }
 }
 
+void adios_var_merge_buffer_overflow (struct adios_file_struct * fd, 
+                                      struct adios_method_struct * method)
+{
+    struct adios_MPI_data_struct * md = (struct adios_MPI_data_struct *)
+                                                 method->method_data;
+    log_error ("rank %d: VAR_MERGE method only works with complete buffering of data between adios_open() "
+               "and adios_close(). Variables that do not fit into the buffer will not be "
+               "written by this method to file %s\n", md->rank, fd->name);
+}
+
 void adios_var_merge_close (struct adios_file_struct * fd
                      ,struct adios_method_struct * method
                      )
@@ -1433,9 +1442,9 @@ static uint64_t do_spatial_aggr(int level, int *procs, int ndims, uint64_t *ldim
 
             for(i=0;i<ndims;i++) {
                 if(i==0)
-                    sprintf(new_ldims, "%llu", gdims[i]);
+                    sprintf(new_ldims, "%" PRIu64 , gdims[i]);
                 else
-                    sprintf(new_ldims, "%s,%llu", new_ldims, gdims[i]);
+                    sprintf(new_ldims, "%s,%" PRIu64 , new_ldims, gdims[i]);
             }
 
             //aggregate the chunks
diff --git a/tests/C/CMakeLists.txt b/tests/C/CMakeLists.txt
index acd0a00..67190c0 100644
--- a/tests/C/CMakeLists.txt
+++ b/tests/C/CMakeLists.txt
@@ -3,7 +3,6 @@ include_directories(${PROJECT_SOURCE_DIR}/src/public)
 include_directories(${PROJECT_SOURCE_DIR}/src)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 add_executable(adios_test_c adios_test_c.c)
 target_link_libraries(adios_test_c adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES}) 
diff --git a/tests/C/Makefile.am b/tests/C/Makefile.am
index 7fdb6ef..ccadf36 100644
--- a/tests/C/Makefile.am
+++ b/tests/C/Makefile.am
@@ -14,7 +14,7 @@ adios_test_c_SOURCES = adios_test_c.c
 adios_test_c_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 adios_test_c_CFLAGS = $(ADIOSLIB_CFLAGS)
 adios_test_c_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_test_c_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+adios_test_c_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = restart.bp
 CC=$(MPICC)
diff --git a/tests/C/Makefile.in b/tests/C/Makefile.in
index 3d58d2c..8a580e6 100644
--- a/tests/C/Makefile.in
+++ b/tests/C/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = adios_test_c$(EXEEXT)
 subdir = tests/C
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,35 +130,86 @@ adios_test_c_OBJECTS = $(am_adios_test_c_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_test_c_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_test_c_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_test_c_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(adios_test_c_CFLAGS) \
 	$(CFLAGS) $(adios_test_c_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_test_c_SOURCES)
 DIST_SOURCES = $(adios_test_c_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -150,6 +243,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -174,6 +268,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -182,6 +277,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -214,6 +311,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -267,17 +365,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -308,6 +409,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -328,10 +430,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -340,9 +445,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -354,6 +456,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -388,14 +491,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -412,7 +518,7 @@ adios_test_c_SOURCES = adios_test_c.c
 adios_test_c_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 adios_test_c_CFLAGS = $(ADIOSLIB_CFLAGS)
 adios_test_c_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_test_c_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+adios_test_c_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = restart.bp
 EXTRA_DIST = config_c.xml
 all: all-recursive
@@ -458,9 +564,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_test_c$(EXEEXT): $(adios_test_c_OBJECTS) $(adios_test_c_DEPENDENCIES) 
+
+adios_test_c$(EXEEXT): $(adios_test_c_OBJECTS) $(adios_test_c_DEPENDENCIES) $(EXTRA_adios_test_c_DEPENDENCIES) 
 	@rm -f adios_test_c$(EXEEXT)
-	$(adios_test_c_LINK) $(adios_test_c_OBJECTS) $(adios_test_c_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(adios_test_c_LINK) $(adios_test_c_OBJECTS) $(adios_test_c_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -469,19 +576,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 adios_test_c-adios_test_c.o: adios_test_c.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_c_CPPFLAGS) $(CPPFLAGS) $(adios_test_c_CFLAGS) $(CFLAGS) -c -o adios_test_c-adios_test_c.o `test -f 'adios_test_c.c' || echo '$(srcdir)/'`adios_test_c.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_c_CPPFLAGS) $(CPPFLAGS) $(adios_test_c_CFLAGS) $(CFLAGS) -c -o adios_test_c-adios_test_c.o `test -f 'adios_test_c.c' || echo '$(srcdir)/'`adios_test_c.c
 
 adios_test_c-adios_test_c.obj: adios_test_c.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_c_CPPFLAGS) $(CPPFLAGS) $(adios_test_c_CFLAGS) $(CFLAGS) -c -o adios_test_c-adios_test_c.obj `if test -f 'adios_test_c.c'; then $(CYGPATH_W) 'adios_test_c.c'; else $(CYGPATH_W) '$(srcdir)/adios_test_c.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_c_CPPFLAGS) $(CPPFLAGS) $(adios_test_c_CFLAGS) $(CFLAGS) -c -o adios_test_c-adios_test_c.obj `if test -f 'adios_test_c.c'; then $(CYGPATH_W) 'adios_test_c.c'; else $(CYGPATH_W) '$(srcdir)/adios_test_c.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -490,22 +597,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -520,57 +630,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -586,12 +651,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -603,15 +663,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -620,6 +676,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -656,13 +727,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -697,10 +765,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -782,23 +855,22 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags ctags-recursive \
-	distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-am clean clean-generic clean-libtool \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am
 
 
 all-local:
diff --git a/tests/C/adios_test_c.c b/tests/C/adios_test_c.c
index cdb93c1..561cfd8 100644
--- a/tests/C/adios_test_c.c
+++ b/tests/C/adios_test_c.c
@@ -9,6 +9,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdint.h>
+#include <inttypes.h>
 #include <assert.h>
 #include <limits.h>
 
@@ -85,13 +86,13 @@ printf ("rank %d filename: %s\n", rank, filename);
 
     //uint64_t byte_test_length = 768LL * 1024 * 1024;
     uint64_t byte_test_length = 512LL * 1024 * 1024;
-if (rank == 0) printf ("Byte_test_length: %llu\n", byte_test_length);
+if (rank == 0) printf ("Byte_test_length: %" PRIu64 "\n", byte_test_length);
 #if DO_WRITE
     char * byte_test = 0;
     byte_test = malloc (byte_test_length + 1);
     if (byte_test == 0)
     {
-        fprintf (stderr, "Error allocating memory for write byte_test: %llu\n"
+        fprintf (stderr, "Error allocating memory for write byte_test: %" PRIu64 "\n"
                 ,byte_test_length
                 );
         exit (-1);
@@ -103,7 +104,7 @@ if (rank == 0) printf ("Byte_test_length: %llu\n", byte_test_length);
     r_byte_test = malloc (byte_test_length + 1);
     if (byte_test == 0)
     {
-        fprintf (stderr, "Error allocating memory for read byte_test: %llu\n"
+        fprintf (stderr, "Error allocating memory for read byte_test: %" PRIu64 "\n"
                 ,byte_test_length
                 );
         exit (-1);
@@ -172,10 +173,7 @@ if (rank == 0) printf ("Byte_test_length: %llu\n", byte_test_length);
     gettimeofday (&time_start, NULL);
     adios_open (&io_handle, type_name, filename, "w", comm);
     gettimeofday (&time_open, NULL);
-#if 1
-    adios_group_size (io_handle, 4 + byte_test_length, &total);
-    gettimeofday (&time_group_size, NULL);
-#else
+
     adios_group_size (io_handle,  4 + 4
                                 + 4 * zionsize1
                                 + 4 + 4 * zionsize2 * zionsize2
@@ -199,7 +197,6 @@ if (rank == 0) printf ("Byte_test_length: %llu\n", byte_test_length);
 
     adios_write (io_handle, "node-attr", &node);
 
-#endif
     adios_write (io_handle, "byte_test_length", &byte_test_length);
     gettimeofday (&time_write1, NULL);
     adios_write (io_handle, "byte_test", byte_test);
@@ -227,7 +224,7 @@ if (rank == 0) printf ("Byte_test_length: %llu\n", byte_test_length);
         printf ("Proc\tSec\n");
         for (i = 0; i < size; i++)
         {
-            printf ("%06d\t%02lld.%06lld\n", i, 
+            printf ("%06d\t%02" PRId64 ".%06" PRId64 "\n", i,
                     (int64_t)time_diff_all [i].tv_sec,
                     (int64_t)time_diff_all [i].tv_usec
                    );
diff --git a/tests/C/config_c.xml b/tests/C/config_c.xml
index fb5bc53..97465bc 100644
--- a/tests/C/config_c.xml
+++ b/tests/C/config_c.xml
@@ -35,6 +35,6 @@
 -->
   <transport group="restart" method="MPI">max_storage_targets=144;max_stripe_count=144;files_number=1;overlap_factor= 0;min_stripe_count=1;split_target_count=1;split_files_count=max</transport>
 
-  <buffer size-MB="1000" allocate-time="now"/>
+  <buffer max-size-MB="1000"/>
 
 </adios-config>
diff --git a/tests/C/fgr_tests/CMakeLists.txt b/tests/C/fgr_tests/CMakeLists.txt
index 53f8096..7e25c22 100644
--- a/tests/C/fgr_tests/CMakeLists.txt
+++ b/tests/C/fgr_tests/CMakeLists.txt
@@ -3,7 +3,6 @@ include_directories(${PROJECT_SOURCE_DIR}/src)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_SOURCE_DIR}/src)
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 
 add_executable(posix_fgr posix_fgr.c)
diff --git a/tests/C/fgr_tests/Makefile.am b/tests/C/fgr_tests/Makefile.am
index 857738d..bd3a3c9 100644
--- a/tests/C/fgr_tests/Makefile.am
+++ b/tests/C/fgr_tests/Makefile.am
@@ -9,7 +9,7 @@ posix_fgr_SOURCES = posix_fgr.c
 posix_fgr_CPPFLAGS = $(ADIOSLIB_CPPFLAGS)
 posix_fgr_CFLAGS = $(ADIOSLIB_CFLAGS)
 posix_fgr_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-posix_fgr_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+posix_fgr_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = posix_fgr.bp
 CC=$(MPICC)
diff --git a/tests/C/fgr_tests/Makefile.in b/tests/C/fgr_tests/Makefile.in
index e25905b..e8d7f49 100644
--- a/tests/C/fgr_tests/Makefile.in
+++ b/tests/C/fgr_tests/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = posix_fgr$(EXEEXT)
 subdir = tests/C/fgr_tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,23 +130,70 @@ posix_fgr_OBJECTS = $(am_posix_fgr_OBJECTS)
 am__DEPENDENCIES_1 =
 posix_fgr_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-posix_fgr_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+posix_fgr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(posix_fgr_CFLAGS) \
 	$(CFLAGS) $(posix_fgr_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(posix_fgr_SOURCES)
 DIST_SOURCES = $(posix_fgr_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -112,6 +201,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -136,6 +226,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -144,6 +235,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -176,6 +269,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -229,17 +323,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -270,6 +367,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -290,10 +388,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -302,9 +403,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -316,6 +414,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -350,14 +449,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -373,7 +475,7 @@ posix_fgr_SOURCES = posix_fgr.c
 posix_fgr_CPPFLAGS = $(ADIOSLIB_CPPFLAGS)
 posix_fgr_CFLAGS = $(ADIOSLIB_CFLAGS)
 posix_fgr_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-posix_fgr_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+posix_fgr_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = posix_fgr.bp
 all: all-am
 
@@ -418,9 +520,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-posix_fgr$(EXEEXT): $(posix_fgr_OBJECTS) $(posix_fgr_DEPENDENCIES) 
+
+posix_fgr$(EXEEXT): $(posix_fgr_OBJECTS) $(posix_fgr_DEPENDENCIES) $(EXTRA_posix_fgr_DEPENDENCIES) 
 	@rm -f posix_fgr$(EXEEXT)
-	$(posix_fgr_LINK) $(posix_fgr_OBJECTS) $(posix_fgr_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(posix_fgr_LINK) $(posix_fgr_OBJECTS) $(posix_fgr_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -429,19 +532,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 posix_fgr-posix_fgr.o: posix_fgr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(posix_fgr_CPPFLAGS) $(CPPFLAGS) $(posix_fgr_CFLAGS) $(CFLAGS) -c -o posix_fgr-posix_fgr.o `test -f 'posix_fgr.c' || echo '$(srcdir)/'`posix_fgr.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(posix_fgr_CPPFLAGS) $(CPPFLAGS) $(posix_fgr_CFLAGS) $(CFLAGS) -c -o posix_fgr-posix_fgr.o `test -f 'posix_fgr.c' || echo '$(srcdir)/'`posix_fgr.c
 
 posix_fgr-posix_fgr.obj: posix_fgr.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(posix_fgr_CPPFLAGS) $(CPPFLAGS) $(posix_fgr_CFLAGS) $(CFLAGS) -c -o posix_fgr-posix_fgr.obj `if test -f 'posix_fgr.c'; then $(CYGPATH_W) 'posix_fgr.c'; else $(CYGPATH_W) '$(srcdir)/posix_fgr.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(posix_fgr_CPPFLAGS) $(CPPFLAGS) $(posix_fgr_CFLAGS) $(CFLAGS) -c -o posix_fgr-posix_fgr.obj `if test -f 'posix_fgr.c'; then $(CYGPATH_W) 'posix_fgr.c'; else $(CYGPATH_W) '$(srcdir)/posix_fgr.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -449,26 +552,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -480,15 +572,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -497,6 +585,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -545,10 +648,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -632,18 +740,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/C/fgr_tests/posix_fgr.c b/tests/C/fgr_tests/posix_fgr.c
index 4427bca..a714a68 100644
--- a/tests/C/fgr_tests/posix_fgr.c
+++ b/tests/C/fgr_tests/posix_fgr.c
@@ -18,6 +18,7 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdint.h>
+#define __USE_LINUX_IOCTL_DEFS 1
 #include <sys/ioctl.h>
 //#include <lustre/lustre_user.h>
 //#endif
diff --git a/tests/C/flexpath_tests/1D_arr_global/Makefile.am b/tests/C/flexpath_tests/1D_arr_global/Makefile.am
index 1e3faca..1e60df5 100644
--- a/tests/C/flexpath_tests/1D_arr_global/Makefile.am
+++ b/tests/C/flexpath_tests/1D_arr_global/Makefile.am
@@ -1,7 +1,7 @@
 AM_CPPFLAGS = $(all_includes)
 AM_CPPFLAGS += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../include
 
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 
 all-local:
 	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/*.xml $(builddir)
@@ -11,10 +11,10 @@ noinst_PROGRAMS = writer_global reader_global
 
 writer_global_SOURCES = writer.c ../common/utils.c
 writer_global_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_global_SOURCES = reader.c ../common/utils.c
 reader_global_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/tests/C/flexpath_tests/1D_arr_global/Makefile.in b/tests/C/flexpath_tests/1D_arr_global/Makefile.in
index 4238190..f4cac27 100644
--- a/tests/C/flexpath_tests/1D_arr_global/Makefile.in
+++ b/tests/C/flexpath_tests/1D_arr_global/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = writer_global$(EXEEXT) reader_global$(EXEEXT)
 subdir = tests/C/flexpath_tests/1D_arr_global
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -83,35 +125,83 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_reader_global_OBJECTS = reader.$(OBJEXT) utils.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_reader_global_OBJECTS = reader.$(OBJEXT) ../common/utils.$(OBJEXT)
 reader_global_OBJECTS = $(am_reader_global_OBJECTS)
 am__DEPENDENCIES_1 =
 reader_global_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-reader_global_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+reader_global_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(reader_global_LDFLAGS) $(LDFLAGS) -o $@
-am_writer_global_OBJECTS = writer.$(OBJEXT) utils.$(OBJEXT)
+am_writer_global_OBJECTS = writer.$(OBJEXT) ../common/utils.$(OBJEXT)
 writer_global_OBJECTS = $(am_writer_global_OBJECTS)
 writer_global_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-writer_global_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+writer_global_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(writer_global_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(reader_global_SOURCES) $(writer_global_SOURCES)
 DIST_SOURCES = $(reader_global_SOURCES) $(writer_global_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +209,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +234,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +243,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +277,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +331,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +375,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +396,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +411,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +422,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +457,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,13 +479,13 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public \
 	-I$(srcdir)/../include
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 writer_global_SOURCES = writer.c ../common/utils.c
 writer_global_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_global_SOURCES = reader.c ../common/utils.c
 reader_global_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_global_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_global_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = test_config_flex.xml cfg.h readme.txt
 all: all-am
@@ -428,33 +531,34 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-reader_global$(EXEEXT): $(reader_global_OBJECTS) $(reader_global_DEPENDENCIES) 
+../common/$(am__dirstamp):
+	@$(MKDIR_P) ../common
+	@: > ../common/$(am__dirstamp)
+../common/utils.$(OBJEXT): ../common/$(am__dirstamp)
+
+reader_global$(EXEEXT): $(reader_global_OBJECTS) $(reader_global_DEPENDENCIES) $(EXTRA_reader_global_DEPENDENCIES) 
 	@rm -f reader_global$(EXEEXT)
-	$(reader_global_LINK) $(reader_global_OBJECTS) $(reader_global_LDADD) $(LIBS)
-writer_global$(EXEEXT): $(writer_global_OBJECTS) $(writer_global_DEPENDENCIES) 
+	$(AM_V_CCLD)$(reader_global_LINK) $(reader_global_OBJECTS) $(reader_global_LDADD) $(LIBS)
+
+writer_global$(EXEEXT): $(writer_global_OBJECTS) $(writer_global_DEPENDENCIES) $(EXTRA_writer_global_DEPENDENCIES) 
 	@rm -f writer_global$(EXEEXT)
-	$(writer_global_LINK) $(writer_global_OBJECTS) $(writer_global_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(writer_global_LINK) $(writer_global_OBJECTS) $(writer_global_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f ../common/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
-
-utils.o: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.o `test -f '../common/utils.c' || echo '$(srcdir)/'`../common/utils.c
-
-utils.obj: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.obj `if test -f '../common/utils.c'; then $(CYGPATH_W) '../common/utils.c'; else $(CYGPATH_W) '$(srcdir)/../common/utils.c'; fi`
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -462,26 +566,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -493,15 +586,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -510,6 +599,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -558,10 +662,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -570,6 +679,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 ../common/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -645,9 +755,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -657,7 +767,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/C/flexpath_tests/1D_arr_global/reader.c b/tests/C/flexpath_tests/1D_arr_global/reader.c
index 69ebb35..0dcfe25 100644
--- a/tests/C/flexpath_tests/1D_arr_global/reader.c
+++ b/tests/C/flexpath_tests/1D_arr_global/reader.c
@@ -148,9 +148,11 @@ int main (int argc, char **argv){
 
 	if (TEST_PASSED == test_result.result)
 		p_test_passed("%s: rank %d\n", test_result.name, rank);
+	else 
+	    p_test_failed("%s: rank %d\n", test_result.name, rank);
 
 
-/*#ifdef FLEXPATH_METHOD
+#ifdef FLEXPATH_METHOD
 	adios_release_step(adios_handler);
 	// 0 - next available step, block for max 30 seconds until the next step
 	// is available
@@ -161,7 +163,7 @@ int main (int argc, char **argv){
 		printf("ERROR: adios_advance_step(); anyway Quitting ... Rank %d: (%d) %s\n", rank, adios_errno, adios_errmsg());
 	}
 #endif
-*/
+
 
 just_clean:
 	// clean everything
diff --git a/tests/C/flexpath_tests/1D_arr_global/test_config_flex.xml b/tests/C/flexpath_tests/1D_arr_global/test_config_flex.xml
index e359fa8..41297d8 100644
--- a/tests/C/flexpath_tests/1D_arr_global/test_config_flex.xml
+++ b/tests/C/flexpath_tests/1D_arr_global/test_config_flex.xml
@@ -12,7 +12,7 @@
 <!-- The queue size says how many timesteps the writer can buffer before it blocks -->
 <method group="temperature"  method="FLEXPATH">QUEUE_SIZE=4;</method>    
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/C/flexpath_tests/1D_arr_global/writer.c b/tests/C/flexpath_tests/1D_arr_global/writer.c
index 1b5e49a..ec04dd6 100644
--- a/tests/C/flexpath_tests/1D_arr_global/writer.c
+++ b/tests/C/flexpath_tests/1D_arr_global/writer.c
@@ -51,7 +51,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);
 
 	// init the array that I will transport
@@ -66,7 +66,7 @@ int main(int argc, char ** argv){
 	adios_open( &adios_handle, "temperature", FILE_NAME, "w", comm);
 	adios_groupsize = 4 + 4 + 4 + 8 * (NX);
 	retval=adios_group_size (adios_handle, adios_groupsize, &adios_totalsize);
-	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%lld, adios_totalsize=%lld, retval=%d\n",
+	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%" PRIu64 ", adios_totalsize=%" PRIu64 ", retval=%d\n",
 			rank, adios_groupsize, adios_totalsize, retval);
 
 	// write; don't check errors for simplicity reasons
diff --git a/tests/C/flexpath_tests/1D_arr_global_noxml/CMakeLists.txt b/tests/C/flexpath_tests/1D_arr_global_noxml/CMakeLists.txt
index 415fc22..658b399 100644
--- a/tests/C/flexpath_tests/1D_arr_global_noxml/CMakeLists.txt
+++ b/tests/C/flexpath_tests/1D_arr_global_noxml/CMakeLists.txt
@@ -4,7 +4,6 @@ include_directories(${PROJECT_SOURCE_DIR}/tests/C/flexpath_tests/include)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_SOURCE_DIR}/src)
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 
 add_executable(writer_global_noxml writer.c ../common/utils.c)
diff --git a/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.am b/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.am
index 9992565..bcb9848 100644
--- a/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.am
+++ b/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.am
@@ -1,7 +1,7 @@
 AM_CPPFLAGS = $(all_includes)
 AM_CPPFLAGS += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../include
 
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 
 all-local:
 	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/readme.txt $(builddir)
@@ -10,10 +10,10 @@ noinst_PROGRAMS = writer_global_noxml reader_global_noxml
 
 writer_global_noxml_SOURCES = writer.c ../common/utils.c
 writer_global_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_global_noxml_SOURCES = reader.c ../common/utils.c
 reader_global_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
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 49d24d6..f1fba39 100644
--- a/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.in
+++ b/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = writer_global_noxml$(EXEEXT) \
 	reader_global_noxml$(EXEEXT)
 subdir = tests/C/flexpath_tests/1D_arr_global_noxml
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -84,37 +126,89 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_reader_global_noxml_OBJECTS = reader.$(OBJEXT) utils.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_reader_global_noxml_OBJECTS = reader.$(OBJEXT) \
+	../common/utils.$(OBJEXT)
 reader_global_noxml_OBJECTS = $(am_reader_global_noxml_OBJECTS)
 am__DEPENDENCIES_1 =
 reader_global_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-reader_global_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(reader_global_noxml_LDFLAGS) $(LDFLAGS) -o $@
-am_writer_global_noxml_OBJECTS = writer.$(OBJEXT) utils.$(OBJEXT)
+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 = 
+reader_global_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(reader_global_noxml_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am_writer_global_noxml_OBJECTS = writer.$(OBJEXT) \
+	../common/utils.$(OBJEXT)
 writer_global_noxml_OBJECTS = $(am_writer_global_noxml_OBJECTS)
 writer_global_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-writer_global_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(writer_global_noxml_LDFLAGS) $(LDFLAGS) -o $@
+writer_global_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(writer_global_noxml_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(reader_global_noxml_SOURCES) \
 	$(writer_global_noxml_SOURCES)
 DIST_SOURCES = $(reader_global_noxml_SOURCES) \
 	$(writer_global_noxml_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +216,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -146,6 +241,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -154,6 +250,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -186,6 +284,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -239,17 +338,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -280,6 +382,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -300,10 +403,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -312,9 +418,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -326,6 +429,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -360,14 +464,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -379,13 +486,13 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public \
 	-I$(srcdir)/../include
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 writer_global_noxml_SOURCES = writer.c ../common/utils.c
 writer_global_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_global_noxml_SOURCES = reader.c ../common/utils.c
 reader_global_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_global_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = cfg.h readme.txt
 all: all-am
@@ -431,33 +538,34 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-reader_global_noxml$(EXEEXT): $(reader_global_noxml_OBJECTS) $(reader_global_noxml_DEPENDENCIES) 
+../common/$(am__dirstamp):
+	@$(MKDIR_P) ../common
+	@: > ../common/$(am__dirstamp)
+../common/utils.$(OBJEXT): ../common/$(am__dirstamp)
+
+reader_global_noxml$(EXEEXT): $(reader_global_noxml_OBJECTS) $(reader_global_noxml_DEPENDENCIES) $(EXTRA_reader_global_noxml_DEPENDENCIES) 
 	@rm -f reader_global_noxml$(EXEEXT)
-	$(reader_global_noxml_LINK) $(reader_global_noxml_OBJECTS) $(reader_global_noxml_LDADD) $(LIBS)
-writer_global_noxml$(EXEEXT): $(writer_global_noxml_OBJECTS) $(writer_global_noxml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(reader_global_noxml_LINK) $(reader_global_noxml_OBJECTS) $(reader_global_noxml_LDADD) $(LIBS)
+
+writer_global_noxml$(EXEEXT): $(writer_global_noxml_OBJECTS) $(writer_global_noxml_DEPENDENCIES) $(EXTRA_writer_global_noxml_DEPENDENCIES) 
 	@rm -f writer_global_noxml$(EXEEXT)
-	$(writer_global_noxml_LINK) $(writer_global_noxml_OBJECTS) $(writer_global_noxml_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(writer_global_noxml_LINK) $(writer_global_noxml_OBJECTS) $(writer_global_noxml_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f ../common/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
-
-utils.o: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.o `test -f '../common/utils.c' || echo '$(srcdir)/'`../common/utils.c
-
-utils.obj: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.obj `if test -f '../common/utils.c'; then $(CYGPATH_W) '../common/utils.c'; else $(CYGPATH_W) '$(srcdir)/../common/utils.c'; fi`
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -465,26 +573,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -496,15 +593,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -513,6 +606,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -561,10 +669,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -573,6 +686,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 ../common/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -648,9 +762,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -660,7 +774,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
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 99c467e..e87224b 100644
--- a/tests/C/flexpath_tests/1D_arr_global_noxml/writer.c
+++ b/tests/C/flexpath_tests/1D_arr_global_noxml/writer.c
@@ -60,7 +60,7 @@ int main(int argc, char ** argv){
 
 	// returns 0 (buffer allocated) or 1 (seems everything fine)
 	// I guess size of the buffer in MB
-	adios_allocate_buffer(ADIOS_BUFFER_ALLOC_NOW, 20);
+	adios_set_max_buffer_size (20);
 
 	// this will hold the group id for all variables defined within this group
 	int64_t	adios_grp;
@@ -94,7 +94,7 @@ int main(int argc, char ** argv){
 	uint64_t adios_totalsize = 0;
 
 	retval=adios_group_size (adios_handle, adios_groupsize, &adios_totalsize);
-	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%lld, adios_totalsize=%lld, retval=%d\n",
+	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%" PRIu64 ", adios_totalsize=%" PRIu64 ", retval=%d\n",
 				rank, adios_groupsize, adios_totalsize, retval);
 
 	// init the array that I will transport over the sea
diff --git a/tests/C/flexpath_tests/Makefile.in b/tests/C/flexpath_tests/Makefile.in
index 8101fcf..af7cf17 100644
--- a/tests/C/flexpath_tests/Makefile.in
+++ b/tests/C/flexpath_tests/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests/C/flexpath_tests
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -424,22 +517,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -454,57 +550,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -520,12 +571,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -537,15 +583,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -554,6 +596,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -590,13 +647,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -631,10 +685,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -712,22 +771,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/C/flexpath_tests/common/utils.c b/tests/C/flexpath_tests/common/utils.c
index 1ce2e11..c3ac0ef 100644
--- a/tests/C/flexpath_tests/common/utils.c
+++ b/tests/C/flexpath_tests/common/utils.c
@@ -14,6 +14,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <ctype.h>
+#include <getopt.h>
 
 #include "misc.h"
 #include "utils.h"
diff --git a/tests/C/flexpath_tests/global_range_select/CMakeLists.txt b/tests/C/flexpath_tests/global_range_select/CMakeLists.txt
index 86a2552..2f60783 100644
--- a/tests/C/flexpath_tests/global_range_select/CMakeLists.txt
+++ b/tests/C/flexpath_tests/global_range_select/CMakeLists.txt
@@ -4,7 +4,6 @@ include_directories(${PROJECT_SOURCE_DIR}/test/C/flexpath_tests/include)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_SOURCE_DIR}/src)
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 
 add_executable(arrays_writer arrays_write.c)
diff --git a/tests/C/flexpath_tests/global_range_select/Makefile.am b/tests/C/flexpath_tests/global_range_select/Makefile.am
index dd70a4a..396fb1d 100644
--- a/tests/C/flexpath_tests/global_range_select/Makefile.am
+++ b/tests/C/flexpath_tests/global_range_select/Makefile.am
@@ -11,10 +11,10 @@ noinst_PROGRAMS = arrays_write arrays_read
 
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/tests/C/flexpath_tests/global_range_select/Makefile.in b/tests/C/flexpath_tests/global_range_select/Makefile.in
index b76c850..c05d198 100644
--- a/tests/C/flexpath_tests/global_range_select/Makefile.in
+++ b/tests/C/flexpath_tests/global_range_select/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = arrays_write$(EXEEXT) arrays_read$(EXEEXT)
 subdir = tests/C/flexpath_tests/global_range_select
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,30 +130,77 @@ arrays_read_OBJECTS = $(am_arrays_read_OBJECTS)
 am__DEPENDENCIES_1 =
 arrays_read_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+arrays_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_read_LDFLAGS) $(LDFLAGS) -o $@
 am_arrays_write_OBJECTS = arrays_write.$(OBJEXT)
 arrays_write_OBJECTS = $(am_arrays_write_OBJECTS)
 arrays_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-arrays_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+arrays_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(arrays_write_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
 DIST_SOURCES = $(arrays_read_SOURCES) $(arrays_write_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +242,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -379,10 +481,10 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 arrays_write_SOURCES = arrays_write.c
 arrays_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 arrays_read_SOURCES = arrays_read.c
 arrays_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+arrays_read_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = arrays.xml run_tests.pl
 all: all-am
@@ -428,12 +530,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) 
+
+arrays_read$(EXEEXT): $(arrays_read_OBJECTS) $(arrays_read_DEPENDENCIES) $(EXTRA_arrays_read_DEPENDENCIES) 
 	@rm -f arrays_read$(EXEEXT)
-	$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
-arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(arrays_read_LINK) $(arrays_read_OBJECTS) $(arrays_read_LDADD) $(LIBS)
+
+arrays_write$(EXEEXT): $(arrays_write_OBJECTS) $(arrays_write_DEPENDENCIES) $(EXTRA_arrays_write_DEPENDENCIES) 
 	@rm -f arrays_write$(EXEEXT)
-	$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(arrays_write_LINK) $(arrays_write_OBJECTS) $(arrays_write_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -442,13 +546,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -456,26 +560,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -487,15 +580,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -504,6 +593,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -552,10 +656,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -639,9 +748,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -651,7 +760,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/C/flexpath_tests/global_range_select/arrays.xml b/tests/C/flexpath_tests/global_range_select/arrays.xml
index 33cec61..2330ab1 100644
--- a/tests/C/flexpath_tests/global_range_select/arrays.xml
+++ b/tests/C/flexpath_tests/global_range_select/arrays.xml
@@ -13,7 +13,7 @@
 
 <method group="temperature"  method="FLEXPATH">QUEUE_SIZE=4;</method>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/C/flexpath_tests/include/test_common.h b/tests/C/flexpath_tests/include/test_common.h
index 994df35..5e0fcd1 100644
--- a/tests/C/flexpath_tests/include/test_common.h
+++ b/tests/C/flexpath_tests/include/test_common.h
@@ -238,7 +238,7 @@
 #define TEST_LONG_EQUAL(value_ref, value, err_count, test_res) \
 	if (value != value_ref ){ \
 		test_res = TEST_FAILED; \
-		p_test_failed("(expected=%lld, got=%lld)\n", value_ref, value); \
+		p_test_failed("(expected=%" PRIu64 ", got=%" PRIu64 ")\n", value_ref, value); \
 		err_count++; \
 	}
 
diff --git a/tests/C/flexpath_tests/maya_append/CMakeLists.txt b/tests/C/flexpath_tests/maya_append/CMakeLists.txt
index 0acc19a..82ccf86 100644
--- a/tests/C/flexpath_tests/maya_append/CMakeLists.txt
+++ b/tests/C/flexpath_tests/maya_append/CMakeLists.txt
@@ -4,7 +4,6 @@ include_directories(${PROJECT_SOURCE_DIR}/tests/C/flexpath_tests/include)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_SOURCE_DIR}/src)
 link_directories(${PROJECT_BINARY_DIR}/src)
-#link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 
 add_executable(writer_maya writer.c ../common/utils.c)
diff --git a/tests/C/flexpath_tests/maya_append/Makefile.am b/tests/C/flexpath_tests/maya_append/Makefile.am
index 9a0bfa2..b728f14 100644
--- a/tests/C/flexpath_tests/maya_append/Makefile.am
+++ b/tests/C/flexpath_tests/maya_append/Makefile.am
@@ -1,16 +1,16 @@
 AM_CPPFLAGS = $(all_includes)
 AM_CPPFLAGS += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../include
 
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 
 noinst_PROGRAMS = writer_maya reader_maya
 
 writer_maya_SOURCES = writer.c ../common/utils.c
 writer_maya_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_maya_SOURCES = reader.c ../common/utils.c
 reader_maya_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/tests/C/flexpath_tests/maya_append/Makefile.in b/tests/C/flexpath_tests/maya_append/Makefile.in
index 9c4595a..e0b5051 100644
--- a/tests/C/flexpath_tests/maya_append/Makefile.in
+++ b/tests/C/flexpath_tests/maya_append/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = writer_maya$(EXEEXT) reader_maya$(EXEEXT)
 subdir = tests/C/flexpath_tests/maya_append
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -83,35 +125,83 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_reader_maya_OBJECTS = reader.$(OBJEXT) utils.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_reader_maya_OBJECTS = reader.$(OBJEXT) ../common/utils.$(OBJEXT)
 reader_maya_OBJECTS = $(am_reader_maya_OBJECTS)
 am__DEPENDENCIES_1 =
 reader_maya_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-reader_maya_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+reader_maya_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(reader_maya_LDFLAGS) $(LDFLAGS) -o $@
-am_writer_maya_OBJECTS = writer.$(OBJEXT) utils.$(OBJEXT)
+am_writer_maya_OBJECTS = writer.$(OBJEXT) ../common/utils.$(OBJEXT)
 writer_maya_OBJECTS = $(am_writer_maya_OBJECTS)
 writer_maya_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-writer_maya_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+writer_maya_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(writer_maya_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(reader_maya_SOURCES) $(writer_maya_SOURCES)
 DIST_SOURCES = $(reader_maya_SOURCES) $(writer_maya_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +209,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +234,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +243,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +277,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +331,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +375,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +396,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +411,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +422,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +457,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,13 +479,13 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public \
 	-I$(srcdir)/../include
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 writer_maya_SOURCES = writer.c ../common/utils.c
 writer_maya_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_maya_SOURCES = reader.c ../common/utils.c
 reader_maya_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_maya_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = cfg.h readme.txt
 all: all-am
@@ -428,33 +531,34 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-reader_maya$(EXEEXT): $(reader_maya_OBJECTS) $(reader_maya_DEPENDENCIES) 
+../common/$(am__dirstamp):
+	@$(MKDIR_P) ../common
+	@: > ../common/$(am__dirstamp)
+../common/utils.$(OBJEXT): ../common/$(am__dirstamp)
+
+reader_maya$(EXEEXT): $(reader_maya_OBJECTS) $(reader_maya_DEPENDENCIES) $(EXTRA_reader_maya_DEPENDENCIES) 
 	@rm -f reader_maya$(EXEEXT)
-	$(reader_maya_LINK) $(reader_maya_OBJECTS) $(reader_maya_LDADD) $(LIBS)
-writer_maya$(EXEEXT): $(writer_maya_OBJECTS) $(writer_maya_DEPENDENCIES) 
+	$(AM_V_CCLD)$(reader_maya_LINK) $(reader_maya_OBJECTS) $(reader_maya_LDADD) $(LIBS)
+
+writer_maya$(EXEEXT): $(writer_maya_OBJECTS) $(writer_maya_DEPENDENCIES) $(EXTRA_writer_maya_DEPENDENCIES) 
 	@rm -f writer_maya$(EXEEXT)
-	$(writer_maya_LINK) $(writer_maya_OBJECTS) $(writer_maya_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(writer_maya_LINK) $(writer_maya_OBJECTS) $(writer_maya_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f ../common/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
-
-utils.o: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.o `test -f '../common/utils.c' || echo '$(srcdir)/'`../common/utils.c
-
-utils.obj: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.obj `if test -f '../common/utils.c'; then $(CYGPATH_W) '../common/utils.c'; else $(CYGPATH_W) '$(srcdir)/../common/utils.c'; fi`
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -462,26 +566,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -493,15 +586,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -510,6 +599,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -558,10 +662,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -570,6 +679,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 ../common/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -645,18 +755,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/C/flexpath_tests/maya_append/writer.c b/tests/C/flexpath_tests/maya_append/writer.c
index cf1c5d2..a5aaa2d 100644
--- a/tests/C/flexpath_tests/maya_append/writer.c
+++ b/tests/C/flexpath_tests/maya_append/writer.c
@@ -60,7 +60,7 @@ int main(int argc, char ** argv){
 
 	// returns 0 (buffer allocated) or 1 (seems everything fine)
 	// I guess size of the buffer in MB
-	adios_allocate_buffer(ADIOS_BUFFER_ALLOC_NOW, ADS_BUFFER_SIZE);
+	adios_set_max_buffer_size (ADS_BUFFER_SIZE);
 
 	// this will hold the group id for all variables defined within this group
 	int64_t	adios_grp = 0;
@@ -113,7 +113,7 @@ int main(int argc, char ** argv){
 
     	uint64_t adios_totalsize = 0;
     	retval=adios_group_size (adios_handle, adios_groupsize, &adios_totalsize);
-    	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%lld, adios_totalsize=%lld, retval=%d\n",
+    	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%" PRIu64 ", adios_totalsize=%" PRIu64 ", retval=%d\n",
     				rank, adios_groupsize, adios_totalsize, retval);
     	WRITE_VAR("/level/", MAYA_GF_VAR_PFX, &level[i]);
     	WRITE_VAR("/scalar/", MAYA_GF_VAR_PFX, &level[i]);
diff --git a/tests/C/flexpath_tests/maya_noxml/CMakeLists.txt b/tests/C/flexpath_tests/maya_noxml/CMakeLists.txt
index d5e6d24..acdd300 100644
--- a/tests/C/flexpath_tests/maya_noxml/CMakeLists.txt
+++ b/tests/C/flexpath_tests/maya_noxml/CMakeLists.txt
@@ -4,7 +4,6 @@ include_directories(${PROJECT_SOURCE_DIR}/tests/C/flexpath_tests/include)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_SOURCE_DIR}/src)
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 
 add_executable(writer_maya_noxml writer.c ../common/utils.c)
diff --git a/tests/C/flexpath_tests/maya_noxml/Makefile.am b/tests/C/flexpath_tests/maya_noxml/Makefile.am
index 500d07e..e4ee490 100644
--- a/tests/C/flexpath_tests/maya_noxml/Makefile.am
+++ b/tests/C/flexpath_tests/maya_noxml/Makefile.am
@@ -1,16 +1,16 @@
 AM_CPPFLAGS = $(all_includes)
 AM_CPPFLAGS += -I$(top_builddir)/src/public  -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../include
 
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 
 noinst_PROGRAMS = writer_maya_noxml reader_maya_noxml
 
 writer_maya_noxml_SOURCES = writer.c ../common/utils.c
 writer_maya_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_maya_noxml_SOURCES = reader.c ../common/utils.c
 reader_maya_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/tests/C/flexpath_tests/maya_noxml/Makefile.in b/tests/C/flexpath_tests/maya_noxml/Makefile.in
index 544891c..e07a53d 100644
--- a/tests/C/flexpath_tests/maya_noxml/Makefile.in
+++ b/tests/C/flexpath_tests/maya_noxml/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = writer_maya_noxml$(EXEEXT) \
 	reader_maya_noxml$(EXEEXT)
 subdir = tests/C/flexpath_tests/maya_noxml
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -84,36 +126,88 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_reader_maya_noxml_OBJECTS = reader.$(OBJEXT) utils.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_reader_maya_noxml_OBJECTS = reader.$(OBJEXT) \
+	../common/utils.$(OBJEXT)
 reader_maya_noxml_OBJECTS = $(am_reader_maya_noxml_OBJECTS)
 am__DEPENDENCIES_1 =
 reader_maya_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-reader_maya_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(reader_maya_noxml_LDFLAGS) $(LDFLAGS) -o $@
-am_writer_maya_noxml_OBJECTS = writer.$(OBJEXT) utils.$(OBJEXT)
+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 = 
+reader_maya_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(reader_maya_noxml_LDFLAGS) $(LDFLAGS) \
+	-o $@
+am_writer_maya_noxml_OBJECTS = writer.$(OBJEXT) \
+	../common/utils.$(OBJEXT)
 writer_maya_noxml_OBJECTS = $(am_writer_maya_noxml_OBJECTS)
 writer_maya_noxml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-writer_maya_noxml_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(writer_maya_noxml_LDFLAGS) $(LDFLAGS) -o $@
+writer_maya_noxml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(writer_maya_noxml_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(reader_maya_noxml_SOURCES) $(writer_maya_noxml_SOURCES)
 DIST_SOURCES = $(reader_maya_noxml_SOURCES) \
 	$(writer_maya_noxml_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -121,6 +215,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -145,6 +240,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -153,6 +249,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -185,6 +283,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -238,17 +337,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -279,6 +381,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -299,10 +402,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -311,9 +417,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -325,6 +428,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -359,14 +463,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,13 +485,13 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public \
 	-I$(srcdir)/../include
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 writer_maya_noxml_SOURCES = writer.c ../common/utils.c
 writer_maya_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_maya_noxml_SOURCES = reader.c ../common/utils.c
 reader_maya_noxml_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_maya_noxml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = cfg.h readme.txt
 all: all-am
@@ -430,33 +537,34 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-reader_maya_noxml$(EXEEXT): $(reader_maya_noxml_OBJECTS) $(reader_maya_noxml_DEPENDENCIES) 
+../common/$(am__dirstamp):
+	@$(MKDIR_P) ../common
+	@: > ../common/$(am__dirstamp)
+../common/utils.$(OBJEXT): ../common/$(am__dirstamp)
+
+reader_maya_noxml$(EXEEXT): $(reader_maya_noxml_OBJECTS) $(reader_maya_noxml_DEPENDENCIES) $(EXTRA_reader_maya_noxml_DEPENDENCIES) 
 	@rm -f reader_maya_noxml$(EXEEXT)
-	$(reader_maya_noxml_LINK) $(reader_maya_noxml_OBJECTS) $(reader_maya_noxml_LDADD) $(LIBS)
-writer_maya_noxml$(EXEEXT): $(writer_maya_noxml_OBJECTS) $(writer_maya_noxml_DEPENDENCIES) 
+	$(AM_V_CCLD)$(reader_maya_noxml_LINK) $(reader_maya_noxml_OBJECTS) $(reader_maya_noxml_LDADD) $(LIBS)
+
+writer_maya_noxml$(EXEEXT): $(writer_maya_noxml_OBJECTS) $(writer_maya_noxml_DEPENDENCIES) $(EXTRA_writer_maya_noxml_DEPENDENCIES) 
 	@rm -f writer_maya_noxml$(EXEEXT)
-	$(writer_maya_noxml_LINK) $(writer_maya_noxml_OBJECTS) $(writer_maya_noxml_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(writer_maya_noxml_LINK) $(writer_maya_noxml_OBJECTS) $(writer_maya_noxml_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f ../common/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
-
-utils.o: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.o `test -f '../common/utils.c' || echo '$(srcdir)/'`../common/utils.c
-
-utils.obj: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.obj `if test -f '../common/utils.c'; then $(CYGPATH_W) '../common/utils.c'; else $(CYGPATH_W) '$(srcdir)/../common/utils.c'; fi`
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -464,26 +572,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -495,15 +592,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -512,6 +605,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -560,10 +668,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -572,6 +685,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 ../common/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -647,18 +761,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/C/flexpath_tests/maya_noxml/writer.c b/tests/C/flexpath_tests/maya_noxml/writer.c
index 10104cb..d2c07b4 100644
--- a/tests/C/flexpath_tests/maya_noxml/writer.c
+++ b/tests/C/flexpath_tests/maya_noxml/writer.c
@@ -61,7 +61,7 @@ int main(int argc, char ** argv){
 
 	// returns 0 (buffer allocated) or 1 (seems everything fine)
 	// I guess size of the buffer in MB
-	adios_allocate_buffer(ADIOS_BUFFER_ALLOC_NOW, ADS_BUFFER_SIZE);
+	adios_set_max_buffer_size (ADS_BUFFER_SIZE);
 
 	// this will hold the group id for all variables defined within this group
 	int64_t	adios_grp = 0;
@@ -169,10 +169,10 @@ int main(int argc, char ** argv){
 	uint64_t adios_totalsize = 0;
 
 	retval=adios_group_size (adios_handle, adios_groupsize, &adios_totalsize);
-	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%lld, adios_totalsize=%lld, retval=%d\n",
+	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%" PRIu64 ", adios_totalsize=%" PRIu64 ", retval=%d\n",
 				rank, adios_groupsize, adios_totalsize, retval);
 
-	printf("Writing checkpoint to file %s using the %s method: group size is %llu, total size is %llu. ", FILE_NAME, adios_opts.transport, adios_groupsize, adios_totalsize);
+	printf("Writing checkpoint to file %s using the %s method: group size is %" PRIu64 ", total size is %" PRIu64 ". \n", FILE_NAME, adios_opts.transport, adios_groupsize, adios_totalsize);
 
 
     // arbitrary, but this is what I am getting from Maya
diff --git a/tests/C/flexpath_tests/scalar/CMakeLists.txt b/tests/C/flexpath_tests/scalar/CMakeLists.txt
index a4a2dfc..ff24023 100644
--- a/tests/C/flexpath_tests/scalar/CMakeLists.txt
+++ b/tests/C/flexpath_tests/scalar/CMakeLists.txt
@@ -4,7 +4,6 @@ include_directories(${PROJECT_SOURCE_DIR}/tests/C/flexpath_tests/include)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
 link_directories(${PROJECT_SOURCE_DIR}/src)
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 
 
 add_executable(writer_scalar writer.c ../common/utils.c)
diff --git a/tests/C/flexpath_tests/scalar/Makefile.am b/tests/C/flexpath_tests/scalar/Makefile.am
index 8b383f1..30a7a5c 100644
--- a/tests/C/flexpath_tests/scalar/Makefile.am
+++ b/tests/C/flexpath_tests/scalar/Makefile.am
@@ -1,7 +1,7 @@
 AM_CPPFLAGS = $(all_includes)
 AM_CPPFLAGS += -I$(top_builddir)/src/public  -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../include
 
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 
 all-local:
 	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/*.xml $(builddir)
@@ -11,10 +11,10 @@ noinst_PROGRAMS = writer_scalar reader_scalar
 
 writer_scalar_SOURCES = writer.c ../common/utils.c
 writer_scalar_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_scalar_SOURCES = reader.c ../common/utils.c
 reader_scalar_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.bp
 CC=$(MPICC)
diff --git a/tests/C/flexpath_tests/scalar/Makefile.in b/tests/C/flexpath_tests/scalar/Makefile.in
index ce4a704..6675732 100644
--- a/tests/C/flexpath_tests/scalar/Makefile.in
+++ b/tests/C/flexpath_tests/scalar/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = writer_scalar$(EXEEXT) reader_scalar$(EXEEXT)
 subdir = tests/C/flexpath_tests/scalar
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -83,35 +125,83 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_reader_scalar_OBJECTS = reader.$(OBJEXT) utils.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_reader_scalar_OBJECTS = reader.$(OBJEXT) ../common/utils.$(OBJEXT)
 reader_scalar_OBJECTS = $(am_reader_scalar_OBJECTS)
 am__DEPENDENCIES_1 =
 reader_scalar_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-reader_scalar_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+reader_scalar_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(reader_scalar_LDFLAGS) $(LDFLAGS) -o $@
-am_writer_scalar_OBJECTS = writer.$(OBJEXT) utils.$(OBJEXT)
+am_writer_scalar_OBJECTS = writer.$(OBJEXT) ../common/utils.$(OBJEXT)
 writer_scalar_OBJECTS = $(am_writer_scalar_OBJECTS)
 writer_scalar_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-writer_scalar_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+writer_scalar_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(writer_scalar_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(reader_scalar_SOURCES) $(writer_scalar_SOURCES)
 DIST_SOURCES = $(reader_scalar_SOURCES) $(writer_scalar_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +209,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +234,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +243,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +277,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +331,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +375,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +396,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +411,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +422,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +457,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,13 +479,13 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public \
 	-I$(srcdir)/../include
-AUTOMAKE_OPTIONS = no-dependencies
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 writer_scalar_SOURCES = writer.c ../common/utils.c
 writer_scalar_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-writer_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+writer_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reader_scalar_SOURCES = reader.c ../common/utils.c
 reader_scalar_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reader_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+reader_scalar_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
 EXTRA_DIST = test_config_flex.xml test_config_mpi.xml cfg.h readme.txt
 all: all-am
@@ -428,33 +531,34 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-reader_scalar$(EXEEXT): $(reader_scalar_OBJECTS) $(reader_scalar_DEPENDENCIES) 
+../common/$(am__dirstamp):
+	@$(MKDIR_P) ../common
+	@: > ../common/$(am__dirstamp)
+../common/utils.$(OBJEXT): ../common/$(am__dirstamp)
+
+reader_scalar$(EXEEXT): $(reader_scalar_OBJECTS) $(reader_scalar_DEPENDENCIES) $(EXTRA_reader_scalar_DEPENDENCIES) 
 	@rm -f reader_scalar$(EXEEXT)
-	$(reader_scalar_LINK) $(reader_scalar_OBJECTS) $(reader_scalar_LDADD) $(LIBS)
-writer_scalar$(EXEEXT): $(writer_scalar_OBJECTS) $(writer_scalar_DEPENDENCIES) 
+	$(AM_V_CCLD)$(reader_scalar_LINK) $(reader_scalar_OBJECTS) $(reader_scalar_LDADD) $(LIBS)
+
+writer_scalar$(EXEEXT): $(writer_scalar_OBJECTS) $(writer_scalar_DEPENDENCIES) $(EXTRA_writer_scalar_DEPENDENCIES) 
 	@rm -f writer_scalar$(EXEEXT)
-	$(writer_scalar_LINK) $(writer_scalar_OBJECTS) $(writer_scalar_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(writer_scalar_LINK) $(writer_scalar_OBJECTS) $(writer_scalar_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f ../common/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
-
-utils.o: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.o `test -f '../common/utils.c' || echo '$(srcdir)/'`../common/utils.c
-
-utils.obj: ../common/utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utils.obj `if test -f '../common/utils.c'; then $(CYGPATH_W) '../common/utils.c'; else $(CYGPATH_W) '$(srcdir)/../common/utils.c'; fi`
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -462,26 +566,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -493,15 +586,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -510,6 +599,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -558,10 +662,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -570,6 +679,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 ../common/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -645,9 +755,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -657,7 +767,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/C/flexpath_tests/scalar/test_config_flex.xml b/tests/C/flexpath_tests/scalar/test_config_flex.xml
index 7b66ee3..d56d197 100644
--- a/tests/C/flexpath_tests/scalar/test_config_flex.xml
+++ b/tests/C/flexpath_tests/scalar/test_config_flex.xml
@@ -9,7 +9,7 @@
 <!-- The queue size says how many timesteps the writer can buffer before it blocks -->
 <method group="scalar"  method="FLEXPATH">QUEUE_SIZE=4;</method>    
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/C/flexpath_tests/scalar/test_config_mpi.xml b/tests/C/flexpath_tests/scalar/test_config_mpi.xml
index aa21734..f7e528a 100644
--- a/tests/C/flexpath_tests/scalar/test_config_mpi.xml
+++ b/tests/C/flexpath_tests/scalar/test_config_mpi.xml
@@ -9,7 +9,7 @@
 <!-- The queue size says how many timesteps the writer can buffer before it blocks -->
 <method group="scalar"  method="MPI">QUEUE_SIZE=4;</method>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/C/flexpath_tests/scalar/writer.c b/tests/C/flexpath_tests/scalar/writer.c
index e93b3fe..9c29390 100644
--- a/tests/C/flexpath_tests/scalar/writer.c
+++ b/tests/C/flexpath_tests/scalar/writer.c
@@ -53,7 +53,7 @@ int main(int argc, char ** argv){
 	adios_open( &adios_handle, "scalar", FILE_NAME, "w", comm);
 	adios_groupsize = 4 + 4 + 4;
 	retval=adios_group_size (adios_handle, adios_groupsize, &adios_totalsize);
-	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%lld, adios_totalsize=%lld, retval=%d\n",
+	fprintf(stderr, "Rank=%d adios_group_size(): adios_groupsize=%" PRIu64 ", adios_totalsize=%" PRIu64 ", retval=%d\n",
 			rank, adios_groupsize, adios_totalsize, retval);
 
 	// write; don't check errors for simplicity reasons
diff --git a/tests/C/query/Makefile.in b/tests/C/query/Makefile.in
index 24f18ab..a5d1d2a 100644
--- a/tests/C/query/Makefile.in
+++ b/tests/C/query/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ host_triplet = @host@
 @HAVE_ALACRITY_TRUE at am__append_1 = alacrity
 @HAVE_FASTBIT_TRUE at am__append_2 = fastbit
 subdir = tests/C/query
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -82,20 +124,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = common alacrity fastbit
@@ -129,6 +209,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -153,6 +234,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -161,6 +243,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -193,6 +277,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -246,17 +331,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -287,6 +375,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -307,10 +396,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -319,9 +411,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -333,6 +422,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -367,14 +457,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -426,22 +519,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -456,57 +552,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -522,12 +573,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -539,15 +585,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -556,6 +598,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -592,13 +649,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -633,10 +687,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -714,22 +773,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am 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 installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-am clean clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 #if HAVE_ALACRITY && HAVE_FASTBIT
diff --git a/tests/C/query/alacrity/CMakeLists.txt b/tests/C/query/alacrity/CMakeLists.txt
index 0d53e01..1c9a544 100644
--- a/tests/C/query/alacrity/CMakeLists.txt
+++ b/tests/C/query/alacrity/CMakeLists.txt
@@ -2,9 +2,9 @@ include_directories(${PROJECT_SOURCE_DIR}/src/public)
 include_directories(${PROJECT_SOURCE_DIR}/src)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../common)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
+include_directories(${MXML_INCLUDE_DIR})
 link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${CMAKE_CURRENT_BINARY_DIR}../common)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
+link_directories(${CMAKE_CURRENT_BINARY_DIR}/../common)
 
 
 add_executable(adios_read_block adios_read_block.c)
diff --git a/tests/C/query/alacrity/DS1/DS1-inputs.xml b/tests/C/query/alacrity/DS1/DS1-inputs.xml
new file mode 100644
index 0000000..62996d7
--- /dev/null
+++ b/tests/C/query/alacrity/DS1/DS1-inputs.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<adios-alac-test-inputs>
+	<vars num="1">
+		<dimension dim="2" dataDim="4,4" pgDim="4,4" elementSize="4"/>
+		<var name="temp" />
+                <pgoffset pgNum="1" pg_0="0,0" />
+                <timestep tsnum="1"/>
+                                
+	</vars>
+</adios-alac-test-inputs>
diff --git a/tests/C/query/alacrity/DS1/DS1-notrans.xml b/tests/C/query/alacrity/DS1/DS1-notrans.xml
new file mode 100644
index 0000000..a5b43af
--- /dev/null
+++ b/tests/C/query/alacrity/DS1/DS1-notrans.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="N1" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="D1" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="O1" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0,N1" offsets="O0,O1">
+	       <var name="temp" gwrite="t" type="float" dimensions="D0,D1"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/DS1/DS1.xml b/tests/C/query/alacrity/DS1/DS1.xml
new file mode 100644
index 0000000..75a7fff
--- /dev/null
+++ b/tests/C/query/alacrity/DS1/DS1.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="N1" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="D1" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="O1" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0,N1" offsets="O0,O1">
+	       <var name="temp" gwrite="t" type="float" dimensions="D0,D1" transform="alacrity"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/DS2/DS2-inputs.xml b/tests/C/query/alacrity/DS2/DS2-inputs.xml
new file mode 100644
index 0000000..41ff309
--- /dev/null
+++ b/tests/C/query/alacrity/DS2/DS2-inputs.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<adios-alac-test-inputs>
+	<vars num="1">
+		<var name="temp"/>
+		<dimension dim="2" dataDim="8,8" pgDim="2,8" elementSize="4"/>
+        <pgoffset pgNum="4" pg_0="0,0" pg_1="2,0" pg_2="4,0" pg_3="6,0"/>
+        <timestep tsnum="2"/>
+	</vars>
+</adios-alac-test-inputs>
diff --git a/tests/C/query/alacrity/DS2/DS2-notrans.xml b/tests/C/query/alacrity/DS2/DS2-notrans.xml
new file mode 100644
index 0000000..fdf153f
--- /dev/null
+++ b/tests/C/query/alacrity/DS2/DS2-notrans.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="N1" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="D1" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="O1" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0,N1" offsets="O0,O1">
+	       <var name="temp" gwrite="t" type="float" dimensions="D0,D1" />
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/DS2/DS2.xml b/tests/C/query/alacrity/DS2/DS2.xml
new file mode 100644
index 0000000..75a7fff
--- /dev/null
+++ b/tests/C/query/alacrity/DS2/DS2.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="N1" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="D1" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="O1" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0,N1" offsets="O0,O1">
+	       <var name="temp" gwrite="t" type="float" dimensions="D0,D1" transform="alacrity"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/DS3/DS3-inputs-3.xml b/tests/C/query/alacrity/DS3/DS3-inputs-3.xml
new file mode 100644
index 0000000..bf90d0a
--- /dev/null
+++ b/tests/C/query/alacrity/DS3/DS3-inputs-3.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<adios-alac-test-inputs>
+	<vars num="1">
+		<var name="temp"/>
+		<dimension dim="3" dataDim="4,4,4" pgDim="2,2,2" elementSize="4"/>
+	        <pgoffset pgNum="8" pg_0="0,0,0" pg_1="0,2,0" pg_2="2,0,0" pg_3="2,2,0" pg_4="0,0,2" pg_5="0,2,2" pg_6="2,0,2" pg_7="2,2,2"/>
+                <timestep tsnum="2"/>
+	</vars>
+
+        <query num="3" timestep="2">
+            <entry var="temp" op=">=" constraint="0.5"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+            <entry var="temp" op="<=" constraint="1.0"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+
+            <combine op="AND"/>
+
+            <entry var="temp" op=">=" constraint="5.0"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+
+            <combine op="OR"/>
+
+
+        </query>
+  
+</adios-alac-test-inputs>
diff --git a/tests/C/query/alacrity/DS3/DS3-inputs-WB.xml b/tests/C/query/alacrity/DS3/DS3-inputs-WB.xml
new file mode 100644
index 0000000..fc1042a
--- /dev/null
+++ b/tests/C/query/alacrity/DS3/DS3-inputs-WB.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<adios-alac-test-inputs>
+	<vars num="1">
+		<var name="temp"/>
+		<dimension dim="3" dataDim="4,4,4" pgDim="2,2,2" elementSize="4"/>
+	        <pgoffset pgNum="8" pg_0="0,0,0" pg_1="0,2,0" pg_2="2,0,0" pg_3="2,2,0" pg_4="0,0,2" pg_5="0,2,2" pg_6="2,0,2" pg_7="2,2,2"/>
+                <timestep tsnum="2"/>
+	</vars>
+
+        <query num="2" timestep="2" batchsize="16">
+
+            <output type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="2,0,0" count="2,2,2"/>
+            <entry var="temp" op=">=" constraint="0.9"> 
+                <selection type="ADIOS_SELECTION_WRITEBLOCK" index="2"/>
+            </entry>
+
+            <entry var="temp" op=">=" constraint="9.0"> 
+                <selection type="ADIOS_SELECTION_WRITEBLOCK"  index="2"/>
+            </entry>
+            
+            <combine op="OR"/>
+
+
+        </query>
+  
+</adios-alac-test-inputs>
diff --git a/tests/C/query/alacrity/DS3/DS3-inputs.xml b/tests/C/query/alacrity/DS3/DS3-inputs.xml
new file mode 100644
index 0000000..b0b0b89
--- /dev/null
+++ b/tests/C/query/alacrity/DS3/DS3-inputs.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<adios-alac-test-inputs>
+	<vars num="1">
+		<var name="temp"/>
+		<dimension dim="3" dataDim="4,4,4" pgDim="2,2,2" elementSize="4"/>
+                <pgoffset pgNum="8" pg_0="0,0,0" pg_1="0,2,0" pg_2="2,0,0" pg_3="2,2,0" pg_4="0,0,2" pg_5="0,2,2" pg_6="2,0    ,2" pg_7="2,2,2"/>
+                <timestep tsnum="2"/>
+	</vars>
+
+        <query num="4" from-timestep="0" num-timesteps="2" batchsize="8">
+            <output type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+
+            <entry var="temp" op=">=" constraint="0.9"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+            <entry var="temp" op="<=" constraint="1.0"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+
+            <combine op="AND"/>
+
+            <entry var="temp" op=">=" constraint="5.0"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+            <entry var="temp" op="<=" constraint="10.0"> 
+                <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="4,4,4"/>
+            </entry>
+
+            <combine op="AND"/>
+            <combine op="OR"/>
+
+
+        </query>
+  
+</adios-alac-test-inputs>
diff --git a/tests/C/query/alacrity/DS3/DS3.xml b/tests/C/query/alacrity/DS3/DS3.xml
new file mode 100644
index 0000000..8524716
--- /dev/null
+++ b/tests/C/query/alacrity/DS3/DS3.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="N1" type="integer"/>
+	    <var name="N2" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="D1" type="integer"/>
+	    <var name="D2" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="O1" type="integer"/>
+	    <var name="O2" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0,N1,N2" offsets="O0,O1,O2">
+	       <var name="temp" gwrite="t" type="float" dimensions="D0,D1,D2" transform="alacrity"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/Makefile.am b/tests/C/query/alacrity/Makefile.am
index 16340cb..7f88d65 100644
--- a/tests/C/query/alacrity/Makefile.am
+++ b/tests/C/query/alacrity/Makefile.am
@@ -1,6 +1,6 @@
-INCLUDES = $(all_includes)
-INCLUDES += $(ADIOSLIB_CPPFLAGS)
-INCLUDES += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../common/
+AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS += $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS)
+AM_CPPFLAGS += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public -I$(srcdir)/../common/
 
 AUTOMAKE_OPTIONS = no-dependencies
 if HAVE_ALACRITY
@@ -10,42 +10,41 @@ noinst_PROGRAMS = adios_read_ext_test adios_build_alac_index adios_alac_query ad
 
 #alac_internal_test_SOURCES = test_query_alac_internal.c 
 #alac_internal_test_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-#alac_internal_test_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-#alac_internal_test_CPPFLAGS = $(ALACRITY_CPPFLAGS) -I$(top_srcdir)/src/core
+#alac_internal_test_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+#alac_internal_test_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS) -I$(top_srcdir)/src/core
 
 
 
 adios_read_block_SOURCES = adios_read_block.c
 adios_read_block_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-adios_read_block_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_read_block_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+adios_read_block_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_read_block_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 
 
 
 adios_read_ext_test_SOURCES = adios_read_ext_test.c
 adios_read_ext_test_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-adios_read_ext_test_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_read_ext_test_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+adios_read_ext_test_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_read_ext_test_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 
 
 adios_build_alac_index_SOURCES = adios_build_alac_index.c
 adios_build_alac_index_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-adios_build_alac_index_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_build_alac_index_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+adios_build_alac_index_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_build_alac_index_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 
 adios_alac_query_SOURCES = adios_alac_query.c
 adios_alac_query_LDADD = $(top_builddir)/tests/C/query/common/libparse_test_query_xml.a $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-adios_alac_query_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_alac_query_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+adios_alac_query_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_alac_query_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 
 adios_show_bp_file_SOURCES = adios_show_bp_file.c
-adios_show_bp_file_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDFLAGS) 
-
-adios_show_bp_file_LDADD += $(ADIOSLIB_LDADD)
+adios_show_bp_file_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
+adios_show_bp_file_LDADD += $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
   
 
 endif
 
 CLEANFILES = *.bp
 CC=$(MPICC)
-#EXTRA_DIST = test_config_flex.xml 
+EXTRA_DIST = DS1 DS2 DS3 xml/
diff --git a/tests/C/query/alacrity/Makefile.in b/tests/C/query/alacrity/Makefile.in
index 45adf06..f95074f 100644
--- a/tests/C/query/alacrity/Makefile.in
+++ b/tests/C/query/alacrity/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -40,7 +84,7 @@ host_triplet = @host@
 @HAVE_ALACRITY_TRUE@	adios_show_bp_file$(EXEEXT) \
 @HAVE_ALACRITY_TRUE@	adios_read_block$(EXEEXT)
 subdir = tests/C/query/alacrity
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -63,14 +107,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -94,36 +136,44 @@ am__DEPENDENCIES_1 =
 @HAVE_ALACRITY_TRUE at adios_alac_query_DEPENDENCIES = $(top_builddir)/tests/C/query/common/libparse_test_query_xml.a \
 @HAVE_ALACRITY_TRUE@	$(top_builddir)/src/libadios.a \
 @HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1)
-adios_alac_query_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_alac_query_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+adios_alac_query_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_alac_query_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am__adios_build_alac_index_SOURCES_DIST = adios_build_alac_index.c
 @HAVE_ALACRITY_TRUE at am_adios_build_alac_index_OBJECTS = adios_build_alac_index-adios_build_alac_index.$(OBJEXT)
 adios_build_alac_index_OBJECTS = $(am_adios_build_alac_index_OBJECTS)
 @HAVE_ALACRITY_TRUE at adios_build_alac_index_DEPENDENCIES =  \
 @HAVE_ALACRITY_TRUE@	$(top_builddir)/src/libadios.a \
 @HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1)
-adios_build_alac_index_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_build_alac_index_LDFLAGS) $(LDFLAGS) -o $@
+adios_build_alac_index_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_build_alac_index_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am__adios_read_block_SOURCES_DIST = adios_read_block.c
 @HAVE_ALACRITY_TRUE at am_adios_read_block_OBJECTS = adios_read_block-adios_read_block.$(OBJEXT)
 adios_read_block_OBJECTS = $(am_adios_read_block_OBJECTS)
 @HAVE_ALACRITY_TRUE at adios_read_block_DEPENDENCIES =  \
 @HAVE_ALACRITY_TRUE@	$(top_builddir)/src/libadios.a \
 @HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1)
-adios_read_block_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_block_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_block_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_block_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am__adios_read_ext_test_SOURCES_DIST = adios_read_ext_test.c
 @HAVE_ALACRITY_TRUE at am_adios_read_ext_test_OBJECTS = adios_read_ext_test-adios_read_ext_test.$(OBJEXT)
 adios_read_ext_test_OBJECTS = $(am_adios_read_ext_test_OBJECTS)
 @HAVE_ALACRITY_TRUE at adios_read_ext_test_DEPENDENCIES =  \
 @HAVE_ALACRITY_TRUE@	$(top_builddir)/src/libadios.a \
 @HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1)
-adios_read_ext_test_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_read_ext_test_LDFLAGS) $(LDFLAGS) -o $@
+adios_read_ext_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_read_ext_test_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am__adios_show_bp_file_SOURCES_DIST = adios_show_bp_file.c
 @HAVE_ALACRITY_TRUE at am_adios_show_bp_file_OBJECTS =  \
 @HAVE_ALACRITY_TRUE@	adios_show_bp_file.$(OBJEXT)
@@ -131,19 +181,41 @@ adios_show_bp_file_OBJECTS = $(am_adios_show_bp_file_OBJECTS)
 @HAVE_ALACRITY_TRUE at adios_show_bp_file_DEPENDENCIES =  \
 @HAVE_ALACRITY_TRUE@	$(top_builddir)/src/libadios.a \
 @HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1) \
+ at HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1) \
 @HAVE_ALACRITY_TRUE@	$(am__DEPENDENCIES_1)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_alac_query_SOURCES) \
 	$(adios_build_alac_index_SOURCES) $(adios_read_block_SOURCES) \
 	$(adios_read_ext_test_SOURCES) $(adios_show_bp_file_SOURCES)
@@ -152,6 +224,28 @@ DIST_SOURCES = $(am__adios_alac_query_SOURCES_DIST) \
 	$(am__adios_read_block_SOURCES_DIST) \
 	$(am__adios_read_ext_test_SOURCES_DIST) \
 	$(am__adios_show_bp_file_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -159,6 +253,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -183,6 +278,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -191,6 +287,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -223,6 +321,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -276,17 +375,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -317,6 +419,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -337,10 +440,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -349,9 +455,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -363,6 +466,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -397,14 +501,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -413,37 +520,40 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-INCLUDES = $(all_includes) $(ADIOSLIB_CPPFLAGS) \
-	-I$(top_builddir)/src/public -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/public -I$(srcdir)/../common/
+AM_CPPFLAGS = $(all_includes) $(ADIOSLIB_CPPFLAGS) \
+	$(ADIOSLIB_EXTRA_CPPFLAGS) -I$(top_builddir)/src/public \
+	-I$(top_srcdir)/src -I$(top_srcdir)/src/public \
+	-I$(srcdir)/../common/
 AUTOMAKE_OPTIONS = no-dependencies
 #alac_internal_test 
 
 #alac_internal_test_SOURCES = test_query_alac_internal.c 
 #alac_internal_test_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-#alac_internal_test_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-#alac_internal_test_CPPFLAGS = $(ALACRITY_CPPFLAGS) -I$(top_srcdir)/src/core
+#alac_internal_test_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+#alac_internal_test_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS) -I$(top_srcdir)/src/core
 @HAVE_ALACRITY_TRUE at adios_read_block_SOURCES = adios_read_block.c
 @HAVE_ALACRITY_TRUE at adios_read_block_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
- at HAVE_ALACRITY_TRUE@adios_read_block_LDFLAGS = $(ADIOSLIB_LDFLAGS)
- at HAVE_ALACRITY_TRUE@adios_read_block_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_read_block_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_read_block_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 @HAVE_ALACRITY_TRUE at adios_read_ext_test_SOURCES = adios_read_ext_test.c
 @HAVE_ALACRITY_TRUE at adios_read_ext_test_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
- at HAVE_ALACRITY_TRUE@adios_read_ext_test_LDFLAGS = $(ADIOSLIB_LDFLAGS)
- at HAVE_ALACRITY_TRUE@adios_read_ext_test_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_read_ext_test_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_read_ext_test_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 @HAVE_ALACRITY_TRUE at adios_build_alac_index_SOURCES = adios_build_alac_index.c
 @HAVE_ALACRITY_TRUE at adios_build_alac_index_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
- at HAVE_ALACRITY_TRUE@adios_build_alac_index_LDFLAGS = $(ADIOSLIB_LDFLAGS)
- at HAVE_ALACRITY_TRUE@adios_build_alac_index_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_build_alac_index_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_build_alac_index_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 @HAVE_ALACRITY_TRUE at adios_alac_query_SOURCES = adios_alac_query.c
 @HAVE_ALACRITY_TRUE at adios_alac_query_LDADD = $(top_builddir)/tests/C/query/common/libparse_test_query_xml.a $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
- at HAVE_ALACRITY_TRUE@adios_alac_query_LDFLAGS = $(ADIOSLIB_LDFLAGS)
- at HAVE_ALACRITY_TRUE@adios_alac_query_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_alac_query_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at HAVE_ALACRITY_TRUE@adios_alac_query_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS)
 @HAVE_ALACRITY_TRUE at adios_show_bp_file_SOURCES = adios_show_bp_file.c
 @HAVE_ALACRITY_TRUE at adios_show_bp_file_LDADD =  \
 @HAVE_ALACRITY_TRUE@	$(top_builddir)/src/libadios.a \
- at HAVE_ALACRITY_TRUE@	$(ADIOSLIB_LDFLAGS) $(ADIOSLIB_LDADD)
+ at HAVE_ALACRITY_TRUE@	$(ADIOSLIB_LDADD) $(ADIOSLIB_LDFLAGS) \
+ at HAVE_ALACRITY_TRUE@	$(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
+EXTRA_DIST = DS1 DS2 DS3 xml/
 all: all-am
 
 .SUFFIXES:
@@ -487,21 +597,26 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_alac_query$(EXEEXT): $(adios_alac_query_OBJECTS) $(adios_alac_query_DEPENDENCIES) 
+
+adios_alac_query$(EXEEXT): $(adios_alac_query_OBJECTS) $(adios_alac_query_DEPENDENCIES) $(EXTRA_adios_alac_query_DEPENDENCIES) 
 	@rm -f adios_alac_query$(EXEEXT)
-	$(adios_alac_query_LINK) $(adios_alac_query_OBJECTS) $(adios_alac_query_LDADD) $(LIBS)
-adios_build_alac_index$(EXEEXT): $(adios_build_alac_index_OBJECTS) $(adios_build_alac_index_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_alac_query_LINK) $(adios_alac_query_OBJECTS) $(adios_alac_query_LDADD) $(LIBS)
+
+adios_build_alac_index$(EXEEXT): $(adios_build_alac_index_OBJECTS) $(adios_build_alac_index_DEPENDENCIES) $(EXTRA_adios_build_alac_index_DEPENDENCIES) 
 	@rm -f adios_build_alac_index$(EXEEXT)
-	$(adios_build_alac_index_LINK) $(adios_build_alac_index_OBJECTS) $(adios_build_alac_index_LDADD) $(LIBS)
-adios_read_block$(EXEEXT): $(adios_read_block_OBJECTS) $(adios_read_block_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_build_alac_index_LINK) $(adios_build_alac_index_OBJECTS) $(adios_build_alac_index_LDADD) $(LIBS)
+
+adios_read_block$(EXEEXT): $(adios_read_block_OBJECTS) $(adios_read_block_DEPENDENCIES) $(EXTRA_adios_read_block_DEPENDENCIES) 
 	@rm -f adios_read_block$(EXEEXT)
-	$(adios_read_block_LINK) $(adios_read_block_OBJECTS) $(adios_read_block_LDADD) $(LIBS)
-adios_read_ext_test$(EXEEXT): $(adios_read_ext_test_OBJECTS) $(adios_read_ext_test_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_block_LINK) $(adios_read_block_OBJECTS) $(adios_read_block_LDADD) $(LIBS)
+
+adios_read_ext_test$(EXEEXT): $(adios_read_ext_test_OBJECTS) $(adios_read_ext_test_DEPENDENCIES) $(EXTRA_adios_read_ext_test_DEPENDENCIES) 
 	@rm -f adios_read_ext_test$(EXEEXT)
-	$(adios_read_ext_test_LINK) $(adios_read_ext_test_OBJECTS) $(adios_read_ext_test_LDADD) $(LIBS)
-adios_show_bp_file$(EXEEXT): $(adios_show_bp_file_OBJECTS) $(adios_show_bp_file_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_read_ext_test_LINK) $(adios_read_ext_test_OBJECTS) $(adios_read_ext_test_LDADD) $(LIBS)
+
+adios_show_bp_file$(EXEEXT): $(adios_show_bp_file_OBJECTS) $(adios_show_bp_file_DEPENDENCIES) $(EXTRA_adios_show_bp_file_DEPENDENCIES) 
 	@rm -f adios_show_bp_file$(EXEEXT)
-	$(LINK) $(adios_show_bp_file_OBJECTS) $(adios_show_bp_file_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(LINK) $(adios_show_bp_file_OBJECTS) $(adios_show_bp_file_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -510,37 +625,37 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 adios_alac_query-adios_alac_query.o: adios_alac_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_alac_query_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_alac_query-adios_alac_query.o `test -f 'adios_alac_query.c' || echo '$(srcdir)/'`adios_alac_query.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_alac_query_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_alac_query-adios_alac_query.o `test -f 'adios_alac_query.c' || echo '$(srcdir)/'`adios_alac_query.c
 
 adios_alac_query-adios_alac_query.obj: adios_alac_query.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_alac_query_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_alac_query-adios_alac_query.obj `if test -f 'adios_alac_query.c'; then $(CYGPATH_W) 'adios_alac_query.c'; else $(CYGPATH_W) '$(srcdir)/adios_alac_query.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_alac_query_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_alac_query-adios_alac_query.obj `if test -f 'adios_alac_query.c'; then $(CYGPATH_W) 'adios_alac_query.c'; else $(CYGPATH_W) '$(srcdir)/adios_alac_query.c'; fi`
 
 adios_build_alac_index-adios_build_alac_index.o: adios_build_alac_index.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_build_alac_index_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_build_alac_index-adios_build_alac_index.o `test -f 'adios_build_alac_index.c' || echo '$(srcdir)/'`adios_build_alac_index.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_build_alac_index_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_build_alac_index-adios_build_alac_index.o `test -f 'adios_build_alac_index.c' || echo '$(srcdir)/'`adios_build_alac_index.c
 
 adios_build_alac_index-adios_build_alac_index.obj: adios_build_alac_index.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_build_alac_index_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_build_alac_index-adios_build_alac_index.obj `if test -f 'adios_build_alac_index.c'; then $(CYGPATH_W) 'adios_build_alac_index.c'; else $(CYGPATH_W) '$(srcdir)/adios_build_alac_index.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_build_alac_index_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_build_alac_index-adios_build_alac_index.obj `if test -f 'adios_build_alac_index.c'; then $(CYGPATH_W) 'adios_build_alac_index.c'; else $(CYGPATH_W) '$(srcdir)/adios_build_alac_index.c'; fi`
 
 adios_read_block-adios_read_block.o: adios_read_block.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_block_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_block-adios_read_block.o `test -f 'adios_read_block.c' || echo '$(srcdir)/'`adios_read_block.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_block_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_block-adios_read_block.o `test -f 'adios_read_block.c' || echo '$(srcdir)/'`adios_read_block.c
 
 adios_read_block-adios_read_block.obj: adios_read_block.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_block_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_block-adios_read_block.obj `if test -f 'adios_read_block.c'; then $(CYGPATH_W) 'adios_read_block.c'; else $(CYGPATH_W) '$(srcdir)/adios_read_block.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_block_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_block-adios_read_block.obj `if test -f 'adios_read_block.c'; then $(CYGPATH_W) 'adios_read_block.c'; else $(CYGPATH_W) '$(srcdir)/adios_read_block.c'; fi`
 
 adios_read_ext_test-adios_read_ext_test.o: adios_read_ext_test.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_ext_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_ext_test-adios_read_ext_test.o `test -f 'adios_read_ext_test.c' || echo '$(srcdir)/'`adios_read_ext_test.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_ext_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_ext_test-adios_read_ext_test.o `test -f 'adios_read_ext_test.c' || echo '$(srcdir)/'`adios_read_ext_test.c
 
 adios_read_ext_test-adios_read_ext_test.obj: adios_read_ext_test.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_ext_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_ext_test-adios_read_ext_test.obj `if test -f 'adios_read_ext_test.c'; then $(CYGPATH_W) 'adios_read_ext_test.c'; else $(CYGPATH_W) '$(srcdir)/adios_read_ext_test.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_read_ext_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_read_ext_test-adios_read_ext_test.obj `if test -f 'adios_read_ext_test.c'; then $(CYGPATH_W) 'adios_read_ext_test.c'; else $(CYGPATH_W) '$(srcdir)/adios_read_ext_test.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -548,26 +663,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -579,15 +683,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -596,6 +696,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -644,10 +759,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -731,20 +851,20 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
-
-#EXTRA_DIST = test_config_flex.xml 
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
 
 # 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/C/query/alacrity/adios_alac_query.c b/tests/C/query/alacrity/adios_alac_query.c
index 527a4b7..d10060d 100644
--- a/tests/C/query/alacrity/adios_alac_query.c
+++ b/tests/C/query/alacrity/adios_alac_query.c
@@ -61,43 +61,16 @@ int performQuery(ADIOS_QUERY_TEST_INFO *queryInfo, ADIOS_FILE *f)
     for (timestep = queryInfo->fromStep; timestep < queryInfo->fromStep + queryInfo->numSteps; timestep ++) {
         fprintf(stderr,"querying on timestep %d \n", timestep );
 
-        ADIOS_SELECTION* currBatch = NULL;
-        while ( adios_query_evaluate(queryInfo->query, queryInfo->outputSelection, timestep, queryInfo->batchSize, &currBatch)) {
-
-            assert(currBatch->type ==ADIOS_SELECTION_POINTS);
-            const ADIOS_SELECTION_POINTS_STRUCT * retrievedPts = &(currBatch->u.points);
-            fprintf(stderr,"retrieved points %" PRIu64 " \n", retrievedPts->npoints);
-
-            printPoints(retrievedPts, timestep);
-
-            int elmSize = adios_type_size(tempVar->type, NULL);
-            void *data = malloc(retrievedPts->npoints * elmSize);
-
-            // check returned temp data
-            adios_schedule_read_byid(f, currBatch, tempVar->varid, timestep , 1, data);
-            adios_schedule_read (f, currBatch, queryInfo->varName, timestep , 1, data);
-            adios_perform_reads(f, 1);
-
-            fprintf(stderr,"Total data retrieved:%"PRIu64"\n", retrievedPts->npoints);
-            if (tempVar->type == adios_double) {
-                for (i = 0; i < retrievedPts->npoints; i++) {
-                    fprintf(stderr,"%.6f\t", ((double*)data)[i]);
-                }
-                fprintf(stderr,"\n");
-            }
-            else if (tempVar->type == adios_real) {
-                for (i = 0; i < retrievedPts->npoints; i++) {
-                    fprintf(stderr,"%.6f\t", ((float*)data)[i]);
-                }
-                fprintf(stderr,"\n");
-            }
-
-
-            free(data);
-            adios_selection_delete(currBatch);
-            currBatch = NULL;
-
-        }
+        ADIOS_QUERY_RESULT *queryResult  = NULL;
+        do {
+        	if ( queryResult != NULL) {
+        		free(queryResult);
+        		queryResult = NULL;
+        	}
+        	queryResult = adios_query_evaluate(queryInfo->query, queryInfo->outputSelection, timestep, queryInfo->batchSize);
+        	// since it returns offsets, rather than coordinates, I dont know how to retrieve data based on offsets
+            fprintf(stderr,"Total data retrieved:%"PRIu64"\n", queryResult ->npoints );
+        }while ( queryResult->status == ADIOS_QUERY_HAS_MORE_RESULTS );
 
     }
 
diff --git a/tests/C/query/alacrity/adios_build_alac_index.c b/tests/C/query/alacrity/adios_build_alac_index.c
index 4de7689..ae3b133 100644
--- a/tests/C/query/alacrity/adios_build_alac_index.c
+++ b/tests/C/query/alacrity/adios_build_alac_index.c
@@ -22,7 +22,7 @@
 #include <inttypes.h>
 #include <mxml.h>
 #include <sys/stat.h>
-//#include "core/adios_internals.c"
+#include "core/strutil.h" 
 
 //#define GET_ATTR(n,attr,var,en)
 #define GET_ATTR2(n,attr,var,en)                                 \
@@ -40,66 +40,6 @@
     }   
 
 
-void trim_spaces2 (char * str)
-{
-    char * t = str, * p = NULL;
-    while (*t != '\0')
-    {
-        if (*t == ' ')
-        {
-            p = t + 1;
-            strcpy (t, p);
-        }
-        else
-            t++;
-    }
-
-}
-
-void tokenize_dimensions2 (const char * str, char *** tokens, int * count)
-{
-    if (!str)
-    {
-        *tokens = 0;
-        *count = 0;
-
-        return;
-    }
-
-    char * save_str = strdup (str);
-    char * t = save_str;
-    int i;
-
-    trim_spaces (save_str);
-
-    if (strlen (save_str) > 0)
-        *count = 1;
-    else
-    {
-        *tokens = 0;
-        *count = 0;
-        free (save_str);
-
-        return;
-    }
-
-    while (*t)
-    {
-        if (*t == ',')
-            (*count)++;
-        t++;
-    }
-
-    *tokens = (char **) malloc (sizeof (char **) * *count);
-    (*tokens) [0] = strdup (strtok (save_str, ","));
-    for (i = 1; i < *count; i++)
-    {
-        (*tokens) [i] = strdup (strtok (NULL, ","));
-    }
-
-    free (save_str);
-}
-//end of stolen functions
 
 struct dimensions {
     uint8_t ndims;
@@ -560,8 +500,8 @@ int  parseInputs(char * inputxml, dim_t **dataDim, dim_t **pgDim, char*** varLis
 		mxmlRelease(doc);
 		return 0;
 	}
-	tokenize_dimensions2 (dataDimS, &dim_tokens, &dim_count);
-	tokenize_dimensions2 (pgDimS, &pgDimTokens, &pgCount);
+	a2s_tokenize_dimensions (dataDimS, &dim_tokens, &dim_count);
+	a2s_tokenize_dimensions (pgDimS, &pgDimTokens, &pgCount);
 	if (dim_count != numDim || pgCount != numDim){
 		printf("input dimension does not match expected number dimension \n");
 		mxmlRelease(doc);
@@ -575,7 +515,10 @@ int  parseInputs(char * inputxml, dim_t **dataDim, dim_t **pgDim, char*** varLis
 		inputPGDim[j] = atoi(pgDimTokens[j]);
 	}
 
-	(*dataDim) = initDimension(numDim, elmSize);
+    a2s_cleanup_dimensions (dim_tokens, dim_count);
+    a2s_cleanup_dimensions (pgDimTokens, pgCount);
+
+    (*dataDim) = initDimension(numDim, elmSize);
 	memcpy((*dataDim)->dims, inputDataDim, sizeof(uint32_t)* (*dataDim)->ndims);
 	(*pgDim )= initDimension(numDim, elmSize);
 	memcpy((*pgDim)->dims, inputPGDim, sizeof(uint32_t)* (*pgDim)->ndims);
@@ -666,10 +609,11 @@ int  parseInputs(char * inputxml, dim_t **dataDim, dim_t **pgDim, char*** varLis
 	}
 
         for (i = 0; i < nPG; i++) {
-            tokenize_dimensions2 (pgoffValueS[i], &pgoffValue_tokens, &numDim);
+            a2s_tokenize_dimensions (pgoffValueS[i], &pgoffValue_tokens, &numDim);
             for (j = 0; j < numDim; j++) {
                 (*pgOff)->off[i*numDim+j] = atoi(pgoffValue_tokens[j]);
             }
+            a2s_cleanup_dimensions (pgoffValue_tokens, numDim);
         }
 
         for (i = 0; i < nPG; i++) {
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-1var-no-transform.xml b/tests/C/query/alacrity/xml/xml/alacrity-1var-no-transform.xml
new file mode 100644
index 0000000..6fd4377
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-1var-no-transform.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+    <var name="NX" type="integer"/>
+    <var name="NY" type="integer"/>
+    <var name="NZ" type="integer"/>
+    <var name="DX" type="integer"/>
+    <var name="DY" type="integer"/>
+    <var name="DZ" type="integer"/>
+    <var name="OX" type="integer"/>
+    <var name="OY" type="integer"/>
+    <var name="OZ" type="integer"/>
+    <var name="size" type="integer"/>
+    <var name="rank" type="integer"/>
+    <global-bounds dimensions="NX,NY,NZ" offsets="OX,OY,OZ">
+       <var name="temp" gwrite="t" type="double" dimensions="DX,DY,DZ" />
+    </global-bounds>
+</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-1var.xml b/tests/C/query/alacrity/xml/xml/alacrity-1var.xml
new file mode 100644
index 0000000..4951cfc
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-1var.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+    <var name="NX" type="integer"/>
+    <var name="NY" type="integer"/>
+    <var name="NZ" type="integer"/>
+    <var name="DX" type="integer"/>
+    <var name="DY" type="integer"/>
+    <var name="DZ" type="integer"/>
+    <var name="OX" type="integer"/>
+    <var name="OY" type="integer"/>
+    <var name="OZ" type="integer"/>
+    <var name="size" type="integer"/>
+    <var name="rank" type="integer"/>
+    <global-bounds dimensions="NX,NY,NZ" offsets="OX,OY,OZ">
+       <var name="temp" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+    </global-bounds>
+</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-2var-no-transform.xml b/tests/C/query/alacrity/xml/xml/alacrity-2var-no-transform.xml
new file mode 100644
index 0000000..b903266
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-2var-no-transform.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+    <var name="NX" type="integer"/>
+    <var name="NY" type="integer"/>
+    <var name="NZ" type="integer"/>
+    <var name="DX" type="integer"/>
+    <var name="DY" type="integer"/>
+    <var name="DZ" type="integer"/>
+    <var name="OX" type="integer"/>
+    <var name="OY" type="integer"/>
+    <var name="OZ" type="integer"/>
+    <var name="size" type="integer"/>
+    <var name="rank" type="integer"/>
+    <global-bounds dimensions="NX,NY,NZ" offsets="OX,OY,OZ">
+       <var name="temp" gwrite="t" type="double" dimensions="DX,DY,DZ" />
+       <var name="uvel" gwrite="t" type="double" dimensions="DX,DY,DZ" />
+    </global-bounds>
+</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-2var-pfd.xml b/tests/C/query/alacrity/xml/xml/alacrity-2var-pfd.xml
new file mode 100644
index 0000000..3aedc9b
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-2var-pfd.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+    <var name="NX" type="integer"/>
+    <var name="NY" type="integer"/>
+    <var name="NZ" type="integer"/>
+    <var name="DX" type="integer"/>
+    <var name="DY" type="integer"/>
+    <var name="DZ" type="integer"/>
+    <var name="OX" type="integer"/>
+    <var name="OY" type="integer"/>
+    <var name="OZ" type="integer"/>
+    <var name="size" type="integer"/>
+    <var name="rank" type="integer"/>
+    <global-bounds dimensions="NX,NY,NZ" offsets="OX,OY,OZ">
+       <var name="temp" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity:indexForm=ALCompressedInvertedIndex"/>
+       <var name="uvel" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity:indexForm=ALCompressedInvertedIndex"/> 
+    </global-bounds>
+</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-2var.xml b/tests/C/query/alacrity/xml/xml/alacrity-2var.xml
new file mode 100644
index 0000000..1002ade
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-2var.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+    <var name="NX" type="integer"/>
+    <var name="NY" type="integer"/>
+    <var name="NZ" type="integer"/>
+    <var name="DX" type="integer"/>
+    <var name="DY" type="integer"/>
+    <var name="DZ" type="integer"/>
+    <var name="OX" type="integer"/>
+    <var name="OY" type="integer"/>
+    <var name="OZ" type="integer"/>
+    <var name="size" type="integer"/>
+    <var name="rank" type="integer"/>
+    <global-bounds dimensions="NX,NY,NZ" offsets="OX,OY,OZ">
+       <var name="temp" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+       <var name="uvel" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+    </global-bounds>
+</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-gen-1var-1D.xml b/tests/C/query/alacrity/xml/xml/alacrity-gen-1var-1D.xml
new file mode 100644
index 0000000..eab02c0
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-gen-1var-1D.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0" offsets="O0">
+	       <var name="temp" gwrite="t" type="double" dimensions="D0" transform="alacrity"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity-gen-1var.xml b/tests/C/query/alacrity/xml/xml/alacrity-gen-1var.xml
new file mode 100644
index 0000000..ccd183a
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity-gen-1var.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="N0" type="integer"/>
+	    <var name="N1" type="integer"/>
+	    <var name="D0" type="integer"/>
+	    <var name="D1" type="integer"/>
+	    <var name="O0" type="integer"/>
+	    <var name="O1" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="N0,N1" offsets="O0,O1">
+	       <var name="temp" gwrite="t" type="double" dimensions="D0,D1" transform="alacrity"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/alacrity.xml b/tests/C/query/alacrity/xml/xml/alacrity.xml
new file mode 100644
index 0000000..e82053f
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/alacrity.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+    <adios-group name="S3D" coordination-communicator="comm">
+	    <var name="NX" type="integer"/>
+	    <var name="NY" type="integer"/>
+	    <var name="NZ" type="integer"/>
+	    <var name="DX" type="integer"/>
+	    <var name="DY" type="integer"/>
+	    <var name="DZ" type="integer"/>
+	    <var name="OX" type="integer"/>
+	    <var name="OY" type="integer"/>
+	    <var name="OZ" type="integer"/>
+	    <var name="size" type="integer"/>
+	    <var name="rank" type="integer"/>
+	    <global-bounds dimensions="NX,NY,NZ" offsets="OX,OY,OZ">
+	       <var name="temp" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+	       <var name="uvel" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+	       <var name="vvel" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+	       <var name="wvel" gwrite="t" type="double" dimensions="DX,DY,DZ" transform="alacrity"/>
+	    </global-bounds>
+	</adios-group>
+
+<method group="S3D" method="MPI"/>
+
+<buffer max-size-MB="128"/>
+
+</adios-config>
+
diff --git a/tests/C/query/alacrity/xml/xml/build-alac-index-inputs.xml b/tests/C/query/alacrity/xml/xml/build-alac-index-inputs.xml
new file mode 100644
index 0000000..bba8798
--- /dev/null
+++ b/tests/C/query/alacrity/xml/xml/build-alac-index-inputs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<adios-alac-test-inputs>
+	<vars num="1">
+		<dimension dim="2" dataDim="256,128" pgDim="64,32" elementSize="8"/>
+		<var name="temp" />
+	</vars>
+</adios-alac-test-inputs>
diff --git a/tests/C/query/common/CMakeLists.txt b/tests/C/query/common/CMakeLists.txt
index 979e788..d1e8ffe 100644
--- a/tests/C/query/common/CMakeLists.txt
+++ b/tests/C/query/common/CMakeLists.txt
@@ -1,9 +1,8 @@
 include_directories(${PROJECT_SOURCE_DIR}/src/public)
 include_directories(${PROJECT_SOURCE_DIR}/src)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
-link_directories(${PROJECT_BINARY_DIR}/src)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
 include_directories(${MXML_INCLUDE_DIR})
+link_directories(${PROJECT_BINARY_DIR}/src)
 
 add_library(parse_test_query_xml adios_query_xml_parse.c adios_query_xml_parse.h)
 target_link_libraries(parse_test_query_xml adios)
diff --git a/tests/C/query/common/Makefile.am b/tests/C/query/common/Makefile.am
index 19eaf36..d4b7de5 100644
--- a/tests/C/query/common/Makefile.am
+++ b/tests/C/query/common/Makefile.am
@@ -1,6 +1,6 @@
-INCLUDES = $(all_includes)
-INCLUDES += $(ADIOSLIB_CPPFLAGS)
-INCLUDES += -I$(top_builddir)/src/public  -I$(top_srcdir)/src -I$(top_srcdir)/src/public
+AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS += $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS)
+AM_CPPFLAGS += -I$(top_builddir)/src/public  -I$(top_srcdir)/src -I$(top_srcdir)/src/public
 
 AUTOMAKE_OPTIONS = no-dependencies
 
@@ -12,12 +12,12 @@ libparse_test_query_xml_a_LIBADD = $(top_builddir)/src/libadios.a
 
 compute_expected_query_results_SOURCES = compute_expected_query_results.c
 compute_expected_query_results_LDADD = $(builddir)/libparse_test_query_xml.a $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-compute_expected_query_results_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+compute_expected_query_results_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 adios_query_test_SOURCES = adios_query_test.c
 adios_query_test_LDADD = libparse_test_query_xml.a $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_query_test_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_query_test_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+adios_query_test_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_query_test_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS) 
 
 
 CLEANFILES = *.bp
diff --git a/tests/C/query/common/Makefile.in b/tests/C/query/common/Makefile.in
index 343388b..15c8e2c 100644
--- a/tests/C/query/common/Makefile.in
+++ b/tests/C/query/common/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -17,6 +16,51 @@
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -38,7 +82,7 @@ host_triplet = @host@
 noinst_PROGRAMS = compute_expected_query_results$(EXEEXT) \
 	adios_query_test$(EXEEXT)
 subdir = tests/C/query/common
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +105,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -86,6 +128,10 @@ CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
+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 = 
 libparse_test_query_xml_a_AR = $(AR) $(ARFLAGS)
 libparse_test_query_xml_a_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a
@@ -100,9 +146,14 @@ adios_query_test_OBJECTS = $(am_adios_query_test_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_query_test_DEPENDENCIES = libparse_test_query_xml.a \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-adios_query_test_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_query_test_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+adios_query_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_query_test_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_compute_expected_query_results_OBJECTS =  \
 	compute_expected_query_results.$(OBJEXT)
 compute_expected_query_results_OBJECTS =  \
@@ -110,28 +161,71 @@ compute_expected_query_results_OBJECTS =  \
 compute_expected_query_results_DEPENDENCIES =  \
 	$(builddir)/libparse_test_query_xml.a \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-compute_expected_query_results_LINK = $(LIBTOOL) --tag=CC \
+compute_expected_query_results_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) \
 	$(compute_expected_query_results_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(libparse_test_query_xml_a_SOURCES) \
 	$(adios_query_test_SOURCES) \
 	$(compute_expected_query_results_SOURCES)
 DIST_SOURCES = $(libparse_test_query_xml_a_SOURCES) \
 	$(adios_query_test_SOURCES) \
 	$(compute_expected_query_results_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -139,6 +233,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -163,6 +258,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -171,6 +267,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -203,6 +301,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -256,17 +355,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -297,6 +399,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -317,10 +420,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -329,9 +435,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -343,6 +446,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -377,14 +481,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -393,20 +500,20 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-INCLUDES = $(all_includes) $(ADIOSLIB_CPPFLAGS) \
-	-I$(top_builddir)/src/public -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/public
+AM_CPPFLAGS = $(all_includes) $(ADIOSLIB_CPPFLAGS) \
+	$(ADIOSLIB_EXTRA_CPPFLAGS) -I$(top_builddir)/src/public \
+	-I$(top_srcdir)/src -I$(top_srcdir)/src/public
 AUTOMAKE_OPTIONS = no-dependencies
 noinst_LIBRARIES = libparse_test_query_xml.a
 libparse_test_query_xml_a_SOURCES = adios_query_xml_parse.c adios_query_xml_parse.h
 libparse_test_query_xml_a_LIBADD = $(top_builddir)/src/libadios.a
 compute_expected_query_results_SOURCES = compute_expected_query_results.c
 compute_expected_query_results_LDADD = $(builddir)/libparse_test_query_xml.a $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-compute_expected_query_results_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+compute_expected_query_results_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_query_test_SOURCES = adios_query_test.c
 adios_query_test_LDADD = libparse_test_query_xml.a $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_query_test_LDFLAGS = $(ADIOSLIB_LDFLAGS)
-adios_query_test_CPPFLAGS = $(ALACRITY_CPPFLAGS)
+adios_query_test_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_query_test_CPPFLAGS = $(AM_CPPFLAGS) $(ALACRITY_CPPFLAGS) 
 CLEANFILES = *.bp
 all: all-am
 
@@ -445,10 +552,11 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libparse_test_query_xml.a: $(libparse_test_query_xml_a_OBJECTS) $(libparse_test_query_xml_a_DEPENDENCIES) 
-	-rm -f libparse_test_query_xml.a
-	$(libparse_test_query_xml_a_AR) libparse_test_query_xml.a $(libparse_test_query_xml_a_OBJECTS) $(libparse_test_query_xml_a_LIBADD)
-	$(RANLIB) libparse_test_query_xml.a
+
+libparse_test_query_xml.a: $(libparse_test_query_xml_a_OBJECTS) $(libparse_test_query_xml_a_DEPENDENCIES) $(EXTRA_libparse_test_query_xml_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libparse_test_query_xml.a
+	$(AM_V_AR)$(libparse_test_query_xml_a_AR) libparse_test_query_xml.a $(libparse_test_query_xml_a_OBJECTS) $(libparse_test_query_xml_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libparse_test_query_xml.a
 
 clean-noinstPROGRAMS:
 	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
@@ -458,12 +566,14 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_query_test$(EXEEXT): $(adios_query_test_OBJECTS) $(adios_query_test_DEPENDENCIES) 
+
+adios_query_test$(EXEEXT): $(adios_query_test_OBJECTS) $(adios_query_test_DEPENDENCIES) $(EXTRA_adios_query_test_DEPENDENCIES) 
 	@rm -f adios_query_test$(EXEEXT)
-	$(adios_query_test_LINK) $(adios_query_test_OBJECTS) $(adios_query_test_LDADD) $(LIBS)
-compute_expected_query_results$(EXEEXT): $(compute_expected_query_results_OBJECTS) $(compute_expected_query_results_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_query_test_LINK) $(adios_query_test_OBJECTS) $(adios_query_test_LDADD) $(LIBS)
+
+compute_expected_query_results$(EXEEXT): $(compute_expected_query_results_OBJECTS) $(compute_expected_query_results_DEPENDENCIES) $(EXTRA_compute_expected_query_results_DEPENDENCIES) 
 	@rm -f compute_expected_query_results$(EXEEXT)
-	$(compute_expected_query_results_LINK) $(compute_expected_query_results_OBJECTS) $(compute_expected_query_results_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(compute_expected_query_results_LINK) $(compute_expected_query_results_OBJECTS) $(compute_expected_query_results_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -472,19 +582,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 adios_query_test-adios_query_test.o: adios_query_test.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_query_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_query_test-adios_query_test.o `test -f 'adios_query_test.c' || echo '$(srcdir)/'`adios_query_test.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_query_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_query_test-adios_query_test.o `test -f 'adios_query_test.c' || echo '$(srcdir)/'`adios_query_test.c
 
 adios_query_test-adios_query_test.obj: adios_query_test.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_query_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_query_test-adios_query_test.obj `if test -f 'adios_query_test.c'; then $(CYGPATH_W) 'adios_query_test.c'; else $(CYGPATH_W) '$(srcdir)/adios_query_test.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_query_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_query_test-adios_query_test.obj `if test -f 'adios_query_test.c'; then $(CYGPATH_W) 'adios_query_test.c'; else $(CYGPATH_W) '$(srcdir)/adios_query_test.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -492,26 +602,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -523,15 +622,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -540,6 +635,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -588,10 +698,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -675,19 +790,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am 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-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 #EXTRA_DIST = test_config_flex.xml 
 
diff --git a/tests/C/query/common/adios_query_test.c b/tests/C/query/common/adios_query_test.c
index 39c373f..4421e20 100644
--- a/tests/C/query/common/adios_query_test.c
+++ b/tests/C/query/common/adios_query_test.c
@@ -35,84 +35,142 @@ void printRids(const ADIOS_SELECTION_POINTS_STRUCT * pts,  uint64_t *deststart,
     fprintf(stdout,"\n");
 }
 
-void printPoints(const ADIOS_SELECTION_POINTS_STRUCT * pts, const int timestep) {
+void printPoints(const ADIOS_SELECTION_POINTS_STRUCT * pts, const int timestep, uint64_t *wboffs) {
     uint64_t i = 0;
     int j;
+
     for (i = 0; i < pts->npoints; i++) {
         // first print timestep
         fprintf(stdout,"%d", timestep);
 
         for (j = 0; j < pts->ndim; j++) {
-            fprintf(stdout," %"PRIu64"", pts->points[i * pts->ndim + j]);
+            fprintf(stdout," %"PRIu64"", pts->points[i * pts->ndim + j] + wboffs[j]);
         }
         printf("\n");
 
     }
 }
 
-int performQuery(ADIOS_QUERY_TEST_INFO *queryInfo, ADIOS_FILE *f, int use_streaming, int print_points, int read_results)
+void performQuery(ADIOS_QUERY_TEST_INFO *queryInfo, ADIOS_FILE *f, int use_streaming, int print_points, int read_results)
 {
-    int i = 0, timestep = 0 ;
+    int timestep = 0 ;
     ADIOS_VARINFO * tempVar = adios_inq_var(f, queryInfo->varName);
+    adios_inq_var_blockinfo(f, tempVar);
 
     if (use_streaming)
     	for (timestep = 0; timestep < queryInfo->fromStep; ++timestep)
     		assert(adios_advance_step(f, 0, 0) == 0);
 
-    fprintf(stderr,"times steps for variable is: [%d, %d], batch size is %llu\n", queryInfo->fromStep, queryInfo->fromStep + queryInfo->numSteps, queryInfo->batchSize);
+    fprintf(stderr,"times steps for variable is: [%d, %d], batch size is %" PRIu64 "\n", queryInfo->fromStep, queryInfo->fromStep + queryInfo->numSteps, queryInfo->batchSize);
     for (timestep = queryInfo->fromStep; timestep < queryInfo->fromStep + queryInfo->numSteps; timestep ++) {
         fprintf(stderr, "querying on timestep %d \n", timestep);
 
-        ADIOS_SELECTION* currBatch = NULL;
-
-        while (adios_query_evaluate(queryInfo->query, queryInfo->outputSelection, use_streaming ? 0 : timestep, queryInfo->batchSize, &currBatch) >= 0) {
-        	if (currBatch == NULL) {
-        		break;
-        	}
-        	assert(currBatch->type ==ADIOS_SELECTION_POINTS);
-        	const ADIOS_SELECTION_POINTS_STRUCT * retrievedPts = &(currBatch->u.points);
-        	/* fprintf(stderr,"retrieved points %" PRIu64 " \n", retrievedPts->npoints); */
-
-        	if (print_points) {
-        		printPoints(retrievedPts, timestep);
-        	}
-
-        	if (read_results) {
-        		int elmSize = adios_type_size(tempVar->type, NULL);
-        		void *data = malloc(retrievedPts->npoints * elmSize);
-
-        		// read returned temp data
-        		adios_schedule_read (f, currBatch, queryInfo->varName, use_streaming ? 0 : timestep, 1, data);
-        		adios_perform_reads(f, 1);
-
-        		free(data);
-        	}
-
-        	fprintf(stderr,"Total data retrieved:%"PRIu64"\n", retrievedPts->npoints);
-        	/* if (tempVar->type == adios_double) { */
-        	/*     for (i = 0; i < retrievedPts->npoints; i++) { */
-        	/*         fprintf(stderr,"%.6f\t", ((double*)data)[i]); */
-        	/*     } */
-        	/*     fprintf(stderr,"\n"); */
-        	/* } */
-        	/* else if (tempVar->type == adios_real) { */
-        	/*     for (i = 0; i < retrievedPts->npoints; i++) { */
-        	/*         fprintf(stderr,"%.6f\t", ((float*)data)[i]); */
-        	/*     } */
-        	/*     fprintf(stderr,"\n"); */
-        	/* } */
-
-        	adios_selection_delete(currBatch);
-        	currBatch = NULL;
+        while (1)
+        {
+            ADIOS_QUERY_RESULT *currBatch = NULL;
+            currBatch = adios_query_evaluate(
+                            queryInfo->query,
+                            queryInfo->outputSelection,
+                            use_streaming ? 0 : timestep,
+                            queryInfo->batchSize
+                        );
+            if (currBatch == NULL) {
+                fprintf(stderr, "Unexpected error status in querying evaluation, returned NULL as result. "
+                        "ADIOS error message: %s \n", adios_errmsg());
+                break;
+            }
+            if (currBatch->status == ADIOS_QUERY_RESULT_ERROR) {
+                fprintf(stderr, "ERROR in querying evaluation: %s \n", adios_errmsg());
+                break;
+            }
+            if (currBatch->nselections == 0) {
+                /* this is normal, we processed everything in previous loop or there is 0 total result */
+                break;
+            }
+
+            int n;
+            if (currBatch->selections->type == ADIOS_SELECTION_POINTS)
+            {
+                for (n = 0; n < currBatch->nselections; n++)
+                {
+                    const ADIOS_SELECTION_POINTS_STRUCT * retrievedPts = &(currBatch->selections[n].u.points);
+                    /* fprintf(stderr,"retrieved points %" PRIu64 " \n", retrievedPts->npoints); */
+
+                    uint64_t * wboffs = calloc (retrievedPts->ndim, sizeof(uint64_t));
+                    if (retrievedPts->container_selection &&
+                            retrievedPts->container_selection->type == ADIOS_SELECTION_WRITEBLOCK)
+                    {
+                        int i;
+                        int blockidx = retrievedPts->container_selection->u.block.index;
+                        if (use_streaming) {
+                            adios_inq_var_blockinfo(f, tempVar);
+                        } else {
+                            for (i = 0; i < timestep-1; i++)
+                                blockidx += tempVar->nblocks[i];
+                        }
+                        for (i = 0; i < retrievedPts->ndim; ++i) {
+                            wboffs[i] = tempVar->blockinfo[blockidx].start[i];
+                        }
+                    }
+
+                    if (print_points) {
+                        printPoints(retrievedPts, timestep, wboffs);
+                    }
+                    free (wboffs);
+
+                    if (read_results) {
+                        int elmSize = adios_type_size(tempVar->type, NULL);
+                        void *data = malloc(retrievedPts->npoints * elmSize);
+
+                        // read returned temp data
+                        adios_schedule_read (f, &currBatch->selections[n], queryInfo->varName, use_streaming ? 0 : timestep, 1, data);
+                        adios_perform_reads(f, 1);
+
+                        free(data);
+                    }
+
+                    fprintf(stderr,"Total points retrieved %"PRIu64" in %d blocks\n",
+                            currBatch->npoints, currBatch->nselections);
+                    /* if (tempVar->type == adios_double) { */
+                    /*     for (i = 0; i < retrievedPts->npoints; i++) { */
+                    /*         fprintf(stderr,"%.6f\t", ((double*)data)[i]); */
+                    /*     } */
+                    /*     fprintf(stderr,"\n"); */
+                    /* } */
+                    /* else if (tempVar->type == adios_real) { */
+                    /*     for (i = 0; i < retrievedPts->npoints; i++) { */
+                    /*         fprintf(stderr,"%.6f\t", ((float*)data)[i]); */
+                    /*     } */
+                    /*     fprintf(stderr,"\n"); */
+                    /* } */
+                }
+            }
+            else if  (currBatch->selections->type == ADIOS_SELECTION_WRITEBLOCK)
+            {
+                fprintf(stderr,"Number of blocks retrieved: %d\n", currBatch->nselections);
+                if (print_points) {
+                    for (n = 0; n < currBatch->nselections; n++)
+                    {
+                        fprintf(stdout,"%d %d\n", timestep, currBatch->selections[n].u.block.index);
+                    }
+                }
+            }
+            free(currBatch->selections);
+            if (currBatch->status == ADIOS_QUERY_NO_MORE_RESULTS) {
+                free (currBatch);
+                break;
+            }
+
+            free(currBatch);
         }
 
         if (use_streaming) {
-        	const int err = adios_advance_step(f, 0, 0);
-        	if (timestep < queryInfo->fromStep + queryInfo->numSteps - 1) {
-        		assert(err == 0);
-        	} else {
-        		assert(err == err_end_of_stream || err == err_step_notready);
-        	}
+            const int err = adios_advance_step(f, 0, 0);
+            if (timestep < queryInfo->fromStep + queryInfo->numSteps - 1) {
+                assert(err == 0);
+            } else {
+                assert(err == err_end_of_stream || err == err_step_notready);
+            }
         }
     }
 
@@ -121,7 +179,6 @@ int performQuery(ADIOS_QUERY_TEST_INFO *queryInfo, ADIOS_FILE *f, int use_stream
 
 int main(int argc, char ** argv) {
 
-    int i, j, datasize, if_any;
     char xmlFileName[256];
     enum ADIOS_READ_METHOD method = ADIOS_READ_METHOD_BP;
 
@@ -134,7 +191,7 @@ int main(int argc, char ** argv) {
     MPI_Init(&argc, &argv);
 
     if (argc < 4 || argc > 7) {
-        fprintf(stderr," usage: %s {input bp file} {xml file} {query engine (ALACRITY/FASTBIT)} [mode (FILE/stream)] [print points? (TRUE/false)] [read results? (true/FALSE)]\n", argv[0]);
+        fprintf(stderr," usage: %s {input bp file} {xml file} {query engine (ALACRITY/FASTBIT/MINMAX)} [mode (FILE/stream)] [print points? (TRUE/false)] [read results? (true/FALSE)]\n", argv[0]);
         MPI_Abort(comm, 1);
     }
     else {
@@ -153,6 +210,12 @@ int main(int argc, char ** argv) {
     	//fprintf(stderr,"FastBit not supported in this test yet, exiting...\n");
     	//MPI_Abort(comm, 1);
     }
+    else if (strcasecmp(argv[3], "MINMAX") == 0) {
+        // init with minmax
+        query_method = ADIOS_QUERY_METHOD_MINMAX;
+        //fprintf(stderr,"Minmax not supported in this test yet, exiting...\n");
+        //MPI_Abort(comm, 1);
+    }
     else {
     	fprintf(stderr,"Unsupported query engine %s, exiting...\n", argv[3]);
         MPI_Abort(comm, 1);
diff --git a/tests/C/query/common/adios_query_xml_parse.c b/tests/C/query/common/adios_query_xml_parse.c
index 866a3c9..5be21c0 100644
--- a/tests/C/query/common/adios_query_xml_parse.c
+++ b/tests/C/query/common/adios_query_xml_parse.c
@@ -12,6 +12,7 @@
 #include <assert.h>
 #include "adios_selection.h"
 #include "adios_query.h"
+#include "core/strutil.h"
 #include <mxml.h>
 #include <sys/stat.h>
 
@@ -70,50 +71,6 @@ static ADIOS_QUERY * queryPop(QueryStack* queryStack)
     return queryStack->stack[--queryStack->size];
 }
 
-void trim_spaces(char * str); // in adios_internals.c
-static void tokenize_dimensions2 (const char * str, char *** tokens, int * count) {
-    if (!str) {
-        *tokens = 0;
-        *count = 0;
-
-        return;
-    }
-
-    char * save_str = strdup (str);
-    char * t = save_str;
-    int i;
-
-    trim_spaces (save_str);
-
-    if (strlen (save_str) > 0)
-        *count = 1;
-    else
-    {
-        *tokens = 0;
-        *count = 0;
-        free (save_str);
-
-        return;
-    }
-
-    while (*t)
-    {
-        if (*t == ',')
-            (*count)++;
-        t++;
-    }
-
-    *tokens = (char **) malloc (sizeof (char **) * *count);
-    (*tokens) [0] = strdup (strtok (save_str, ","));
-    for (i = 1; i < *count; i++)
-    {
-        (*tokens) [i] = strdup (strtok (NULL, ","));
-    }
-
-    free (save_str);
-}
-//end of stolen functions
-
 #define CHECK_ERROR_DATA(data, num, check) {                     \
 		 uint64_t di = 0;                                        \
 		 for(di = 0; di < (num); di++){                          \
@@ -140,8 +97,8 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
 		size_t bytes_read = fread (buffer, 1, s.st_size, fp);
 
 		if (bytes_read != s.st_size) {
-			fprintf(stderr, "error reading input xml file: %s. Expected %ld Got %lld\n"
-					,inputxml, s.st_size, (long long int)bytes_read );
+			fprintf(stderr, "error reading input xml file: %s. Expected %lld Got %lld\n"
+					,inputxml, (long long int) s.st_size, (long long int)bytes_read );
 			fclose(fp);
 			return NULL;
 		}
@@ -223,14 +180,21 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
 			return NULL;
 		}
 		else {
-			outputDim = atoi(outputDimS);
-			if (outputDim > MAXDIM) {
+			int specifiedDim = atoi(outputDimS);
+			if (specifiedDim > MAXDIM) {
 				fprintf(stderr, "QueryDim exceeds 10, readjust MAXDIM to larger value, exiting...\n");
 				abort();
 			}
 
-			tokenize_dimensions2(outputStartS, &outputStartTokens, &outputDim);
-			tokenize_dimensions2(outputCountS, &outputCountTokens, &outputDim);
+			a2s_tokenize_dimensions(outputStartS, &outputStartTokens, &outputDim);
+			a2s_tokenize_dimensions(outputCountS, &outputCountTokens, &outputDim);
+
+            if (specifiedDim != outputDim) {
+                fprintf(stderr, "Specified # of dimensions (%d)  "
+                        "!= number of dimensions (%d) in start/count, exiting...\n",
+                        specifiedDim, outputDim);
+                abort();
+            }
 
 			// Allocate arrays to give to the bounding box constructor
 			uint64_t *outputStart = malloc(outputDim * sizeof(uint64_t));
@@ -239,11 +203,9 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
 			for (j = 0; j < outputDim; j ++){
 				outputStart[j] = atoi(outputStartTokens[j]);
 				outputCount[j] = atoi(outputCountTokens[j]);
-				free(outputStartTokens[j]);
-				free(outputCountTokens[j]);
 			}
-			free(outputStartTokens);
-			free(outputCountTokens);
+			/* a2s_cleanup_dimensions(outputStartTokens, outputDim); */
+            /* a2s_cleanup_dimensions(outputCountTokens, outputDim); */
 
 			outputBox = adios_selection_boundingbox(outputDim, outputStart, outputCount);
 
@@ -294,20 +256,17 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
 	QueryStack queryStack;
 	queryStackInit(&queryStack);
 
-	for (entryIter = 0; entryIter < (numQuery*2-1); entryIter++) {
-
-		// Find entry node
-		if (entryIter == 0) {
-			entryNode = mxmlFindElement(root, root, "entry", NULL, NULL, MXML_DESCEND_FIRST);
-		}
-		else {
-			// this is the only way I found for getting the next <entry> or <combine> node
-			entryNode= mxmlWalkNext(entryNode, root, MXML_NO_DESCEND);
-			entryNode= mxmlWalkNext(entryNode, root, MXML_NO_DESCEND);
-		}
+	entryNode = mxmlFindElement(root, root, "entry", NULL, NULL, MXML_DESCEND_FIRST);
+	entryIter = 0;
+	for ( ; entryNode; entryNode = mxmlWalkNext (entryNode, root, MXML_NO_DESCEND))
+    {
+        if (entryNode->type != MXML_ELEMENT)
+        {
+            continue;
+        }
 
 		// check if current node is <combine>
-		if ( strcmp( (&(entryNode->value.element.attrs[0]))->name, "op") == 0 ) {
+		if ( strcmp(entryNode->value.element.name, "combine") == 0 ) {
 			queryCombineOp = (&(entryNode->value.element.attrs[0]))->value;
 			/* fprintf(stderr, "Found combine op %s\n", queryCombineOp); */
 			// pop up two query and perform the op
@@ -332,6 +291,8 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
 			continue;
 		}
 
+        if (entryIter >= numQuery)
+            break;
 
 		// Make sure all *S are NULL for verification
 		varNameS=NULL, opS=NULL, constraintS=NULL;
@@ -380,15 +341,22 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
         				return NULL;
         			}
         			else {
-        				queryDim = atoi(dimS);
-        				if (queryDim > MAXDIM) {
-        					fprintf(stderr, "QueryDim exceeds 10, readjust MAXDIM to larger value, exiting...\n");
+        		        int specifiedDim = atoi(dimS);
+        		        if (specifiedDim > MAXDIM) {
+        				    fprintf(stderr, "QueryDim exceeds 10, readjust MAXDIM to larger value, exiting...\n");
         					abort();
         				}
         
-        				tokenize_dimensions2(startS, &queryStartTokens, &queryDim);
-        				tokenize_dimensions2(countS, &queryCountTokens, &queryDim);
-        
+        				a2s_tokenize_dimensions(startS, &queryStartTokens, &queryDim);
+        				a2s_tokenize_dimensions(countS, &queryCountTokens, &queryDim);
+
+        	            if (specifiedDim != outputDim) {
+        	                fprintf(stderr, "Specified # of dimensions (%d)  "
+        	                        "!= number of dimensions (%d) in start/count, exiting...\n",
+        	                        specifiedDim, outputDim);
+        	                abort();
+        	            }
+
         				// Allocate arrays to give to the bounding box constructor
         				uint64_t *queryStart = malloc(queryDim * sizeof(uint64_t));
         				uint64_t *queryCount = malloc(queryDim * sizeof(uint64_t));
@@ -396,11 +364,9 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
         				for (j = 0; j < queryDim; j ++){
         					queryStart[j] = atoi(queryStartTokens[j]);
         					queryCount[j] = atoi(queryCountTokens[j]);
-        					free(queryStartTokens[j]);
-        					free(queryCountTokens[j]);
         				}
-        				free(queryStartTokens);
-        				free(queryCountTokens);
+        	            /* a2s_cleanup_dimensions(outputStartTokens, outputDim); */
+        	            /* a2s_cleanup_dimensions(outputCountTokens, outputDim); */
         
         				inputSelection = adios_selection_boundingbox(queryDim, queryStart, queryCount);
                                 }
@@ -445,8 +411,8 @@ ADIOS_QUERY_TEST_INFO * parseXml(const char *inputxml, ADIOS_FILE* f) {
 			return NULL;
 		}
 
-	        queryPush(&queryStack,q);
-
+		queryPush(&queryStack,q);
+		entryIter++;
 		/* fprintf(stderr, "Parsed entry: var=%s op=%s constraint=%s\n", varNameS, opS, constraintS); */
 	}
 
diff --git a/tests/C/query/common/compute_expected_query_results.c b/tests/C/query/common/compute_expected_query_results.c
index d6814b9..7a264af 100644
--- a/tests/C/query/common/compute_expected_query_results.c
+++ b/tests/C/query/common/compute_expected_query_results.c
@@ -29,7 +29,7 @@ static ADIOS_SELECTION * convertWBToBB(ADIOS_SELECTION *sel, int timestep, ADIOS
 
 	if (!varinfo->blockinfo) {
 		const data_view_t old_view = adios_read_set_data_view(fp, LOGICAL_DATA_VIEW);
-		adios_read_bp_inq_var_blockinfo(fp, varinfo);
+		adios_inq_var_blockinfo(fp, varinfo);
 		adios_read_set_data_view(fp, old_view);
 	}
 	ADIOS_VARBLOCK *vb = &varinfo->blockinfo[abs_wbindex];
@@ -48,7 +48,7 @@ static uint64_t computeSelectionSizeInElements(ADIOS_SELECTION *sel) {
 		return size;
 	}
 	default:
-		fprintf(stderr, "Unsupported selection type %d at %s:%s", sel->type, __FILE__, __LINE__);
+		fprintf(stderr, "Unsupported selection type %d at %s:%d", sel->type, __FILE__, __LINE__);
 		exit(1);
 		return 0;
 	}
@@ -77,8 +77,9 @@ static enum REDUCED_DATATYPE getReducedDatatype(enum ADIOS_DATATYPES datatype) {
 	case adios_complex:
 	case adios_double_complex:
 		return RD_DOUBLE_COMPLEX;
+	default:
+		return RD_UNKNOWN;
 	}
-	return RD_UNKNOWN;
 }
 
 #define ALLOCATE_REDUCED_DATATYPE(type) (type*)malloc(sizeof(type))
@@ -90,9 +91,11 @@ static void * allocateReducedDatatype(enum REDUCED_DATATYPE reduced_datatype, in
 	case RD_LONG_DOUBLE:	return ALLOCATE_REDUCED_DATATYPE(long double);
 	case RD_STRING:			return (char*)malloc(maxstrlen + 1);
 	case RD_DOUBLE_COMPLEX:
-		fprintf(stderr, "Cannot handle complex or double complex datatypes (at %s:%s)\n", __FILE__, __LINE__);
+		fprintf(stderr, "Cannot handle complex or double complex datatypes (at %s:%d)\n", __FILE__, __LINE__);
 		exit(1);
 		return NULL;
+	default:
+		return NULL;
 	}
 }
 
@@ -105,9 +108,11 @@ static void * parseStringAsReducedDatatype(const char *str, enum REDUCED_DATATYP
 	case RD_LONG_DOUBLE:	RETURN_REDUCED_DATATYPE(long double, strtold(str, NULL)); break;
 	case RD_STRING:			return strdup(str);
 	case RD_DOUBLE_COMPLEX:
-		fprintf(stderr, "Cannot handle complex or double complex datatypes (at %s:%s)\n", __FILE__, __LINE__);
+		fprintf(stderr, "Cannot handle complex or double complex datatypes (at %s:%d)\n", __FILE__, __LINE__);
 		exit(1);
 		return NULL;
+	default:
+		return NULL;
 	}
 }
 
@@ -128,7 +133,7 @@ static void castToReducedDatatype(const void *value, enum ADIOS_DATATYPES dataty
 	case adios_complex:
 	case adios_double_complex:
 	default:
-		fprintf(stderr, "Unsupported or invalid reduced datatype %d at %s:%s\n", datatype, __FILE__, __LINE__);
+		fprintf(stderr, "Unsupported or invalid reduced datatype %d at %s:%d\n", datatype, __FILE__, __LINE__);
 		exit(1);
 	}
 }
@@ -143,7 +148,7 @@ static int compareReducedDatatypeValues(const void *v1, const void *v2, enum RED
 	case RD_STRING:			return strcmp((const char*)v1, (const char*)v2);
 	case RD_DOUBLE_COMPLEX:
 	default:
-		fprintf(stderr, "Unsupported or invalid reduced datatype %d at %s:%s\n", datatype, __FILE__, __LINE__);
+		fprintf(stderr, "Unsupported or invalid reduced datatype %d at %s:%d\n", datatype, __FILE__, __LINE__);
 		exit(1);
 		return 0;
 	}
@@ -161,6 +166,7 @@ static int compareConstraintBoundValue(const void *bound, const void *value, enu
 	case ADIOS_EQ: return compare == 0;
 	case ADIOS_NE: return compare != 0;
 	}
+	return 0;
 }
 
 // Returns which points in the given buffer of data (buffer) for the given selection
@@ -386,7 +392,7 @@ static ADIOS_SELECTION * evaluateQueryTree(ADIOS_QUERY *query, int timestep) {
 		return combinedsel;
 	} else if (query->left) {
 		return evaluateQueryTree(query->left, timestep);
-	} else if (query->right) {
+	} else  {  //if (query->right) {
 		return evaluateQueryTree(query->right, timestep);
 	}
 }
@@ -417,7 +423,7 @@ static ADIOS_VARBLOCK * computePGBounds(ADIOS_QUERY *q, ADIOS_SELECTION_WRITEBLO
 		// Read the blockinfo if not already present
 		if (!q->varinfo->blockinfo) {
 			adios_read_set_data_view(q->file, LOGICAL_DATA_VIEW);
-			common_read_inq_var_blockinfo(q->file, q->varinfo);
+			adios_inq_var_blockinfo(q->file, q->varinfo);
 		}
 
 		// Note: adios_get_absolute_writeblock_index ensures that timestep and wbindex
@@ -534,7 +540,7 @@ static void printPointSelection(int timestep, ADIOS_SELECTION *sel) {
 	for (i = 0; i < npoints; ++i) {
 		printf("%d", timestep);
 		for (j = 0; j < ndim; ++j) {
-			printf(" %llu", *points++);
+			printf(" %" PRIu64, *points++);
 		}
 		printf("\n");
 	}
@@ -599,7 +605,7 @@ int main(int argc, char **argv) {
 			if (timestep < testinfo->fromStep + testinfo->numSteps - 1) {
 				assert(err == 0);
 			} else {
-				assert(err == err_end_of_stream || err == err_step_notready);
+				assert(err == 0 || err == err_end_of_stream || err == err_step_notready);
 			}
 		}
 	}
diff --git a/tests/C/query/fastbit/CMakeLists.txt b/tests/C/query/fastbit/CMakeLists.txt
index c1db402..862b2ef 100644
--- a/tests/C/query/fastbit/CMakeLists.txt
+++ b/tests/C/query/fastbit/CMakeLists.txt
@@ -2,13 +2,12 @@ include_directories(${PROJECT_SOURCE_DIR}/src/public)
 include_directories(${PROJECT_SOURCE_DIR}/src)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../common)
 include_directories(${PROJECT_BINARY_DIR}/src/public)
+include_directories(${MXML_INCLUDE_DIR})
 link_directories(${PROJECT_BINARY_DIR}/src)
 link_directories(${CMAKE_CURRENT_BINARY_DIR}../common)
-link_directories(${MXML_INCLUDE_DIR}/../lib)
-include_directories(${MXML_INCLUDE_DIR})
 
 add_executable(fastbit_tests fastbit_tests.c)
-target_link_libraries(fastbit_tests adiosread_nompi adios_nompi ${ADIOSREADLIB_LDADD} ${MXML_LIBS})
+target_link_libraries(fastbit_tests adiosread_nompi adios_nompi ${ADIOSLIB_LDADD})
 set_target_properties(fastbit_tests PROPERTIES COMPILE_FLAGS "${MACRODEFFLAG}_NOMPI")
 
 file(COPY query.xml
diff --git a/tests/C/query/fastbit/Makefile.am b/tests/C/query/fastbit/Makefile.am
index f8c8af2..9459fd4 100644
--- a/tests/C/query/fastbit/Makefile.am
+++ b/tests/C/query/fastbit/Makefile.am
@@ -1,24 +1,25 @@
-INCLUDES = $(all_includes)
+AM_CPPFLAGS = $(all_includes)
 #
 # ${ADIOSREADLIB_CPPFLAGS} has all the flags like -DFASTBIT -DALACRITY
 # as well as related includes, so it is needed here
 # 
-INCLUDES += -I$(top_builddir)/src/public  -I$(top_srcdir)/src/ -I$(top_srcdir)/src/public/ $(MXML_CPPFLAGS)
+AM_CPPFLAGS += -I$(top_builddir)/src/public  -I$(top_srcdir)/src/ -I$(top_srcdir)/src/public/ 
 
 AUTOMAKE_OPTIONS = no-dependencies
 
+EXTRA_DIST = query.xml
+
 noinst_PROGRAMS = 
 
 # Only compile these test programs if we have FastBit, since they rely on FastBit
 if HAVE_FASTBIT
-CC=$(MPICC)
 
 noinst_PROGRAMS += fastbit_tests
 
 fastbit_tests_SOURCES = fastbit_tests.c
-fastbit_tests_CPPFLAGS = ${MACRODEFFLAG}_NOMPI 
-fastbit_tests_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(top_builddir)/src/libadios_nompi.a $(ADIOSREADLIB_LDADD) ${MXML_LIBS}
-fastbit_tests_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) ${MXML_LDFLAGS}
+fastbit_tests_CPPFLAGS = $(AM_CPPFLAGS) ${ADIOSLIB_SEQ_CPPFLAGS} $(ADIOSLIB_EXTRA_CPPFLAGS)
+fastbit_tests_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD) 
+fastbit_tests_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+
 
 endif # HAVE_FASTBIT
-CC=$(MPICC)
diff --git a/tests/C/query/fastbit/Makefile.in b/tests/C/query/fastbit/Makefile.in
index ee2eae7..6c29c80 100644
--- a/tests/C/query/fastbit/Makefile.in
+++ b/tests/C/query/fastbit/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,9 +79,11 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = $(am__EXEEXT_1)
+
+# Only compile these test programs if we have FastBit, since they rely on FastBit
 @HAVE_FASTBIT_TRUE at am__append_1 = fastbit_tests
 subdir = tests/C/query/fastbit
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +106,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -91,26 +135,72 @@ am__fastbit_tests_SOURCES_DIST = fastbit_tests.c
 fastbit_tests_OBJECTS = $(am_fastbit_tests_OBJECTS)
 am__DEPENDENCIES_1 =
 @HAVE_FASTBIT_TRUE at fastbit_tests_DEPENDENCIES =  \
- at HAVE_FASTBIT_TRUE@	$(top_builddir)/src/libadiosread_nompi.a \
 @HAVE_FASTBIT_TRUE@	$(top_builddir)/src/libadios_nompi.a \
- at HAVE_FASTBIT_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-fastbit_tests_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ at HAVE_FASTBIT_TRUE@	$(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 = 
+fastbit_tests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(fastbit_tests_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(fastbit_tests_SOURCES)
 DIST_SOURCES = $(am__fastbit_tests_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -118,6 +208,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -142,6 +233,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -150,13 +242,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
-
-# Only compile these test programs if we have FastBit, since they rely on FastBit
- at HAVE_FASTBIT_TRUE@CC = $(MPICC)
-CC = $(MPICC)
+CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -185,6 +276,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -238,17 +330,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -279,6 +374,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -299,10 +395,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -311,9 +410,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -325,6 +421,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -359,14 +456,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -379,14 +479,14 @@ top_srcdir = @top_srcdir@
 # ${ADIOSREADLIB_CPPFLAGS} has all the flags like -DFASTBIT -DALACRITY
 # as well as related includes, so it is needed here
 # 
-INCLUDES = $(all_includes) -I$(top_builddir)/src/public \
-	-I$(top_srcdir)/src/ -I$(top_srcdir)/src/public/ \
-	$(MXML_CPPFLAGS)
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
+	-I$(top_srcdir)/src/ -I$(top_srcdir)/src/public/
 AUTOMAKE_OPTIONS = no-dependencies
+EXTRA_DIST = query.xml
 @HAVE_FASTBIT_TRUE at fastbit_tests_SOURCES = fastbit_tests.c
- at HAVE_FASTBIT_TRUE@fastbit_tests_CPPFLAGS = ${MACRODEFFLAG}_NOMPI 
- at HAVE_FASTBIT_TRUE@fastbit_tests_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(top_builddir)/src/libadios_nompi.a $(ADIOSREADLIB_LDADD) ${MXML_LIBS}
- at HAVE_FASTBIT_TRUE@fastbit_tests_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) ${MXML_LDFLAGS}
+ at HAVE_FASTBIT_TRUE@fastbit_tests_CPPFLAGS = $(AM_CPPFLAGS) ${ADIOSLIB_SEQ_CPPFLAGS} $(ADIOSLIB_EXTRA_CPPFLAGS)
+ at HAVE_FASTBIT_TRUE@fastbit_tests_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD) 
+ at HAVE_FASTBIT_TRUE@fastbit_tests_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 all: all-am
 
 .SUFFIXES:
@@ -430,9 +530,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-fastbit_tests$(EXEEXT): $(fastbit_tests_OBJECTS) $(fastbit_tests_DEPENDENCIES) 
+
+fastbit_tests$(EXEEXT): $(fastbit_tests_OBJECTS) $(fastbit_tests_DEPENDENCIES) $(EXTRA_fastbit_tests_DEPENDENCIES) 
 	@rm -f fastbit_tests$(EXEEXT)
-	$(fastbit_tests_LINK) $(fastbit_tests_OBJECTS) $(fastbit_tests_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(fastbit_tests_LINK) $(fastbit_tests_OBJECTS) $(fastbit_tests_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -441,19 +542,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 fastbit_tests-fastbit_tests.o: fastbit_tests.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastbit_tests_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastbit_tests-fastbit_tests.o `test -f 'fastbit_tests.c' || echo '$(srcdir)/'`fastbit_tests.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastbit_tests_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastbit_tests-fastbit_tests.o `test -f 'fastbit_tests.c' || echo '$(srcdir)/'`fastbit_tests.c
 
 fastbit_tests-fastbit_tests.obj: fastbit_tests.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastbit_tests_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastbit_tests-fastbit_tests.obj `if test -f 'fastbit_tests.c'; then $(CYGPATH_W) 'fastbit_tests.c'; else $(CYGPATH_W) '$(srcdir)/fastbit_tests.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastbit_tests_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastbit_tests-fastbit_tests.obj `if test -f 'fastbit_tests.c'; then $(CYGPATH_W) 'fastbit_tests.c'; else $(CYGPATH_W) '$(srcdir)/fastbit_tests.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -461,26 +562,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -492,15 +582,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -509,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -557,10 +658,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -643,18 +749,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/C/query/fastbit/fastbit_tests.c b/tests/C/query/fastbit/fastbit_tests.c
index c8e60ef..ae183fa 100644
--- a/tests/C/query/fastbit/fastbit_tests.c
+++ b/tests/C/query/fastbit/fastbit_tests.c
@@ -116,7 +116,7 @@ void logTimeMillis(__VA_ARGS__)
 static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* sel,
                              uint64_t* total_byte_size, uint64_t* dataSize, int timestep)
 {
-  *total_byte_size = common_read_type_size (v->type, v->value);
+  *total_byte_size = adios_type_size (v->type, v->value);
   *dataSize = 1;
 
   if (sel == 0) {
@@ -161,7 +161,7 @@ static int getTotalByteSize (ADIOS_FILE* f, ADIOS_VARINFO* v, ADIOS_SELECTION* s
     {
       const ADIOS_SELECTION_WRITEBLOCK_STRUCT *wb = &(sel->u.block);
 
-      common_read_inq_var_blockinfo(f, v);
+      adios_inq_var_blockinfo(f, v);
       int i=0;
       int min = v->nblocks[0];
       int absBlockCounter = wb->index;
@@ -341,7 +341,7 @@ ADIOS_QUERY* getEntryQuery(mxml_node_t* queryNode, const char* entryName, ADIOS_
     if ((varName == NULL) || (value == NULL) || (opStr == NULL)) {
       return NULL;
     }    
-    enum ADIOS_PREDICATE_MODE op = getOp(opStr);
+    enum ADIOS_PREDICATE_MODE op = adios_query_getOp(opStr);
     
     ADIOS_SELECTION* sel = getSel(entryNode);
 
@@ -505,175 +505,188 @@ ADIOS_SELECTION* getOutputSelection(mxml_node_t* queryNode)
 
 int parseQueryXml(const char* xmlQueryFileName) 
 {
-  int rank;
-  MPI_Comm_rank (MPI_COMM_WORLD, &rank);
+    int rank;
+    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
 
-  //adios_query_init(ADIOS_QUERY_METHOD_FASTBIT);
+    //adios_query_init(ADIOS_QUERY_METHOD_FASTBIT);
 
 
-  FILE * fp = fopen (xmlQueryFileName,"r");
-  if (fp == NULL){
-    printf("No xml query file %s\n", xmlQueryFileName);    
-    return -1;
-  }
+    FILE * fp = fopen (xmlQueryFileName,"r");
+    if (fp == NULL){
+        printf("No xml query file %s\n", xmlQueryFileName);
+        return -1;
+    }
 
-  fseek(fp, 0, SEEK_END);  
-  long len = ftell(fp);
-  rewind(fp);
+    fseek(fp, 0, SEEK_END);
+    long len = ftell(fp);
+    rewind(fp);
 
-  if (len == 0) {
-    printf("No content in file %s.\n", xmlQueryFileName);
-    return -1;
-  }
-  
-  printf("Reading: %s\n", xmlQueryFileName);
+    if (len == 0) {
+        printf("No content in file %s.\n", xmlQueryFileName);
+        return -1;
+    }
 
-  mxml_node_t* tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
-  fclose(fp);
+    printf("Reading: %s\n", xmlQueryFileName);
 
-  if (tree == NULL) {
-    printf("Invalid xml file: %d.\n", xmlQueryFileName);
-    return -1;
-  }
+    mxml_node_t* tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+    fclose(fp);
 
-  ADIOS_FILE * f;
-  MPI_Comm    comm_dummy = 0;  // MPI_Comm is defined through adios_read.h 
+    if (tree == NULL) {
+        printf("Invalid xml file: %d.\n", xmlQueryFileName);
+        return -1;
+    }
 
-  adios_read_init_method(ADIOS_READ_METHOD_BP, comm_dummy, "verbose=2");
+    ADIOS_FILE * f;
+    MPI_Comm    comm_dummy = 0;  // MPI_Comm is defined through adios_read.h
 
-  mxml_node_t* testsNode = mxmlFindElement(tree, tree, "tests", NULL, NULL, MXML_DESCEND);
+    adios_read_init_method(ADIOS_READ_METHOD_BP, comm_dummy, "verbose=2");
 
-  mxml_node_t* queryNode; // mxmlFindElement(testsNode, testsNode, _gTagQuery, NULL, NULL, MXML_DESCEND);
-  
+    mxml_node_t* testsNode = mxmlFindElement(tree, tree, "tests", NULL, NULL, MXML_DESCEND);
 
-  for (queryNode = mxmlFindElement(tree, tree, _gTagQuery, NULL, NULL, MXML_DESCEND);
-       queryNode != NULL;
-       queryNode = mxmlFindElement(queryNode, tree, _gTagQuery, NULL, NULL, MXML_DESCEND))
-				   
-    {
-      //printf("query: %s\n", queryNode->value.element.attrs[0].value);
-      mxml_value_t value = queryNode->value;
-      int i=0; 
-      const char* bpFileName = NULL;
-      const char* queryName = NULL;
-      uint64_t batchSize = 0;
-      
+    mxml_node_t* queryNode; // mxmlFindElement(testsNode, testsNode, _gTagQuery, NULL, NULL, MXML_DESCEND);
 
-      for (i = 0; i < value.element.num_attrs; i++) {	
-	mxml_attr_t currAttr = value.element.attrs[i];
-	if (strcasecmp(currAttr.name, _gAttrBPFile) == 0) {
-	  bpFileName = currAttr.value;
-	} else if (strcasecmp(currAttr.name, _gAttrQueryName) == 0) {
-	  queryName = currAttr.value;
-	} else if (strcasecmp(currAttr.name, _gAttrBatchSize) == 0) {
-	  batchSize = atol(currAttr.value);
-	}
-      }
 
-      if (bpFileName == 0) {
-	printf("missing data file in query.\n");
-	return -1;
-      }
+    for (queryNode = mxmlFindElement(tree, tree, _gTagQuery, NULL, NULL, MXML_DESCEND);
+            queryNode != NULL;
+            queryNode = mxmlFindElement(queryNode, tree, _gTagQuery, NULL, NULL, MXML_DESCEND))
 
-      logReport(-1, NULL);
-      printf("\n ... reading file: %s\n", bpFileName);
+    {
+        //printf("query: %s\n", queryNode->value.element.attrs[0].value);
+        mxml_value_t value = queryNode->value;
+        int i=0;
+        const char* bpFileName = NULL;
+        const char* queryName = NULL;
+        uint64_t batchSize = 0;
+
+
+        for (i = 0; i < value.element.num_attrs; i++) {
+            mxml_attr_t currAttr = value.element.attrs[i];
+            if (strcasecmp(currAttr.name, _gAttrBPFile) == 0) {
+                bpFileName = currAttr.value;
+            } else if (strcasecmp(currAttr.name, _gAttrQueryName) == 0) {
+                queryName = currAttr.value;
+            } else if (strcasecmp(currAttr.name, _gAttrBatchSize) == 0) {
+                batchSize = atol(currAttr.value);
+            }
+        }
 
-      f = adios_read_open_file (bpFileName, ADIOS_READ_METHOD_BP, comm_dummy);
-      if (f == NULL) {
-	printf("::%s\n", adios_errmsg());
-	return -1;
-      }
+        if (bpFileName == 0) {
+            printf("missing data file in query.\n");
+            return -1;
+        }
 
-      logTimeMillis(" adios file read.\n");
-      ADIOS_QUERY* q = constructQuery(queryNode, f, queryName, batchSize);
+        logReport(-1, NULL);
+        printf("\n ... reading file: %s\n", bpFileName);
 
-      ADIOS_SELECTION* outputBox = getOutputSelection(queryNode);
-      logReport(-1, q); // init timer
+        f = adios_read_open_file (bpFileName, ADIOS_READ_METHOD_BP, comm_dummy);
+        if (f == NULL) {
+            printf("::%s\n", adios_errmsg());
+            return -1;
+        }
 
-      //adios_query_set_method(q, ADIOS_QUERY_METHOD_FASTBIT);
-      int timestep = 0;
-      fastbit_set_verbose_level(0);
-      //ADIOS_SELECTION* noBox = 0;
-      while (timestep <= f->last_step) {
-	printf("\n==> query=%s, %s, [TimeStep=%d of %d]\n",queryName, q->condition, timestep, f->last_step);
-#ifdef ESTIMATE
-	int64_t est = adios_query_estimate(q, timestep);
-	logTimeMillis(" estimated. %s", q->condition);
-	printf("\n .. query %s: %s, \t estimated  %ld hits on timestep: %d\n", queryName, q->condition, est, timestep);
-#endif
-	ADIOS_SELECTION* currBatch = NULL;
-	int hasMore = 1; 
-
-	int readBatchCounter = 1; // 1 = no read back
-	int64_t numHits = 0;
-	while (hasMore > 0) {
-	  hasMore = adios_query_evaluate(q, outputBox, timestep, batchSize, &currBatch);
-	  logTimeMillis(" evaluated one batch: %s \n", q->condition);
-	  if (numHits == 0) {
-	    logReport(0, q);
-	  }
-	  if (currBatch != NULL) {
-	    int currBatchSize = currBatch->u.points.npoints;
-	    numHits += currBatchSize;
-	    printf("\n   evaluated: %ld hits for %s\n", currBatchSize, q->condition);
-	    
-	    if (readBatchCounter < 1) {
-	        if (currBatchSize <= 1048576) { // takes too long otherwise
-	            readBatchCounter ++;
-		    printf("\n   sample once on reading data out from ADIOS\n");
-		    ADIOS_QUERY* leaf = q;
-		    while (leaf->varinfo == NULL) {
-		        leaf = leaf->left;
-		    }
-		    uint64_t output_byte_size = common_read_type_size (leaf->varinfo->type, leaf->varinfo->value);
-		    output_byte_size *= currBatchSize;
-		    
-		    void* output = malloc (output_byte_size+1000);
-		    if (output == NULL) {
-		      logTimeMillis(".. unable to allocate enough memory for %ld bytes. Skip.\n", output_byte_size+1000);
-		    } else {
-		      adios_schedule_read (leaf->file, currBatch, leaf->varName, timestep, 1, output);
-		      adios_perform_reads (leaf->file, 1);
-		      logTimeMillis(" .. read batch data out from ADIOS, batchsize=%ld,  for: %s out of %ld\n", currBatchSize, leaf->condition, leaf->rawDataSize);
-		      free(output);
-		    }
-		}
-	    }
-	  } else {
-	    printf("\n   evaluated 0 hits for %s\n", q->condition);
-	  }
+        logTimeMillis(" adios file read.\n");
+        ADIOS_QUERY* q = constructQuery(queryNode, f, queryName, batchSize);
 
-	  if (currBatch != NULL) {
-	    free (currBatch->u.points.points);
-	    adios_selection_delete(currBatch);
-	  }
-	}
+        ADIOS_SELECTION* outputBox = getOutputSelection(queryNode);
+        logReport(-1, q); // init timer
 
-	logReport(1, q);
-	logReport(-1, NULL);
+        //adios_query_set_method(q, ADIOS_QUERY_METHOD_FASTBIT);
+        int timestep = 0;
+        fastbit_set_verbose_level(0);
+        //ADIOS_SELECTION* noBox = 0;
+        while (timestep <= f->last_step)
+        {
+            printf("\n==> query=%s, %s, [TimeStep=%d of %d]\n",queryName, q->condition, timestep, f->last_step);
+#ifdef ESTIMATE
+            int64_t est = adios_query_estimate(q, timestep);
+            logTimeMillis(" estimated. %s", q->condition);
+            printf("\n .. query %s: %s, \t estimated  %ld hits on timestep: %d\n", queryName, q->condition, est, timestep);
+#endif
+            ADIOS_QUERY_RESULT *currBatch = NULL;
+            int hasMore = 1;
+
+            int readBatchCounter = 1; // 1 = no read back
+            int64_t numHits = 0;
+            while (1)
+            {
+                currBatch = adios_query_evaluate(q, outputBox, timestep, batchSize);
+                logTimeMillis(" evaluated one batch: %s \n", q->condition);
+                if (numHits == 0) {
+                    logReport(0, q);
+                }
+                if (currBatch == NULL) {
+                    break;
+                }
+                if (currBatch->status == ADIOS_QUERY_RESULT_ERROR) {
+                    fprintf(stderr, "ERROR in querying evaluation: %s \n", adios_errmsg());
+                    break;
+                }
+
+                if (currBatch->nselections == 0) {
+                    printf("\n   evaluated 0 hits for %s\n", q->condition);
+                }
+
+                for (i = 0; i < currBatch->nselections; ++i)
+                {
+                    ADIOS_SELECTION *s = &(currBatch->selections[i]);
+
+                    int currBatchSize = s->u.points.npoints;
+                    numHits += currBatchSize;
+                    printf("\n   evaluated: %ld hits for %s\n", currBatchSize, q->condition);
+
+                    if (readBatchCounter < 1) {
+                        if (currBatchSize <= 1048576) { // takes too long otherwise
+                            readBatchCounter ++;
+                            printf("\n   sample once on reading data out from ADIOS\n");
+                            ADIOS_QUERY* leaf = q;
+                            while (leaf->varinfo == NULL) {
+                                leaf = leaf->left;
+                            }
+                            uint64_t output_byte_size = common_read_type_size (leaf->varinfo->type, leaf->varinfo->value);
+                            output_byte_size *= currBatchSize;
+
+                            void* output = malloc (output_byte_size+1000);
+                            if (output == NULL) {
+                                logTimeMillis(".. unable to allocate enough memory for %ld bytes. Skip.\n", output_byte_size+1000);
+                            } else {
+                                adios_schedule_read (leaf->file, currBatch, leaf->varName, timestep, 1, output);
+                                adios_perform_reads (leaf->file, 1);
+                                logTimeMillis(" .. read batch data out from ADIOS, batchsize=%ld,  for: %s out of %ld\n", currBatchSize, leaf->condition, leaf->rawDataSize);
+                                free(output);
+                            }
+                        }
+                    }
+                    free (s->u.points.points);
+                }
+
+                adios_selection_delete(currBatch->selections);
+
+
+                logReport(1, q);
+                logReport(-1, NULL);
+
+                //printf("\n skipping manual check. not enough memory\n");
+                printf("\n numHits = %ld, %s\n", numHits, q->condition);
+                if (numHits > 5000000) {
+                    //manualCheck(q, timestep, numHits);
+                } else {
+                    //printf("\n numHits = %ld\n", numHits);
+                }
+
+                logTimeMillis(" sequential scan done! %s\n", q->condition);
+                timestep ++;
+            }
+            recursive_free(q);
+            adios_read_close(f);
 
-	//printf("\n skipping manual check. not enough memory\n");
-	printf("\n numHits = %ld, %s\n", numHits, q->condition);
-	if (numHits > 5000000) {
-	  //manualCheck(q, timestep, numHits);
-	} else {
-	  //printf("\n numHits = %ld\n", numHits);
-	}
+            //mxmlDelete(queryNode);
+        }
 
-	logTimeMillis(" sequential scan done! %s\n", q->condition);
-	timestep ++;      
-      }
-      recursive_free(q);
-      adios_read_close(f);
-	
-      //mxmlDelete(queryNode);
+        mxmlDelete(testsNode);
+        mxmlDelete(tree);
     }
-  
-  mxmlDelete(testsNode);
-  mxmlDelete(tree);    
 
-  adios_read_finalize_method(ADIOS_READ_METHOD_BP);
-  adios_finalize(rank);
+    adios_read_finalize_method(ADIOS_READ_METHOD_BP);
 }
 
 /*
diff --git a/tests/C/query/fastbit/query.xml b/tests/C/query/fastbit/query.xml
new file mode 100644
index 0000000..3d06db4
--- /dev/null
+++ b/tests/C/query/fastbit/query.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+
+<tests>
+<!--
+  <query name="testNoBox" batchsize="100" bpFile="/global/u1/j/junmin//adios/git/lbnl/data/medium.bp">
+    <entry name="q1" varName="/6D/a6_ulong" op="LT" value="1.0"/>
+    <entry name="q2" varName="/6D/a6_ulong" op="GT" value="0.0"/> 
+
+    <op action="and">
+      <node>q1</node>
+      <node>q2</node>
+    </op>
+  </query>
+  
+
+ <query name="testNoBoxNested" batchsize="100" bpFile="/global/u1/j/junmin//adios/git/lbnl/data/medium.bp">
+    <entry name="q1" varName="/6D/a6_ulong" op="LT" value="3.0"/>
+    <entry name="q2" varName="/6D/a6_ulong" op="GT" value="0.5"/>
+    <entry name="q4" varName="/6D/a6_ulong" op="LT" value="1.5"/>
+
+    <entry name="q3" action="and">
+      <node>q1</node>
+      <node>q2</node>
+    </entry>
+    
+    <op action="or">
+      <node>q3</node>    
+      <node>q4</node>
+    </op>
+  </query>
+
+-->
+<query name="ornl" batchsize="1048576" bpFile="/scratch2/scratchdirs/junmin/bl_flame.3.4536E-03.field.bp">
+    <output type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="1100,1080,1408"/>
+
+    <entry name="ornl.heat.temp" varName="/temp" op="LE" value="2.0"> 
+        <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="3" start="0,0,0" count="1100,1080,1408"/>
+    </entry>
+</query>
+
+  <query name="testBoundingBox" batchsize="100" bpFile="/global/u1/j/junmin//adios/git/lbnl/data/medium.bp">
+    <entry name="q3" varName="/6D/a6_ulong" op="LT" value="1.0">
+      <selection type="ADIOS_SELECTION_BOUNDINGBOX" dim="6" start="0,0,0,0,0,0" count="4,3,2,2,2,2"/>
+    </entry>
+  </query>
+  
+  <query name="testWriteBlock" batchsize="100" bpFile="/global/u1/j/junmin//adios/git/lbnl/data/medium.bp">
+    <entry name="q1" varName="/6D/a6_ulong" op="LT" value="1.0">
+      <selection type="ADIOS_SELECTION_WRITEBLOCK" id="1"/>
+    </entry>
+  </query>
+  
+<!--
+<query name="testSimpleAnd" batchsize="100" bpFile="data/medium.bp">
+</query>
+
+<query name="testSimpleOr" batchsize="100" bpFile="data/medium.bp">
+</query>
+
+<query name="testIndex" batchsize="100" bpFile="data/medium.bp">
+</query>
+
+<query name="testPartialIndex" batchsize="100" bpFile="data/medium.bp">
+</query>
+-->
+
+</tests>
+
diff --git a/tests/C/query/query-xmls/DS-1D/query0.xml b/tests/C/query/query-xmls/DS-1D/DS-1D.query0.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-1D/query0.xml
rename to tests/C/query/query-xmls/DS-1D/DS-1D.query0.xml
diff --git a/tests/C/query/query-xmls/DS-1D/query1.xml b/tests/C/query/query-xmls/DS-1D/DS-1D.query1.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-1D/query1.xml
rename to tests/C/query/query-xmls/DS-1D/DS-1D.query1.xml
diff --git a/tests/C/query/query-xmls/DS-2D/query0.xml b/tests/C/query/query-xmls/DS-2D/DS-2D.query0.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-2D/query0.xml
rename to tests/C/query/query-xmls/DS-2D/DS-2D.query0.xml
diff --git a/tests/C/query/query-xmls/DS-2D/query1.xml b/tests/C/query/query-xmls/DS-2D/DS-2D.query1.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-2D/query1.xml
rename to tests/C/query/query-xmls/DS-2D/DS-2D.query1.xml
diff --git a/tests/C/query/query-xmls/DS-3D/query-wb0.xml b/tests/C/query/query-xmls/DS-3D/DS-3D.query-wb0.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-3D/query-wb0.xml
rename to tests/C/query/query-xmls/DS-3D/DS-3D.query-wb0.xml
diff --git a/tests/C/query/query-xmls/DS-3D/query-wb1.xml b/tests/C/query/query-xmls/DS-3D/DS-3D.query-wb1.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-3D/query-wb1.xml
rename to tests/C/query/query-xmls/DS-3D/DS-3D.query-wb1.xml
diff --git a/tests/C/query/query-xmls/DS-3D/query0.xml b/tests/C/query/query-xmls/DS-3D/DS-3D.query0.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-3D/query0.xml
rename to tests/C/query/query-xmls/DS-3D/DS-3D.query0.xml
diff --git a/tests/C/query/query-xmls/DS-3D/query1.xml b/tests/C/query/query-xmls/DS-3D/DS-3D.query1.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-3D/query1.xml
rename to tests/C/query/query-xmls/DS-3D/DS-3D.query1.xml
diff --git a/tests/C/query/query-xmls/DS-particle/DS-particle-query0.xml b/tests/C/query/query-xmls/DS-particle/DS-particle.query0.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-particle/DS-particle-query0.xml
rename to tests/C/query/query-xmls/DS-particle/DS-particle.query0.xml
diff --git a/tests/C/query/query-xmls/DS-particle/DS-particle-query1.xml b/tests/C/query/query-xmls/DS-particle/DS-particle.query1.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-particle/DS-particle-query1.xml
rename to tests/C/query/query-xmls/DS-particle/DS-particle.query1.xml
diff --git a/tests/C/query/query-xmls/DS-unevenpg/query0.xml b/tests/C/query/query-xmls/DS-unevenpg/DS-unevenpg.query0.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-unevenpg/query0.xml
rename to tests/C/query/query-xmls/DS-unevenpg/DS-unevenpg.query0.xml
diff --git a/tests/C/query/query-xmls/DS-unevenpg/query1.xml b/tests/C/query/query-xmls/DS-unevenpg/DS-unevenpg.query1.xml
similarity index 100%
rename from tests/C/query/query-xmls/DS-unevenpg/query1.xml
rename to tests/C/query/query-xmls/DS-unevenpg/DS-unevenpg.query1.xml
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index acf45ab..ff8b1ba 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,12 +1,14 @@
 set(SUITEDIR suite)
 if(BUILD_WRITE)
   if(BUILD_FORTRAN)
+    add_subdirectory(test_src)
     add_subdirectory(C)
     add_subdirectory(Fortran)
     add_subdirectory(genarray)
     add_subdirectory(bp_read)
     add_subdirectory(${SUITEDIR})
   else(BUILD_FORTRAN)
+    add_subdirectory(test_src)
     add_subdirectory(C)
     add_subdirectory(bp_read)
     add_subdirectory(${SUITEDIR})
diff --git a/tests/Fortran/Makefile.am b/tests/Fortran/Makefile.am
index c401935..bd86c59 100644
--- a/tests/Fortran/Makefile.am
+++ b/tests/Fortran/Makefile.am
@@ -12,7 +12,7 @@ noinst_PROGRAMS=adios_test_f
 adios_test_f_SOURCES = adios_test_f.F90
 adios_test_f_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 adios_test_f_CFLAGS = $(ADIOSLIB_CFLAGS)
-adios_test_f_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_test_f_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_test_f_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
 
 FC=$(MPIFC)
diff --git a/tests/Fortran/Makefile.in b/tests/Fortran/Makefile.in
index 83f511b..94e243f 100644
--- a/tests/Fortran/Makefile.in
+++ b/tests/Fortran/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = adios_test_f$(EXEEXT)
 subdir = tests/Fortran
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,20 +130,67 @@ adios_test_f_OBJECTS = $(am_adios_test_f_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_test_f_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-adios_test_f_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_test_f_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(adios_test_f_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(adios_test_f_SOURCES)
 DIST_SOURCES = $(adios_test_f_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -109,6 +198,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -133,6 +223,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -141,6 +232,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -173,6 +266,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -226,17 +320,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -267,6 +364,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -287,10 +385,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -299,9 +400,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -313,6 +411,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -347,14 +446,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -371,7 +473,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 adios_test_f_SOURCES = adios_test_f.F90
 adios_test_f_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 adios_test_f_CFLAGS = $(ADIOSLIB_CFLAGS)
-adios_test_f_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_test_f_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_test_f_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
 FCLINK = \
 	$(LIBTOOL) --mode=link --tag F77 $(FC) \
@@ -421,9 +523,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_test_f$(EXEEXT): $(adios_test_f_OBJECTS) $(adios_test_f_DEPENDENCIES) 
+
+adios_test_f$(EXEEXT): $(adios_test_f_OBJECTS) $(adios_test_f_DEPENDENCIES) $(EXTRA_adios_test_f_DEPENDENCIES) 
 	@rm -f adios_test_f$(EXEEXT)
-	$(adios_test_f_LINK) $(adios_test_f_OBJECTS) $(adios_test_f_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(adios_test_f_LINK) $(adios_test_f_OBJECTS) $(adios_test_f_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -432,19 +535,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 adios_test_f-adios_test_f.o: adios_test_f.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o adios_test_f-adios_test_f.o `test -f 'adios_test_f.F90' || echo '$(srcdir)/'`adios_test_f.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o adios_test_f-adios_test_f.o `test -f 'adios_test_f.F90' || echo '$(srcdir)/'`adios_test_f.F90
 
 adios_test_f-adios_test_f.obj: adios_test_f.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o adios_test_f-adios_test_f.obj `if test -f 'adios_test_f.F90'; then $(CYGPATH_W) 'adios_test_f.F90'; else $(CYGPATH_W) '$(srcdir)/adios_test_f.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_test_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o adios_test_f-adios_test_f.obj `if test -f 'adios_test_f.F90'; then $(CYGPATH_W) 'adios_test_f.F90'; else $(CYGPATH_W) '$(srcdir)/adios_test_f.F90'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -452,26 +555,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -483,15 +575,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -500,6 +588,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -548,10 +651,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -634,9 +742,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -646,7 +754,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/Fortran/adios_test_f.F90 b/tests/Fortran/adios_test_f.F90
index 84e7d73..7197cdd 100644
--- a/tests/Fortran/adios_test_f.F90
+++ b/tests/Fortran/adios_test_f.F90
@@ -48,7 +48,7 @@ program adios_test
 
     print '("rank=",i0," group_comm=",i0," ierr=",i0)', rank, group_comm, ierr
 
-    call adios_allocate_buffer (10, ierr);
+    call adios_set_max_buffer_size (10)
     call adios_init ("config_fortran.xml", group_comm, ierr)
     call test_write (group, filename, group_comm, small_int, big_int, small_real, big_real, z_size, z_array)
 
diff --git a/tests/Fortran/config_fortran.xml b/tests/Fortran/config_fortran.xml
index c8f97d8..6b05951 100644
--- a/tests/Fortran/config_fortran.xml
+++ b/tests/Fortran/config_fortran.xml
@@ -31,6 +31,6 @@
 
   <method method="MPI" group="restart"/>
 
-  <buffer size-MB="5" allocate-time="now"/>
+  <buffer max-size-MB="5"/>
 
 </adios-config>
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 17cd92d..07bc7c3 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,8 +1,11 @@
+SUBDIRS=test_src
 SUITEDIR=suite
 if BUILD_WRITE
-if BUILD_FORTRAN
-SUBDIRS=C Fortran genarray bp_read ${SUITEDIR}
-else
-SUBDIRS=C bp_read ${SUITEDIR}
-endif
-endif
+if  HAVE_MPI
+    SUBDIRS += C bp_read 
+if      BUILD_FORTRAN
+        SUBDIRS += Fortran genarray
+endif   BUILD_FORTRAN
+    SUBDIRS += ${SUITEDIR}
+endif HAVE_MPI
+endif BUILD_WRITE
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 8cb8cfa..0fbd754 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -33,8 +77,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_1 = C bp_read 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_2 = Fortran genarray
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_3 = ${SUITEDIR}
 subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,23 +125,61 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = C bp_read suite Fortran genarray
+DIST_SUBDIRS = test_src C bp_read Fortran genarray suite
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -127,6 +210,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +235,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +244,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +278,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +332,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +376,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +397,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +412,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +423,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +458,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -381,9 +477,8 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+SUBDIRS = test_src $(am__append_1) $(am__append_2) $(am__append_3)
 SUITEDIR = suite
- at BUILD_FORTRAN_FALSE@@BUILD_WRITE_TRUE at SUBDIRS = C bp_read ${SUITEDIR}
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at SUBDIRS = C Fortran genarray bp_read ${SUITEDIR}
 all: all-recursive
 
 .SUFFIXES:
@@ -425,22 +520,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -455,57 +553,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -521,12 +574,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -538,15 +586,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -555,6 +599,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -591,13 +650,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -632,10 +688,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -713,22 +774,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/bp_read/Makefile.am b/tests/bp_read/Makefile.am
index 3ec0453..ef8a082 100644
--- a/tests/bp_read/Makefile.am
+++ b/tests/bp_read/Makefile.am
@@ -18,7 +18,7 @@ genbp_SOURCES = genbp.c
 genbp_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 genbp_CFLAGS = $(ADIOSLIB_CFLAGS)
 genbp_LDADD = $(top_builddir)/src/libadios.a $(top_builddir)/src/libadiosread.a $(ADIOSLIB_LDADD)
-genbp_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+genbp_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 if BUILD_FORTRAN
 bp_read_f_SOURCES = bp_read_f.F90
diff --git a/tests/bp_read/Makefile.in b/tests/bp_read/Makefile.in
index af03554..7dcf363 100644
--- a/tests/bp_read/Makefile.in
+++ b/tests/bp_read/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -40,7 +84,7 @@ host_triplet = @host@
 @BUILD_FORTRAN_TRUE@	bp_read_f$(EXEEXT) bp_read_f_v1$(EXEEXT) \
 @BUILD_FORTRAN_TRUE@	bp_read_c$(EXEEXT)
 subdir = tests/bp_read
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -63,14 +107,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -92,7 +134,11 @@ bp_read_c_OBJECTS = $(am_bp_read_c_OBJECTS)
 am__DEPENDENCIES_1 =
 bp_read_c_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-bp_read_c_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+bp_read_c_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(bp_read_c_CFLAGS) \
 	$(CFLAGS) $(bp_read_c_LDFLAGS) $(LDFLAGS) -o $@
 am__bp_read_f_SOURCES_DIST = bp_read_f.F90
@@ -102,7 +148,7 @@ bp_read_f_OBJECTS = $(am_bp_read_f_OBJECTS)
 @BUILD_FORTRAN_TRUE at bp_read_f_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosreadf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-bp_read_f_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+bp_read_f_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(bp_read_f_LDFLAGS) $(LDFLAGS) -o $@
 am__bp_read_f_v1_SOURCES_DIST = bp_read_f_v1.F90
@@ -112,38 +158,90 @@ bp_read_f_v1_OBJECTS = $(am_bp_read_f_v1_OBJECTS)
 @BUILD_FORTRAN_TRUE at bp_read_f_v1_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosreadf_v1.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-bp_read_f_v1_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+bp_read_f_v1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(bp_read_f_v1_LDFLAGS) $(LDFLAGS) -o $@
 am_genbp_OBJECTS = genbp-genbp.$(OBJEXT)
 genbp_OBJECTS = $(am_genbp_OBJECTS)
 genbp_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-genbp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(genbp_CFLAGS) $(CFLAGS) $(genbp_LDFLAGS) \
-	$(LDFLAGS) -o $@
+genbp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(genbp_CFLAGS) $(CFLAGS) \
+	$(genbp_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bp_read_c_SOURCES) $(bp_read_f_SOURCES) \
 	$(bp_read_f_v1_SOURCES) $(genbp_SOURCES)
 DIST_SOURCES = $(bp_read_c_SOURCES) $(am__bp_read_f_SOURCES_DIST) \
 	$(am__bp_read_f_v1_SOURCES_DIST) $(genbp_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -151,6 +249,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -175,6 +274,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -183,6 +283,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -215,6 +317,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -268,17 +371,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -309,6 +415,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -329,10 +436,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -341,9 +451,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -355,6 +462,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -389,14 +497,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -414,7 +525,7 @@ genbp_SOURCES = genbp.c
 genbp_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 genbp_CFLAGS = $(ADIOSLIB_CFLAGS)
 genbp_LDADD = $(top_builddir)/src/libadios.a $(top_builddir)/src/libadiosread.a $(ADIOSLIB_LDADD)
-genbp_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+genbp_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 @BUILD_FORTRAN_TRUE at bp_read_f_SOURCES = bp_read_f.F90
 @BUILD_FORTRAN_TRUE at bp_read_f_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 @BUILD_FORTRAN_TRUE at bp_read_f_CFLAGS = $(ADIOSLIB_CFLAGS)
@@ -480,18 +591,22 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bp_read_c$(EXEEXT): $(bp_read_c_OBJECTS) $(bp_read_c_DEPENDENCIES) 
+
+bp_read_c$(EXEEXT): $(bp_read_c_OBJECTS) $(bp_read_c_DEPENDENCIES) $(EXTRA_bp_read_c_DEPENDENCIES) 
 	@rm -f bp_read_c$(EXEEXT)
-	$(bp_read_c_LINK) $(bp_read_c_OBJECTS) $(bp_read_c_LDADD) $(LIBS)
-bp_read_f$(EXEEXT): $(bp_read_f_OBJECTS) $(bp_read_f_DEPENDENCIES) 
+	$(AM_V_CCLD)$(bp_read_c_LINK) $(bp_read_c_OBJECTS) $(bp_read_c_LDADD) $(LIBS)
+
+bp_read_f$(EXEEXT): $(bp_read_f_OBJECTS) $(bp_read_f_DEPENDENCIES) $(EXTRA_bp_read_f_DEPENDENCIES) 
 	@rm -f bp_read_f$(EXEEXT)
-	$(bp_read_f_LINK) $(bp_read_f_OBJECTS) $(bp_read_f_LDADD) $(LIBS)
-bp_read_f_v1$(EXEEXT): $(bp_read_f_v1_OBJECTS) $(bp_read_f_v1_DEPENDENCIES) 
+	$(AM_V_FCLD)$(bp_read_f_LINK) $(bp_read_f_OBJECTS) $(bp_read_f_LDADD) $(LIBS)
+
+bp_read_f_v1$(EXEEXT): $(bp_read_f_v1_OBJECTS) $(bp_read_f_v1_DEPENDENCIES) $(EXTRA_bp_read_f_v1_DEPENDENCIES) 
 	@rm -f bp_read_f_v1$(EXEEXT)
-	$(bp_read_f_v1_LINK) $(bp_read_f_v1_OBJECTS) $(bp_read_f_v1_LDADD) $(LIBS)
-genbp$(EXEEXT): $(genbp_OBJECTS) $(genbp_DEPENDENCIES) 
+	$(AM_V_FCLD)$(bp_read_f_v1_LINK) $(bp_read_f_v1_OBJECTS) $(bp_read_f_v1_LDADD) $(LIBS)
+
+genbp$(EXEEXT): $(genbp_OBJECTS) $(genbp_DEPENDENCIES) $(EXTRA_genbp_DEPENDENCIES) 
 	@rm -f genbp$(EXEEXT)
-	$(genbp_LINK) $(genbp_OBJECTS) $(genbp_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(genbp_LINK) $(genbp_OBJECTS) $(genbp_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -500,46 +615,46 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 bp_read_f-bp_read_f.o: bp_read_f.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f-bp_read_f.o `test -f 'bp_read_f.F90' || echo '$(srcdir)/'`bp_read_f.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f-bp_read_f.o `test -f 'bp_read_f.F90' || echo '$(srcdir)/'`bp_read_f.F90
 
 bp_read_f-bp_read_f.obj: bp_read_f.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f-bp_read_f.obj `if test -f 'bp_read_f.F90'; then $(CYGPATH_W) 'bp_read_f.F90'; else $(CYGPATH_W) '$(srcdir)/bp_read_f.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f-bp_read_f.obj `if test -f 'bp_read_f.F90'; then $(CYGPATH_W) 'bp_read_f.F90'; else $(CYGPATH_W) '$(srcdir)/bp_read_f.F90'; fi`
 
 bp_read_f_v1-bp_read_f_v1.o: bp_read_f_v1.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_v1_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f_v1-bp_read_f_v1.o `test -f 'bp_read_f_v1.F90' || echo '$(srcdir)/'`bp_read_f_v1.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_v1_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f_v1-bp_read_f_v1.o `test -f 'bp_read_f_v1.F90' || echo '$(srcdir)/'`bp_read_f_v1.F90
 
 bp_read_f_v1-bp_read_f_v1.obj: bp_read_f_v1.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_v1_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f_v1-bp_read_f_v1.obj `if test -f 'bp_read_f_v1.F90'; then $(CYGPATH_W) 'bp_read_f_v1.F90'; else $(CYGPATH_W) '$(srcdir)/bp_read_f_v1.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_f_v1_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o bp_read_f_v1-bp_read_f_v1.obj `if test -f 'bp_read_f_v1.F90'; then $(CYGPATH_W) 'bp_read_f_v1.F90'; else $(CYGPATH_W) '$(srcdir)/bp_read_f_v1.F90'; fi`
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bp_read_c-bp_read_c.o: bp_read_c.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_c_CPPFLAGS) $(CPPFLAGS) $(bp_read_c_CFLAGS) $(CFLAGS) -c -o bp_read_c-bp_read_c.o `test -f 'bp_read_c.c' || echo '$(srcdir)/'`bp_read_c.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_c_CPPFLAGS) $(CPPFLAGS) $(bp_read_c_CFLAGS) $(CFLAGS) -c -o bp_read_c-bp_read_c.o `test -f 'bp_read_c.c' || echo '$(srcdir)/'`bp_read_c.c
 
 bp_read_c-bp_read_c.obj: bp_read_c.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_c_CPPFLAGS) $(CPPFLAGS) $(bp_read_c_CFLAGS) $(CFLAGS) -c -o bp_read_c-bp_read_c.obj `if test -f 'bp_read_c.c'; then $(CYGPATH_W) 'bp_read_c.c'; else $(CYGPATH_W) '$(srcdir)/bp_read_c.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp_read_c_CPPFLAGS) $(CPPFLAGS) $(bp_read_c_CFLAGS) $(CFLAGS) -c -o bp_read_c-bp_read_c.obj `if test -f 'bp_read_c.c'; then $(CYGPATH_W) 'bp_read_c.c'; else $(CYGPATH_W) '$(srcdir)/bp_read_c.c'; fi`
 
 genbp-genbp.o: genbp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genbp_CPPFLAGS) $(CPPFLAGS) $(genbp_CFLAGS) $(CFLAGS) -c -o genbp-genbp.o `test -f 'genbp.c' || echo '$(srcdir)/'`genbp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genbp_CPPFLAGS) $(CPPFLAGS) $(genbp_CFLAGS) $(CFLAGS) -c -o genbp-genbp.o `test -f 'genbp.c' || echo '$(srcdir)/'`genbp.c
 
 genbp-genbp.obj: genbp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genbp_CPPFLAGS) $(CPPFLAGS) $(genbp_CFLAGS) $(CFLAGS) -c -o genbp-genbp.obj `if test -f 'genbp.c'; then $(CYGPATH_W) 'genbp.c'; else $(CYGPATH_W) '$(srcdir)/genbp.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genbp_CPPFLAGS) $(CPPFLAGS) $(genbp_CFLAGS) $(CFLAGS) -c -o genbp-genbp.obj `if test -f 'genbp.c'; then $(CYGPATH_W) 'genbp.c'; else $(CYGPATH_W) '$(srcdir)/genbp.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -547,26 +662,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -578,15 +682,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -595,6 +695,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -643,10 +758,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -730,9 +850,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -742,7 +862,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/bp_read/bp_read_c.c b/tests/bp_read/bp_read_c.c
index 5ef9867..56658e5 100644
--- a/tests/bp_read/bp_read_c.c
+++ b/tests/bp_read/bp_read_c.c
@@ -7,6 +7,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdint.h>
+#include <inttypes.h>
 #include <sys/types.h>
 #include "mpi.h"
 #include "adios_read.h"
@@ -14,8 +16,8 @@
 #define PRINTDIMS(ndim, dims, ivar) if (ndim==0) \
         printf("\tscalar\n"); \
     else { \
-        printf("\t%dD variable: [%lld", ndim, dims[0]); \
-        for (ivar=1; ivar<ndim; ivar++) printf(", %lld", dims[ivar]); \
+        printf("\t%dD variable: [%" PRIu64, ndim, dims[0]); \
+        for (ivar=1; ivar<ndim; ivar++) printf(", %" PRIu64, dims[ivar]); \
         printf("]\n"); \
     }
 
@@ -122,7 +124,7 @@ int main (int argc, char ** argv)
     // vnamelist[14] is not written at time step 0
     // so the function returns as error
     adios_read_var (gp, "int_2D", start, size, var);
-    printf("\tslice (%lld:%lld, %lld:%lld) = ", 
+    printf("\tslice (%" PRIu64 ":%" PRId64 ", %" PRIu64 ":%" PRId64 ") = ",
            start[0], start[0]+size[0]-1,
            start[1], start[1]+size[1]-1);
     k=0;
@@ -161,7 +163,7 @@ int main (int argc, char ** argv)
     size[2]=3;
     var = malloc ( sizeof(int) * size[0]*size[1]*size[2]);
     adios_read_var (gp, "int_3D", start, size, var);
-    printf("\t[%lld:%lld, %lld:%lld, %lld:%lld]", 
+    printf("\t[%" PRIu64 ":%" PRId64 ", %" PRIu64 ":%" PRId64 ", %" PRIu64 ":%" PRId64 "]",
            start[0], start[0]+size[0]-1,
            start[1], start[1]+size[1]-1,
            start[2], start[2]+size[2]-1
diff --git a/tests/bp_read/genbp.c b/tests/bp_read/genbp.c
index 68f56ed..149c399 100644
--- a/tests/bp_read/genbp.c
+++ b/tests/bp_read/genbp.c
@@ -21,7 +21,7 @@ int main (int argc, char ** argv)
     char * type_name = "testbp";
     char * filename = "testbp_c.bp";
     int64_t io_handle;  // io handle
-    MPI_Comm comm = MPI_COMM_WORLD;
+    MPI_Comm comm = MPI_COMM_SELF;
     int rank;
 
     int dim1 = 10;   // dimension 1
@@ -69,7 +69,11 @@ int main (int argc, char ** argv)
     }
 
     MPI_Init (&argc, &argv);
-    MPI_Comm_rank (comm, &rank);
+    if (comm != MPI_COMM_NULL)
+        MPI_Comm_rank (comm, &rank);
+    else
+        rank = 0;
+
     if (adios_init ("testbp_c.xml", comm))
         return -1;
 
diff --git a/tests/bp_read/testbp_c.xml b/tests/bp_read/testbp_c.xml
index a594eba..8648334 100644
--- a/tests/bp_read/testbp_c.xml
+++ b/tests/bp_read/testbp_c.xml
@@ -14,8 +14,8 @@
     <var name="int_5D"  type="integer" dimensions="dim1,dim2,dim3,dim4,dim5"/>
   </adios-group>
 
-  <method group="testbp" method="POSIX1"/>
+  <method group="testbp" method="POSIX"/>
 
-  <buffer size-MB="1" allocate-time="now"/>
+  <buffer max-size-MB="1"/>
 
 </adios-config>
diff --git a/tests/genarray/CMakeLists.txt b/tests/genarray/CMakeLists.txt
index 8342037..8a14d86 100644
--- a/tests/genarray/CMakeLists.txt
+++ b/tests/genarray/CMakeLists.txt
@@ -23,14 +23,14 @@ set_target_properties(copyarray2D PROPERTIES COMPILE_FLAGS "${ADIOSLIB_CPPFLAGS}
 add_custom_command(
 	OUTPUT gwrite_genarray.fh
 	COMMAND rm -f gwrite_genarray.fh gread_genarray.fh 
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/genarray/genarray3d.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/genarray/genarray3d.xml
 	DEPENDS genarray3d.xml
 	)
 
 add_custom_command(
         OUTPUT gread_genarray.fh 
 	COMMAND rm -f gwrite_genarray.fh gread_genarray.fh 
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/genarray/genarray3d.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/genarray/genarray3d.xml
 	DEPENDS genarray3d.xml
 	)
 
diff --git a/tests/genarray/Makefile.am b/tests/genarray/Makefile.am
index 9b569c2..13c1e8e 100644
--- a/tests/genarray/Makefile.am
+++ b/tests/genarray/Makefile.am
@@ -9,25 +9,25 @@ genarray_SOURCES = genarray.F90
 genarray_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 genarray_CFLAGS = $(ADIOSLIB_CFLAGS)
 genarray_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-genarray_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+genarray_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 genarray2D_SOURCES = genarray2D.F90
 genarray2D_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 genarray2D_CFLAGS = $(ADIOSLIB_CFLAGS)
 genarray2D_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-genarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+genarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 copyarray_SOURCES = copyarray.F90
 copyarray_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 copyarray_CFLAGS = $(ADIOSLIB_CFLAGS)
 copyarray_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-copyarray_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+copyarray_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 copyarray2D_SOURCES = copyarray2D.F90
 copyarray2D_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 copyarray2D_CFLAGS = $(ADIOSLIB_CFLAGS)
 copyarray2D_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-copyarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+copyarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 FC=$(MPIFC)
 
diff --git a/tests/genarray/Makefile.in b/tests/genarray/Makefile.in
index 5d0f107..90902cd 100644
--- a/tests/genarray/Makefile.in
+++ b/tests/genarray/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ host_triplet = @host@
 noinst_PROGRAMS = genarray$(EXEEXT) genarray2D$(EXEEXT) \
 	copyarray$(EXEEXT) copyarray2D$(EXEEXT)
 subdir = tests/genarray
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,43 +131,90 @@ copyarray_OBJECTS = $(am_copyarray_OBJECTS)
 am__DEPENDENCIES_1 =
 copyarray_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-copyarray_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+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 = 
+copyarray_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(copyarray_LDFLAGS) $(LDFLAGS) -o $@
 am_copyarray2D_OBJECTS = copyarray2D-copyarray2D.$(OBJEXT)
 copyarray2D_OBJECTS = $(am_copyarray2D_OBJECTS)
 copyarray2D_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-copyarray2D_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+copyarray2D_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(copyarray2D_LDFLAGS) $(LDFLAGS) -o $@
 am_genarray_OBJECTS = genarray-genarray.$(OBJEXT)
 genarray_OBJECTS = $(am_genarray_OBJECTS)
 genarray_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-genarray_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+genarray_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(genarray_LDFLAGS) $(LDFLAGS) -o $@
 am_genarray2D_OBJECTS = genarray2D-genarray2D.$(OBJEXT)
 genarray2D_OBJECTS = $(am_genarray2D_OBJECTS)
 genarray2D_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-genarray2D_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+genarray2D_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(genarray2D_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 SOURCES = $(copyarray_SOURCES) $(copyarray2D_SOURCES) \
 	$(genarray_SOURCES) $(genarray2D_SOURCES)
 DIST_SOURCES = $(copyarray_SOURCES) $(copyarray2D_SOURCES) \
 	$(genarray_SOURCES) $(genarray2D_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -133,6 +222,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -157,6 +247,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -165,6 +256,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -197,6 +290,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -250,17 +344,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -291,6 +388,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -311,10 +409,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -323,9 +424,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -337,6 +435,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -371,14 +470,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -394,22 +496,22 @@ genarray_SOURCES = genarray.F90
 genarray_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 genarray_CFLAGS = $(ADIOSLIB_CFLAGS)
 genarray_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-genarray_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+genarray_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 genarray2D_SOURCES = genarray2D.F90
 genarray2D_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 genarray2D_CFLAGS = $(ADIOSLIB_CFLAGS)
 genarray2D_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-genarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+genarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 copyarray_SOURCES = copyarray.F90
 copyarray_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 copyarray_CFLAGS = $(ADIOSLIB_CFLAGS)
 copyarray_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-copyarray_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+copyarray_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 copyarray2D_SOURCES = copyarray2D.F90
 copyarray2D_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 copyarray2D_CFLAGS = $(ADIOSLIB_CFLAGS)
 copyarray2D_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-copyarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+copyarray2D_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 FCLINK = \
 	$(LIBTOOL) --mode=link --tag F77 $(FC) \
 	$(AM_FCFLAGS) $(FCFLAGS) $(LDFLAGS) -o $@
@@ -459,18 +561,22 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-copyarray$(EXEEXT): $(copyarray_OBJECTS) $(copyarray_DEPENDENCIES) 
+
+copyarray$(EXEEXT): $(copyarray_OBJECTS) $(copyarray_DEPENDENCIES) $(EXTRA_copyarray_DEPENDENCIES) 
 	@rm -f copyarray$(EXEEXT)
-	$(copyarray_LINK) $(copyarray_OBJECTS) $(copyarray_LDADD) $(LIBS)
-copyarray2D$(EXEEXT): $(copyarray2D_OBJECTS) $(copyarray2D_DEPENDENCIES) 
+	$(AM_V_FCLD)$(copyarray_LINK) $(copyarray_OBJECTS) $(copyarray_LDADD) $(LIBS)
+
+copyarray2D$(EXEEXT): $(copyarray2D_OBJECTS) $(copyarray2D_DEPENDENCIES) $(EXTRA_copyarray2D_DEPENDENCIES) 
 	@rm -f copyarray2D$(EXEEXT)
-	$(copyarray2D_LINK) $(copyarray2D_OBJECTS) $(copyarray2D_LDADD) $(LIBS)
-genarray$(EXEEXT): $(genarray_OBJECTS) $(genarray_DEPENDENCIES) 
+	$(AM_V_FCLD)$(copyarray2D_LINK) $(copyarray2D_OBJECTS) $(copyarray2D_LDADD) $(LIBS)
+
+genarray$(EXEEXT): $(genarray_OBJECTS) $(genarray_DEPENDENCIES) $(EXTRA_genarray_DEPENDENCIES) 
 	@rm -f genarray$(EXEEXT)
-	$(genarray_LINK) $(genarray_OBJECTS) $(genarray_LDADD) $(LIBS)
-genarray2D$(EXEEXT): $(genarray2D_OBJECTS) $(genarray2D_DEPENDENCIES) 
+	$(AM_V_FCLD)$(genarray_LINK) $(genarray_OBJECTS) $(genarray_LDADD) $(LIBS)
+
+genarray2D$(EXEEXT): $(genarray2D_OBJECTS) $(genarray2D_DEPENDENCIES) $(EXTRA_genarray2D_DEPENDENCIES) 
 	@rm -f genarray2D$(EXEEXT)
-	$(genarray2D_LINK) $(genarray2D_OBJECTS) $(genarray2D_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(genarray2D_LINK) $(genarray2D_OBJECTS) $(genarray2D_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -479,37 +585,37 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 copyarray-copyarray.o: copyarray.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray-copyarray.o `test -f 'copyarray.F90' || echo '$(srcdir)/'`copyarray.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray-copyarray.o `test -f 'copyarray.F90' || echo '$(srcdir)/'`copyarray.F90
 
 copyarray-copyarray.obj: copyarray.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray-copyarray.obj `if test -f 'copyarray.F90'; then $(CYGPATH_W) 'copyarray.F90'; else $(CYGPATH_W) '$(srcdir)/copyarray.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray-copyarray.obj `if test -f 'copyarray.F90'; then $(CYGPATH_W) 'copyarray.F90'; else $(CYGPATH_W) '$(srcdir)/copyarray.F90'; fi`
 
 copyarray2D-copyarray2D.o: copyarray2D.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray2D-copyarray2D.o `test -f 'copyarray2D.F90' || echo '$(srcdir)/'`copyarray2D.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray2D-copyarray2D.o `test -f 'copyarray2D.F90' || echo '$(srcdir)/'`copyarray2D.F90
 
 copyarray2D-copyarray2D.obj: copyarray2D.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray2D-copyarray2D.obj `if test -f 'copyarray2D.F90'; then $(CYGPATH_W) 'copyarray2D.F90'; else $(CYGPATH_W) '$(srcdir)/copyarray2D.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copyarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o copyarray2D-copyarray2D.obj `if test -f 'copyarray2D.F90'; then $(CYGPATH_W) 'copyarray2D.F90'; else $(CYGPATH_W) '$(srcdir)/copyarray2D.F90'; fi`
 
 genarray-genarray.o: genarray.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray-genarray.o `test -f 'genarray.F90' || echo '$(srcdir)/'`genarray.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray-genarray.o `test -f 'genarray.F90' || echo '$(srcdir)/'`genarray.F90
 
 genarray-genarray.obj: genarray.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray-genarray.obj `if test -f 'genarray.F90'; then $(CYGPATH_W) 'genarray.F90'; else $(CYGPATH_W) '$(srcdir)/genarray.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray-genarray.obj `if test -f 'genarray.F90'; then $(CYGPATH_W) 'genarray.F90'; else $(CYGPATH_W) '$(srcdir)/genarray.F90'; fi`
 
 genarray2D-genarray2D.o: genarray2D.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray2D-genarray2D.o `test -f 'genarray2D.F90' || echo '$(srcdir)/'`genarray2D.F90
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray2D-genarray2D.o `test -f 'genarray2D.F90' || echo '$(srcdir)/'`genarray2D.F90
 
 genarray2D-genarray2D.obj: genarray2D.F90
-	$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray2D-genarray2D.obj `if test -f 'genarray2D.F90'; then $(CYGPATH_W) 'genarray2D.F90'; else $(CYGPATH_W) '$(srcdir)/genarray2D.F90'; fi`
+	$(AM_V_PPFC)$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genarray2D_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o genarray2D-genarray2D.obj `if test -f 'genarray2D.F90'; then $(CYGPATH_W) 'genarray2D.F90'; else $(CYGPATH_W) '$(srcdir)/genarray2D.F90'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -517,26 +623,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -548,15 +643,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -565,6 +656,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -613,10 +719,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -700,9 +811,9 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -712,7 +823,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 genarray.F90: gwrite_genarray.fh
diff --git a/tests/genarray/genarray.xml b/tests/genarray/genarray.xml
index b38b147..66f994d 100644
--- a/tests/genarray/genarray.xml
+++ b/tests/genarray/genarray.xml
@@ -52,6 +52,6 @@
   <method group="genarray" method="MPI"></method>
   <!--method group="genarray" method="VAR_MERGE">chunk_size=1048576,io_method=MPI_LUSTRE,io_parameters=stripe_count=16,stripe_size=1048576</method-->
 
-  <buffer size-MB="400" allocate-time="now"/>
+  <buffer max-size-MB="400"/>
 
 </adios-config>
diff --git a/tests/genarray/genarray3d.xml b/tests/genarray/genarray3d.xml
index 179b5dc..e32b310 100644
--- a/tests/genarray/genarray3d.xml
+++ b/tests/genarray/genarray3d.xml
@@ -45,6 +45,6 @@
   <method group="genarray" method="MPI"></method>
   <!--method group="genarray" method="VAR_MERGE">chunk_size=1048576;io_method=MPI_LUSTRE;io_parameters=stripe_count=16,stripe_size=1048576</method-->
 
-  <buffer size-MB="20" allocate-time="now"/>
+  <buffer max-size-MB="20"/>
 
 </adios-config>
diff --git a/tests/suite/Makefile.in b/tests/suite/Makefile.in
index 80689df..3d55113 100644
--- a/tests/suite/Makefile.in
+++ b/tests/suite/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests/suite
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -430,22 +523,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -460,57 +556,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -526,12 +577,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -543,15 +589,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -560,6 +602,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -596,13 +653,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -637,10 +691,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -718,22 +777,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am 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 installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-am clean clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/suite/programs/CMakeLists.txt b/tests/suite/programs/CMakeLists.txt
index 16435e0..8ee6a89 100644
--- a/tests/suite/programs/CMakeLists.txt
+++ b/tests/suite/programs/CMakeLists.txt
@@ -34,10 +34,7 @@ set(WRITE_PROGS2 adios_staged_read
 
 set(WRITE_PROGS ${WRITE_PROGS1}
                 ${WRITE_PROGS2}
-                copy_subvolume
-                transforms_specparse
-                hashtest
-                group_free_test)
+                )
 
 if(BUILD_WRITE)
   foreach (PROG ${WRITE_PROGS} )
@@ -58,11 +55,6 @@ if(BUILD_WRITE)
     target_link_libraries(${PROG} adiosread ${ADIOSREADLIB_LDADD} ${MPI_C_LIBRARIES})
   endforeach()
 
-  target_link_libraries(copy_subvolume adiosread_nompi ${ADIOSREADLIB_SEQ_LDADD})
-  target_link_libraries(transforms_specparse adios_nompi ${ADIOSLIB_SEQ_LDADD})
-#  target_link_libraries(hashtest ${PROJECT_BINARY_DIR}/src/libadios_a-qhashtbl.o)
-  target_link_libraries(hashtest adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES})
-  target_link_libraries(group_free_test adios_nompi ${ADIOSLIB_SEQ_LDADD})
 endif(BUILD_WRITE)
 
 if(BUILD_FORTRAN)
@@ -72,7 +64,7 @@ if(BUILD_FORTRAN)
     include_directories(${PROJECT_BINARY_DIR}/src)
     add_custom_command(
 	OUTPUT gwrite_posix_method.fh
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/posix_method.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/posix_method.xml
 	DEPENDS posix_method.xml
 	)
   endif(BUILD_WRITE)
diff --git a/tests/suite/programs/Makefile.am b/tests/suite/programs/Makefile.am
index 5e4e911..429bde5 100644
--- a/tests/suite/programs/Makefile.am
+++ b/tests/suite/programs/Makefile.am
@@ -1,6 +1,7 @@
-# Add your codes that you want to build at 'make check'
+# Add your parallel codes that you want to build at 'make check'
 # Do not build Fortran codes if Fortran is not supported.
 # Do not build a code using the write API if only the read API is available
+# Sequential tests of src/ should go into tests/test_src
 # Steps:
 # 1. add code name below to check_readonly_C/check_C/check_readonly_Fortran/check_Fortran targets
 # 2. add code name to TESTS if it is a sequential test 
@@ -32,9 +33,9 @@ check_C=local_array_time \
 	steps_read_stream \
 	blocks \
 	build_standard_dataset \
-	transforms_writeblock_read
+	transforms_writeblock_read 
 
-test_C=hashtest copy_subvolume transforms_specparse group_free_test
+test_C=
 
 SUBDIRS=examples
 
@@ -42,16 +43,17 @@ endif
 
 if BUILD_FORTRAN
 check_readonly_Fortran=
+test_F=
 if BUILD_WRITE
 check_Fortran=posix_method
 endif
 endif
 
-check_PROGRAMS=$(check_C) $(check_Fortran) $(check_readonly_C) $(check_readonly_Fortran) $(test_C)
+check_PROGRAMS=$(check_C) $(check_Fortran) $(check_readonly_C) $(check_readonly_Fortran) $(test_C) $(test_F)
 
 # Sequential tests to be executed by "make check" can be defined right here in TESTS
 # Parallel tests should be defined in ../tests/*.sh and executed by ../test.sh
-TESTS=$(test_C)
+TESTS=$(test_C) $(test_F)
 
 AM_CPPFLAGS = $(all_includes)
 AM_CPPFLAGS += -I$(top_builddir)/src/public  -I$(top_builddir)/src -I$(top_srcdir)/src/public
@@ -66,23 +68,23 @@ all-local:
 # posix_method
 posix_method_SOURCES=posix_method.F90
 posix_method_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-posix_method_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+posix_method_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 posix_method.o: gwrite_posix_method.fh 
 gwrite_posix_method.fh: posix_method.xml
 	$(top_builddir)/utils/gpp/gpp.py $(srcdir)/posix_method.xml
 
 local_array_time_SOURCES=local_array_time.c
 local_array_time_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-local_array_time_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+local_array_time_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 adios_amr_write_SOURCES=adios_amr_write.c
 adios_amr_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_amr_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+adios_amr_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_amr_write.o: adios_amr_write.c
 
 adios_amr_write_2vars_SOURCES=adios_amr_write_2vars.c
 adios_amr_write_2vars_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_amr_write_2vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+adios_amr_write_2vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_amr_write_2vars.o: adios_amr_write_2vars.c
 
 adios_staged_read_SOURCES=adios_staged_read.c
@@ -102,67 +104,67 @@ adios_staged_read_2vars.o: adios_staged_read_2vars.c
 
 adios_transforms_read_write_SOURCES=adios_transforms_read_write.c
 adios_transforms_read_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_transforms_read_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+adios_transforms_read_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_transforms_read_write.o: adios_transforms_read_write.c 
 
 write_read_SOURCES=write_read.c
 write_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-write_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+write_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 write_read.o: write_read.c
 
 write_alternate_SOURCES=write_alternate.c
 write_alternate_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-write_alternate_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+write_alternate_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 write_alternate.o: write_alternate.c
 
 set_path_SOURCES=set_path.c
 set_path_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-set_path_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+set_path_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 set_path.o: set_path.c
 
 set_path_var_SOURCES=set_path_var.c
 set_path_var_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-set_path_var_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+set_path_var_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 set_path_var.o: set_path_var.c
 
 two_groups_SOURCES=two_groups.c
 two_groups_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-two_groups_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+two_groups_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 two_groups.o: two_groups.c
 
 many_vars_SOURCES=many_vars.c
 many_vars_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-many_vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+many_vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 many_vars.o: many_vars.c
 
 selections_SOURCES=selections.c
 selections_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-selections_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+selections_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 selections.o: selections.c
 
 path_test_SOURCES=path_test.c
 path_test_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-path_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+path_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 path_test.o: path_test.c
 
 reuse_dim_SOURCES=reuse_dim.c
 reuse_dim_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reuse_dim_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+reuse_dim_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reuse_dim.o: reuse_dim.c
 
 connect_to_space_subset_SOURCES=connect_to_space_subset.c
 connect_to_space_subset_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-connect_to_space_subset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+connect_to_space_subset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 connect_to_space_subset.o: connect_to_space_subset.c
 
 big_file_SOURCES=big_file.c
 big_file_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-big_file_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+big_file_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 big_file.o: big_file.c
 
 steps_write_SOURCES=steps_write.c
 steps_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-steps_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+steps_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 steps_write.o: steps_write.c
 
 steps_read_file_SOURCES=steps_read_file.c
@@ -177,12 +179,12 @@ steps_read_stream.o: steps_read_stream.c
 
 blocks_SOURCES=blocks.c
 blocks_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-blocks_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+blocks_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 blocks.o: blocks.c
 
 build_standard_dataset_SOURCES = build_standard_dataset.c 
 build_standard_dataset_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-build_standard_dataset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+build_standard_dataset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 transforms_writeblock_read_SOURCES = transforms_writeblock_read.c 
 transforms_writeblock_read_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD) 
@@ -191,32 +193,9 @@ transforms_writeblock_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
 #transforms_SOURCES=transforms.c
 #transforms_CPPFLAGS = -DADIOS_USE_READ_API_1
 #transforms_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-#transforms_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+#transforms_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 #transforms.o: transforms.c
 
-copy_subvolume_SOURCES=copy_subvolume.c
-copy_subvolume_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
-copy_subvolume_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
-copy_subvolume_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
-#copy_subvolume.o: copy_subvolume.c
-
-transforms_specparse_SOURCES=transforms_specparse.c
-transforms_specparse_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-transforms_specparse_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS)
-transforms_specparse_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS)
-#transforms_specparse.o: transforms_specparse.c
-
-hashtest_SOURCES=hashtest.c
-hashtest_LDADD = $(top_builddir)/src/libadios_a-qhashtbl.o
-hashtest_LDFLAGS = $(AM_LDFLAGS) 
-hashtest_CPPFLAGS = -I$(top_srcdir)/src
-hashtest.o: hashtest.c
-
-group_free_test_SOURCES=group_free_test.c
-group_free_test_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-group_free_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS)
-group_free_test_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
-group_free_test.o: group_free_test.c
 
 EXTRA_DIST = adios_amr_write.xml adios_amr_write_2vars.xml \
              posix_method.xml local_array_time.xml  \
diff --git a/tests/suite/programs/Makefile.in b/tests/suite/programs/Makefile.in
index c286f10..db0518d 100644
--- a/tests/suite/programs/Makefile.in
+++ b/tests/suite/programs/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,10 +78,11 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
-	$(am__EXEEXT_3) $(am__EXEEXT_4)
-TESTS = $(am__EXEEXT_4)
+	$(am__EXEEXT_3) $(am__EXEEXT_3) $(am__EXEEXT_3)
+TESTS = $(am__EXEEXT_3) $(am__EXEEXT_3)
 subdir = tests/suite/programs
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +105,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -104,55 +147,60 @@ CONFIG_CLEAN_VPATH_FILES =
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__EXEEXT_2 =  \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	posix_method$(EXEEXT)
 am__EXEEXT_3 =
- at BUILD_WRITE_TRUE@am__EXEEXT_4 = hashtest$(EXEEXT) \
- at BUILD_WRITE_TRUE@	copy_subvolume$(EXEEXT) \
- at BUILD_WRITE_TRUE@	transforms_specparse$(EXEEXT) \
- at BUILD_WRITE_TRUE@	group_free_test$(EXEEXT)
 am_adios_amr_write_OBJECTS = adios_amr_write.$(OBJEXT)
 adios_amr_write_OBJECTS = $(am_adios_amr_write_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_amr_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_amr_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_amr_write_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+adios_amr_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_amr_write_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_amr_write_2vars_OBJECTS = adios_amr_write_2vars.$(OBJEXT)
 adios_amr_write_2vars_OBJECTS = $(am_adios_amr_write_2vars_OBJECTS)
 adios_amr_write_2vars_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_amr_write_2vars_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_amr_write_2vars_LDFLAGS) $(LDFLAGS) -o $@
+adios_amr_write_2vars_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_amr_write_2vars_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_staged_read_OBJECTS = adios_staged_read.$(OBJEXT)
 adios_staged_read_OBJECTS = $(am_adios_staged_read_OBJECTS)
 adios_staged_read_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-adios_staged_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_staged_read_LDFLAGS) $(LDFLAGS) -o $@
+adios_staged_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_staged_read_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_adios_staged_read_2vars_OBJECTS =  \
 	adios_staged_read_2vars.$(OBJEXT)
 adios_staged_read_2vars_OBJECTS =  \
 	$(am_adios_staged_read_2vars_OBJECTS)
 adios_staged_read_2vars_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-adios_staged_read_2vars_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_staged_read_2vars_LDFLAGS) $(LDFLAGS) -o $@
+adios_staged_read_2vars_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_staged_read_2vars_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_staged_read_v2_OBJECTS = adios_staged_read_v2.$(OBJEXT)
 adios_staged_read_v2_OBJECTS = $(am_adios_staged_read_v2_OBJECTS)
 adios_staged_read_v2_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-adios_staged_read_v2_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_staged_read_v2_LDFLAGS) $(LDFLAGS) -o $@
+adios_staged_read_v2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_staged_read_v2_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_adios_transforms_read_write_OBJECTS =  \
 	adios_transforms_read_write.$(OBJEXT)
 adios_transforms_read_write_OBJECTS =  \
 	$(am_adios_transforms_read_write_OBJECTS)
 adios_transforms_read_write_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-adios_transforms_read_write_LINK = $(LIBTOOL) --tag=CC \
+adios_transforms_read_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(adios_transforms_read_write_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -160,145 +208,121 @@ am_big_file_OBJECTS = big_file.$(OBJEXT)
 big_file_OBJECTS = $(am_big_file_OBJECTS)
 big_file_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-big_file_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(big_file_LDFLAGS) \
-	$(LDFLAGS) -o $@
+big_file_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(big_file_LDFLAGS) $(LDFLAGS) -o $@
 am_blocks_OBJECTS = blocks.$(OBJEXT)
 blocks_OBJECTS = $(am_blocks_OBJECTS)
 blocks_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-blocks_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(blocks_LDFLAGS) \
-	$(LDFLAGS) -o $@
+blocks_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(blocks_LDFLAGS) $(LDFLAGS) -o $@
 am_build_standard_dataset_OBJECTS = build_standard_dataset.$(OBJEXT)
 build_standard_dataset_OBJECTS = $(am_build_standard_dataset_OBJECTS)
 build_standard_dataset_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-build_standard_dataset_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(build_standard_dataset_LDFLAGS) $(LDFLAGS) -o $@
+build_standard_dataset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(build_standard_dataset_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_connect_to_space_subset_OBJECTS =  \
 	connect_to_space_subset.$(OBJEXT)
 connect_to_space_subset_OBJECTS =  \
 	$(am_connect_to_space_subset_OBJECTS)
 connect_to_space_subset_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-connect_to_space_subset_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(connect_to_space_subset_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) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(copy_subvolume_LDFLAGS) $(LDFLAGS) -o $@
-am_group_free_test_OBJECTS =  \
-	group_free_test-group_free_test.$(OBJEXT)
-group_free_test_OBJECTS = $(am_group_free_test_OBJECTS)
-group_free_test_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
-	$(am__DEPENDENCIES_1)
-group_free_test_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(group_free_test_LDFLAGS) $(LDFLAGS) -o $@
-am_hashtest_OBJECTS = hashtest-hashtest.$(OBJEXT)
-hashtest_OBJECTS = $(am_hashtest_OBJECTS)
-hashtest_DEPENDENCIES = $(top_builddir)/src/libadios_a-qhashtbl.o
-hashtest_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(hashtest_LDFLAGS) \
+connect_to_space_subset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(connect_to_space_subset_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_local_array_time_OBJECTS = local_array_time.$(OBJEXT)
 local_array_time_OBJECTS = $(am_local_array_time_OBJECTS)
 local_array_time_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-local_array_time_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(local_array_time_LDFLAGS) $(LDFLAGS) -o $@
+local_array_time_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(local_array_time_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_many_vars_OBJECTS = many_vars.$(OBJEXT)
 many_vars_OBJECTS = $(am_many_vars_OBJECTS)
 many_vars_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-many_vars_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+many_vars_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(many_vars_LDFLAGS) $(LDFLAGS) -o $@
 am_path_test_OBJECTS = path_test.$(OBJEXT)
 path_test_OBJECTS = $(am_path_test_OBJECTS)
 path_test_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-path_test_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+path_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(path_test_LDFLAGS) $(LDFLAGS) -o $@
 am_posix_method_OBJECTS = posix_method.$(OBJEXT)
 posix_method_OBJECTS = $(am_posix_method_OBJECTS)
 posix_method_DEPENDENCIES = $(top_builddir)/src/libadiosf.a \
 	$(am__DEPENDENCIES_1)
-posix_method_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
+posix_method_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
 	$(posix_method_LDFLAGS) $(LDFLAGS) -o $@
 am_reuse_dim_OBJECTS = reuse_dim.$(OBJEXT)
 reuse_dim_OBJECTS = $(am_reuse_dim_OBJECTS)
 reuse_dim_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-reuse_dim_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+reuse_dim_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(reuse_dim_LDFLAGS) $(LDFLAGS) -o $@
 am_selections_OBJECTS = selections.$(OBJEXT)
 selections_OBJECTS = $(am_selections_OBJECTS)
 selections_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-selections_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+selections_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(selections_LDFLAGS) $(LDFLAGS) -o $@
 am_set_path_OBJECTS = set_path.$(OBJEXT)
 set_path_OBJECTS = $(am_set_path_OBJECTS)
 set_path_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-set_path_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(set_path_LDFLAGS) \
-	$(LDFLAGS) -o $@
+set_path_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(set_path_LDFLAGS) $(LDFLAGS) -o $@
 am_set_path_var_OBJECTS = set_path_var.$(OBJEXT)
 set_path_var_OBJECTS = $(am_set_path_var_OBJECTS)
 set_path_var_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-set_path_var_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+set_path_var_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(set_path_var_LDFLAGS) $(LDFLAGS) -o $@
 am_steps_read_file_OBJECTS = steps_read_file.$(OBJEXT)
 steps_read_file_OBJECTS = $(am_steps_read_file_OBJECTS)
 steps_read_file_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-steps_read_file_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(steps_read_file_LDFLAGS) $(LDFLAGS) -o $@
+steps_read_file_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(steps_read_file_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_steps_read_stream_OBJECTS = steps_read_stream.$(OBJEXT)
 steps_read_stream_OBJECTS = $(am_steps_read_stream_OBJECTS)
 steps_read_stream_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-steps_read_stream_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(steps_read_stream_LDFLAGS) $(LDFLAGS) -o $@
+steps_read_stream_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(steps_read_stream_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_steps_write_OBJECTS = steps_write.$(OBJEXT)
 steps_write_OBJECTS = $(am_steps_write_OBJECTS)
 steps_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-steps_write_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+steps_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(steps_write_LDFLAGS) $(LDFLAGS) -o $@
-am_transforms_specparse_OBJECTS =  \
-	transforms_specparse-transforms_specparse.$(OBJEXT)
-transforms_specparse_OBJECTS = $(am_transforms_specparse_OBJECTS)
-transforms_specparse_DEPENDENCIES =  \
-	$(top_builddir)/src/libadios_nompi.a $(am__DEPENDENCIES_1)
-transforms_specparse_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(transforms_specparse_LDFLAGS) $(LDFLAGS) -o $@
 am_transforms_writeblock_read_OBJECTS =  \
 	transforms_writeblock_read.$(OBJEXT)
 transforms_writeblock_read_OBJECTS =  \
 	$(am_transforms_writeblock_read_OBJECTS)
 transforms_writeblock_read_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-transforms_writeblock_read_LINK = $(LIBTOOL) --tag=CC \
+transforms_writeblock_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(transforms_writeblock_read_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -306,56 +330,85 @@ am_two_groups_OBJECTS = two_groups.$(OBJEXT)
 two_groups_OBJECTS = $(am_two_groups_OBJECTS)
 two_groups_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-two_groups_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+two_groups_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(two_groups_LDFLAGS) $(LDFLAGS) -o $@
 am_write_alternate_OBJECTS = write_alternate.$(OBJEXT)
 write_alternate_OBJECTS = $(am_write_alternate_OBJECTS)
 write_alternate_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-write_alternate_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(write_alternate_LDFLAGS) $(LDFLAGS) -o $@
+write_alternate_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(write_alternate_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_write_read_OBJECTS = write_read.$(OBJEXT)
 write_read_OBJECTS = $(am_write_read_OBJECTS)
 write_read_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-write_read_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+write_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(write_read_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_amr_write_SOURCES) $(adios_amr_write_2vars_SOURCES) \
 	$(adios_staged_read_SOURCES) \
 	$(adios_staged_read_2vars_SOURCES) \
 	$(adios_staged_read_v2_SOURCES) \
 	$(adios_transforms_read_write_SOURCES) $(big_file_SOURCES) \
 	$(blocks_SOURCES) $(build_standard_dataset_SOURCES) \
-	$(connect_to_space_subset_SOURCES) $(copy_subvolume_SOURCES) \
-	$(group_free_test_SOURCES) $(hashtest_SOURCES) \
-	$(local_array_time_SOURCES) $(many_vars_SOURCES) \
-	$(path_test_SOURCES) $(posix_method_SOURCES) \
-	$(reuse_dim_SOURCES) $(selections_SOURCES) $(set_path_SOURCES) \
+	$(connect_to_space_subset_SOURCES) $(local_array_time_SOURCES) \
+	$(many_vars_SOURCES) $(path_test_SOURCES) \
+	$(posix_method_SOURCES) $(reuse_dim_SOURCES) \
+	$(selections_SOURCES) $(set_path_SOURCES) \
 	$(set_path_var_SOURCES) $(steps_read_file_SOURCES) \
 	$(steps_read_stream_SOURCES) $(steps_write_SOURCES) \
-	$(transforms_specparse_SOURCES) \
 	$(transforms_writeblock_read_SOURCES) $(two_groups_SOURCES) \
 	$(write_alternate_SOURCES) $(write_read_SOURCES)
 DIST_SOURCES = $(adios_amr_write_SOURCES) \
@@ -364,32 +417,255 @@ DIST_SOURCES = $(adios_amr_write_SOURCES) \
 	$(adios_staged_read_v2_SOURCES) \
 	$(adios_transforms_read_write_SOURCES) $(big_file_SOURCES) \
 	$(blocks_SOURCES) $(build_standard_dataset_SOURCES) \
-	$(connect_to_space_subset_SOURCES) $(copy_subvolume_SOURCES) \
-	$(group_free_test_SOURCES) $(hashtest_SOURCES) \
-	$(local_array_time_SOURCES) $(many_vars_SOURCES) \
-	$(path_test_SOURCES) $(posix_method_SOURCES) \
-	$(reuse_dim_SOURCES) $(selections_SOURCES) $(set_path_SOURCES) \
+	$(connect_to_space_subset_SOURCES) $(local_array_time_SOURCES) \
+	$(many_vars_SOURCES) $(path_test_SOURCES) \
+	$(posix_method_SOURCES) $(reuse_dim_SOURCES) \
+	$(selections_SOURCES) $(set_path_SOURCES) \
 	$(set_path_var_SOURCES) $(steps_read_file_SOURCES) \
 	$(steps_read_stream_SOURCES) $(steps_write_SOURCES) \
-	$(transforms_specparse_SOURCES) \
 	$(transforms_writeblock_read_SOURCES) $(two_groups_SOURCES) \
 	$(write_alternate_SOURCES) $(write_read_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DIST_SUBDIRS = examples
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
@@ -421,6 +697,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -445,6 +722,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -453,6 +731,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -485,6 +765,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -538,17 +819,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -579,6 +863,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -599,10 +884,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -611,9 +899,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -625,6 +910,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -659,14 +945,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -676,9 +965,10 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
-# Add your codes that you want to build at 'make check'
+# Add your parallel codes that you want to build at 'make check'
 # Do not build Fortran codes if Fortran is not supported.
 # Do not build a code using the write API if only the read API is available
+# Sequential tests of src/ should go into tests/test_src
 # Steps:
 # 1. add code name below to check_readonly_C/check_C/check_readonly_Fortran/check_Fortran targets
 # 2. add code name to TESTS if it is a sequential test 
@@ -709,11 +999,12 @@ check_readonly_C =
 @BUILD_WRITE_TRUE@	steps_read_stream \
 @BUILD_WRITE_TRUE@	blocks \
 @BUILD_WRITE_TRUE@	build_standard_dataset \
- at BUILD_WRITE_TRUE@	transforms_writeblock_read
+ at BUILD_WRITE_TRUE@	transforms_writeblock_read 
 
- at BUILD_WRITE_TRUE@test_C = hashtest copy_subvolume transforms_specparse group_free_test
+ at BUILD_WRITE_TRUE@test_C = 
 @BUILD_WRITE_TRUE at SUBDIRS = examples
 @BUILD_FORTRAN_TRUE at check_readonly_Fortran = 
+ at BUILD_FORTRAN_TRUE@test_F = 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at check_Fortran = posix_method
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_builddir)/src -I$(top_srcdir)/src/public
@@ -725,16 +1016,16 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 # posix_method
 posix_method_SOURCES = posix_method.F90
 posix_method_LDADD = $(top_builddir)/src/libadiosf.a $(ADIOSLIB_LDADD)
-posix_method_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+posix_method_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 local_array_time_SOURCES = local_array_time.c
 local_array_time_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-local_array_time_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+local_array_time_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_amr_write_SOURCES = adios_amr_write.c
 adios_amr_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_amr_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+adios_amr_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_amr_write_2vars_SOURCES = adios_amr_write_2vars.c
 adios_amr_write_2vars_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_amr_write_2vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+adios_amr_write_2vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_staged_read_SOURCES = adios_staged_read.c
 adios_staged_read_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
 adios_staged_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
@@ -746,43 +1037,43 @@ adios_staged_read_2vars_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLI
 adios_staged_read_2vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
 adios_transforms_read_write_SOURCES = adios_transforms_read_write.c
 adios_transforms_read_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_transforms_read_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+adios_transforms_read_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 write_read_SOURCES = write_read.c
 write_read_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-write_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+write_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 write_alternate_SOURCES = write_alternate.c
 write_alternate_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-write_alternate_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+write_alternate_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 set_path_SOURCES = set_path.c
 set_path_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-set_path_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+set_path_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 set_path_var_SOURCES = set_path_var.c
 set_path_var_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-set_path_var_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+set_path_var_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 two_groups_SOURCES = two_groups.c
 two_groups_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-two_groups_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+two_groups_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 many_vars_SOURCES = many_vars.c
 many_vars_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-many_vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+many_vars_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 selections_SOURCES = selections.c
 selections_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-selections_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+selections_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 path_test_SOURCES = path_test.c
 path_test_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-path_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+path_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 reuse_dim_SOURCES = reuse_dim.c
 reuse_dim_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-reuse_dim_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+reuse_dim_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 connect_to_space_subset_SOURCES = connect_to_space_subset.c
 connect_to_space_subset_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-connect_to_space_subset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+connect_to_space_subset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 big_file_SOURCES = big_file.c
 big_file_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-big_file_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+big_file_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 steps_write_SOURCES = steps_write.c
 steps_write_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-steps_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+steps_write_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 steps_read_file_SOURCES = steps_read_file.c
 steps_read_file_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
 steps_read_file_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
@@ -791,10 +1082,10 @@ steps_read_stream_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDAD
 steps_read_stream_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
 blocks_SOURCES = blocks.c
 blocks_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-blocks_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+blocks_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 build_standard_dataset_SOURCES = build_standard_dataset.c 
 build_standard_dataset_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD) 
-build_standard_dataset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+build_standard_dataset_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 transforms_writeblock_read_SOURCES = transforms_writeblock_read.c 
 transforms_writeblock_read_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD) 
 transforms_writeblock_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
@@ -802,26 +1093,8 @@ transforms_writeblock_read_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_LDFLAGS)
 #transforms_SOURCES=transforms.c
 #transforms_CPPFLAGS = -DADIOS_USE_READ_API_1
 #transforms_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-#transforms_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS)
+#transforms_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 #transforms.o: transforms.c
-copy_subvolume_SOURCES = copy_subvolume.c
-copy_subvolume_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
-copy_subvolume_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
-copy_subvolume_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
-#copy_subvolume.o: copy_subvolume.c
-transforms_specparse_SOURCES = transforms_specparse.c
-transforms_specparse_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-transforms_specparse_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS)
-transforms_specparse_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS)
-#transforms_specparse.o: transforms_specparse.c
-hashtest_SOURCES = hashtest.c
-hashtest_LDADD = $(top_builddir)/src/libadios_a-qhashtbl.o
-hashtest_LDFLAGS = $(AM_LDFLAGS) 
-hashtest_CPPFLAGS = -I$(top_srcdir)/src
-group_free_test_SOURCES = group_free_test.c
-group_free_test_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-group_free_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS)
-group_free_test_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
 EXTRA_DIST = adios_amr_write.xml adios_amr_write_2vars.xml \
              posix_method.xml local_array_time.xml  \
              write_alternate.xml write_read.xml transforms.xml \
@@ -836,7 +1109,7 @@ FCLINK = \
 all: all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .F90 .c .lo .o .obj
+.SUFFIXES: .F90 .c .lo .log .o .obj .test .test$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -876,93 +1149,106 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_amr_write$(EXEEXT): $(adios_amr_write_OBJECTS) $(adios_amr_write_DEPENDENCIES) 
+
+adios_amr_write$(EXEEXT): $(adios_amr_write_OBJECTS) $(adios_amr_write_DEPENDENCIES) $(EXTRA_adios_amr_write_DEPENDENCIES) 
 	@rm -f adios_amr_write$(EXEEXT)
-	$(adios_amr_write_LINK) $(adios_amr_write_OBJECTS) $(adios_amr_write_LDADD) $(LIBS)
-adios_amr_write_2vars$(EXEEXT): $(adios_amr_write_2vars_OBJECTS) $(adios_amr_write_2vars_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_amr_write_LINK) $(adios_amr_write_OBJECTS) $(adios_amr_write_LDADD) $(LIBS)
+
+adios_amr_write_2vars$(EXEEXT): $(adios_amr_write_2vars_OBJECTS) $(adios_amr_write_2vars_DEPENDENCIES) $(EXTRA_adios_amr_write_2vars_DEPENDENCIES) 
 	@rm -f adios_amr_write_2vars$(EXEEXT)
-	$(adios_amr_write_2vars_LINK) $(adios_amr_write_2vars_OBJECTS) $(adios_amr_write_2vars_LDADD) $(LIBS)
-adios_staged_read$(EXEEXT): $(adios_staged_read_OBJECTS) $(adios_staged_read_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_amr_write_2vars_LINK) $(adios_amr_write_2vars_OBJECTS) $(adios_amr_write_2vars_LDADD) $(LIBS)
+
+adios_staged_read$(EXEEXT): $(adios_staged_read_OBJECTS) $(adios_staged_read_DEPENDENCIES) $(EXTRA_adios_staged_read_DEPENDENCIES) 
 	@rm -f adios_staged_read$(EXEEXT)
-	$(adios_staged_read_LINK) $(adios_staged_read_OBJECTS) $(adios_staged_read_LDADD) $(LIBS)
-adios_staged_read_2vars$(EXEEXT): $(adios_staged_read_2vars_OBJECTS) $(adios_staged_read_2vars_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_staged_read_LINK) $(adios_staged_read_OBJECTS) $(adios_staged_read_LDADD) $(LIBS)
+
+adios_staged_read_2vars$(EXEEXT): $(adios_staged_read_2vars_OBJECTS) $(adios_staged_read_2vars_DEPENDENCIES) $(EXTRA_adios_staged_read_2vars_DEPENDENCIES) 
 	@rm -f adios_staged_read_2vars$(EXEEXT)
-	$(adios_staged_read_2vars_LINK) $(adios_staged_read_2vars_OBJECTS) $(adios_staged_read_2vars_LDADD) $(LIBS)
-adios_staged_read_v2$(EXEEXT): $(adios_staged_read_v2_OBJECTS) $(adios_staged_read_v2_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_staged_read_2vars_LINK) $(adios_staged_read_2vars_OBJECTS) $(adios_staged_read_2vars_LDADD) $(LIBS)
+
+adios_staged_read_v2$(EXEEXT): $(adios_staged_read_v2_OBJECTS) $(adios_staged_read_v2_DEPENDENCIES) $(EXTRA_adios_staged_read_v2_DEPENDENCIES) 
 	@rm -f adios_staged_read_v2$(EXEEXT)
-	$(adios_staged_read_v2_LINK) $(adios_staged_read_v2_OBJECTS) $(adios_staged_read_v2_LDADD) $(LIBS)
-adios_transforms_read_write$(EXEEXT): $(adios_transforms_read_write_OBJECTS) $(adios_transforms_read_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_staged_read_v2_LINK) $(adios_staged_read_v2_OBJECTS) $(adios_staged_read_v2_LDADD) $(LIBS)
+
+adios_transforms_read_write$(EXEEXT): $(adios_transforms_read_write_OBJECTS) $(adios_transforms_read_write_DEPENDENCIES) $(EXTRA_adios_transforms_read_write_DEPENDENCIES) 
 	@rm -f adios_transforms_read_write$(EXEEXT)
-	$(adios_transforms_read_write_LINK) $(adios_transforms_read_write_OBJECTS) $(adios_transforms_read_write_LDADD) $(LIBS)
-big_file$(EXEEXT): $(big_file_OBJECTS) $(big_file_DEPENDENCIES) 
+	$(AM_V_CCLD)$(adios_transforms_read_write_LINK) $(adios_transforms_read_write_OBJECTS) $(adios_transforms_read_write_LDADD) $(LIBS)
+
+big_file$(EXEEXT): $(big_file_OBJECTS) $(big_file_DEPENDENCIES) $(EXTRA_big_file_DEPENDENCIES) 
 	@rm -f big_file$(EXEEXT)
-	$(big_file_LINK) $(big_file_OBJECTS) $(big_file_LDADD) $(LIBS)
-blocks$(EXEEXT): $(blocks_OBJECTS) $(blocks_DEPENDENCIES) 
+	$(AM_V_CCLD)$(big_file_LINK) $(big_file_OBJECTS) $(big_file_LDADD) $(LIBS)
+
+blocks$(EXEEXT): $(blocks_OBJECTS) $(blocks_DEPENDENCIES) $(EXTRA_blocks_DEPENDENCIES) 
 	@rm -f blocks$(EXEEXT)
-	$(blocks_LINK) $(blocks_OBJECTS) $(blocks_LDADD) $(LIBS)
-build_standard_dataset$(EXEEXT): $(build_standard_dataset_OBJECTS) $(build_standard_dataset_DEPENDENCIES) 
+	$(AM_V_CCLD)$(blocks_LINK) $(blocks_OBJECTS) $(blocks_LDADD) $(LIBS)
+
+build_standard_dataset$(EXEEXT): $(build_standard_dataset_OBJECTS) $(build_standard_dataset_DEPENDENCIES) $(EXTRA_build_standard_dataset_DEPENDENCIES) 
 	@rm -f build_standard_dataset$(EXEEXT)
-	$(build_standard_dataset_LINK) $(build_standard_dataset_OBJECTS) $(build_standard_dataset_LDADD) $(LIBS)
-connect_to_space_subset$(EXEEXT): $(connect_to_space_subset_OBJECTS) $(connect_to_space_subset_DEPENDENCIES) 
+	$(AM_V_CCLD)$(build_standard_dataset_LINK) $(build_standard_dataset_OBJECTS) $(build_standard_dataset_LDADD) $(LIBS)
+
+connect_to_space_subset$(EXEEXT): $(connect_to_space_subset_OBJECTS) $(connect_to_space_subset_DEPENDENCIES) $(EXTRA_connect_to_space_subset_DEPENDENCIES) 
 	@rm -f connect_to_space_subset$(EXEEXT)
-	$(connect_to_space_subset_LINK) $(connect_to_space_subset_OBJECTS) $(connect_to_space_subset_LDADD) $(LIBS)
-copy_subvolume$(EXEEXT): $(copy_subvolume_OBJECTS) $(copy_subvolume_DEPENDENCIES) 
-	@rm -f copy_subvolume$(EXEEXT)
-	$(copy_subvolume_LINK) $(copy_subvolume_OBJECTS) $(copy_subvolume_LDADD) $(LIBS)
-group_free_test$(EXEEXT): $(group_free_test_OBJECTS) $(group_free_test_DEPENDENCIES) 
-	@rm -f group_free_test$(EXEEXT)
-	$(group_free_test_LINK) $(group_free_test_OBJECTS) $(group_free_test_LDADD) $(LIBS)
-hashtest$(EXEEXT): $(hashtest_OBJECTS) $(hashtest_DEPENDENCIES) 
-	@rm -f hashtest$(EXEEXT)
-	$(hashtest_LINK) $(hashtest_OBJECTS) $(hashtest_LDADD) $(LIBS)
-local_array_time$(EXEEXT): $(local_array_time_OBJECTS) $(local_array_time_DEPENDENCIES) 
+	$(AM_V_CCLD)$(connect_to_space_subset_LINK) $(connect_to_space_subset_OBJECTS) $(connect_to_space_subset_LDADD) $(LIBS)
+
+local_array_time$(EXEEXT): $(local_array_time_OBJECTS) $(local_array_time_DEPENDENCIES) $(EXTRA_local_array_time_DEPENDENCIES) 
 	@rm -f local_array_time$(EXEEXT)
-	$(local_array_time_LINK) $(local_array_time_OBJECTS) $(local_array_time_LDADD) $(LIBS)
-many_vars$(EXEEXT): $(many_vars_OBJECTS) $(many_vars_DEPENDENCIES) 
+	$(AM_V_CCLD)$(local_array_time_LINK) $(local_array_time_OBJECTS) $(local_array_time_LDADD) $(LIBS)
+
+many_vars$(EXEEXT): $(many_vars_OBJECTS) $(many_vars_DEPENDENCIES) $(EXTRA_many_vars_DEPENDENCIES) 
 	@rm -f many_vars$(EXEEXT)
-	$(many_vars_LINK) $(many_vars_OBJECTS) $(many_vars_LDADD) $(LIBS)
-path_test$(EXEEXT): $(path_test_OBJECTS) $(path_test_DEPENDENCIES) 
+	$(AM_V_CCLD)$(many_vars_LINK) $(many_vars_OBJECTS) $(many_vars_LDADD) $(LIBS)
+
+path_test$(EXEEXT): $(path_test_OBJECTS) $(path_test_DEPENDENCIES) $(EXTRA_path_test_DEPENDENCIES) 
 	@rm -f path_test$(EXEEXT)
-	$(path_test_LINK) $(path_test_OBJECTS) $(path_test_LDADD) $(LIBS)
-posix_method$(EXEEXT): $(posix_method_OBJECTS) $(posix_method_DEPENDENCIES) 
+	$(AM_V_CCLD)$(path_test_LINK) $(path_test_OBJECTS) $(path_test_LDADD) $(LIBS)
+
+posix_method$(EXEEXT): $(posix_method_OBJECTS) $(posix_method_DEPENDENCIES) $(EXTRA_posix_method_DEPENDENCIES) 
 	@rm -f posix_method$(EXEEXT)
-	$(posix_method_LINK) $(posix_method_OBJECTS) $(posix_method_LDADD) $(LIBS)
-reuse_dim$(EXEEXT): $(reuse_dim_OBJECTS) $(reuse_dim_DEPENDENCIES) 
+	$(AM_V_FCLD)$(posix_method_LINK) $(posix_method_OBJECTS) $(posix_method_LDADD) $(LIBS)
+
+reuse_dim$(EXEEXT): $(reuse_dim_OBJECTS) $(reuse_dim_DEPENDENCIES) $(EXTRA_reuse_dim_DEPENDENCIES) 
 	@rm -f reuse_dim$(EXEEXT)
-	$(reuse_dim_LINK) $(reuse_dim_OBJECTS) $(reuse_dim_LDADD) $(LIBS)
-selections$(EXEEXT): $(selections_OBJECTS) $(selections_DEPENDENCIES) 
+	$(AM_V_CCLD)$(reuse_dim_LINK) $(reuse_dim_OBJECTS) $(reuse_dim_LDADD) $(LIBS)
+
+selections$(EXEEXT): $(selections_OBJECTS) $(selections_DEPENDENCIES) $(EXTRA_selections_DEPENDENCIES) 
 	@rm -f selections$(EXEEXT)
-	$(selections_LINK) $(selections_OBJECTS) $(selections_LDADD) $(LIBS)
-set_path$(EXEEXT): $(set_path_OBJECTS) $(set_path_DEPENDENCIES) 
+	$(AM_V_CCLD)$(selections_LINK) $(selections_OBJECTS) $(selections_LDADD) $(LIBS)
+
+set_path$(EXEEXT): $(set_path_OBJECTS) $(set_path_DEPENDENCIES) $(EXTRA_set_path_DEPENDENCIES) 
 	@rm -f set_path$(EXEEXT)
-	$(set_path_LINK) $(set_path_OBJECTS) $(set_path_LDADD) $(LIBS)
-set_path_var$(EXEEXT): $(set_path_var_OBJECTS) $(set_path_var_DEPENDENCIES) 
+	$(AM_V_CCLD)$(set_path_LINK) $(set_path_OBJECTS) $(set_path_LDADD) $(LIBS)
+
+set_path_var$(EXEEXT): $(set_path_var_OBJECTS) $(set_path_var_DEPENDENCIES) $(EXTRA_set_path_var_DEPENDENCIES) 
 	@rm -f set_path_var$(EXEEXT)
-	$(set_path_var_LINK) $(set_path_var_OBJECTS) $(set_path_var_LDADD) $(LIBS)
-steps_read_file$(EXEEXT): $(steps_read_file_OBJECTS) $(steps_read_file_DEPENDENCIES) 
+	$(AM_V_CCLD)$(set_path_var_LINK) $(set_path_var_OBJECTS) $(set_path_var_LDADD) $(LIBS)
+
+steps_read_file$(EXEEXT): $(steps_read_file_OBJECTS) $(steps_read_file_DEPENDENCIES) $(EXTRA_steps_read_file_DEPENDENCIES) 
 	@rm -f steps_read_file$(EXEEXT)
-	$(steps_read_file_LINK) $(steps_read_file_OBJECTS) $(steps_read_file_LDADD) $(LIBS)
-steps_read_stream$(EXEEXT): $(steps_read_stream_OBJECTS) $(steps_read_stream_DEPENDENCIES) 
+	$(AM_V_CCLD)$(steps_read_file_LINK) $(steps_read_file_OBJECTS) $(steps_read_file_LDADD) $(LIBS)
+
+steps_read_stream$(EXEEXT): $(steps_read_stream_OBJECTS) $(steps_read_stream_DEPENDENCIES) $(EXTRA_steps_read_stream_DEPENDENCIES) 
 	@rm -f steps_read_stream$(EXEEXT)
-	$(steps_read_stream_LINK) $(steps_read_stream_OBJECTS) $(steps_read_stream_LDADD) $(LIBS)
-steps_write$(EXEEXT): $(steps_write_OBJECTS) $(steps_write_DEPENDENCIES) 
+	$(AM_V_CCLD)$(steps_read_stream_LINK) $(steps_read_stream_OBJECTS) $(steps_read_stream_LDADD) $(LIBS)
+
+steps_write$(EXEEXT): $(steps_write_OBJECTS) $(steps_write_DEPENDENCIES) $(EXTRA_steps_write_DEPENDENCIES) 
 	@rm -f steps_write$(EXEEXT)
-	$(steps_write_LINK) $(steps_write_OBJECTS) $(steps_write_LDADD) $(LIBS)
-transforms_specparse$(EXEEXT): $(transforms_specparse_OBJECTS) $(transforms_specparse_DEPENDENCIES) 
-	@rm -f transforms_specparse$(EXEEXT)
-	$(transforms_specparse_LINK) $(transforms_specparse_OBJECTS) $(transforms_specparse_LDADD) $(LIBS)
-transforms_writeblock_read$(EXEEXT): $(transforms_writeblock_read_OBJECTS) $(transforms_writeblock_read_DEPENDENCIES) 
+	$(AM_V_CCLD)$(steps_write_LINK) $(steps_write_OBJECTS) $(steps_write_LDADD) $(LIBS)
+
+transforms_writeblock_read$(EXEEXT): $(transforms_writeblock_read_OBJECTS) $(transforms_writeblock_read_DEPENDENCIES) $(EXTRA_transforms_writeblock_read_DEPENDENCIES) 
 	@rm -f transforms_writeblock_read$(EXEEXT)
-	$(transforms_writeblock_read_LINK) $(transforms_writeblock_read_OBJECTS) $(transforms_writeblock_read_LDADD) $(LIBS)
-two_groups$(EXEEXT): $(two_groups_OBJECTS) $(two_groups_DEPENDENCIES) 
+	$(AM_V_CCLD)$(transforms_writeblock_read_LINK) $(transforms_writeblock_read_OBJECTS) $(transforms_writeblock_read_LDADD) $(LIBS)
+
+two_groups$(EXEEXT): $(two_groups_OBJECTS) $(two_groups_DEPENDENCIES) $(EXTRA_two_groups_DEPENDENCIES) 
 	@rm -f two_groups$(EXEEXT)
-	$(two_groups_LINK) $(two_groups_OBJECTS) $(two_groups_LDADD) $(LIBS)
-write_alternate$(EXEEXT): $(write_alternate_OBJECTS) $(write_alternate_DEPENDENCIES) 
+	$(AM_V_CCLD)$(two_groups_LINK) $(two_groups_OBJECTS) $(two_groups_LDADD) $(LIBS)
+
+write_alternate$(EXEEXT): $(write_alternate_OBJECTS) $(write_alternate_DEPENDENCIES) $(EXTRA_write_alternate_DEPENDENCIES) 
 	@rm -f write_alternate$(EXEEXT)
-	$(write_alternate_LINK) $(write_alternate_OBJECTS) $(write_alternate_LDADD) $(LIBS)
-write_read$(EXEEXT): $(write_read_OBJECTS) $(write_read_DEPENDENCIES) 
+	$(AM_V_CCLD)$(write_alternate_LINK) $(write_alternate_OBJECTS) $(write_alternate_LDADD) $(LIBS)
+
+write_read$(EXEEXT): $(write_read_OBJECTS) $(write_read_DEPENDENCIES) $(EXTRA_write_read_DEPENDENCIES) 
 	@rm -f write_read$(EXEEXT)
-	$(write_read_LINK) $(write_read_OBJECTS) $(write_read_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(write_read_LINK) $(write_read_OBJECTS) $(write_read_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -980,9 +1266,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/blocks.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/build_standard_dataset.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/connect_to_space_subset.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/copy_subvolume-copy_subvolume.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/group_free_test-group_free_test.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hashtest-hashtest.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/local_array_time.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/many_vars.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/path_test.Po at am__quote@
@@ -993,97 +1276,40 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/steps_read_file.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/steps_read_stream.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/steps_write.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/transforms_specparse-transforms_specparse.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/transforms_writeblock_read.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/two_groups.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/write_alternate.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/write_read.Po at am__quote@
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 .c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
- at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-copy_subvolume-copy_subvolume.o: copy_subvolume.c
- at am__fastdepCC_TRUE@	$(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
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo $(DEPDIR)/copy_subvolume-copy_subvolume.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='copy_subvolume.c' object='copy_subvolume-copy_subvolume.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o copy_subvolume-copy_subvolume.o `test -f 'copy_subvolume.c' || echo '$(srcdir)/'`copy_subvolume.c
-
-copy_subvolume-copy_subvolume.obj: copy_subvolume.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT copy_subvolume-copy_subvolume.obj -MD -MP -MF $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo -c -o copy_subvolume-copy_subvolume.obj `if test -f 'copy_subvolume.c'; then $(CYGPATH_W) 'copy_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/copy_subvolume.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo $(DEPDIR)/copy_subvolume-copy_subvolume.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='copy_subvolume.c' object='copy_subvolume-copy_subvolume.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o copy_subvolume-copy_subvolume.obj `if test -f 'copy_subvolume.c'; then $(CYGPATH_W) 'copy_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/copy_subvolume.c'; fi`
-
-group_free_test-group_free_test.o: group_free_test.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT group_free_test-group_free_test.o -MD -MP -MF $(DEPDIR)/group_free_test-group_free_test.Tpo -c -o group_free_test-group_free_test.o `test -f 'group_free_test.c' || echo '$(srcdir)/'`group_free_test.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/group_free_test-group_free_test.Tpo $(DEPDIR)/group_free_test-group_free_test.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='group_free_test.c' object='group_free_test-group_free_test.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o group_free_test-group_free_test.o `test -f 'group_free_test.c' || echo '$(srcdir)/'`group_free_test.c
-
-group_free_test-group_free_test.obj: group_free_test.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT group_free_test-group_free_test.obj -MD -MP -MF $(DEPDIR)/group_free_test-group_free_test.Tpo -c -o group_free_test-group_free_test.obj `if test -f 'group_free_test.c'; then $(CYGPATH_W) 'group_free_test.c'; else $(CYGPATH_W) '$(srcdir)/group_free_test.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/group_free_test-group_free_test.Tpo $(DEPDIR)/group_free_test-group_free_test.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='group_free_test.c' object='group_free_test-group_free_test.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o group_free_test-group_free_test.obj `if test -f 'group_free_test.c'; then $(CYGPATH_W) 'group_free_test.c'; else $(CYGPATH_W) '$(srcdir)/group_free_test.c'; fi`
-
-hashtest-hashtest.o: hashtest.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hashtest-hashtest.o -MD -MP -MF $(DEPDIR)/hashtest-hashtest.Tpo -c -o hashtest-hashtest.o `test -f 'hashtest.c' || echo '$(srcdir)/'`hashtest.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/hashtest-hashtest.Tpo $(DEPDIR)/hashtest-hashtest.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='hashtest.c' object='hashtest-hashtest.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hashtest-hashtest.o `test -f 'hashtest.c' || echo '$(srcdir)/'`hashtest.c
-
-hashtest-hashtest.obj: hashtest.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hashtest-hashtest.obj -MD -MP -MF $(DEPDIR)/hashtest-hashtest.Tpo -c -o hashtest-hashtest.obj `if test -f 'hashtest.c'; then $(CYGPATH_W) 'hashtest.c'; else $(CYGPATH_W) '$(srcdir)/hashtest.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/hashtest-hashtest.Tpo $(DEPDIR)/hashtest-hashtest.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='hashtest.c' object='hashtest-hashtest.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hashtest-hashtest.obj `if test -f 'hashtest.c'; then $(CYGPATH_W) 'hashtest.c'; else $(CYGPATH_W) '$(srcdir)/hashtest.c'; fi`
-
-transforms_specparse-transforms_specparse.o: transforms_specparse.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT transforms_specparse-transforms_specparse.o -MD -MP -MF $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo -c -o transforms_specparse-transforms_specparse.o `test -f 'transforms_specparse.c' || echo '$(srcdir)/'`transforms_specparse.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo $(DEPDIR)/transforms_specparse-transforms_specparse.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='transforms_specparse.c' object='transforms_specparse-transforms_specparse.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transforms_specparse-transforms_specparse.o `test -f 'transforms_specparse.c' || echo '$(srcdir)/'`transforms_specparse.c
-
-transforms_specparse-transforms_specparse.obj: transforms_specparse.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT transforms_specparse-transforms_specparse.obj -MD -MP -MF $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo -c -o transforms_specparse-transforms_specparse.obj `if test -f 'transforms_specparse.c'; then $(CYGPATH_W) 'transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/transforms_specparse.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo $(DEPDIR)/transforms_specparse-transforms_specparse.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='transforms_specparse.c' object='transforms_specparse-transforms_specparse.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transforms_specparse-transforms_specparse.obj `if test -f 'transforms_specparse.c'; then $(CYGPATH_W) 'transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/transforms_specparse.c'; fi`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1092,22 +1318,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -1122,57 +1351,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -1188,12 +1372,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -1205,15 +1384,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -1222,101 +1397,180 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
 	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
 	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
 	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
 	    else \
-	      skipped="($$skip tests were not run)"; \
+	      color_start= color_end=; \
 	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1350,13 +1604,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -1393,11 +1644,19 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -1480,13 +1739,12 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
-	ctags-recursive install-am install-strip tags-recursive
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-TESTS check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	ctags-recursive distclean distclean-compile distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-TESTS check-am clean clean-checkPROGRAMS \
+	clean-generic clean-libtool cscopelist-am ctags ctags-am \
+	distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -1496,7 +1754,7 @@ uninstall-am:
 	installcheck-am installdirs installdirs-am maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am
+	recheck tags tags-am uninstall uninstall-am
 
 
 all-local:
@@ -1525,8 +1783,6 @@ steps_write.o: steps_write.c
 steps_read_file.o: steps_read_file.c
 steps_read_stream.o: steps_read_stream.c
 blocks.o: blocks.c
-hashtest.o: hashtest.c
-group_free_test.o: group_free_test.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/suite/programs/adios_amr_write.xml b/tests/suite/programs/adios_amr_write.xml
index 6d96580..8f10469 100644
--- a/tests/suite/programs/adios_amr_write.xml
+++ b/tests/suite/programs/adios_amr_write.xml
@@ -15,7 +15,7 @@
 
 <method group="temperature" method="MPI_AMR">stripe_count=1;stripe_size=10485760;num_aggregators=8;merging_pgs=0;num_ost=2</method>
 
-<buffer size-MB="100" allocate-time="now"/>
+<buffer max-size-MB="100"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/adios_amr_write_2vars.xml b/tests/suite/programs/adios_amr_write_2vars.xml
index 0e55b4d..f6a36ed 100644
--- a/tests/suite/programs/adios_amr_write_2vars.xml
+++ b/tests/suite/programs/adios_amr_write_2vars.xml
@@ -17,7 +17,7 @@
 <!-- <method group="temperature" method="MPI_AMR">stripe_count=1;stripe_size=10485760;num_aggregators=8;merging_pgs=0</method> -->
 <method group="temperature" method="POSIX"/>
 
-<buffer size-MB="100" allocate-time="now"/>
+<buffer max-size-MB="100"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/adios_transforms.xml b/tests/suite/programs/adios_transforms.xml
index d01562d..045a383 100644
--- a/tests/suite/programs/adios_transforms.xml
+++ b/tests/suite/programs/adios_transforms.xml
@@ -20,7 +20,7 @@
 
 <method group="transform" method="MPI"/>
 
-<buffer size-MB="5" allocate-time="now"/>
+<buffer max-size-MB="5"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/adios_transforms_read_write.c b/tests/suite/programs/adios_transforms_read_write.c
index 6a8927e..7e088f3 100644
--- a/tests/suite/programs/adios_transforms_read_write.c
+++ b/tests/suite/programs/adios_transforms_read_write.c
@@ -30,7 +30,7 @@ const char varname_xform [][256] = { "t_none",
                                      "t_isobar"
 };
 
-int find_var (ADIOS_FILE *f, char *name)
+int find_var (ADIOS_FILE *f, const char *name)
 {
     int i;
     for (i=0; i<f->nvars; i++)
diff --git a/tests/suite/programs/big_file.c b/tests/suite/programs/big_file.c
index 11baa1e..874347b 100644
--- a/tests/suite/programs/big_file.c
+++ b/tests/suite/programs/big_file.c
@@ -119,7 +119,7 @@ int main (int argc, char ** argv)
 
     alloc_vars();
     adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 4400);
+    adios_set_max_buffer_size (4400);
     err = adios_read_init_method(ADIOS_READ_METHOD_BP, comm, "verbose=2");
     if (err) {
         printE ("%s\n", adios_errmsg());
diff --git a/tests/suite/programs/blocks.c b/tests/suite/programs/blocks.c
index c541fa2..0920033 100644
--- a/tests/suite/programs/blocks.c
+++ b/tests/suite/programs/blocks.c
@@ -90,7 +90,7 @@ int write_blocks ()
     gdims        = (uint64_t*) malloc (sizeof(uint64_t) * nsteps);
 
     adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+    adios_set_max_buffer_size (10);
 
     int64_t       m_adios_group;
     int64_t       m_adios_file;
@@ -199,6 +199,7 @@ int print_varinfo (ADIOS_FILE *f, int start_step)
 
     v = adios_inq_var (f, "t");
     adios_inq_var_blockinfo (f, v);
+    adios_inq_var_stat (f, v, 0, 1);
 
     printf ("ndim = %d\n",  v->ndim);
     printf ("dims[%llu]",  v->dims[0]);
diff --git a/tests/suite/programs/build_standard_dataset.c b/tests/suite/programs/build_standard_dataset.c
index efb0773..09271f2 100644
--- a/tests/suite/programs/build_standard_dataset.c
+++ b/tests/suite/programs/build_standard_dataset.c
@@ -99,7 +99,7 @@ static void produce_xml(
 	static const char *FOOTER_XML =
 	"	</adios-group>\n"
 	"	<method group=\"%s\" method=\"%s\"/>\n"
-	"	<buffer size-MB=\"%u\" allocate-time=\"now\"/>\n"
+	"	<buffer max-size-MB=\"%u\"/>\n"
 	"</adios-config>\n";
 
 	// Actual function begins
@@ -205,11 +205,16 @@ static void build_dataset_from_specs(
 		for (pg_in_timestep = 0; pg_in_timestep < global_spec->num_pgs_per_ts; ++pg_in_timestep) {
 			// (Re-)open the file in write or append mode, depending on whether or not this is the first PG written
 			const int is_first_pg = (timestep == 0 && pg_in_timestep == 0);
-			adios_open(&adios_file, xml_spec->group_name, bp_filename, is_first_pg ? "w" : "a", MPI_COMM_WORLD);
-
-			// Pin the timestep to allow multiple adios_open/adios_close cycles to write
-			// to the same timestep (this simulates a parallel file write with fewer core)
-			adios_pin_timestep(timestep + 1); // +1 because we want the timesteps to be 1-based
+			char mode[] = "a";
+			if (timestep == 0 && pg_in_timestep == 0)
+			    mode[0] = 'w';
+            // Pin the timestep to allow multiple adios_open/adios_close cycles to write
+            // to the same timestep (this simulates a parallel file write with fewer core)
+            //adios_pin_timestep(timestep + 1); // +1 because we want the timesteps to be 1-based
+			if (pg_in_timestep != 0)
+			    mode[0] = 'u';
+
+			adios_open(&adios_file, xml_spec->group_name, bp_filename, mode, MPI_COMM_WORLD);
 
 			const dataset_pg_spec_t *pg_spec = &pg_specs[timestep][pg_in_timestep];
 
diff --git a/tests/suite/programs/connect_to_space_subset.c b/tests/suite/programs/connect_to_space_subset.c
index e5e515e..85699d8 100644
--- a/tests/suite/programs/connect_to_space_subset.c
+++ b/tests/suite/programs/connect_to_space_subset.c
@@ -117,7 +117,7 @@ int main (int argc, char ** argv)
     alloc_vars();
     adios_read_init_method(ADIOS_READ_METHOD_DATASPACES, subcomm, "verbose=4");
     adios_init_noxml (subcomm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 1);
+    adios_set_max_buffer_size (1);
 
     if (iconnect) 
     {
diff --git a/tests/suite/programs/examples/Makefile.in b/tests/suite/programs/examples/Makefile.in
index 1db0735..6741230 100644
--- a/tests/suite/programs/examples/Makefile.in
+++ b/tests/suite/programs/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests/suite/programs/examples
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -57,14 +101,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,20 +122,58 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -127,6 +207,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -151,6 +232,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -159,6 +241,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -191,6 +275,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -244,17 +329,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -285,6 +373,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -305,10 +394,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -317,9 +409,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -331,6 +420,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -365,14 +455,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -423,22 +516,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -453,57 +549,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -519,12 +570,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -536,15 +582,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -553,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -589,13 +646,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -630,10 +684,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -711,22 +770,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tests/suite/programs/examples/attributes/CMakeLists.txt b/tests/suite/programs/examples/attributes/CMakeLists.txt
index 1e10707..e0f4e45 100644
--- a/tests/suite/programs/examples/attributes/CMakeLists.txt
+++ b/tests/suite/programs/examples/attributes/CMakeLists.txt
@@ -15,7 +15,7 @@ endif()
 target_link_libraries(attributes_write_C adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES})
 add_custom_command(
 	OUTPUT gwrite_temperature.ch
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/attributes/attributes_C.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/attributes/attributes_C.xml
 	DEPENDS attributes_C.xml
 	)
 
diff --git a/tests/suite/programs/examples/attributes/Makefile.am b/tests/suite/programs/examples/attributes/Makefile.am
index eb59840..6800b56 100644
--- a/tests/suite/programs/examples/attributes/Makefile.am
+++ b/tests/suite/programs/examples/attributes/Makefile.am
@@ -10,7 +10,7 @@ check_PROGRAMS = attributes_write_C attributes_read_C
 
 attributes_write_C_SOURCES = attributes_write_C.c
 attributes_write_C_LDADD = $(top_builddir)/src/libadios.a 
-attributes_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+attributes_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 attributes_write_C_LDADD += $(ADIOSLIB_LDADD)
 attributes_write_C.o: gwrite_temperature.ch 
 gwrite_temperature.ch: attributes_C.xml
diff --git a/tests/suite/programs/examples/attributes/Makefile.in b/tests/suite/programs/examples/attributes/Makefile.in
index 61448e4..436c430 100644
--- a/tests/suite/programs/examples/attributes/Makefile.in
+++ b/tests/suite/programs/examples/attributes/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ host_triplet = @host@
 check_PROGRAMS = attributes_write_C$(EXEEXT) \
 	attributes_read_C$(EXEEXT)
 subdir = tests/suite/programs/examples/attributes
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -87,31 +129,80 @@ attributes_read_C_OBJECTS = $(am_attributes_read_C_OBJECTS)
 am__DEPENDENCIES_1 =
 attributes_read_C_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-attributes_read_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(attributes_read_C_LDFLAGS) $(LDFLAGS) -o $@
+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_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(attributes_read_C_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_attributes_write_C_OBJECTS = attributes_write_C.$(OBJEXT)
 attributes_write_C_OBJECTS = $(am_attributes_write_C_OBJECTS)
 attributes_write_C_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-attributes_write_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(attributes_write_C_LDFLAGS) $(LDFLAGS) -o $@
+attributes_write_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(attributes_write_C_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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_C_SOURCES) $(attributes_write_C_SOURCES)
 DIST_SOURCES = $(attributes_read_C_SOURCES) \
 	$(attributes_write_C_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +210,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +235,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +244,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +278,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +332,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +376,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +397,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +412,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +423,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +458,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -380,7 +484,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 attributes_write_C_SOURCES = attributes_write_C.c
 attributes_write_C_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-attributes_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+attributes_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 attributes_read_C_SOURCES = attributes_read_C.c
 attributes_read_C_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -430,12 +534,14 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-attributes_read_C$(EXEEXT): $(attributes_read_C_OBJECTS) $(attributes_read_C_DEPENDENCIES) 
+
+attributes_read_C$(EXEEXT): $(attributes_read_C_OBJECTS) $(attributes_read_C_DEPENDENCIES) $(EXTRA_attributes_read_C_DEPENDENCIES) 
 	@rm -f attributes_read_C$(EXEEXT)
-	$(attributes_read_C_LINK) $(attributes_read_C_OBJECTS) $(attributes_read_C_LDADD) $(LIBS)
-attributes_write_C$(EXEEXT): $(attributes_write_C_OBJECTS) $(attributes_write_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(attributes_read_C_LINK) $(attributes_read_C_OBJECTS) $(attributes_read_C_LDADD) $(LIBS)
+
+attributes_write_C$(EXEEXT): $(attributes_write_C_OBJECTS) $(attributes_write_C_DEPENDENCIES) $(EXTRA_attributes_write_C_DEPENDENCIES) 
 	@rm -f attributes_write_C$(EXEEXT)
-	$(attributes_write_C_LINK) $(attributes_write_C_OBJECTS) $(attributes_write_C_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(attributes_write_C_LINK) $(attributes_write_C_OBJECTS) $(attributes_write_C_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -444,13 +550,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -458,26 +564,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -489,15 +584,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -506,6 +597,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -555,10 +661,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -642,9 +753,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -654,7 +765,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/suite/programs/examples/attributes/attributes_C.xml b/tests/suite/programs/examples/attributes/attributes_C.xml
index f9988fb..cd3dee3 100644
--- a/tests/suite/programs/examples/attributes/attributes_C.xml
+++ b/tests/suite/programs/examples/attributes/attributes_C.xml
@@ -28,7 +28,7 @@
 
     <method group="temperature" method="MPI"/>
 
-    <buffer size-MB="2" allocate-time="now"/>
+    <buffer max-size-MB="2"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/examples/global_array/CMakeLists.txt b/tests/suite/programs/examples/global_array/CMakeLists.txt
index 5edea06..8776a9d 100644
--- a/tests/suite/programs/examples/global_array/CMakeLists.txt
+++ b/tests/suite/programs/examples/global_array/CMakeLists.txt
@@ -9,7 +9,7 @@ add_executable(global_array_write_C global_array_write_C.c)
 target_link_libraries(global_array_write_C adios ${ADIOSLIB_LDADD})
 add_custom_command(
 	OUTPUT gwrite_temperature.ch
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/global_array/global_array_C.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/global_array/global_array_C.xml
 	DEPENDS global_array_C.xml
 	)
 
diff --git a/tests/suite/programs/examples/global_array/Makefile.am b/tests/suite/programs/examples/global_array/Makefile.am
index d3eea1f..7be934e 100644
--- a/tests/suite/programs/examples/global_array/Makefile.am
+++ b/tests/suite/programs/examples/global_array/Makefile.am
@@ -10,7 +10,7 @@ check_PROGRAMS = global_array_write_C global_array_read_C global_array_write_nox
 
 global_array_write_C_SOURCES = global_array_write_C.c
 global_array_write_C_LDADD = $(top_builddir)/src/libadios.a 
-global_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_write_C_LDADD += $(ADIOSLIB_LDADD)
 global_array_write_C.o: gwrite_temperature.ch 
 gwrite_temperature.ch: global_array_C.xml
@@ -23,7 +23,7 @@ global_array_read_C_LDADD += $(ADIOSREADLIB_LDADD)
 
 global_array_write_noxml_C_SOURCES = global_array_write_noxml_C.c
 global_array_write_noxml_C_LDADD = $(top_builddir)/src/libadios.a 
-global_array_write_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_write_noxml_C_LDADD += $(ADIOSLIB_LDADD)
 
 global_array_read_noxml_C_SOURCES = global_array_read_noxml_C.c
@@ -33,17 +33,17 @@ global_array_read_noxml_C_LDADD += $(ADIOSREADLIB_LDADD)
 
 global_array_write_byid_noxml_C_SOURCES = global_array_write_byid_noxml_C.c
 global_array_write_byid_noxml_C_LDADD = $(top_builddir)/src/libadios.a 
-global_array_write_byid_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_byid_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_write_byid_noxml_C_LDADD += $(ADIOSLIB_LDADD)
 
 global_array_read_byid_noxml_C_SOURCES = global_array_read_byid_noxml_C.c
 global_array_read_byid_noxml_C_LDADD = $(top_builddir)/src/libadiosread.a 
-global_array_read_byid_noxml_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
+global_array_read_byid_noxml_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_read_byid_noxml_C_LDADD += $(ADIOSREADLIB_LDADD)
 
 global_array_aggregate_by_color_C_SOURCES = global_array_aggregate_by_color_C.c
 global_array_aggregate_by_color_C_LDADD = $(top_builddir)/src/libadios.a 
-global_array_aggregate_by_color_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_aggregate_by_color_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_aggregate_by_color_C_LDADD += $(ADIOSLIB_LDADD)
 
 CLEANFILES = *.bp *.ch *.fh
@@ -56,7 +56,7 @@ check_PROGRAMS += global_array_write_F global_array_write_noxml_F global_array_w
 
 global_array_write_F_SOURCES = global_array_write_F.F90
 global_array_write_F_LDADD = $(top_builddir)/src/libadiosf.a 
-global_array_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_write_F_LDADD += $(ADIOSLIB_LDADD)
 global_array_write_F.o: gwrite_temperature.fh 
 gwrite_temperature.fh: global_array_F.xml
@@ -64,12 +64,12 @@ gwrite_temperature.fh: global_array_F.xml
 
 global_array_write_noxml_F_SOURCES = global_array_write_noxml_F.F90
 global_array_write_noxml_F_LDADD = $(top_builddir)/src/libadiosf.a 
-global_array_write_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_write_noxml_F_LDADD += $(ADIOSLIB_LDADD)
 
 global_array_write_byid_noxml_F_SOURCES = global_array_write_byid_noxml_F.F90
 global_array_write_byid_noxml_F_LDADD = $(top_builddir)/src/libadiosf.a 
-global_array_write_byid_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_byid_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_write_byid_noxml_F_LDADD += $(ADIOSLIB_LDADD)
 
 endif
diff --git a/tests/suite/programs/examples/global_array/Makefile.in b/tests/suite/programs/examples/global_array/Makefile.in
index bce3829..bf6b386 100644
--- a/tests/suite/programs/examples/global_array/Makefile.in
+++ b/tests/suite/programs/examples/global_array/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -42,7 +86,7 @@ check_PROGRAMS = global_array_write_C$(EXEEXT) \
 	global_array_aggregate_by_color_C$(EXEEXT) $(am__EXEEXT_1)
 @BUILD_FORTRAN_TRUE at am__append_1 = global_array_write_F global_array_write_noxml_F global_array_write_byid_noxml_F
 subdir = tests/suite/programs/examples/global_array
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -65,14 +109,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -98,24 +140,29 @@ global_array_aggregate_by_color_C_OBJECTS =  \
 am__DEPENDENCIES_1 =
 global_array_aggregate_by_color_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-global_array_aggregate_by_color_C_LINK = $(LIBTOOL) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) \
+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 = 
+global_array_aggregate_by_color_C_LINK = $(LIBTOOL) $(AM_V_lt) \
+	--tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(global_array_aggregate_by_color_C_LDFLAGS) $(LDFLAGS) -o $@
 am_global_array_read_C_OBJECTS = global_array_read_C.$(OBJEXT)
 global_array_read_C_OBJECTS = $(am_global_array_read_C_OBJECTS)
 global_array_read_C_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-global_array_read_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(global_array_read_C_LDFLAGS) $(LDFLAGS) -o $@
+global_array_read_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(global_array_read_C_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_global_array_read_byid_noxml_C_OBJECTS =  \
 	global_array_read_byid_noxml_C.$(OBJEXT)
 global_array_read_byid_noxml_C_OBJECTS =  \
 	$(am_global_array_read_byid_noxml_C_OBJECTS)
 global_array_read_byid_noxml_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-global_array_read_byid_noxml_C_LINK = $(LIBTOOL) --tag=CC \
+global_array_read_byid_noxml_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) \
 	$(global_array_read_byid_noxml_C_LDFLAGS) $(LDFLAGS) -o $@
@@ -125,7 +172,7 @@ global_array_read_noxml_C_OBJECTS =  \
 	$(am_global_array_read_noxml_C_OBJECTS)
 global_array_read_noxml_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-global_array_read_noxml_C_LINK = $(LIBTOOL) --tag=CC \
+global_array_read_noxml_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(global_array_read_noxml_C_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -133,9 +180,10 @@ am_global_array_write_C_OBJECTS = global_array_write_C.$(OBJEXT)
 global_array_write_C_OBJECTS = $(am_global_array_write_C_OBJECTS)
 global_array_write_C_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-global_array_write_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(global_array_write_C_LDFLAGS) $(LDFLAGS) -o $@
+global_array_write_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(global_array_write_C_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am__global_array_write_F_SOURCES_DIST = global_array_write_F.F90
 @BUILD_FORTRAN_TRUE at am_global_array_write_F_OBJECTS =  \
 @BUILD_FORTRAN_TRUE@	global_array_write_F.$(OBJEXT)
@@ -143,16 +191,17 @@ global_array_write_F_OBJECTS = $(am_global_array_write_F_OBJECTS)
 @BUILD_FORTRAN_TRUE at global_array_write_F_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-global_array_write_F_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(global_array_write_F_LDFLAGS) $(LDFLAGS) -o $@
+global_array_write_F_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(global_array_write_F_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_global_array_write_byid_noxml_C_OBJECTS =  \
 	global_array_write_byid_noxml_C.$(OBJEXT)
 global_array_write_byid_noxml_C_OBJECTS =  \
 	$(am_global_array_write_byid_noxml_C_OBJECTS)
 global_array_write_byid_noxml_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-global_array_write_byid_noxml_C_LINK = $(LIBTOOL) --tag=CC \
+global_array_write_byid_noxml_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) \
 	$(global_array_write_byid_noxml_C_LDFLAGS) $(LDFLAGS) -o $@
@@ -165,7 +214,7 @@ global_array_write_byid_noxml_F_OBJECTS =  \
 @BUILD_FORTRAN_TRUE at global_array_write_byid_noxml_F_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-global_array_write_byid_noxml_F_LINK = $(LIBTOOL) --tag=FC \
+global_array_write_byid_noxml_F_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
 	$(AM_FCFLAGS) $(FCFLAGS) \
 	$(global_array_write_byid_noxml_F_LDFLAGS) $(LDFLAGS) -o $@
@@ -175,7 +224,7 @@ global_array_write_noxml_C_OBJECTS =  \
 	$(am_global_array_write_noxml_C_OBJECTS)
 global_array_write_noxml_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-global_array_write_noxml_C_LINK = $(LIBTOOL) --tag=CC \
+global_array_write_noxml_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(global_array_write_noxml_C_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -188,28 +237,58 @@ global_array_write_noxml_F_OBJECTS =  \
 @BUILD_FORTRAN_TRUE at global_array_write_noxml_F_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-global_array_write_noxml_F_LINK = $(LIBTOOL) --tag=FC \
+global_array_write_noxml_F_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
 	$(AM_FCFLAGS) $(FCFLAGS) $(global_array_write_noxml_F_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(global_array_aggregate_by_color_C_SOURCES) \
 	$(global_array_read_C_SOURCES) \
 	$(global_array_read_byid_noxml_C_SOURCES) \
@@ -230,6 +309,28 @@ DIST_SOURCES = $(global_array_aggregate_by_color_C_SOURCES) \
 	$(am__global_array_write_byid_noxml_F_SOURCES_DIST) \
 	$(global_array_write_noxml_C_SOURCES) \
 	$(am__global_array_write_noxml_F_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -237,6 +338,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -261,6 +363,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -269,6 +372,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -301,6 +406,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -354,17 +460,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -395,6 +504,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -415,10 +525,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -427,9 +540,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -441,6 +551,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -475,14 +586,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -498,7 +612,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 global_array_write_C_SOURCES = global_array_write_C.c
 global_array_write_C_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-global_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_read_C_SOURCES = global_array_read_C.c
 global_array_read_C_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -506,7 +620,7 @@ global_array_read_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 global_array_write_noxml_C_SOURCES = global_array_write_noxml_C.c
 global_array_write_noxml_C_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-global_array_write_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_read_noxml_C_SOURCES = global_array_read_noxml_C.c
 global_array_read_noxml_C_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -514,32 +628,32 @@ global_array_read_noxml_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 global_array_write_byid_noxml_C_SOURCES = global_array_write_byid_noxml_C.c
 global_array_write_byid_noxml_C_LDADD =  \
 	$(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-global_array_write_byid_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_write_byid_noxml_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_read_byid_noxml_C_SOURCES = global_array_read_byid_noxml_C.c
 global_array_read_byid_noxml_C_LDADD =  \
 	$(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
-global_array_read_byid_noxml_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
+global_array_read_byid_noxml_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_aggregate_by_color_C_SOURCES = global_array_aggregate_by_color_C.c
 global_array_aggregate_by_color_C_LDADD =  \
 	$(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-global_array_aggregate_by_color_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_aggregate_by_color_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp *.ch *.fh
 EXTRA_DIST = global_array_C.xml global_array_F.xml 
 @BUILD_FORTRAN_TRUE at global_array_write_F_SOURCES = global_array_write_F.F90
 @BUILD_FORTRAN_TRUE at global_array_write_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(ADIOSLIB_LDADD)
- at BUILD_FORTRAN_TRUE@global_array_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+ at BUILD_FORTRAN_TRUE@global_array_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 @BUILD_FORTRAN_TRUE at global_array_write_noxml_F_SOURCES = global_array_write_noxml_F.F90
 @BUILD_FORTRAN_TRUE at global_array_write_noxml_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(ADIOSLIB_LDADD)
- at BUILD_FORTRAN_TRUE@global_array_write_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+ at BUILD_FORTRAN_TRUE@global_array_write_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 @BUILD_FORTRAN_TRUE at global_array_write_byid_noxml_F_SOURCES = global_array_write_byid_noxml_F.F90
 @BUILD_FORTRAN_TRUE at global_array_write_byid_noxml_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(ADIOSLIB_LDADD)
- at BUILD_FORTRAN_TRUE@global_array_write_byid_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+ at BUILD_FORTRAN_TRUE@global_array_write_byid_noxml_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 FCLINK = \
 	$(LIBTOOL) --mode=link --tag F77 $(FC) \
 	$(AM_FCFLAGS) $(FCFLAGS) $(LDFLAGS) -o $@
@@ -587,36 +701,46 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-global_array_aggregate_by_color_C$(EXEEXT): $(global_array_aggregate_by_color_C_OBJECTS) $(global_array_aggregate_by_color_C_DEPENDENCIES) 
+
+global_array_aggregate_by_color_C$(EXEEXT): $(global_array_aggregate_by_color_C_OBJECTS) $(global_array_aggregate_by_color_C_DEPENDENCIES) $(EXTRA_global_array_aggregate_by_color_C_DEPENDENCIES) 
 	@rm -f global_array_aggregate_by_color_C$(EXEEXT)
-	$(global_array_aggregate_by_color_C_LINK) $(global_array_aggregate_by_color_C_OBJECTS) $(global_array_aggregate_by_color_C_LDADD) $(LIBS)
-global_array_read_C$(EXEEXT): $(global_array_read_C_OBJECTS) $(global_array_read_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_aggregate_by_color_C_LINK) $(global_array_aggregate_by_color_C_OBJECTS) $(global_array_aggregate_by_color_C_LDADD) $(LIBS)
+
+global_array_read_C$(EXEEXT): $(global_array_read_C_OBJECTS) $(global_array_read_C_DEPENDENCIES) $(EXTRA_global_array_read_C_DEPENDENCIES) 
 	@rm -f global_array_read_C$(EXEEXT)
-	$(global_array_read_C_LINK) $(global_array_read_C_OBJECTS) $(global_array_read_C_LDADD) $(LIBS)
-global_array_read_byid_noxml_C$(EXEEXT): $(global_array_read_byid_noxml_C_OBJECTS) $(global_array_read_byid_noxml_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_read_C_LINK) $(global_array_read_C_OBJECTS) $(global_array_read_C_LDADD) $(LIBS)
+
+global_array_read_byid_noxml_C$(EXEEXT): $(global_array_read_byid_noxml_C_OBJECTS) $(global_array_read_byid_noxml_C_DEPENDENCIES) $(EXTRA_global_array_read_byid_noxml_C_DEPENDENCIES) 
 	@rm -f global_array_read_byid_noxml_C$(EXEEXT)
-	$(global_array_read_byid_noxml_C_LINK) $(global_array_read_byid_noxml_C_OBJECTS) $(global_array_read_byid_noxml_C_LDADD) $(LIBS)
-global_array_read_noxml_C$(EXEEXT): $(global_array_read_noxml_C_OBJECTS) $(global_array_read_noxml_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_read_byid_noxml_C_LINK) $(global_array_read_byid_noxml_C_OBJECTS) $(global_array_read_byid_noxml_C_LDADD) $(LIBS)
+
+global_array_read_noxml_C$(EXEEXT): $(global_array_read_noxml_C_OBJECTS) $(global_array_read_noxml_C_DEPENDENCIES) $(EXTRA_global_array_read_noxml_C_DEPENDENCIES) 
 	@rm -f global_array_read_noxml_C$(EXEEXT)
-	$(global_array_read_noxml_C_LINK) $(global_array_read_noxml_C_OBJECTS) $(global_array_read_noxml_C_LDADD) $(LIBS)
-global_array_write_C$(EXEEXT): $(global_array_write_C_OBJECTS) $(global_array_write_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_read_noxml_C_LINK) $(global_array_read_noxml_C_OBJECTS) $(global_array_read_noxml_C_LDADD) $(LIBS)
+
+global_array_write_C$(EXEEXT): $(global_array_write_C_OBJECTS) $(global_array_write_C_DEPENDENCIES) $(EXTRA_global_array_write_C_DEPENDENCIES) 
 	@rm -f global_array_write_C$(EXEEXT)
-	$(global_array_write_C_LINK) $(global_array_write_C_OBJECTS) $(global_array_write_C_LDADD) $(LIBS)
-global_array_write_F$(EXEEXT): $(global_array_write_F_OBJECTS) $(global_array_write_F_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_write_C_LINK) $(global_array_write_C_OBJECTS) $(global_array_write_C_LDADD) $(LIBS)
+
+global_array_write_F$(EXEEXT): $(global_array_write_F_OBJECTS) $(global_array_write_F_DEPENDENCIES) $(EXTRA_global_array_write_F_DEPENDENCIES) 
 	@rm -f global_array_write_F$(EXEEXT)
-	$(global_array_write_F_LINK) $(global_array_write_F_OBJECTS) $(global_array_write_F_LDADD) $(LIBS)
-global_array_write_byid_noxml_C$(EXEEXT): $(global_array_write_byid_noxml_C_OBJECTS) $(global_array_write_byid_noxml_C_DEPENDENCIES) 
+	$(AM_V_FCLD)$(global_array_write_F_LINK) $(global_array_write_F_OBJECTS) $(global_array_write_F_LDADD) $(LIBS)
+
+global_array_write_byid_noxml_C$(EXEEXT): $(global_array_write_byid_noxml_C_OBJECTS) $(global_array_write_byid_noxml_C_DEPENDENCIES) $(EXTRA_global_array_write_byid_noxml_C_DEPENDENCIES) 
 	@rm -f global_array_write_byid_noxml_C$(EXEEXT)
-	$(global_array_write_byid_noxml_C_LINK) $(global_array_write_byid_noxml_C_OBJECTS) $(global_array_write_byid_noxml_C_LDADD) $(LIBS)
-global_array_write_byid_noxml_F$(EXEEXT): $(global_array_write_byid_noxml_F_OBJECTS) $(global_array_write_byid_noxml_F_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_write_byid_noxml_C_LINK) $(global_array_write_byid_noxml_C_OBJECTS) $(global_array_write_byid_noxml_C_LDADD) $(LIBS)
+
+global_array_write_byid_noxml_F$(EXEEXT): $(global_array_write_byid_noxml_F_OBJECTS) $(global_array_write_byid_noxml_F_DEPENDENCIES) $(EXTRA_global_array_write_byid_noxml_F_DEPENDENCIES) 
 	@rm -f global_array_write_byid_noxml_F$(EXEEXT)
-	$(global_array_write_byid_noxml_F_LINK) $(global_array_write_byid_noxml_F_OBJECTS) $(global_array_write_byid_noxml_F_LDADD) $(LIBS)
-global_array_write_noxml_C$(EXEEXT): $(global_array_write_noxml_C_OBJECTS) $(global_array_write_noxml_C_DEPENDENCIES) 
+	$(AM_V_FCLD)$(global_array_write_byid_noxml_F_LINK) $(global_array_write_byid_noxml_F_OBJECTS) $(global_array_write_byid_noxml_F_LDADD) $(LIBS)
+
+global_array_write_noxml_C$(EXEEXT): $(global_array_write_noxml_C_OBJECTS) $(global_array_write_noxml_C_DEPENDENCIES) $(EXTRA_global_array_write_noxml_C_DEPENDENCIES) 
 	@rm -f global_array_write_noxml_C$(EXEEXT)
-	$(global_array_write_noxml_C_LINK) $(global_array_write_noxml_C_OBJECTS) $(global_array_write_noxml_C_LDADD) $(LIBS)
-global_array_write_noxml_F$(EXEEXT): $(global_array_write_noxml_F_OBJECTS) $(global_array_write_noxml_F_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_write_noxml_C_LINK) $(global_array_write_noxml_C_OBJECTS) $(global_array_write_noxml_C_LDADD) $(LIBS)
+
+global_array_write_noxml_F$(EXEEXT): $(global_array_write_noxml_F_OBJECTS) $(global_array_write_noxml_F_DEPENDENCIES) $(EXTRA_global_array_write_noxml_F_DEPENDENCIES) 
 	@rm -f global_array_write_noxml_F$(EXEEXT)
-	$(global_array_write_noxml_F_LINK) $(global_array_write_noxml_F_OBJECTS) $(global_array_write_noxml_F_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(global_array_write_noxml_F_LINK) $(global_array_write_noxml_F_OBJECTS) $(global_array_write_noxml_F_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -625,22 +749,22 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -648,26 +772,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -679,15 +792,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -696,6 +805,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -745,10 +869,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -832,9 +961,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -844,7 +973,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/suite/programs/examples/global_array/global_array_C.xml b/tests/suite/programs/examples/global_array/global_array_C.xml
index 68ed5a7..77d28c6 100644
--- a/tests/suite/programs/examples/global_array/global_array_C.xml
+++ b/tests/suite/programs/examples/global_array/global_array_C.xml
@@ -16,7 +16,7 @@
   <method group="temperature" method="MPI"/>
   <!--method group="temperature" method="MPI_AGGREGATE">stripe_count=1;stripe_size=10485760;num_aggregators=2;merging_pgs=0;num_ost=2</method-->
  
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
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 ba89106..cb368c6 100644
--- a/tests/suite/programs/examples/global_array/global_array_F.xml
+++ b/tests/suite/programs/examples/global_array/global_array_F.xml
@@ -15,7 +15,7 @@
 
   <method group="temperature" method="MPI"/>
 
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
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 e412c4d..29f504e 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
@@ -50,7 +50,7 @@ int main (int argc, char ** argv)
 	strcpy (filename, "global_array_aggregate_by_color_C.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
diff --git a/tests/suite/programs/examples/global_array/global_array_read_C.c b/tests/suite/programs/examples/global_array/global_array_read_C.c
index 426a8f9..321c831 100644
--- a/tests/suite/programs/examples/global_array/global_array_read_C.c
+++ b/tests/suite/programs/examples/global_array/global_array_read_C.c
@@ -63,7 +63,7 @@ int main (int argc, char ** argv)
     data = malloc (slice_size * v->dims[1] * sizeof (double));
     if (data == NULL)
     {
-        log_error (stderr, "malloc failed.\n");
+        log_error ("malloc failed.\n");
         return -1;
     }
 
diff --git a/tests/suite/programs/examples/global_array/global_array_read_byid_noxml_C.c b/tests/suite/programs/examples/global_array/global_array_read_byid_noxml_C.c
index 42b0fd3..f68fa7a 100644
--- a/tests/suite/programs/examples/global_array/global_array_read_byid_noxml_C.c
+++ b/tests/suite/programs/examples/global_array/global_array_read_byid_noxml_C.c
@@ -62,7 +62,7 @@ int main (int argc, char ** argv)
     data = malloc (slice_size * sizeof (double));
     if (data == NULL)
     {
-        log_error (stderr, "malloc failed.\n");
+        log_error ("malloc failed.\n");
         return -1;
     }
 
diff --git a/tests/suite/programs/examples/global_array/global_array_read_noxml_C.c b/tests/suite/programs/examples/global_array/global_array_read_noxml_C.c
index 3bb846e..50afe5d 100644
--- a/tests/suite/programs/examples/global_array/global_array_read_noxml_C.c
+++ b/tests/suite/programs/examples/global_array/global_array_read_noxml_C.c
@@ -62,7 +62,7 @@ int main (int argc, char ** argv)
     data = malloc (slice_size * sizeof (double));
     if (data == NULL)
     {
-        log_error (stderr, "malloc failed.\n");
+        log_error ("malloc failed.\n");
         return -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 24845aa..5c17e29 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
@@ -56,7 +56,7 @@ int main (int argc, char ** argv)
 	strcpy (filename, "global_array_byid_noxml_C.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
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 3402b89..9e51cf4 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
@@ -41,7 +41,7 @@ program no_xml_write_byid
     call MPI_Comm_size (comm, size, ierr)
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (10, adios_err)
+    call adios_set_max_buffer_size (10) 
 
     call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
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 83035c1..88c86f4 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
@@ -50,7 +50,7 @@ int main (int argc, char ** argv)
 	strcpy (filename, "global_array_noxml_C.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
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 da5e123..8ec3c01 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
@@ -35,7 +35,7 @@ program adios_global
     call MPI_Comm_size (comm, size, ierr)
 
     call adios_init_noxml (comm, adios_err)
-    call adios_allocate_buffer (10, adios_err)
+    call adios_set_max_buffer_size (10) 
 
     call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
diff --git a/tests/suite/programs/examples/global_array_time/CMakeLists.txt b/tests/suite/programs/examples/global_array_time/CMakeLists.txt
index 7f9890b..531f511 100644
--- a/tests/suite/programs/examples/global_array_time/CMakeLists.txt
+++ b/tests/suite/programs/examples/global_array_time/CMakeLists.txt
@@ -9,7 +9,7 @@ add_executable(global_array_time_write_C global_array_time_write_C.c)
 target_link_libraries(global_array_time_write_C adios ${ADIOSLIB_LDADD})
 add_custom_command(
         OUTPUT gwrite_restart.ch
-        COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py
+        COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py
         ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/global_array_time/global_array_time_C.xml
         DEPENDS global_array_C.xml
         )
@@ -38,7 +38,7 @@ if(BUILD_FORTRAN)
     target_link_libraries(global_array_time_write_F adiosf ${ADIOSLIB_LDADD})
     add_custom_command(
         OUTPUT gwrite_restart.fh
-        COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py
+        COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py
         ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/global_array_time/global_array_time_F.xml
         DEPENDS global_array_F.xml
         )
diff --git a/tests/suite/programs/examples/global_array_time/Makefile.am b/tests/suite/programs/examples/global_array_time/Makefile.am
index 9cab5a9..73b0fde 100644
--- a/tests/suite/programs/examples/global_array_time/Makefile.am
+++ b/tests/suite/programs/examples/global_array_time/Makefile.am
@@ -10,7 +10,7 @@ check_PROGRAMS = global_array_time_write_C global_array_time_read_as_file_C glob
 
 global_array_time_write_C_SOURCES = global_array_time_write_C.c
 global_array_time_write_C_LDADD = $(top_builddir)/src/libadios.a
-global_array_time_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_time_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_time_write_C_LDADD += $(ADIOSLIB_LDADD)
 global_array_time_write_C.o: gwrite_restart.ch
 gwrite_restart.ch: global_array_time_C.xml
@@ -35,7 +35,7 @@ check_PROGRAMS += global_array_time_write_F
 
 global_array_time_write_F_SOURCES = global_array_time_write_F.F90
 global_array_time_write_F_LDADD = $(top_builddir)/src/libadiosf.a
-global_array_time_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_time_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_time_write_F_LDADD += $(ADIOSLIB_LDADD)
 global_array_time_write_F.o: gwrite_restart.fh
 gwrite_restart.fh: global_array_time_F.xml
diff --git a/tests/suite/programs/examples/global_array_time/Makefile.in b/tests/suite/programs/examples/global_array_time/Makefile.in
index 0dc344f..ec95d33 100644
--- a/tests/suite/programs/examples/global_array_time/Makefile.in
+++ b/tests/suite/programs/examples/global_array_time/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -38,7 +82,7 @@ check_PROGRAMS = global_array_time_write_C$(EXEEXT) \
 	global_array_time_read_as_stream_C$(EXEEXT) $(am__EXEEXT_1)
 @BUILD_FORTRAN_TRUE at am__append_1 = global_array_time_write_F
 subdir = tests/suite/programs/examples/global_array_time
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +105,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -92,7 +134,11 @@ global_array_time_read_as_file_C_OBJECTS =  \
 am__DEPENDENCIES_1 =
 global_array_time_read_as_file_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-global_array_time_read_as_file_C_LINK = $(LIBTOOL) --tag=CC \
+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 = 
+global_array_time_read_as_file_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) \
 	$(global_array_time_read_as_file_C_LDFLAGS) $(LDFLAGS) -o $@
@@ -102,9 +148,9 @@ global_array_time_read_as_stream_C_OBJECTS =  \
 	$(am_global_array_time_read_as_stream_C_OBJECTS)
 global_array_time_read_as_stream_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-global_array_time_read_as_stream_C_LINK = $(LIBTOOL) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) \
+global_array_time_read_as_stream_C_LINK = $(LIBTOOL) $(AM_V_lt) \
+	--tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(global_array_time_read_as_stream_C_LDFLAGS) $(LDFLAGS) -o $@
 am_global_array_time_write_C_OBJECTS =  \
 	global_array_time_write_C.$(OBJEXT)
@@ -112,7 +158,7 @@ global_array_time_write_C_OBJECTS =  \
 	$(am_global_array_time_write_C_OBJECTS)
 global_array_time_write_C_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios.a $(am__DEPENDENCIES_1)
-global_array_time_write_C_LINK = $(LIBTOOL) --tag=CC \
+global_array_time_write_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(global_array_time_write_C_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -125,28 +171,58 @@ global_array_time_write_F_OBJECTS =  \
 @BUILD_FORTRAN_TRUE at global_array_time_write_F_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-global_array_time_write_F_LINK = $(LIBTOOL) --tag=FC \
+global_array_time_write_F_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
 	$(AM_FCFLAGS) $(FCFLAGS) $(global_array_time_write_F_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(global_array_time_read_as_file_C_SOURCES) \
 	$(global_array_time_read_as_stream_C_SOURCES) \
 	$(global_array_time_write_C_SOURCES) \
@@ -155,6 +231,28 @@ DIST_SOURCES = $(global_array_time_read_as_file_C_SOURCES) \
 	$(global_array_time_read_as_stream_C_SOURCES) \
 	$(global_array_time_write_C_SOURCES) \
 	$(am__global_array_time_write_F_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -162,6 +260,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -186,6 +285,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -194,6 +294,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -226,6 +328,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -279,17 +382,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -320,6 +426,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -340,10 +447,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -352,9 +462,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -366,6 +473,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -400,14 +508,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -423,7 +534,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 global_array_time_write_C_SOURCES = global_array_time_write_C.c
 global_array_time_write_C_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-global_array_time_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+global_array_time_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 global_array_time_read_as_file_C_SOURCES = global_array_time_read_as_file_C.c
 global_array_time_read_as_file_C_LDADD =  \
 	$(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
@@ -438,7 +549,7 @@ EXTRA_DIST = global_array_time_C.xml global_array_time_F.xml
 @BUILD_FORTRAN_TRUE at global_array_time_write_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(ADIOSLIB_LDADD)
- at BUILD_FORTRAN_TRUE@global_array_time_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+ at BUILD_FORTRAN_TRUE@global_array_time_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 FCLINK = \
         $(LIBTOOL) --mode=link --tag F77 $(FC) \
         $(AM_FCFLAGS) $(FCFLAGS) $(LDFLAGS) -o $@
@@ -486,18 +597,22 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-global_array_time_read_as_file_C$(EXEEXT): $(global_array_time_read_as_file_C_OBJECTS) $(global_array_time_read_as_file_C_DEPENDENCIES) 
+
+global_array_time_read_as_file_C$(EXEEXT): $(global_array_time_read_as_file_C_OBJECTS) $(global_array_time_read_as_file_C_DEPENDENCIES) $(EXTRA_global_array_time_read_as_file_C_DEPENDENCIES) 
 	@rm -f global_array_time_read_as_file_C$(EXEEXT)
-	$(global_array_time_read_as_file_C_LINK) $(global_array_time_read_as_file_C_OBJECTS) $(global_array_time_read_as_file_C_LDADD) $(LIBS)
-global_array_time_read_as_stream_C$(EXEEXT): $(global_array_time_read_as_stream_C_OBJECTS) $(global_array_time_read_as_stream_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_time_read_as_file_C_LINK) $(global_array_time_read_as_file_C_OBJECTS) $(global_array_time_read_as_file_C_LDADD) $(LIBS)
+
+global_array_time_read_as_stream_C$(EXEEXT): $(global_array_time_read_as_stream_C_OBJECTS) $(global_array_time_read_as_stream_C_DEPENDENCIES) $(EXTRA_global_array_time_read_as_stream_C_DEPENDENCIES) 
 	@rm -f global_array_time_read_as_stream_C$(EXEEXT)
-	$(global_array_time_read_as_stream_C_LINK) $(global_array_time_read_as_stream_C_OBJECTS) $(global_array_time_read_as_stream_C_LDADD) $(LIBS)
-global_array_time_write_C$(EXEEXT): $(global_array_time_write_C_OBJECTS) $(global_array_time_write_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_time_read_as_stream_C_LINK) $(global_array_time_read_as_stream_C_OBJECTS) $(global_array_time_read_as_stream_C_LDADD) $(LIBS)
+
+global_array_time_write_C$(EXEEXT): $(global_array_time_write_C_OBJECTS) $(global_array_time_write_C_DEPENDENCIES) $(EXTRA_global_array_time_write_C_DEPENDENCIES) 
 	@rm -f global_array_time_write_C$(EXEEXT)
-	$(global_array_time_write_C_LINK) $(global_array_time_write_C_OBJECTS) $(global_array_time_write_C_LDADD) $(LIBS)
-global_array_time_write_F$(EXEEXT): $(global_array_time_write_F_OBJECTS) $(global_array_time_write_F_DEPENDENCIES) 
+	$(AM_V_CCLD)$(global_array_time_write_C_LINK) $(global_array_time_write_C_OBJECTS) $(global_array_time_write_C_LDADD) $(LIBS)
+
+global_array_time_write_F$(EXEEXT): $(global_array_time_write_F_OBJECTS) $(global_array_time_write_F_DEPENDENCIES) $(EXTRA_global_array_time_write_F_DEPENDENCIES) 
 	@rm -f global_array_time_write_F$(EXEEXT)
-	$(global_array_time_write_F_LINK) $(global_array_time_write_F_OBJECTS) $(global_array_time_write_F_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(global_array_time_write_F_LINK) $(global_array_time_write_F_OBJECTS) $(global_array_time_write_F_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -506,22 +621,22 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -529,26 +644,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -560,15 +664,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -577,6 +677,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -626,10 +741,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -713,9 +833,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -725,7 +845,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/suite/programs/examples/global_array_time/global_array_time_C.xml b/tests/suite/programs/examples/global_array_time/global_array_time_C.xml
index 8f1dd01..5dea7b4 100644
--- a/tests/suite/programs/examples/global_array_time/global_array_time_C.xml
+++ b/tests/suite/programs/examples/global_array_time/global_array_time_C.xml
@@ -21,7 +21,7 @@
 
   <method group="restart" method="MPI"/>
 
-  <buffer size-MB="5" allocate-time="now"/>
+  <buffer max-size-MB="5"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/examples/global_array_time/global_array_time_F.xml b/tests/suite/programs/examples/global_array_time/global_array_time_F.xml
index c7cc978..a999a60 100644
--- a/tests/suite/programs/examples/global_array_time/global_array_time_F.xml
+++ b/tests/suite/programs/examples/global_array_time/global_array_time_F.xml
@@ -25,7 +25,7 @@
 
   <method group="restart" method="MPI"/>
 
-  <buffer size-MB="2" allocate-time="now"/>
+  <buffer max-size-MB="2"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/examples/global_array_time/global_array_time_read_as_stream_C.c b/tests/suite/programs/examples/global_array_time/global_array_time_read_as_stream_C.c
index 28b7496..39b9c4a 100644
--- a/tests/suite/programs/examples/global_array_time/global_array_time_read_as_stream_C.c
+++ b/tests/suite/programs/examples/global_array_time/global_array_time_read_as_stream_C.c
@@ -54,7 +54,7 @@ int main (int argc, char ** argv)
         retval = adios_errno;
     }
     else if (f == NULL) {
-        error ("rank %d: Error at opening stream: %s\n", rank, adios_errmsg());
+        log_error ("rank %d: Error at opening stream: %s\n", rank, adios_errmsg());
         retval = adios_errno;
     }
     else
diff --git a/tests/suite/programs/examples/local_array/CMakeLists.txt b/tests/suite/programs/examples/local_array/CMakeLists.txt
index 00a5451..f6b2da6 100644
--- a/tests/suite/programs/examples/local_array/CMakeLists.txt
+++ b/tests/suite/programs/examples/local_array/CMakeLists.txt
@@ -15,7 +15,7 @@ endif()
 target_link_libraries(local_array_write_C adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES})
 add_custom_command(
 	OUTPUT gwrite_arrays.ch
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/local_array/local_array_C.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/local_array/local_array_C.xml
 	DEPENDS local_array_C.xml
 	)
 
diff --git a/tests/suite/programs/examples/local_array/Makefile.am b/tests/suite/programs/examples/local_array/Makefile.am
index 42664b0..2c3d372 100644
--- a/tests/suite/programs/examples/local_array/Makefile.am
+++ b/tests/suite/programs/examples/local_array/Makefile.am
@@ -10,7 +10,7 @@ check_PROGRAMS = local_array_write_C local_array_read_C
 
 local_array_write_C_SOURCES = local_array_write_C.c
 local_array_write_C_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-local_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+local_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 local_array_write_C.o: gwrite_arrays.ch 
 gwrite_arrays.ch: local_array_C.xml
 	$(top_builddir)/utils/gpp/gpp.py $(srcdir)/local_array_C.xml
diff --git a/tests/suite/programs/examples/local_array/Makefile.in b/tests/suite/programs/examples/local_array/Makefile.in
index bde91ed..3b734b3 100644
--- a/tests/suite/programs/examples/local_array/Makefile.in
+++ b/tests/suite/programs/examples/local_array/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ host_triplet = @host@
 check_PROGRAMS = local_array_write_C$(EXEEXT) \
 	local_array_read_C$(EXEEXT)
 subdir = tests/suite/programs/examples/local_array
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -87,31 +129,80 @@ local_array_read_C_OBJECTS = $(am_local_array_read_C_OBJECTS)
 am__DEPENDENCIES_1 =
 local_array_read_C_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-local_array_read_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(local_array_read_C_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+local_array_read_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(local_array_read_C_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_local_array_write_C_OBJECTS = local_array_write_C.$(OBJEXT)
 local_array_write_C_OBJECTS = $(am_local_array_write_C_OBJECTS)
 local_array_write_C_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-local_array_write_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(local_array_write_C_LDFLAGS) $(LDFLAGS) -o $@
+local_array_write_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(local_array_write_C_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(local_array_read_C_SOURCES) $(local_array_write_C_SOURCES)
 DIST_SOURCES = $(local_array_read_C_SOURCES) \
 	$(local_array_write_C_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -119,6 +210,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -143,6 +235,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -151,6 +244,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -183,6 +278,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +332,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +376,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +397,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +412,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +423,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +458,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -379,7 +483,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 local_array_write_C_SOURCES = local_array_write_C.c
 local_array_write_C_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-local_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+local_array_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 local_array_read_C_SOURCES = local_array_read_C.c
 local_array_read_C_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
 local_array_read_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
@@ -428,12 +532,14 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-local_array_read_C$(EXEEXT): $(local_array_read_C_OBJECTS) $(local_array_read_C_DEPENDENCIES) 
+
+local_array_read_C$(EXEEXT): $(local_array_read_C_OBJECTS) $(local_array_read_C_DEPENDENCIES) $(EXTRA_local_array_read_C_DEPENDENCIES) 
 	@rm -f local_array_read_C$(EXEEXT)
-	$(local_array_read_C_LINK) $(local_array_read_C_OBJECTS) $(local_array_read_C_LDADD) $(LIBS)
-local_array_write_C$(EXEEXT): $(local_array_write_C_OBJECTS) $(local_array_write_C_DEPENDENCIES) 
+	$(AM_V_CCLD)$(local_array_read_C_LINK) $(local_array_read_C_OBJECTS) $(local_array_read_C_LDADD) $(LIBS)
+
+local_array_write_C$(EXEEXT): $(local_array_write_C_OBJECTS) $(local_array_write_C_DEPENDENCIES) $(EXTRA_local_array_write_C_DEPENDENCIES) 
 	@rm -f local_array_write_C$(EXEEXT)
-	$(local_array_write_C_LINK) $(local_array_write_C_OBJECTS) $(local_array_write_C_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(local_array_write_C_LINK) $(local_array_write_C_OBJECTS) $(local_array_write_C_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -442,13 +548,13 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -456,26 +562,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -487,15 +582,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -504,6 +595,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -553,10 +659,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -640,9 +751,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -652,7 +763,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/suite/programs/examples/local_array/local_array_C.xml b/tests/suite/programs/examples/local_array/local_array_C.xml
index 7a11efa..03fda60 100644
--- a/tests/suite/programs/examples/local_array/local_array_C.xml
+++ b/tests/suite/programs/examples/local_array/local_array_C.xml
@@ -10,7 +10,7 @@
 
     <method group="arrays"  method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/examples/scalars/CMakeLists.txt b/tests/suite/programs/examples/scalars/CMakeLists.txt
index b4daf37..a9305ea 100644
--- a/tests/suite/programs/examples/scalars/CMakeLists.txt
+++ b/tests/suite/programs/examples/scalars/CMakeLists.txt
@@ -15,7 +15,7 @@ endif()
 target_link_libraries(scalars_write_C adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES})
 add_custom_command(
 	OUTPUT gwrite_scalars.ch
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/scalars/scalars_C.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/scalars/scalars_C.xml
 	DEPENDS scalars_C.xml
 	)
 
@@ -33,7 +33,7 @@ if(BUILD_FORTRAN)
     target_link_libraries(scalars_write_F adiosf ${ADIOSLIB_LDADD})
     add_custom_command(
 	OUTPUT gwrite_scalars.fh
-	COMMAND ${PROJECT_SOURCE_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/scalars/scalars_F.xml
+	COMMAND ${PROJECT_BINARY_DIR}/utils/gpp/gpp.py ${PROJECT_SOURCE_DIR}/tests/suite/programs/examples/scalars/scalars_F.xml
 	DEPENDS scalars_F.xml
 	)
 
diff --git a/tests/suite/programs/examples/scalars/Makefile.am b/tests/suite/programs/examples/scalars/Makefile.am
index a67f906..c7af8a2 100644
--- a/tests/suite/programs/examples/scalars/Makefile.am
+++ b/tests/suite/programs/examples/scalars/Makefile.am
@@ -10,7 +10,7 @@ check_PROGRAMS = scalars_write_C scalars_read_C
 
 scalars_write_C_SOURCES = scalars_write_C.c 
 scalars_write_C_LDADD = $(top_builddir)/src/libadios.a 
-scalars_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_write_C_LDADD += $(ADIOSLIB_LDADD)
 scalars_write_C.o: gwrite_scalars.ch 
 gwrite_scalars.ch: scalars_C.xml
@@ -30,7 +30,7 @@ if BUILD_FORTRAN
 check_PROGRAMS += scalars_write_F scalars_read_F
 scalars_write_F_SOURCES = scalars_write_F.F90
 scalars_write_F_LDADD = $(top_builddir)/src/libadiosf.a 
-scalars_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_write_F_LDADD += $(ADIOSLIB_LDADD)
 scalars_write_F.o: gwrite_scalars.fh 
 gwrite_scalars.fh: scalars_F.xml
diff --git a/tests/suite/programs/examples/scalars/Makefile.in b/tests/suite/programs/examples/scalars/Makefile.in
index b597faf..f52834f 100644
--- a/tests/suite/programs/examples/scalars/Makefile.in
+++ b/tests/suite/programs/examples/scalars/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,7 +81,7 @@ check_PROGRAMS = scalars_write_C$(EXEEXT) scalars_read_C$(EXEEXT) \
 	$(am__EXEEXT_1)
 @BUILD_FORTRAN_TRUE at am__append_1 = scalars_write_F scalars_read_F
 subdir = tests/suite/programs/examples/scalars
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -60,14 +104,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -90,9 +132,14 @@ scalars_read_C_OBJECTS = $(am_scalars_read_C_OBJECTS)
 am__DEPENDENCIES_1 =
 scalars_read_C_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-scalars_read_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(scalars_read_C_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+scalars_read_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(scalars_read_C_LDFLAGS) $(LDFLAGS) -o \
+	$@
 am__scalars_read_F_SOURCES_DIST = scalars_read_F.F90
 @BUILD_FORTRAN_TRUE at am_scalars_read_F_OBJECTS =  \
 @BUILD_FORTRAN_TRUE@	scalars_read_F.$(OBJEXT)
@@ -100,16 +147,18 @@ scalars_read_F_OBJECTS = $(am_scalars_read_F_OBJECTS)
 @BUILD_FORTRAN_TRUE at scalars_read_F_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosreadf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-scalars_read_F_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(scalars_read_F_LDFLAGS) $(LDFLAGS) -o $@
+scalars_read_F_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(scalars_read_F_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_scalars_write_C_OBJECTS = scalars_write_C.$(OBJEXT)
 scalars_write_C_OBJECTS = $(am_scalars_write_C_OBJECTS)
 scalars_write_C_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-scalars_write_C_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(scalars_write_C_LDFLAGS) $(LDFLAGS) -o $@
+scalars_write_C_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(scalars_write_C_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am__scalars_write_F_SOURCES_DIST = scalars_write_F.F90
 @BUILD_FORTRAN_TRUE at am_scalars_write_F_OBJECTS =  \
 @BUILD_FORTRAN_TRUE@	scalars_write_F.$(OBJEXT)
@@ -117,32 +166,85 @@ scalars_write_F_OBJECTS = $(am_scalars_write_F_OBJECTS)
 @BUILD_FORTRAN_TRUE at scalars_write_F_DEPENDENCIES =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_1)
-scalars_write_F_LINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(scalars_write_F_LDFLAGS) $(LDFLAGS) -o $@
+scalars_write_F_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(scalars_write_F_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
 FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(scalars_read_C_SOURCES) $(scalars_read_F_SOURCES) \
 	$(scalars_write_C_SOURCES) $(scalars_write_F_SOURCES)
 DIST_SOURCES = $(scalars_read_C_SOURCES) \
 	$(am__scalars_read_F_SOURCES_DIST) $(scalars_write_C_SOURCES) \
 	$(am__scalars_write_F_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -150,6 +252,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -174,6 +277,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -182,6 +286,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -214,6 +320,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -267,17 +374,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -308,6 +418,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -328,10 +439,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -340,9 +454,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -354,6 +465,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -388,14 +500,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -411,7 +526,7 @@ AUTOMAKE_OPTIONS = no-dependencies
 scalars_write_C_SOURCES = scalars_write_C.c 
 scalars_write_C_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-scalars_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+scalars_write_C_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 scalars_read_C_SOURCES = scalars_read_C.c
 scalars_read_C_LDADD = $(top_builddir)/src/libadiosread.a \
 	$(ADIOSREADLIB_LDADD)
@@ -422,7 +537,7 @@ EXTRA_DIST = scalars_C.xml scalars_F.xml
 @BUILD_FORTRAN_TRUE at scalars_write_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
 @BUILD_FORTRAN_TRUE@	$(ADIOSLIB_LDADD)
- at BUILD_FORTRAN_TRUE@scalars_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+ at BUILD_FORTRAN_TRUE@scalars_write_F_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 @BUILD_FORTRAN_TRUE at scalars_read_F_SOURCES = scalars_read_F.F90
 @BUILD_FORTRAN_TRUE at scalars_read_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosreadf.a \
@@ -475,18 +590,22 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-scalars_read_C$(EXEEXT): $(scalars_read_C_OBJECTS) $(scalars_read_C_DEPENDENCIES) 
+
+scalars_read_C$(EXEEXT): $(scalars_read_C_OBJECTS) $(scalars_read_C_DEPENDENCIES) $(EXTRA_scalars_read_C_DEPENDENCIES) 
 	@rm -f scalars_read_C$(EXEEXT)
-	$(scalars_read_C_LINK) $(scalars_read_C_OBJECTS) $(scalars_read_C_LDADD) $(LIBS)
-scalars_read_F$(EXEEXT): $(scalars_read_F_OBJECTS) $(scalars_read_F_DEPENDENCIES) 
+	$(AM_V_CCLD)$(scalars_read_C_LINK) $(scalars_read_C_OBJECTS) $(scalars_read_C_LDADD) $(LIBS)
+
+scalars_read_F$(EXEEXT): $(scalars_read_F_OBJECTS) $(scalars_read_F_DEPENDENCIES) $(EXTRA_scalars_read_F_DEPENDENCIES) 
 	@rm -f scalars_read_F$(EXEEXT)
-	$(scalars_read_F_LINK) $(scalars_read_F_OBJECTS) $(scalars_read_F_LDADD) $(LIBS)
-scalars_write_C$(EXEEXT): $(scalars_write_C_OBJECTS) $(scalars_write_C_DEPENDENCIES) 
+	$(AM_V_FCLD)$(scalars_read_F_LINK) $(scalars_read_F_OBJECTS) $(scalars_read_F_LDADD) $(LIBS)
+
+scalars_write_C$(EXEEXT): $(scalars_write_C_OBJECTS) $(scalars_write_C_DEPENDENCIES) $(EXTRA_scalars_write_C_DEPENDENCIES) 
 	@rm -f scalars_write_C$(EXEEXT)
-	$(scalars_write_C_LINK) $(scalars_write_C_OBJECTS) $(scalars_write_C_LDADD) $(LIBS)
-scalars_write_F$(EXEEXT): $(scalars_write_F_OBJECTS) $(scalars_write_F_DEPENDENCIES) 
+	$(AM_V_CCLD)$(scalars_write_C_LINK) $(scalars_write_C_OBJECTS) $(scalars_write_C_LDADD) $(LIBS)
+
+scalars_write_F$(EXEEXT): $(scalars_write_F_OBJECTS) $(scalars_write_F_DEPENDENCIES) $(EXTRA_scalars_write_F_DEPENDENCIES) 
 	@rm -f scalars_write_F$(EXEEXT)
-	$(scalars_write_F_LINK) $(scalars_write_F_OBJECTS) $(scalars_write_F_LDADD) $(LIBS)
+	$(AM_V_FCLD)$(scalars_write_F_LINK) $(scalars_write_F_OBJECTS) $(scalars_write_F_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -495,22 +614,22 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
 
 .F90.obj:
-	$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .F90.lo:
-	$(LTPPFCCOMPILE) -c -o $@ $<
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -518,26 +637,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -549,15 +657,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -566,6 +670,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -615,10 +734,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -702,9 +826,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
@@ -714,7 +838,7 @@ uninstall-am:
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 
 all-local:
diff --git a/tests/suite/programs/examples/scalars/scalars_C.xml b/tests/suite/programs/examples/scalars/scalars_C.xml
index 96440be..59e1726 100644
--- a/tests/suite/programs/examples/scalars/scalars_C.xml
+++ b/tests/suite/programs/examples/scalars/scalars_C.xml
@@ -23,7 +23,7 @@
 
     <method group="scalars" method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/examples/scalars/scalars_F.xml b/tests/suite/programs/examples/scalars/scalars_F.xml
index 6da498c..b8bc0f5 100644
--- a/tests/suite/programs/examples/scalars/scalars_F.xml
+++ b/tests/suite/programs/examples/scalars/scalars_F.xml
@@ -24,7 +24,7 @@
 
     <method group="scalars" method="MPI"/>
 
-    <buffer size-MB="20" allocate-time="now"/>
+    <buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/local_array_time.c b/tests/suite/programs/local_array_time.c
index 648fd01..5f4e0b0 100644
--- a/tests/suite/programs/local_array_time.c
+++ b/tests/suite/programs/local_array_time.c
@@ -70,6 +70,7 @@ int main( int argc, char ** argv)
     float angles[num_points];
     float cos_of_angles[num_points];
     float sin_of_angles[num_points];
+    float tan_of_angles[num_points];
     float pi;
 
     // Obtain pi once for all
@@ -96,10 +97,12 @@ int main( int argc, char ** argv)
         for (i=0; i<num_points; i++) {
             cos_of_angles[i] = cos(angles[i]*timestep);
             sin_of_angles[i] = sin(angles[i]*timestep);
+            tan_of_angles[i] = tan(angles[i]*timestep);
         }
 
         adios_groupsize = 4 + 4 \
                 + 4*num_points \
+                + 4*num_points \
                 + 4*num_points;
         if (timestep == 0 && rank == 0) {
             adios_groupsize += 4 + 4 + 4*num_points;
@@ -115,6 +118,7 @@ int main( int argc, char ** argv)
         }
         adios_write (adios_handle, "cos", cos_of_angles);
         adios_write (adios_handle, "sin", sin_of_angles);
+        adios_write (adios_handle, "tan", tan_of_angles);
 
         adios_close (adios_handle);
 
diff --git a/tests/suite/programs/local_array_time.xml b/tests/suite/programs/local_array_time.xml
index 57c45ea..53170c1 100644
--- a/tests/suite/programs/local_array_time.xml
+++ b/tests/suite/programs/local_array_time.xml
@@ -7,11 +7,12 @@
     <var name="angles" gwrite="anglevalues" type="float" dimensions="num_points"/>
     <var name="t"   gwrite="timestep" type="float" dimensions="iter"/>
     <var name="cos" gwrite="cos_of_anglevalues" type="float" dimensions="iter,num_points"/>
-    <var name="sin" gwrite="sin_of_anglevalues" type="float" dimensions="iter,num_points"/>
+    <var name="sin" gwrite="sin_of_anglevalues" type="float" dimensions="1,num_points"/>
+    <var name="tan" gwrite="tan_of_anglevalues" type="float" dimensions="num_points"/>
     <attribute name="description" path="/" 
         value="File to test if ADIOS can read a local array over time" 
         type="string"/>
 </adios-group>
 <method group="schema" method="MPI"/>
-<buffer size-MB="1" allocate-time="now"/>
+<buffer max-size-MB="1"/>
 </adios-config>
diff --git a/tests/suite/programs/many_vars.c b/tests/suite/programs/many_vars.c
index ffd7285..21eec35 100644
--- a/tests/suite/programs/many_vars.c
+++ b/tests/suite/programs/many_vars.c
@@ -167,7 +167,7 @@ int main (int argc, char ** argv)
 
     alloc_vars();
     adios_init_noxml (comm);
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 100);
+    adios_set_max_buffer_size (100);
     err = adios_read_init_method(ADIOS_READ_METHOD_BP, comm, "verbose=2");
     if (err) {
         printE ("%s\n", adios_errmsg());
diff --git a/tests/suite/programs/path_test.xml b/tests/suite/programs/path_test.xml
index a868844..beb629c 100644
--- a/tests/suite/programs/path_test.xml
+++ b/tests/suite/programs/path_test.xml
@@ -61,7 +61,7 @@
 
 <method group="pathtest" method="MPI">verbose=4</method>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/posix_method.xml b/tests/suite/programs/posix_method.xml
index 7770ee0..5932e36 100644
--- a/tests/suite/programs/posix_method.xml
+++ b/tests/suite/programs/posix_method.xml
@@ -10,7 +10,7 @@
 
 <method group="posix_method" method="POSIX"/>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/reuse_dim.c b/tests/suite/programs/reuse_dim.c
index d702230..05ff720 100755
--- a/tests/suite/programs/reuse_dim.c
+++ b/tests/suite/programs/reuse_dim.c
@@ -99,7 +99,7 @@ int main (int argc, char ** argv)
 int declare_group ()
 {
 
-    adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+    adios_set_max_buffer_size (10);
 
     adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
     adios_select_method (m_adios_group, "MPI", "verbose=2", "");
diff --git a/tests/suite/programs/selections.c b/tests/suite/programs/selections.c
index 8c9004b..9f3adda 100644
--- a/tests/suite/programs/selections.c
+++ b/tests/suite/programs/selections.c
@@ -171,7 +171,7 @@ int main (int argc, char ** argv)
     alloc_vars();
     if (do_write) {
         adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
     }
     if (do_read) {
         err = adios_read_init_method(read_method, comm, "verbose=2");
diff --git a/tests/suite/programs/set_path.xml b/tests/suite/programs/set_path.xml
index 7dc8463..ecc59e9 100644
--- a/tests/suite/programs/set_path.xml
+++ b/tests/suite/programs/set_path.xml
@@ -22,7 +22,7 @@
 
 <method group="abc" method="MPI"/>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/set_path_var.xml b/tests/suite/programs/set_path_var.xml
index 44f700c..7b7058c 100644
--- a/tests/suite/programs/set_path_var.xml
+++ b/tests/suite/programs/set_path_var.xml
@@ -19,7 +19,7 @@
 
 <method group="abc" method="MPI"/>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/steps_write.c b/tests/suite/programs/steps_write.c
index 5738069..938e5aa 100644
--- a/tests/suite/programs/steps_write.c
+++ b/tests/suite/programs/steps_write.c
@@ -39,7 +39,7 @@ int main (int argc, char ** argv)
 	strcpy (filename, "steps.bp");
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 1);
+        adios_set_max_buffer_size (1);
 
         int64_t       m_adios_group;
         int64_t       m_adios_file;
diff --git a/tests/suite/programs/transforms.xml b/tests/suite/programs/transforms.xml
index 0add026..1438b53 100644
--- a/tests/suite/programs/transforms.xml
+++ b/tests/suite/programs/transforms.xml
@@ -7,6 +7,6 @@
         </global-bounds>
     </adios-group>
     <method group="transforms" method="MPI"></method>
-    <buffer size-MB="100" allocate-time="now"/>
+    <buffer max-size-MB="100"/>
 </adios-config>
 
diff --git a/tests/suite/programs/two_groups.c b/tests/suite/programs/two_groups.c
index 3e5a7a1..f4b952b 100644
--- a/tests/suite/programs/two_groups.c
+++ b/tests/suite/programs/two_groups.c
@@ -169,7 +169,7 @@ int read_file ()
     ADIOS_SELECTION *sel0;
     ADIOS_FILE * f;
     ADIOS_VARINFO * vi;
-    int err=0,i;
+    int err=0;
 
     uint64_t start[3] = {0,0,0};
     uint64_t count[3] = {1,1,1};
@@ -198,9 +198,9 @@ int read_file ()
     //adios_schedule_read (f, sel0, "c0",  0, 1, &rc);
     adios_perform_reads (f, 1);
 
-    CHECK_SCALAR (a0,  ra,  0, i)
-    CHECK_SCALAR (b0,  rb,  1, i)
-    //CHECK_SCALAR (c0,  rc,  2, i)
+    CHECK_SCALAR (a0,  ra,  0, 0)
+    CHECK_SCALAR (b0,  rb,  1, 0)
+    //CHECK_SCALAR (c0,  rc,  2, 0)
 
 
 endread:
@@ -218,7 +218,7 @@ int read_by_group ()
     ADIOS_SELECTION *sel0;
     ADIOS_FILE * f;
     ADIOS_VARINFO * vi;
-    int err=0,i;
+    int err=0;
 
     uint64_t start[3] = {0,0,0};
     uint64_t count[3] = {1,1,1};
@@ -252,8 +252,8 @@ int read_by_group ()
     //adios_schedule_read (f, sel0, "c0",  0, 1, &rc);
     adios_perform_reads (f, 1);
 
-    CHECK_SCALAR (a0,  ra,  0, i)
-    //CHECK_SCALAR (c0,  rc,  2, i)
+    CHECK_SCALAR (a0,  ra,  0, 0)
+    //CHECK_SCALAR (c0,  rc,  2, 0)
 
 
     log ("  Limit view to second group only\n");
@@ -271,7 +271,7 @@ int read_by_group ()
     adios_schedule_read (f, sel0, "b0",  0, 1, &rb);
     adios_perform_reads (f, 1);
 
-    CHECK_SCALAR (b0,  rb,  1, i)
+    CHECK_SCALAR (b0,  rb,  1, 0)
 
 endread:
 
diff --git a/tests/suite/programs/two_groups.xml b/tests/suite/programs/two_groups.xml
index 7b14485..5e873d2 100644
--- a/tests/suite/programs/two_groups.xml
+++ b/tests/suite/programs/two_groups.xml
@@ -17,7 +17,7 @@
 <method group="g1" method="MPI"/>
 <method group="g2" method="MPI"/>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/write_alternate.c b/tests/suite/programs/write_alternate.c
index 69fce78..82ccf4d 100644
--- a/tests/suite/programs/write_alternate.c
+++ b/tests/suite/programs/write_alternate.c
@@ -109,6 +109,7 @@ void fini_vars()
 
 int write_file (int step);
 int read_file ();
+int read_stream ();
 
 int main (int argc, char ** argv) 
 {
diff --git a/tests/suite/programs/write_alternate.xml b/tests/suite/programs/write_alternate.xml
index f7a21f5..b3bb20c 100644
--- a/tests/suite/programs/write_alternate.xml
+++ b/tests/suite/programs/write_alternate.xml
@@ -55,7 +55,7 @@
 
 <method group="abc" method="MPI"/>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/write_read.xml b/tests/suite/programs/write_read.xml
index e23adb4..66377d8 100644
--- a/tests/suite/programs/write_read.xml
+++ b/tests/suite/programs/write_read.xml
@@ -130,7 +130,7 @@
 
 <method group="alltypes" method="MPI"/>
 
-<buffer size-MB="20" allocate-time="now"/>
+<buffer max-size-MB="20"/>
 
 </adios-config>
 
diff --git a/tests/suite/tests/19_query.sh b/tests/suite/tests/19_query.sh
index b297976..13c885e 100755
--- a/tests/suite/tests/19_query.sh
+++ b/tests/suite/tests/19_query.sh
@@ -38,7 +38,7 @@ UTILS_DIR="$TRUNKDIR/utils"
 DATASET_BUILDER_EXE_BASENAME="build_standard_dataset"
 QUERY_SEQSCAN_EXE_BASENAME="compute_expected_query_results"
 QUERY_EXE_BASENAME="adios_query_test"
-LIST_METHODS_EXE_BASENAME="list_methods"
+LIST_METHODS_EXE_BASENAME="adios_list_methods"
 
 DATASET_BUILDER_EXE_PATH="$TEST_PROGRAMS_DIR/$DATASET_BUILDER_EXE_BASENAME"
 QUERY_SEQSCAN_EXE_PATH="$QUERY_COMMON_DIR/$QUERY_SEQSCAN_EXE_BASENAME"
@@ -86,18 +86,9 @@ done
 ALL_QUERY_ENGINES=$( \
   $MPIRUN_SERIAL $LIST_METHODS_EXE_PATH |
   awk '
-    /^Available/{
-      transforms = ($2 == "query")
-    }
-    {
-      if (transforms) {
-        if (skippedheader) {
-          gsub("ADIOS_QUERY_METHOD_","",$1)
-          print $1
-        } else {
-          skippedheader = 1
-        }
-      }
+    /ADIOS_QUERY_METHOD/{
+      gsub("ADIOS_QUERY_METHOD_","",$1)
+      print $1
     }
   ' |
   tr "A-Z\n" 'a-z '
@@ -121,6 +112,7 @@ fi
 # NO FURTHER CONFIGURATION VARIABLES BELOW THIS POINT
 #
 
+N_INVALID_RESULTS=0
 function init_work_directory() {
   echo "STEP 1: INITIALIZING THE TEST WORKING DIRECTORY..."
   
@@ -180,6 +172,15 @@ function build_indexed_datasets_fastbit() {
   set +o xtrace
 }
 
+function build_indexed_datasets_minmax() {
+  local DSID="$1"
+  local DSOUTPUT="$2"
+  [[ $# -eq 2 ]] || die "ERROR: Internal testing error, invalid parameters to build_indexed_datasets_minmax: $@"
+  
+  invoke_dataset_builder "$DSID" "$DSOUTPUT" "none"
+  echo "Minmax method uses data as is, no index file is built"
+}
+
 function build_datasets() {
   echo "STEP 2: INDEXING ALL TEST DATASETS USING ALL ENABLED INDEXING METHODS"
   echo "(ALSO PRODUCING A NON-INDEXED VERSION OF EACH DATASET FOR REFERENCE)"
@@ -251,6 +252,10 @@ function query_datasets() {
 
         # Run the query for each query engine implementation and compare to the expected results
         for QUERY_ENGINE in $ALL_QUERY_ENGINES; do
+          case $QUERY_ENGINE in *minmax*) 
+              echo --- Skip evaluating with MINMAX method ---; 
+              continue 
+          esac
           local QE_WORKDIR="./$QUERY_ENGINE"
 
           for INDEXED_DS in "$QE_WORKDIR/$DSID.$QUERY_ENGINE".*bp; do
@@ -280,7 +285,7 @@ function query_datasets() {
                 echo "ERROR: ADIOS Query does not return the expected points matching query $QUERY_NAME on dataset $DSID in $FILEMODE mode using query engine $QUERY_ENGINE"
                 echo "Compare \"$EXPECTED_POINTS_FILE\" (expected points) vs. \"$OUTPUT_POINTS_FILE\" (returned points) in \"$PWD\""
                 echo "The BP file queried is \"$INDEXED_DS\" and the query is specified by \"$QUERY_XML_LOCAL\""
-                exit 1  
+                let "N_INVALID_RESULTS=N_INVALID_RESULTS+1"  
               fi
             done
           done
@@ -290,8 +295,10 @@ function query_datasets() {
 }
 
 # FINALLY, CALL THE FUNCTIONS IN SEQUENCE
-echo "NOTE: Testing query methods: $ALL_QUERY_METHODS"
-echo "NOTE: Testing on datasets: $ALL_DATASETS"
+echo "NOTE: Testing query methods: $ALL_QUERY_ENGINES"
+echo "NOTE: Testing on datasets: $ALL_DATASET_IDS"
 init_work_directory
 build_datasets
 query_datasets
+echo "NOTE: Number of tests that ran but produced a result different from the expected : $N_INVALID_RESULTS"
+exit $N_INVALID_RESULTS
diff --git a/tests/suite/tests/20_transforms_writeblock.sh b/tests/suite/tests/20_transforms_writeblock.sh
index a568bd0..8535445 100755
--- a/tests/suite/tests/20_transforms_writeblock.sh
+++ b/tests/suite/tests/20_transforms_writeblock.sh
@@ -38,11 +38,11 @@ UTILS_DIR="$TRUNKDIR/utils"
 # Some external tools to use
 DATASET_BUILDER_EXE_BASENAME="build_standard_dataset"
 DATASET_TESTER_EXE_BASENAME="transforms_writeblock_read"
-LIST_METHODS_EXE_BASENAME="list_methods"
+LIST_METHODS_EXE_BASENAME="adios_list_methods"
 
 DATASET_BUILDER_EXE_PATH="$TEST_PROGRAMS_DIR/$DATASET_BUILDER_EXE_BASENAME"
 DATASET_TESTER_EXE_PATH="$TEST_PROGRAMS_DIR/$DATASET_TESTER_EXE_BASENAME"
-LIST_METHODS_EXE_PATH="$UTILS_DIR/list_methods/$LIST_METHODS_EXE_BASENAME"
+LIST_METHODS_EXE_PATH="$UTILS_DIR/adios_list_methods/$LIST_METHODS_EXE_BASENAME"
 
 # Check for the executability of all executables that we need
 [ -f "$DATASET_BUILDER_EXE_PATH" -a -x "$DATASET_BUILDER_EXE_PATH" ] || die "ERROR: $DATASET_BUILDER_EXE_PATH is not executable"
diff --git a/tests/test_src/CMakeLists.txt b/tests/test_src/CMakeLists.txt
new file mode 100644
index 0000000..370cab1
--- /dev/null
+++ b/tests/test_src/CMakeLists.txt
@@ -0,0 +1,44 @@
+include_directories(${PROJECT_SOURCE_DIR}/tests/test_src)
+include_directories(${PROJECT_SOURCE_DIR}/src)
+include_directories(${PROJECT_SOURCE_DIR}/src/public)
+
+include_directories(${PROJECT_BINARY_DIR}/tests/test_src)
+include_directories(${PROJECT_BINARY_DIR}/src)
+include_directories(${PROJECT_BINARY_DIR}/src/public)
+
+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)
+endif(BUILD_WRITE)
+
+if(BUILD_FORTRAN)
+    set(F_PROGS_READONLY selection_api)
+#  if(BUILD_WRITE)
+#    set(F_PROGS_WRITE xxx)
+#  endif(BUILD_WRITE)
+endif(BUILD_FORTRAN)
+
+foreach (PROG ${C_PROGS_READONLY} )
+    add_executable(${PROG} ${PROG}.c)
+    target_link_libraries(${PROG} adiosread_nompi ${ADIOSREADLIB_SEQ_LDADD})
+endforeach()
+
+foreach (PROG ${C_PROGS_WRITE} )
+    add_executable(${PROG} ${PROG}.c)
+    target_link_libraries(${PROG} adios_nompi ${ADIOSLIB_SEQ_LDADD})
+endforeach()
+
+foreach (PROG ${F_PROGS_READONLY} )
+    add_executable(${PROG} ${PROG}.F90)
+    target_link_libraries(${PROG} adiosreadf_nompi ${ADIOSREADLIB_SEQ_LDADD})
+endforeach()
+
+foreach (PROG ${F_PROGS_WRITE} )
+    add_executable(${PROG} ${PROG}.F90)
+    target_link_libraries(${PROG} adiosf_nompi ${ADIOSLIB_SEQ_LDADD})
+endforeach()
+
diff --git a/tests/test_src/Makefile.am b/tests/test_src/Makefile.am
new file mode 100644
index 0000000..1478a71
--- /dev/null
+++ b/tests/test_src/Makefile.am
@@ -0,0 +1,128 @@
+# This directory is for sequential tests of src/ functions only.
+# Add your codes that you want to build at 'make check'
+# Do not build Fortran codes if Fortran is not supported.
+# Do not build a code using the write API if only the read API is available
+# Steps:
+# 1. add C code name to test_C
+# 2. add Fortran code name to test_F
+# 3. define build rules for your code
+# 4. add files to CLEANFILES that should be deleted at 'make clean'
+# 5. add to EXTRA_DIST any non-source files that should go with the distribution
+
+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
+endif
+
+if BUILD_FORTRAN
+    test_F = selection_api
+if BUILD_WRITE
+#    test_F += 
+endif
+endif
+
+check_PROGRAMS=$(test_C) $(test_F)
+
+# Sequential tests to be executed by "make check" can be defined right here in TESTS
+TESTS=$(test_C) $(test_F)
+
+AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS += -I$(top_builddir)/src/public  -I$(top_builddir)/src -I$(top_srcdir)/src/public
+
+#all-local:
+#	test "$(srcdir)" = "$(builddir)" || cp -p $(srcdir)/*.xml $(builddir)
+
+#############################
+# Build rules for each test #
+#############################
+
+#
+# C Tests 
+#
+hashtest_SOURCES=hashtest.c
+hashtest_LDADD = $(top_builddir)/src/core/libcoreonce_a-qhashtbl.o
+hashtest_LDFLAGS = $(AM_LDFLAGS) 
+hashtest_CPPFLAGS = -I$(top_srcdir)/src
+hashtest.o: hashtest.c
+
+copy_subvolume_SOURCES=copy_subvolume.c
+copy_subvolume_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+copy_subvolume_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
+copy_subvolume_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+copy_subvolume.o: copy_subvolume.c
+
+text_to_pairstruct_SOURCES=text_to_pairstruct.c
+text_to_pairstruct_LDADD = $(top_builddir)/src/core/libcoreonce_a-strutil.o
+text_to_pairstruct_LDFLAGS = $(AM_LDFLAGS) 
+text_to_pairstruct_CPPFLAGS = -I$(top_srcdir)/src
+text_to_pairstruct.o: text_to_pairstruct.c
+
+test_strutil_SOURCES=test_strutil.c
+test_strutil_LDADD = $(top_builddir)/src/core/libcoreonce_a-strutil.o
+test_strutil_LDFLAGS = $(AM_LDFLAGS) 
+test_strutil_CPPFLAGS = -I$(top_srcdir)/src
+test_strutil.o: test_strutil.c
+
+points_1DtoND_SOURCES=points_1DtoND.c
+points_1DtoND_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+points_1DtoND_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
+points_1DtoND_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+points_1DtoND.o: points_1DtoND.c
+
+trim_spaces_SOURCES=trim_spaces.c
+trim_spaces_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+trim_spaces_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
+trim_spaces_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+trim_spaces.o: trim_spaces.c
+
+#
+# C Tests built only with write-enabled
+#
+transforms_specparse_SOURCES=transforms_specparse.c
+transforms_specparse_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+transforms_specparse_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+transforms_specparse_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS)
+transforms_specparse.o: transforms_specparse.c
+
+group_free_test_SOURCES=group_free_test.c
+group_free_test_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+group_free_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+group_free_test_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+group_free_test.o: group_free_test.c
+
+query_minmax_SOURCES=query_minmax.c
+query_minmax_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+query_minmax_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+query_minmax_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+query_minmax.o: query_minmax.c
+
+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_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
+
+#
+# FORTRAN Tests
+#
+FC=$(MPIFC)
+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)
+
+
+
+EXTRA_DIST = 
+
+CLEANFILES = 
+
+FCLINK = \
+	$(LIBTOOL) --mode=link --tag F77 $(FC) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(LDFLAGS) -o $@
diff --git a/tests/test_src/Makefile.in b/tests/test_src/Makefile.in
new file mode 100644
index 0000000..b8fec8e
--- /dev/null
+++ b/tests/test_src/Makefile.in
@@ -0,0 +1,1649 @@
+# Makefile.in generated by automake 1.14 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# This directory is for sequential tests of src/ functions only.
+# Add your codes that you want to build at 'make check'
+# Do not build Fortran codes if Fortran is not supported.
+# Do not build a code using the write API if only the read API is available
+# Steps:
+# 1. add C code name to test_C
+# 2. add Fortran code name to test_F
+# 3. define build rules for your code
+# 4. add files to CLEANFILES that should be deleted at 'make clean'
+# 5. add to EXTRA_DIST any non-source files that should go with the distribution
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+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
+check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
+TESTS = $(am__EXEEXT_2) $(am__EXEEXT_3)
+subdir = tests/test_src
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
+	$(top_srcdir)/config/ac_aplod.m4 \
+	$(top_srcdir)/config/ac_bgq.m4 \
+	$(top_srcdir)/config/ac_bzip2.m4 \
+	$(top_srcdir)/config/ac_cray_pmi.m4 \
+	$(top_srcdir)/config/ac_cray_ugni.m4 \
+	$(top_srcdir)/config/ac_dataspaces.m4 \
+	$(top_srcdir)/config/ac_datatap.m4 \
+	$(top_srcdir)/config/ac_dcmf.m4 \
+	$(top_srcdir)/config/ac_dimes.m4 \
+	$(top_srcdir)/config/ac_dmalloc.m4 \
+	$(top_srcdir)/config/ac_fastbit.m4 \
+	$(top_srcdir)/config/ac_fgr.m4 \
+	$(top_srcdir)/config/ac_flexpath.m4 \
+	$(top_srcdir)/config/ac_glib.m4 \
+	$(top_srcdir)/config/ac_hdf5.m4 \
+	$(top_srcdir)/config/ac_infiniband.m4 \
+	$(top_srcdir)/config/ac_isobar.m4 \
+	$(top_srcdir)/config/ac_lustre.m4 \
+	$(top_srcdir)/config/ac_mxml.m4 \
+	$(top_srcdir)/config/ac_nc4par.m4 \
+	$(top_srcdir)/config/ac_netcdf.m4 \
+	$(top_srcdir)/config/ac_nssi.m4 \
+	$(top_srcdir)/config/ac_pablo.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_zlib.m4 \
+	$(top_srcdir)/config/acx_mpi.m4 \
+	$(top_srcdir)/config/acx_pthread.m4 \
+	$(top_srcdir)/config/cercs.m4 $(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+ at BUILD_WRITE_TRUE@am__EXEEXT_1 = transforms_specparse$(EXEEXT) \
+ at BUILD_WRITE_TRUE@	group_free_test$(EXEEXT) \
+ at BUILD_WRITE_TRUE@	query_minmax$(EXEEXT) \
+ at BUILD_WRITE_TRUE@	read_points_2d$(EXEEXT) \
+ at BUILD_WRITE_TRUE@	read_points_3d$(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)
+ at BUILD_FORTRAN_TRUE@am__EXEEXT_3 = selection_api$(EXEEXT)
+am_copy_subvolume_OBJECTS = copy_subvolume-copy_subvolume.$(OBJEXT)
+copy_subvolume_OBJECTS = $(am_copy_subvolume_OBJECTS)
+am__DEPENDENCIES_1 =
+copy_subvolume_DEPENDENCIES =  \
+	$(top_builddir)/src/libadiosread_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 = 
+copy_subvolume_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(copy_subvolume_LDFLAGS) $(LDFLAGS) -o \
+	$@
+am_group_free_test_OBJECTS =  \
+	group_free_test-group_free_test.$(OBJEXT)
+group_free_test_OBJECTS = $(am_group_free_test_OBJECTS)
+group_free_test_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
+	$(am__DEPENDENCIES_1)
+group_free_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(group_free_test_LDFLAGS) $(LDFLAGS) \
+	-o $@
+am_hashtest_OBJECTS = hashtest-hashtest.$(OBJEXT)
+hashtest_OBJECTS = $(am_hashtest_OBJECTS)
+hashtest_DEPENDENCIES =  \
+	$(top_builddir)/src/core/libcoreonce_a-qhashtbl.o
+hashtest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(hashtest_LDFLAGS) $(LDFLAGS) -o $@
+am_points_1DtoND_OBJECTS = points_1DtoND-points_1DtoND.$(OBJEXT)
+points_1DtoND_OBJECTS = $(am_points_1DtoND_OBJECTS)
+points_1DtoND_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
+	$(am__DEPENDENCIES_1)
+points_1DtoND_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(points_1DtoND_LDFLAGS) $(LDFLAGS) -o $@
+am_query_minmax_OBJECTS = query_minmax-query_minmax.$(OBJEXT)
+query_minmax_OBJECTS = $(am_query_minmax_OBJECTS)
+query_minmax_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
+	$(am__DEPENDENCIES_1)
+query_minmax_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(query_minmax_LDFLAGS) $(LDFLAGS) -o $@
+am_read_points_2d_OBJECTS = read_points_2d-read_points_2d.$(OBJEXT)
+read_points_2d_OBJECTS = $(am_read_points_2d_OBJECTS)
+read_points_2d_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
+	$(am__DEPENDENCIES_1)
+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 =  \
+	$(top_builddir)/src/libadiosreadf_nompi.a \
+	$(am__DEPENDENCIES_1)
+selection_api_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
+	$(selection_api_LDFLAGS) $(LDFLAGS) -o $@
+am_test_strutil_OBJECTS = test_strutil-test_strutil.$(OBJEXT)
+test_strutil_OBJECTS = $(am_test_strutil_OBJECTS)
+test_strutil_DEPENDENCIES =  \
+	$(top_builddir)/src/core/libcoreonce_a-strutil.o
+test_strutil_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(test_strutil_LDFLAGS) $(LDFLAGS) -o $@
+am_text_to_pairstruct_OBJECTS =  \
+	text_to_pairstruct-text_to_pairstruct.$(OBJEXT)
+text_to_pairstruct_OBJECTS = $(am_text_to_pairstruct_OBJECTS)
+text_to_pairstruct_DEPENDENCIES =  \
+	$(top_builddir)/src/core/libcoreonce_a-strutil.o
+text_to_pairstruct_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(text_to_pairstruct_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am_transforms_specparse_OBJECTS =  \
+	transforms_specparse-transforms_specparse.$(OBJEXT)
+transforms_specparse_OBJECTS = $(am_transforms_specparse_OBJECTS)
+transforms_specparse_DEPENDENCIES =  \
+	$(top_builddir)/src/libadios_nompi.a $(am__DEPENDENCIES_1)
+transforms_specparse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(transforms_specparse_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am_trim_spaces_OBJECTS = trim_spaces-trim_spaces.$(OBJEXT)
+trim_spaces_OBJECTS = $(am_trim_spaces_OBJECTS)
+trim_spaces_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
+	$(am__DEPENDENCIES_1)
+trim_spaces_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(trim_spaces_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_FCFLAGS) $(FCFLAGS)
+AM_V_PPFC = $(am__v_PPFC_ at AM_V@)
+am__v_PPFC_ = $(am__v_PPFC_ at AM_DEFAULT_V@)
+am__v_PPFC_0 = @echo "  PPFC    " $@;
+am__v_PPFC_1 = 
+FCLD = $(FC)
+AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
+am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
+am__v_FCLD_0 = @echo "  FCLD    " $@;
+am__v_FCLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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) \
+	$(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) \
+	$(test_strutil_SOURCES) $(text_to_pairstruct_SOURCES) \
+	$(transforms_specparse_SOURCES) $(trim_spaces_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
+ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
+ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
+ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
+ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
+ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
+ADIOSLIB_INT_LDFLAGS = @ADIOSLIB_INT_LDFLAGS@
+ADIOSLIB_LDADD = @ADIOSLIB_LDADD@
+ADIOSLIB_LDFLAGS = @ADIOSLIB_LDFLAGS@
+ADIOSLIB_SEQ_CFLAGS = @ADIOSLIB_SEQ_CFLAGS@
+ADIOSLIB_SEQ_CPPFLAGS = @ADIOSLIB_SEQ_CPPFLAGS@
+ADIOSLIB_SEQ_LDADD = @ADIOSLIB_SEQ_LDADD@
+ADIOSLIB_SEQ_LDFLAGS = @ADIOSLIB_SEQ_LDFLAGS@
+ADIOSREADLIB_CFLAGS = @ADIOSREADLIB_CFLAGS@
+ADIOSREADLIB_CPPFLAGS = @ADIOSREADLIB_CPPFLAGS@
+ADIOSREADLIB_LDADD = @ADIOSREADLIB_LDADD@
+ADIOSREADLIB_LDFLAGS = @ADIOSREADLIB_LDFLAGS@
+ADIOSREADLIB_SEQ_CFLAGS = @ADIOSREADLIB_SEQ_CFLAGS@
+ADIOSREADLIB_SEQ_CPPFLAGS = @ADIOSREADLIB_SEQ_CPPFLAGS@
+ADIOSREADLIB_SEQ_LDADD = @ADIOSREADLIB_SEQ_LDADD@
+ADIOSREADLIB_SEQ_LDFLAGS = @ADIOSREADLIB_SEQ_LDFLAGS@
+ADIOS_TIMERS = @ADIOS_TIMERS@
+ADIOS_TIMER_EVENTS = @ADIOS_TIMER_EVENTS@
+ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
+ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
+ALACRITY_LIBS = @ALACRITY_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
+APLOD_LDFLAGS = @APLOD_LDFLAGS@
+APLOD_LIBS = @APLOD_LIBS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
+BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
+BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
+BZIP2_LIBS = @BZIP2_LIBS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRAY_PMI_CPPFLAGS = @CRAY_PMI_CPPFLAGS@
+CRAY_PMI_LDFLAGS = @CRAY_PMI_LDFLAGS@
+CRAY_PMI_LIBS = @CRAY_PMI_LIBS@
+CRAY_UGNI_CPPFLAGS = @CRAY_UGNI_CPPFLAGS@
+CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
+CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
+CSH = @CSH@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATASPACES_CPPFLAGS = @DATASPACES_CPPFLAGS@
+DATASPACES_LDFLAGS = @DATASPACES_LDFLAGS@
+DATASPACES_LIBS = @DATASPACES_LIBS@
+DCMF_CFLAGS = @DCMF_CFLAGS@
+DCMF_CPPFLAGS = @DCMF_CPPFLAGS@
+DCMF_LDFLAGS = @DCMF_LDFLAGS@
+DCMF_LIBS = @DCMF_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
+DIMES_LDFLAGS = @DIMES_LDFLAGS@
+DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
+DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
+DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
+DMALLOC_LIBS = @DMALLOC_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DT_CPPFLAGS = @DT_CPPFLAGS@
+DT_LDFLAGS = @DT_LDFLAGS@
+DT_LIBS = @DT_LIBS@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FASTBIT_CPPFLAGS = @FASTBIT_CPPFLAGS@
+FASTBIT_LDFLAGS = @FASTBIT_LDFLAGS@
+FASTBIT_LIBS = @FASTBIT_LIBS@
+
+#
+# FORTRAN Tests
+#
+FC = $(MPIFC)
+FCFLAGS = @FCFLAGS@
+FCLIBS = @FCLIBS@
+FGREP = @FGREP@
+FGR_CPPFLAGS = @FGR_CPPFLAGS@
+FGR_LDFLAGS = @FGR_LDFLAGS@
+FGR_LIBS = @FGR_LIBS@
+FP_CPPFLAGS = @FP_CPPFLAGS@
+FP_LDFLAGS = @FP_LDFLAGS@
+FP_LIBS = @FP_LIBS@
+GLIB_CPPFLAGS = @GLIB_CPPFLAGS@
+GLIB_LDFLAGS = @GLIB_LDFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GREP = @GREP@
+HDF5_CPPFLAGS = @HDF5_CPPFLAGS@
+HDF5_LDFLAGS = @HDF5_LDFLAGS@
+HDF5_LIBS = @HDF5_LIBS@
+INFINIBAND_CFLAGS = @INFINIBAND_CFLAGS@
+INFINIBAND_CPPFLAGS = @INFINIBAND_CPPFLAGS@
+INFINIBAND_LDFLAGS = @INFINIBAND_LDFLAGS@
+INFINIBAND_LIBS = @INFINIBAND_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISOBAR_CPPFLAGS = @ISOBAR_CPPFLAGS@
+ISOBAR_LDFLAGS = @ISOBAR_LDFLAGS@
+ISOBAR_LIBS = @ISOBAR_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
+LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
+LUSTRE_LIBS = @LUSTRE_LIBS@
+MACRODEFFLAG = @MACRODEFFLAG@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPICXX = @MPICXX@
+MPIFC = @MPIFC@
+MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
+MXML_CPPFLAGS = @MXML_CPPFLAGS@
+MXML_LDFLAGS = @MXML_LDFLAGS@
+MXML_LIBS = @MXML_LIBS@
+NC4PAR_CPPFLAGS = @NC4PAR_CPPFLAGS@
+NC4PAR_LDFLAGS = @NC4PAR_LDFLAGS@
+NC4PAR_LIBS = @NC4PAR_LIBS@
+NETCDF_CPPFLAGS = @NETCDF_CPPFLAGS@
+NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
+NETCDF_LIBS = @NETCDF_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NSSI_BUILDDIR = @NSSI_BUILDDIR@
+NSSI_CFLAGS = @NSSI_CFLAGS@
+NSSI_CPPFLAGS = @NSSI_CPPFLAGS@
+NSSI_LDFLAGS = @NSSI_LDFLAGS@
+NSSI_LIBS = @NSSI_LIBS@
+NSSI_SERVER_LIBS = @NSSI_SERVER_LIBS@
+NSSI_SRCDIR = @NSSI_SRCDIR@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PABLO_CPPFLAGS = @PABLO_CPPFLAGS@
+PABLO_LDFLAGS = @PABLO_LDFLAGS@
+PABLO_LIBS = @PABLO_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PAMI_CFLAGS = @PAMI_CFLAGS@
+PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
+PAMI_LDFLAGS = @PAMI_LDFLAGS@
+PAMI_LIBS = @PAMI_LIBS@
+PATHPROG = @PATHPROG@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PHDF5_CPPFLAGS = @PHDF5_CPPFLAGS@
+PHDF5_LDFLAGS = @PHDF5_LDFLAGS@
+PHDF5_LIBS = @PHDF5_LIBS@
+PORTALS_CFLAGS = @PORTALS_CFLAGS@
+PORTALS_CPPFLAGS = @PORTALS_CPPFLAGS@
+PORTALS_HEADER = @PORTALS_HEADER@
+PORTALS_LDFLAGS = @PORTALS_LDFLAGS@
+PORTALS_LIBS = @PORTALS_LIBS@
+PORTALS_NAL_HEADER = @PORTALS_NAL_HEADER@
+PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SKEL_HAVE_ADIOS_TIMING = @SKEL_HAVE_ADIOS_TIMING@
+STRIP = @STRIP@
+SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
+SZIP_LDFLAGS = @SZIP_LDFLAGS@
+SZIP_LIBS = @SZIP_LIBS@
+VERSION = @VERSION@
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MICRO = @VERSION_MICRO@
+VERSION_MINOR = @VERSION_MINOR@
+ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
+ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_FC = @ac_ct_FC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+test_C = hashtest copy_subvolume text_to_pairstruct test_strutil \
+	points_1DtoND trim_spaces $(am__append_1)
+ at BUILD_FORTRAN_TRUE@test_F = selection_api
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
+	-I$(top_builddir)/src -I$(top_srcdir)/src/public
+
+#all-local:
+#	test "$(srcdir)" = "$(builddir)" || cp -p $(srcdir)/*.xml $(builddir)
+
+#############################
+# Build rules for each test #
+#############################
+
+#
+# C Tests 
+#
+hashtest_SOURCES = hashtest.c
+hashtest_LDADD = $(top_builddir)/src/core/libcoreonce_a-qhashtbl.o
+hashtest_LDFLAGS = $(AM_LDFLAGS) 
+hashtest_CPPFLAGS = -I$(top_srcdir)/src
+copy_subvolume_SOURCES = copy_subvolume.c
+copy_subvolume_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+copy_subvolume_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
+copy_subvolume_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+text_to_pairstruct_SOURCES = text_to_pairstruct.c
+text_to_pairstruct_LDADD = $(top_builddir)/src/core/libcoreonce_a-strutil.o
+text_to_pairstruct_LDFLAGS = $(AM_LDFLAGS) 
+text_to_pairstruct_CPPFLAGS = -I$(top_srcdir)/src
+test_strutil_SOURCES = test_strutil.c
+test_strutil_LDADD = $(top_builddir)/src/core/libcoreonce_a-strutil.o
+test_strutil_LDFLAGS = $(AM_LDFLAGS) 
+test_strutil_CPPFLAGS = -I$(top_srcdir)/src
+points_1DtoND_SOURCES = points_1DtoND.c
+points_1DtoND_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+points_1DtoND_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
+points_1DtoND_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+trim_spaces_SOURCES = trim_spaces.c
+trim_spaces_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+trim_spaces_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
+trim_spaces_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSREADLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+
+#
+# C Tests built only with write-enabled
+#
+transforms_specparse_SOURCES = transforms_specparse.c
+transforms_specparse_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+transforms_specparse_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+transforms_specparse_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS)
+group_free_test_SOURCES = group_free_test.c
+group_free_test_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+group_free_test_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+group_free_test_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+query_minmax_SOURCES = query_minmax.c
+query_minmax_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+query_minmax_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+query_minmax_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+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
+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)
+EXTRA_DIST = 
+CLEANFILES = 
+FCLINK = \
+	$(LIBTOOL) --mode=link --tag F77 $(FC) \
+	$(AM_FCFLAGS) $(FCFLAGS) $(LDFLAGS) -o $@
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .F90 .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test_src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu tests/test_src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+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)
+
+group_free_test$(EXEEXT): $(group_free_test_OBJECTS) $(group_free_test_DEPENDENCIES) $(EXTRA_group_free_test_DEPENDENCIES) 
+	@rm -f group_free_test$(EXEEXT)
+	$(AM_V_CCLD)$(group_free_test_LINK) $(group_free_test_OBJECTS) $(group_free_test_LDADD) $(LIBS)
+
+hashtest$(EXEEXT): $(hashtest_OBJECTS) $(hashtest_DEPENDENCIES) $(EXTRA_hashtest_DEPENDENCIES) 
+	@rm -f hashtest$(EXEEXT)
+	$(AM_V_CCLD)$(hashtest_LINK) $(hashtest_OBJECTS) $(hashtest_LDADD) $(LIBS)
+
+points_1DtoND$(EXEEXT): $(points_1DtoND_OBJECTS) $(points_1DtoND_DEPENDENCIES) $(EXTRA_points_1DtoND_DEPENDENCIES) 
+	@rm -f points_1DtoND$(EXEEXT)
+	$(AM_V_CCLD)$(points_1DtoND_LINK) $(points_1DtoND_OBJECTS) $(points_1DtoND_LDADD) $(LIBS)
+
+query_minmax$(EXEEXT): $(query_minmax_OBJECTS) $(query_minmax_DEPENDENCIES) $(EXTRA_query_minmax_DEPENDENCIES) 
+	@rm -f query_minmax$(EXEEXT)
+	$(AM_V_CCLD)$(query_minmax_LINK) $(query_minmax_OBJECTS) $(query_minmax_LDADD) $(LIBS)
+
+read_points_2d$(EXEEXT): $(read_points_2d_OBJECTS) $(read_points_2d_DEPENDENCIES) $(EXTRA_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)
+
+test_strutil$(EXEEXT): $(test_strutil_OBJECTS) $(test_strutil_DEPENDENCIES) $(EXTRA_test_strutil_DEPENDENCIES) 
+	@rm -f test_strutil$(EXEEXT)
+	$(AM_V_CCLD)$(test_strutil_LINK) $(test_strutil_OBJECTS) $(test_strutil_LDADD) $(LIBS)
+
+text_to_pairstruct$(EXEEXT): $(text_to_pairstruct_OBJECTS) $(text_to_pairstruct_DEPENDENCIES) $(EXTRA_text_to_pairstruct_DEPENDENCIES) 
+	@rm -f text_to_pairstruct$(EXEEXT)
+	$(AM_V_CCLD)$(text_to_pairstruct_LINK) $(text_to_pairstruct_OBJECTS) $(text_to_pairstruct_LDADD) $(LIBS)
+
+transforms_specparse$(EXEEXT): $(transforms_specparse_OBJECTS) $(transforms_specparse_DEPENDENCIES) $(EXTRA_transforms_specparse_DEPENDENCIES) 
+	@rm -f transforms_specparse$(EXEEXT)
+	$(AM_V_CCLD)$(transforms_specparse_LINK) $(transforms_specparse_OBJECTS) $(transforms_specparse_LDADD) $(LIBS)
+
+trim_spaces$(EXEEXT): $(trim_spaces_OBJECTS) $(trim_spaces_DEPENDENCIES) $(EXTRA_trim_spaces_DEPENDENCIES) 
+	@rm -f trim_spaces$(EXEEXT)
+	$(AM_V_CCLD)$(trim_spaces_LINK) $(trim_spaces_OBJECTS) $(trim_spaces_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/copy_subvolume-copy_subvolume.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/group_free_test-group_free_test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hashtest-hashtest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/points_1DtoND-points_1DtoND.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/query_minmax-query_minmax.Po at am__quote@
+ at 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@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_strutil-test_strutil.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/transforms_specparse-transforms_specparse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/trim_spaces-trim_spaces.Po at am__quote@
+
+.F90.o:
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $<
+
+.F90.obj:
+	$(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.F90.lo:
+	$(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $<
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+copy_subvolume-copy_subvolume.o: copy_subvolume.c
+ at 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
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo $(DEPDIR)/copy_subvolume-copy_subvolume.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='copy_subvolume.c' object='copy_subvolume-copy_subvolume.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) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o copy_subvolume-copy_subvolume.o `test -f 'copy_subvolume.c' || echo '$(srcdir)/'`copy_subvolume.c
+
+copy_subvolume-copy_subvolume.obj: copy_subvolume.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT copy_subvolume-copy_subvolume.obj -MD -MP -MF $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo -c -o copy_subvolume-copy_subvolume.obj `if test -f 'copy_subvolume.c'; then $(CYGPATH_W) 'copy_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/copy_subvolume.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo $(DEPDIR)/copy_subvolume-copy_subvolume.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='copy_subvolume.c' object='copy_subvolume-copy_subvolume.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) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o copy_subvolume-copy_subvolume.obj `if test -f 'copy_subvolume.c'; then $(CYGPATH_W) 'copy_subvolume.c'; else $(CYGPATH_W) '$(srcdir)/copy_subvolume.c'; fi`
+
+group_free_test-group_free_test.o: group_free_test.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT group_free_test-group_free_test.o -MD -MP -MF $(DEPDIR)/group_free_test-group_free_test.Tpo -c -o group_free_test-group_free_test.o `test -f 'group_free_test.c' || echo '$(srcdir)/'`group_free_test.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/group_free_test-group_free_test.Tpo $(DEPDIR)/group_free_test-group_free_test.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='group_free_test.c' object='group_free_test-group_free_test.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) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o group_free_test-group_free_test.o `test -f 'group_free_test.c' || echo '$(srcdir)/'`group_free_test.c
+
+group_free_test-group_free_test.obj: group_free_test.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT group_free_test-group_free_test.obj -MD -MP -MF $(DEPDIR)/group_free_test-group_free_test.Tpo -c -o group_free_test-group_free_test.obj `if test -f 'group_free_test.c'; then $(CYGPATH_W) 'group_free_test.c'; else $(CYGPATH_W) '$(srcdir)/group_free_test.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/group_free_test-group_free_test.Tpo $(DEPDIR)/group_free_test-group_free_test.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='group_free_test.c' object='group_free_test-group_free_test.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) $(group_free_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o group_free_test-group_free_test.obj `if test -f 'group_free_test.c'; then $(CYGPATH_W) 'group_free_test.c'; else $(CYGPATH_W) '$(srcdir)/group_free_test.c'; fi`
+
+hashtest-hashtest.o: hashtest.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hashtest-hashtest.o -MD -MP -MF $(DEPDIR)/hashtest-hashtest.Tpo -c -o hashtest-hashtest.o `test -f 'hashtest.c' || echo '$(srcdir)/'`hashtest.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hashtest-hashtest.Tpo $(DEPDIR)/hashtest-hashtest.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hashtest.c' object='hashtest-hashtest.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) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hashtest-hashtest.o `test -f 'hashtest.c' || echo '$(srcdir)/'`hashtest.c
+
+hashtest-hashtest.obj: hashtest.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hashtest-hashtest.obj -MD -MP -MF $(DEPDIR)/hashtest-hashtest.Tpo -c -o hashtest-hashtest.obj `if test -f 'hashtest.c'; then $(CYGPATH_W) 'hashtest.c'; else $(CYGPATH_W) '$(srcdir)/hashtest.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hashtest-hashtest.Tpo $(DEPDIR)/hashtest-hashtest.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hashtest.c' object='hashtest-hashtest.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) $(hashtest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hashtest-hashtest.obj `if test -f 'hashtest.c'; then $(CYGPATH_W) 'hashtest.c'; else $(CYGPATH_W) '$(srcdir)/hashtest.c'; fi`
+
+points_1DtoND-points_1DtoND.o: points_1DtoND.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(points_1DtoND_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT points_1DtoND-points_1DtoND.o -MD -MP -MF $(DEPDIR)/points_1DtoND-points_1DtoND.Tpo -c -o points_1DtoND-points_1DtoND.o `test -f 'points_1DtoND.c' || echo '$(srcdir)/'`points_1DtoND.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/points_1DtoND-points_1DtoND.Tpo $(DEPDIR)/points_1DtoND-points_1DtoND.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='points_1DtoND.c' object='points_1DtoND-points_1DtoND.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) $(points_1DtoND_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o points_1DtoND-points_1DtoND.o `test -f 'points_1DtoND.c' || echo '$(srcdir)/'`points_1DtoND.c
+
+points_1DtoND-points_1DtoND.obj: points_1DtoND.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(points_1DtoND_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT points_1DtoND-points_1DtoND.obj -MD -MP -MF $(DEPDIR)/points_1DtoND-points_1DtoND.Tpo -c -o points_1DtoND-points_1DtoND.obj `if test -f 'points_1DtoND.c'; then $(CYGPATH_W) 'points_1DtoND.c'; else $(CYGPATH_W) '$(srcdir)/points_1DtoND.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/points_1DtoND-points_1DtoND.Tpo $(DEPDIR)/points_1DtoND-points_1DtoND.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='points_1DtoND.c' object='points_1DtoND-points_1DtoND.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) $(points_1DtoND_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o points_1DtoND-points_1DtoND.obj `if test -f 'points_1DtoND.c'; then $(CYGPATH_W) 'points_1DtoND.c'; else $(CYGPATH_W) '$(srcdir)/points_1DtoND.c'; fi`
+
+query_minmax-query_minmax.o: query_minmax.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(query_minmax_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT query_minmax-query_minmax.o -MD -MP -MF $(DEPDIR)/query_minmax-query_minmax.Tpo -c -o query_minmax-query_minmax.o `test -f 'query_minmax.c' || echo '$(srcdir)/'`query_minmax.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/query_minmax-query_minmax.Tpo $(DEPDIR)/query_minmax-query_minmax.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='query_minmax.c' object='query_minmax-query_minmax.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) $(query_minmax_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query_minmax-query_minmax.o `test -f 'query_minmax.c' || echo '$(srcdir)/'`query_minmax.c
+
+query_minmax-query_minmax.obj: query_minmax.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(query_minmax_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT query_minmax-query_minmax.obj -MD -MP -MF $(DEPDIR)/query_minmax-query_minmax.Tpo -c -o query_minmax-query_minmax.obj `if test -f 'query_minmax.c'; then $(CYGPATH_W) 'query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query_minmax.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/query_minmax-query_minmax.Tpo $(DEPDIR)/query_minmax-query_minmax.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='query_minmax.c' object='query_minmax-query_minmax.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) $(query_minmax_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o query_minmax-query_minmax.obj `if test -f 'query_minmax.c'; then $(CYGPATH_W) 'query_minmax.c'; else $(CYGPATH_W) '$(srcdir)/query_minmax.c'; fi`
+
+read_points_2d-read_points_2d.o: read_points_2d.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_2d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT read_points_2d-read_points_2d.o -MD -MP -MF $(DEPDIR)/read_points_2d-read_points_2d.Tpo -c -o read_points_2d-read_points_2d.o `test -f 'read_points_2d.c' || echo '$(srcdir)/'`read_points_2d.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_points_2d-read_points_2d.Tpo $(DEPDIR)/read_points_2d-read_points_2d.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read_points_2d.c' object='read_points_2d-read_points_2d.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_2d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_points_2d-read_points_2d.o `test -f 'read_points_2d.c' || echo '$(srcdir)/'`read_points_2d.c
+
+read_points_2d-read_points_2d.obj: read_points_2d.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_2d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT read_points_2d-read_points_2d.obj -MD -MP -MF $(DEPDIR)/read_points_2d-read_points_2d.Tpo -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`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_points_2d-read_points_2d.Tpo $(DEPDIR)/read_points_2d-read_points_2d.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read_points_2d.c' object='read_points_2d-read_points_2d.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_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
+ at 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
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_strutil-test_strutil.Tpo $(DEPDIR)/test_strutil-test_strutil.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test_strutil.c' object='test_strutil-test_strutil.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) $(test_strutil_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_strutil-test_strutil.o `test -f 'test_strutil.c' || echo '$(srcdir)/'`test_strutil.c
+
+test_strutil-test_strutil.obj: test_strutil.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_strutil_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_strutil-test_strutil.obj -MD -MP -MF $(DEPDIR)/test_strutil-test_strutil.Tpo -c -o test_strutil-test_strutil.obj `if test -f 'test_strutil.c'; then $(CYGPATH_W) 'test_strutil.c'; else $(CYGPATH_W) '$(srcdir)/test_strutil.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_strutil-test_strutil.Tpo $(DEPDIR)/test_strutil-test_strutil.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test_strutil.c' object='test_strutil-test_strutil.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) $(test_strutil_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_strutil-test_strutil.obj `if test -f 'test_strutil.c'; then $(CYGPATH_W) 'test_strutil.c'; else $(CYGPATH_W) '$(srcdir)/test_strutil.c'; fi`
+
+text_to_pairstruct-text_to_pairstruct.o: text_to_pairstruct.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(text_to_pairstruct_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT text_to_pairstruct-text_to_pairstruct.o -MD -MP -MF $(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Tpo -c -o text_to_pairstruct-text_to_pairstruct.o `test -f 'text_to_pairstruct.c' || echo '$(srcdir)/'`text_to_pairstruct.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Tpo $(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='text_to_pairstruct.c' object='text_to_pairstruct-text_to_pairstruct.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) $(text_to_pairstruct_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o text_to_pairstruct-text_to_pairstruct.o `test -f 'text_to_pairstruct.c' || echo '$(srcdir)/'`text_to_pairstruct.c
+
+text_to_pairstruct-text_to_pairstruct.obj: text_to_pairstruct.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(text_to_pairstruct_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT text_to_pairstruct-text_to_pairstruct.obj -MD -MP -MF $(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Tpo -c -o text_to_pairstruct-text_to_pairstruct.obj `if test -f 'text_to_pairstruct.c'; then $(CYGPATH_W) 'text_to_pairstruct.c'; else $(CYGPATH_W) '$(srcdir)/text_to_pairstruct.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Tpo $(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='text_to_pairstruct.c' object='text_to_pairstruct-text_to_pairstruct.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) $(text_to_pairstruct_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o text_to_pairstruct-text_to_pairstruct.obj `if test -f 'text_to_pairstruct.c'; then $(CYGPATH_W) 'text_to_pairstruct.c'; else $(CYGPATH_W) '$(srcdir)/text_to_pairstruct.c'; fi`
+
+transforms_specparse-transforms_specparse.o: transforms_specparse.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT transforms_specparse-transforms_specparse.o -MD -MP -MF $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo -c -o transforms_specparse-transforms_specparse.o `test -f 'transforms_specparse.c' || echo '$(srcdir)/'`transforms_specparse.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo $(DEPDIR)/transforms_specparse-transforms_specparse.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='transforms_specparse.c' object='transforms_specparse-transforms_specparse.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) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transforms_specparse-transforms_specparse.o `test -f 'transforms_specparse.c' || echo '$(srcdir)/'`transforms_specparse.c
+
+transforms_specparse-transforms_specparse.obj: transforms_specparse.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT transforms_specparse-transforms_specparse.obj -MD -MP -MF $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo -c -o transforms_specparse-transforms_specparse.obj `if test -f 'transforms_specparse.c'; then $(CYGPATH_W) 'transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/transforms_specparse.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/transforms_specparse-transforms_specparse.Tpo $(DEPDIR)/transforms_specparse-transforms_specparse.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='transforms_specparse.c' object='transforms_specparse-transforms_specparse.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) $(transforms_specparse_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transforms_specparse-transforms_specparse.obj `if test -f 'transforms_specparse.c'; then $(CYGPATH_W) 'transforms_specparse.c'; else $(CYGPATH_W) '$(srcdir)/transforms_specparse.c'; fi`
+
+trim_spaces-trim_spaces.o: trim_spaces.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trim_spaces_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT trim_spaces-trim_spaces.o -MD -MP -MF $(DEPDIR)/trim_spaces-trim_spaces.Tpo -c -o trim_spaces-trim_spaces.o `test -f 'trim_spaces.c' || echo '$(srcdir)/'`trim_spaces.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/trim_spaces-trim_spaces.Tpo $(DEPDIR)/trim_spaces-trim_spaces.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='trim_spaces.c' object='trim_spaces-trim_spaces.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) $(trim_spaces_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o trim_spaces-trim_spaces.o `test -f 'trim_spaces.c' || echo '$(srcdir)/'`trim_spaces.c
+
+trim_spaces-trim_spaces.obj: trim_spaces.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trim_spaces_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT trim_spaces-trim_spaces.obj -MD -MP -MF $(DEPDIR)/trim_spaces-trim_spaces.Tpo -c -o trim_spaces-trim_spaces.obj `if test -f 'trim_spaces.c'; then $(CYGPATH_W) 'trim_spaces.c'; else $(CYGPATH_W) '$(srcdir)/trim_spaces.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/trim_spaces-trim_spaces.Tpo $(DEPDIR)/trim_spaces-trim_spaces.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='trim_spaces.c' object='trim_spaces-trim_spaces.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) $(trim_spaces_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o trim_spaces-trim_spaces.obj `if test -f 'trim_spaces.c'; then $(CYGPATH_W) 'trim_spaces.c'; else $(CYGPATH_W) '$(srcdir)/trim_spaces.c'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+hashtest.log: hashtest$(EXEEXT)
+	@p='hashtest$(EXEEXT)'; \
+	b='hashtest'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+copy_subvolume.log: copy_subvolume$(EXEEXT)
+	@p='copy_subvolume$(EXEEXT)'; \
+	b='copy_subvolume'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+text_to_pairstruct.log: text_to_pairstruct$(EXEEXT)
+	@p='text_to_pairstruct$(EXEEXT)'; \
+	b='text_to_pairstruct'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_strutil.log: test_strutil$(EXEEXT)
+	@p='test_strutil$(EXEEXT)'; \
+	b='test_strutil'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+points_1DtoND.log: points_1DtoND$(EXEEXT)
+	@p='points_1DtoND$(EXEEXT)'; \
+	b='points_1DtoND'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+trim_spaces.log: trim_spaces$(EXEEXT)
+	@p='trim_spaces$(EXEEXT)'; \
+	b='trim_spaces'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+transforms_specparse.log: transforms_specparse$(EXEEXT)
+	@p='transforms_specparse$(EXEEXT)'; \
+	b='transforms_specparse'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+group_free_test.log: group_free_test$(EXEEXT)
+	@p='group_free_test$(EXEEXT)'; \
+	b='group_free_test'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+query_minmax.log: query_minmax$(EXEEXT)
+	@p='query_minmax$(EXEEXT)'; \
+	b='query_minmax'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+read_points_2d.log: read_points_2d$(EXEEXT)
+	@p='read_points_2d$(EXEEXT)'; \
+	b='read_points_2d'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+read_points_3d.log: read_points_3d$(EXEEXT)
+	@p='read_points_3d$(EXEEXT)'; \
+	b='read_points_3d'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+selection_api.log: selection_api$(EXEEXT)
+	@p='selection_api$(EXEEXT)'; \
+	b='selection_api'; \
+	$(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) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+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)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	recheck tags tags-am uninstall uninstall-am
+
+hashtest.o: hashtest.c
+copy_subvolume.o: copy_subvolume.c
+text_to_pairstruct.o: text_to_pairstruct.c
+test_strutil.o: test_strutil.c
+points_1DtoND.o: points_1DtoND.c
+trim_spaces.o: trim_spaces.c
+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
+
+# 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.
+.NOEXPORT:
diff --git a/tests/suite/programs/copy_subvolume.c b/tests/test_src/copy_subvolume.c
similarity index 100%
rename from tests/suite/programs/copy_subvolume.c
rename to tests/test_src/copy_subvolume.c
diff --git a/tests/suite/programs/group_free_test.c b/tests/test_src/group_free_test.c
similarity index 97%
rename from tests/suite/programs/group_free_test.c
rename to tests/test_src/group_free_test.c
index 9aa1a5a..cb417ff 100644
--- a/tests/suite/programs/group_free_test.c
+++ b/tests/test_src/group_free_test.c
@@ -47,7 +47,7 @@ int main (int argc, char ** argv)
 
 
 	adios_init_noxml (comm);
-        adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10);
+        adios_set_max_buffer_size (10);
 
         int64_t   groupid[NGROUPS];
         int64_t   var_ids[NGROUPS][NBLOCKS];
diff --git a/tests/suite/programs/hashtest.c b/tests/test_src/hashtest.c
similarity index 100%
rename from tests/suite/programs/hashtest.c
rename to tests/test_src/hashtest.c
diff --git a/tests/test_src/points_1DtoND.c b/tests/test_src/points_1DtoND.c
new file mode 100644
index 0000000..54aabb0
--- /dev/null
+++ b/tests/test_src/points_1DtoND.c
@@ -0,0 +1,422 @@
+/* 
+ * 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: 
+ *  Create 1D points in N-dimensional bounding box containers and test the
+ *  function adios_selection_points_1DtoND() to convert them to N-D points
+ *
+ * How to run: ./points_1DtoND
+ *
+ */
+#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, "[line %3d]: ", __LINE__); fprintf (stderr, __VA_ARGS__); fflush(stderr);
+#define printE(...) fprintf (stderr, "[line %3d]: ERROR: ", __LINE__); fprintf (stderr, __VA_ARGS__); fflush(stderr);
+
+
+static const int MAX_POINTS = 1000000;
+
+
+ADIOS_SELECTION *pts;
+ADIOS_SELECTION *box;
+uint64_t boxstart[3];
+uint64_t boxcount[3];
+
+uint64_t *p1D = NULL;      // 1D test point coordinates
+uint64_t *pND = NULL;      // converted point coordinates
+uint64_t *expected = NULL; // expected values of point coordinates
+
+int test_convert (ADIOS_SELECTION *pts1D, int ndim, int global, uint64_t *expected, enum ADIOS_ERRCODES expected_err)
+{
+    int nerr = 0;
+    int i, d;
+
+    ADIOS_SELECTION *ptsND = adios_selection_points_1DtoND(pts1D, global);
+
+    if (expected_err != adios_errno)
+    {
+        printE ("    Expected error code %d but got %d: %s\n", expected_err, adios_errno, adios_get_last_errmsg());
+        return 1;
+    }
+
+    if (expected_err == err_no_error)
+    {
+        if (ptsND->u.points.ndim != ndim)
+        {
+            printE ("    Expected %d-dimensional points but got %d-dimensional points\n", ndim, ptsND->u.points.ndim);
+            return 1;
+        }
+
+        uint64_t *p = ptsND->u.points.points;
+        uint64_t *e = expected;
+
+        for (i = 0; i < pts1D->u.points.npoints; i++)
+        {
+            for (d = 0; d < ndim; d++)
+            {
+                if (*p != *e)
+                {
+                    if (nerr < 10) {
+                        printE ("    Point %d, dimension %d expected value %" PRIu64 " but got %" PRIu64 "\n", i, d, *e, *p);
+                    }
+                    nerr++;
+                }
+                p++;
+                e++;
+            }
+        }
+        if (nerr >= 10) {
+            printE ("    Too many errors (%d), not printed all\n", nerr);
+        }
+
+        if (global)
+        {
+            // container should be NULL
+            if (ptsND->u.points.container_selection != NULL)
+            {
+                printE ("    Expected NULL container selection when converting points to global offsets but received non-NULL\n");
+                nerr++;
+            }
+        }
+        else
+        {
+            // container should be the same as the input container
+            if (ptsND->u.points.container_selection == NULL)
+            {
+                printE ("    Container selection is NULL when converting points to local offsets\n");
+                nerr++;
+            }
+            else
+            {
+                for (d = 0; d < ndim; d++)
+                {
+                    if (pts1D->u.points.container_selection->u.bb.start[d] != ptsND->u.points.container_selection->u.bb.start[d])
+                    {
+                        printE ("    Result container selection in dimension %d expected value %" PRIu64 " but got %" PRIu64 "\n",
+                                d, pts1D->u.points.container_selection->u.bb.start[d], ptsND->u.points.container_selection->u.bb.start[d]);
+                        nerr++;
+                        break;
+                    }
+                    if (pts1D->u.points.container_selection->u.bb.count[d] != ptsND->u.points.container_selection->u.bb.count[d])
+                    {
+                        printE ("    Result container selection in dimension %d expected value %" PRIu64 " but got %" PRIu64 "\n",
+                                d, pts1D->u.points.container_selection->u.bb.count[d], ptsND->u.points.container_selection->u.bb.count[d]);
+                        nerr++;
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    else
+    {
+        log ("     Expected error detected");
+        if (ptsND != NULL)
+        {
+            printf (" but the results is not NULL");
+            nerr++;
+        }
+        printf ("\n");
+    }
+
+    if (ptsND)
+        adios_selection_delete (ptsND);
+    return nerr;
+}
+
+int test ()
+{
+    int err=0;
+
+    int maxpoints = 10*MAX_POINTS;
+    int global;
+
+    while (!p1D || !pND || !expected)
+    {
+        maxpoints = maxpoints / 10;
+        if (!p1D)
+            p1D = (uint64_t *) malloc (MAX_POINTS * sizeof(uint64_t));
+        if (!pND)
+            pND = (uint64_t *) malloc (3 * MAX_POINTS * sizeof(uint64_t));
+        if (!expected)
+            expected = (uint64_t *) malloc (3 * MAX_POINTS * sizeof(uint64_t));
+    }
+
+
+    /*
+     * Tests that should succeed
+     */
+
+    // Convert zero 1D point in 2D box
+    p1D[0] = 0;
+    pts = adios_selection_points(1, 0, p1D);
+    boxstart[0] = 3; boxstart[1] = 4;
+    boxcount[0] = 5; boxcount[1] = 4;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    log ("  Convert 1D point list of zero points in 2D box to local 2D point\n");
+    err = test_convert (pts, 2, global, expected, err_no_error);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endtest;
+    }
+    global = 1;
+    log ("  Convert 1D point list of zero points in 2D box to global 2D point\n");
+    err = test_convert (pts, 2, global, expected, err_no_error);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+    // Convert a single 1D point in 2D box
+    // box 5x4 with start offset (3,4)
+    // local conversion:  point 9 -> (2,1)
+    // global conversion:  point 9 -> (5,5)
+    p1D[0] = 9;
+    pts = adios_selection_points(1, 1, p1D);
+    boxstart[0] = 3; boxstart[1] = 4;
+    boxcount[0] = 5; boxcount[1] = 4;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    expected[0] = 2;     expected[1] = 1;
+    log ("  Convert single 1D point in 2D box to local 2D point\n");
+    err = test_convert (pts, 2, global, expected, err_no_error);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endtest;
+    }
+    global = 1;
+    expected[0] = 5;     expected[1] = 5;
+    log ("  Convert single 1D point in 2D box to global 2D point\n");
+    err = test_convert (pts, 2, global, expected, err_no_error);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+    // Convert a two 1D points in 2D box
+    // box 5x4 with start offset (3,4)
+    // local conversion:  point 7 -> (1,3), 8 -> (2,0)
+    // global conversion: point 7 -> (4,7), 8 -> (5,4)
+    p1D[0] = 7;
+    p1D[1] = 8;
+    pts = adios_selection_points(1, 1, p1D);
+    boxstart[0] = 3; boxstart[1] = 4;
+    boxcount[0] = 5; boxcount[1] = 4;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    expected[0] = 1;     expected[1] = 3;
+    expected[2] = 2;     expected[3] = 0;
+    log ("  Convert two 1D points in 2D box to local 2D point\n");
+    err = test_convert (pts, 2, global, expected, err_no_error);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endtest;
+    }
+    global = 1;
+    expected[0] = 4;     expected[1] = 7;
+    expected[2] = 5;     expected[3] = 4;
+    log ("  Convert two 1D points in 2D box to global 2D point\n");
+    err = test_convert (pts, 2, global, expected, err_no_error);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+
+    // Convert a single 1D point in 3D box
+    // box 5x4x2, with start offset (3,4,7)
+    // local conversion:  point 9 -> (1,0,1)
+    // global conversion:  point 9 -> (4,4,8)
+    p1D[0] = 9;
+    pts = adios_selection_points(1, 1, p1D);
+    boxstart[0] = 3; boxstart[1] = 4; boxstart[2] = 7;
+    boxcount[0] = 5; boxcount[1] = 4; boxcount[2] = 2;
+    box = adios_selection_boundingbox (3, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    expected[0] = 1;     expected[1] = 0;    expected[2] = 1;
+    log ("  Convert single 1D point in 3D box to local 3D point\n");
+    err = test_convert (pts, 3, global, expected, err_no_error);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endtest;
+    }
+    global = 1;
+    expected[0] = 4;     expected[1] = 4;    expected[2] = 8;
+    log ("  Convert single 1D point in 3D box to global 3D point\n");
+    err = test_convert (pts, 3, global, expected, err_no_error);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+    // Convert two 1D points in 3D box
+    // box 5x4x2, with start offset (3,4,7)
+    // local conversion:  point 9 -> (1,0,1), 20 -> (2,2,0)
+    // global conversion:  point 9 -> (4,4,8), 20 -> (5,6,7)
+    p1D[0] = 9;
+    p1D[1] = 20;
+    pts = adios_selection_points(1, 1, p1D);
+    boxstart[0] = 3; boxstart[1] = 4; boxstart[2] = 7;
+    boxcount[0] = 5; boxcount[1] = 4; boxcount[2] = 2;
+    box = adios_selection_boundingbox (3, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    expected[0] = 1;     expected[1] = 0;    expected[2] = 1;
+    expected[3] = 2;     expected[4] = 2;    expected[5] = 0;
+    log ("  Convert two 1D points in 3D box to local 3D point\n");
+    err = test_convert (pts, 3, global, expected, err_no_error);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endtest;
+    }
+    global = 1;
+    expected[0] = 4;     expected[1] = 4;    expected[2] = 8;
+    expected[3] = 5;     expected[4] = 6;    expected[5] = 7;
+    log ("  Convert two 1D points in 3D box to global 3D point\n");
+    err = test_convert (pts, 3, global, expected, err_no_error);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+    // Convert all 1D points in 3D box
+    int d3 = maxpoints / (70*90);
+    int d2 = maxpoints / d3 / 90;
+    int d1 = maxpoints / (d2*d3);
+    int n = d1*d2*d3;
+    int i,j,k;
+
+    for (i = 0; i < n; ++i) {
+        p1D[i] = i;
+    }
+
+    pts = adios_selection_points(1, n, p1D);
+    boxstart[0] = 100; boxstart[1] = 200; boxstart[2] = 300;
+    boxcount[0] = d1; boxcount[1] = d2; boxcount[2] = d3;
+    box = adios_selection_boundingbox (3, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    uint64_t *e = expected;
+    for (i = 0; i < d1; ++i) {
+        for (j = 0; j < d2; ++j) {
+            for (k = 0; k < d3; ++k) {
+                e[0] = i;
+                e[1] = j;
+                e[2] = k;
+                e = e + 3;
+            }
+        }
+    }
+    log ("  Convert all %d 1D points in a %dx%dx%d box to local 3D points\n", n, d1,d2,d3);
+    err = test_convert (pts, 3, global, expected, err_no_error);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endtest;
+    }
+    global = 1;
+    e = expected;
+    for (i = 0; i < d1; ++i) {
+        for (j = 0; j < d2; ++j) {
+            for (k = 0; k < d3; ++k) {
+                e[0] = e[0] + boxstart[0];
+                e[1] = e[1] + boxstart[1];
+                e[2] = e[2] + boxstart[2];
+                e = e + 3;
+            }
+        }
+    }
+    log ("  Convert all %d 1D points in a %dx%dx%d box to global 3D points\n", n, d1,d2,d3);
+    err = test_convert (pts, 3, global, expected, err_no_error);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+
+    /*
+     * Tests that should fail
+     */
+
+    // Convert a single point with NULL container selection
+    // This function should return NULL and print an error
+    p1D[0] = 0;
+    pts = adios_selection_points(1, 1, p1D);
+    pts->u.points.container_selection = NULL;
+    global = 0;
+    expected[0] = 0;
+    log ("  Convert single 1D point without container selection, expect error\n");
+    err = test_convert (pts, 2, global, expected, err_invalid_selection);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+
+    // Convert a single 2D point with NULL container selection
+    // This function should return NULL and print an error
+    p1D[0] = 0; p1D[1] = 0;
+    pts = adios_selection_points(2, 1, p1D);
+    boxstart[0] = 3; boxstart[1] = 4;
+    boxcount[0] = 5; boxcount[1] = 4;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+    pts->u.points.container_selection = box;
+    global = 0;
+    expected[0] = 0;
+    log ("  Convert single 2D point in 2D box, expect error\n");
+    err = test_convert (pts, 2, global, expected, err_invalid_selection);
+    adios_selection_delete(pts);
+    if (err)
+        goto endtest;
+
+    // Convert a single point in writeblock 2
+    // This function should return NULL and print an error
+    ADIOS_SELECTION *wblock = adios_selection_writeblock(2);
+
+    p1D[0] = 0;
+    pts = adios_selection_points(1, 1, p1D);
+    pts->u.points.container_selection = wblock;
+    global = 0;
+    expected[0] = 0;
+    log ("  Convert single 1D point in a writeblock, expect error\n");
+    err = test_convert (pts, 2, global, expected, err_invalid_selection);
+    adios_selection_delete(pts);
+    //adios_selection_delete (wblock); // deleted when pts is deleted
+    if (err)
+        goto endtest;
+
+
+endtest:
+    return err;
+}
+
+int main (int argc, char ** argv)
+{
+    int err = test();
+    if (!err) {
+        log ("All tests succeeded\n")
+    } else {
+        log ("A test failed, consecutive tests were not executed\n")
+    }
+    return err;
+}
diff --git a/tests/test_src/query_minmax.c b/tests/test_src/query_minmax.c
new file mode 100644
index 0000000..cd73749
--- /dev/null
+++ b/tests/test_src/query_minmax.c
@@ -0,0 +1,379 @@
+/* 
+ * 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 2D array of 2D blocks. Each block is a 5x5 array.
+ *  The whole array is patterned like this:
+ *
+ *  1 2 3 4 ...
+ *  2 3 4 ...
+ *  3 4 ...
+ *  4 ..
+ *
+ *  Then test the minmax query method if it returns the correct results
+ *
+ * How to run: ./query_minmax <N> <steps>
+ * It writes N*N 2D blocks organized into a NxN 2D array.
+ * Output: query_minmax.bp
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <errno.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 = 1;       // organize blocks in NxN shape
+int NSTEPS = 1;  // number of output steps
+
+static const char FILENAME[] = "query_minmax.bp";
+#define VALUE(rank, step) (step * 1000 + rank + 1)
+
+#define LDIM1 5
+#define LDIM2 5
+static const int ldim1 = LDIM1;
+static const int ldim2 = LDIM2;
+int gdim1, gdim2;
+int offs1, offs2;
+
+int64_t       m_adios_group;
+
+/* Variables to write */
+float  a2[LDIM1*LDIM2];
+
+/* Variables to read */
+float  r2[LDIM1*LDIM2];
+
+MPI_Comm    comm = MPI_COMM_SELF; // dummy comm for sequential code
+int rank;
+int size;
+
+
+void set_gdim()
+{
+    gdim1 = N*ldim1;
+    gdim2 = N*ldim2;
+}
+
+void set_offsets (int row, int col)
+{
+	offs1 = row*ldim1;
+	offs2 = col*ldim2;
+}
+
+void fill_block(int step, int row, int col)
+{
+	int n;
+    float v_start = 1.0*(step+1) + row*ldim1 + col*ldim2;
+    float v;
+    int i, j, k;
+
+    n = ldim1 * ldim2;
+    //log ("  Fill up array of %d elements starting from value %f...\n",n,v_start);
+    k = 0;
+    for (i=0; i<ldim1; i++) {
+    	v = v_start + i*1.0;
+        //log ("      row %d starts from value %f... (element %d)\n",i,v,k);
+    	for (j=0; j<ldim2; j++) {
+    		a2[k] = v;
+    		k++;
+    		v++;
+    	}
+    }
+}
+
+
+void Usage() 
+{
+    printf("Usage: query_minmax <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 query_as_file ();
+
+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 query_minmax <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, "query_minmax", "", 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 = query_as_file ();
+
+    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, "gdim1", "", adios_integer, 0, 0, 0);
+    adios_define_var (m_adios_group, "gdim2", "", 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);
+
+    for (i=0; i<N*N; i++) {
+    	adios_define_var (m_adios_group, "data", "", adios_real,
+    			"ldim1,ldim2",
+				"gdim1,gdim2",
+				"offs1,offs2");
+    }
+}
+
+int write_file (int step) 
+{
+    int64_t       fh;
+    uint64_t       groupsize=0, totalsize;
+    int           nblocks = N*N;
+    int           i, j;
+    double        tb, te;
+
+    log ("Write step %d to %s\n", step, FILENAME);
+    adios_open (&fh, "query_minmax", 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++) {
+    		set_offsets (i, j);
+    		fill_block (step, i, j);
+    		adios_write (fh, "gdim1", &gdim1);
+    		adios_write (fh, "gdim2", &gdim2);
+    		adios_write (fh, "ldim1", &ldim1);
+    		adios_write (fh, "ldim2", &ldim2);
+    		adios_write (fh, "offs1", &offs1);
+    		adios_write (fh, "offs2", &offs2);
+    		/*
+    		int k=0, l, m;
+    		for (l=0; l<ldim1; l++) {
+    	        printf ("      a[%d,*] = ",l);
+    	    	for (m=0; m<ldim2; m++) {
+        	        printf ("%2.0f ",a2[k]);
+    	    		k++;
+    	    	}
+    	    	printf ("\n");
+    	    }
+	    	printf ("\n");
+	    	*/
+    		adios_write (fh, "data", a2);
+     	}
+    }
+    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 (r2,  0, n*sizeof(float));
+}
+
+static const char minstr[] = "11.0";
+static const char maxstr[] = "21.0";
+
+int query_test (ADIOS_FILE *f, ADIOS_SELECTION *boxsel)
+{
+    int nerr = 0;
+    int step;
+    ADIOS_QUERY  *q1, *q2, *q;
+    double        tb, te;
+    double        teb, t_eval; // time for just evaluating query for one step
+
+    q1 = adios_query_create (f, boxsel, "data", ADIOS_GTEQ, minstr);
+    q2 = adios_query_create (f, boxsel, "data", ADIOS_LTEQ, maxstr);
+    q  = adios_query_combine (q1, ADIOS_QUERY_OP_AND, q2);
+
+    if (q == NULL)  {
+        log ("ERROR: Query creation failed: %s\n", adios_errmsg());
+        return 1;
+    }
+
+    // We can call this with unknown too, just testing the default behavior here
+    adios_query_set_method (q, ADIOS_QUERY_METHOD_MINMAX);
+
+    for (step=0; step<NSTEPS; step++) {
+        tb = MPI_Wtime();
+        t_eval = 0;
+
+        // retrieve the whole query result at once
+        int64_t batchSize = N*N;
+        log ("    set upper limit to total number of blocks in array  = %lld\n", batchSize);
+
+        teb = MPI_Wtime();
+        ADIOS_QUERY_RESULT *result = adios_query_evaluate(q, boxsel, step, batchSize);
+        t_eval += MPI_Wtime() - teb;
+
+        if (result->status == ADIOS_QUERY_RESULT_ERROR) {
+            log ("ERROR: Query evaluation failed with error: %s\n", adios_errmsg());
+            nerr++;
+        }
+        else if (result->status == ADIOS_QUERY_HAS_MORE_RESULTS)
+        {
+            log ("ERROR: Query retrieval failure: "
+                   "it says it has more results to retrieve, although we "
+                   "tried to get all at once\n");
+            nerr++;
+        }
+
+        log ("    Query returned %d blocks as result\n", result->nselections);
+        free (result->selections);
+
+        MPI_Barrier (comm);
+        te = MPI_Wtime();
+        log ("  Processing time for step %d was %6.3lfs, query evaluation was %6.3lfs\n",
+                step, te-tb, t_eval);
+    }
+
+    adios_query_free(q);
+    adios_query_free(q2);
+    adios_query_free(q1);
+    return nerr;
+}
+
+
+int query_as_file ()
+{
+    ADIOS_FILE * f;
+    ADIOS_VARINFO * vi;
+    int err=0;
+    double        tb, te;
+
+    uint64_t start[2] = {0,0};
+    uint64_t count[2] = {gdim1,gdim2};
+    
+    reset_readvars();
+
+    log ("Query data in %s\n", FILENAME);
+    tb = MPI_Wtime();
+    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;
+    }
+    te = MPI_Wtime();
+    log ("  File opening time was %6.3lfs\n", te-tb);
+
+    log ("  Check variable definitions... %s\n", FILENAME);
+    CHECK_VARINFO("data", 2, NSTEPS)
+    MPI_Barrier (comm);
+
+
+    // limit the query to the bounding box of this process
+    ADIOS_SELECTION *boxsel = adios_selection_boundingbox (2, start, count);
+    log ("  Query variable content with a bounding box selection...\n");
+    err += query_test (f, boxsel);
+    adios_selection_delete (boxsel);
+
+    // test with NULL bounding box selection, too
+    if (!err) {
+        log ("  Query variable content with NULL as bounding box selection...\n");
+        err += query_test (f, NULL);
+    }
+
+endread:
+
+
+    adios_read_close(f);
+    MPI_Barrier (comm);
+    return err;
+}
+
diff --git a/tests/test_src/read_points_2d.c b/tests/test_src/read_points_2d.c
new file mode 100644
index 0000000..e1a19e0
--- /dev/null
+++ b/tests/test_src/read_points_2d.c
@@ -0,0 +1,694 @@
+/* 
+ * 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 2D array of 4 2D blocks, multiple steps. Each block is a 5x5 array.
+ *  The whole array is 10x10 and is patterned like this: 10*step+<blockid>.<row><col>
+ *
+$ bpls -l read_points_2d.bp -d data -n 10 -f "%5.2f "
+  real     data                       2*{10, 10} = 0 / 13.44 / 6.72 / 5.12545
+    (0,0,0)     0.00   0.01   0.02   0.03   0.04  |  1.00   1.01   1.02   1.03   1.04
+    (0,1,0)     0.10   0.11   0.12   0.13   0.14  |  1.10   1.11   1.12   1.13   1.14
+    (0,2,0)     0.20   0.21   0.22   0.23   0.24  |  1.20   1.21   1.22   1.23   1.24
+    (0,3,0)     0.30   0.31   0.32   0.33   0.34  |  1.30   1.31   1.32   1.33   1.34
+    (0,4,0)     0.40   0.41   0.42   0.43   0.44  |  1.40   1.41   1.42   1.43   1.44
+    (0,5,0)     2.00   2.01   2.02   2.03   2.04  |  3.00   3.01   3.02   3.03   3.04
+    (0,6,0)     2.10   2.11   2.12   2.13   2.14  |  3.10   3.11   3.12   3.13   3.14
+    (0,7,0)     2.20   2.21   2.22   2.23   2.24  |  3.20   3.21   3.22   3.23   3.24
+    (0,8,0)     2.30   2.31   2.32   2.33   2.34  |  3.30   3.31   3.32   3.33   3.34
+    (0,9,0)     2.40   2.41   2.42   2.43   2.44  |  3.40   3.41   3.42   3.43   3.44
+    ----------------------------------------------+----------------------------------
+    (1,0,0)    10.00  10.01  10.02  10.03  10.04  | 11.00  11.01  11.02  11.03  11.04
+    (1,1,0)    10.10  10.11  10.12  10.13  10.14  | 11.10  11.11  11.12  11.13  11.14
+    (1,2,0)    10.20  10.21  10.22  10.23  10.24  | 11.20  11.21  11.22  11.23  11.24
+    (1,3,0)    10.30  10.31  10.32  10.33  10.34  | 11.30  11.31  11.32  11.33  11.34
+    (1,4,0)    10.40  10.41  10.42  10.43  10.44  | 11.40  11.41  11.42  11.43  11.44
+    (1,5,0)    12.00  12.01  12.02  12.03  12.04  | 13.00  13.01  13.02  13.03  13.04
+    (1,6,0)    12.10  12.11  12.12  12.13  12.14  | 13.10  13.11  13.12  13.13  13.14
+    (1,7,0)    12.20  12.21  12.22  12.23  12.24  | 13.20  13.21  13.22  13.23  13.24
+    (1,8,0)    12.30  12.31  12.32  12.33  12.34  | 13.30  13.31  13.32  13.33  13.34
+    (1,9,0)    12.40  12.41  12.42  12.43  12.44  | 13.40  13.41  13.42  13.43  13.44
+
+ *
+ *  Then test every possible reading of points
+ *    with a bounding box container, and without
+ *    with a writeblock container
+ *    1D and 2D points (local offset in contiguous space vs N-dim points)
+ *    multiple timesteps
+ *
+ * How to run: ./read_points <N> <steps>
+ * It writes N*N 2D blocks organized into a NxN 2D array.
+ * Output: read_points_2d.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 = 1;       // organize blocks in NxN shape
+int NSTEPS = 1;  // number of output steps
+
+static const char FILENAME[] = "read_points_2d.bp";
+#define VALUE(rank, step) (step * 1000 + rank + 1)
+
+#define LDIM1 5
+#define LDIM2 5
+
+static const int ldim1 = LDIM1;
+static const int ldim2 = LDIM2;
+int gdim1, gdim2;
+int offs1, offs2;
+
+int64_t       m_adios_group;
+
+/* Variables to write */
+float  a2[LDIM1*LDIM2];
+
+/* Variables to read */
+float  r2[LDIM1*LDIM2];
+
+MPI_Comm    comm = MPI_COMM_SELF; // dummy comm for sequential code
+int rank;
+int size;
+
+
+void set_gdim()
+{
+    gdim1 = N*ldim1;
+    gdim2 = N*ldim2;
+}
+
+void set_offsets (int row, int col)
+{
+    offs1 = row*ldim1;
+    offs2 = col*ldim2;
+}
+
+void fill_block(int step, int row, int col)
+{
+    int n;
+    float v_intpart = 10*step + row*N + col;
+    float v;
+    int i, j, k;
+
+    n = ldim1 * ldim2;
+    //log ("  Fill up array of %d elements starting from value %f...\n",n,v_start);
+    k = 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++) {
+            a2[k] = v;
+            k++;
+            v += 0.01;
+        }
+    }
+}
+
+
+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, "gdim1", "", adios_integer, 0, 0, 0);
+    adios_define_var (m_adios_group, "gdim2", "", 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);
+
+    for (i=0; i<N*N; i++) {
+        adios_define_var (m_adios_group, "data", "", adios_real,
+                "ldim1,ldim2",
+                "gdim1,gdim2",
+                "offs1,offs2");
+    }
+}
+
+int write_file (int step) 
+{
+    int64_t       fh;
+    int           i, j;
+    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++) {
+            set_offsets (i, j);
+            fill_block (step, i, j);
+            adios_write (fh, "gdim1", &gdim1);
+            adios_write (fh, "gdim2", &gdim2);
+            adios_write (fh, "ldim1", &ldim1);
+            adios_write (fh, "ldim2", &ldim2);
+            adios_write (fh, "offs1", &offs1);
+            adios_write (fh, "offs2", &offs2);
+            /*
+            int k=0, l, m;
+            for (l=0; l<ldim1; l++) {
+                printf ("      a[%d,*] = ",l);
+                for (m=0; m<ldim2; m++) {
+                    printf ("%2.0f ",a2[k]);
+                    k++;
+                }
+                printf ("\n");
+            }
+            printf ("\n");
+            */
+            adios_write (fh, "data", a2);
+         }
+    }
+    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 (r2,  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 (" %6.2f  ", data[idx]);
+            } else {
+                printf ("**%5.2f* ", 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 = %5.2f but was expected %5.2f\n",
+                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", 2, NSTEPS)
+    MPI_Barrier (comm);
+
+    ADIOS_SELECTION *pts;
+    uint64_t start[100];
+    uint64_t count[100];
+    ADIOS_SELECTION *box;
+    uint64_t boxstart[2];
+    uint64_t boxcount[2];
+    ADIOS_SELECTION *wblock;
+    float expected[32]; // expected values of points
+
+    /*
+     * Points without containers based tests
+     */
+    // Test 1
+    // Read a single point with 2D coordinates in global space
+    // middle point of first 5x5 block, = 0.22
+    start[0] = 2; start[1] = 2;
+    pts = adios_selection_points(2, 1, start);
+    expected[0] = 0.22;
+    log ("  Read single 2D 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 Bounding Boxes -----------------------  \n");
+    // Test 2
+    // Read a single point with 2D coordinates in an 5x5 bounding box
+    // middle point of that 5x5 block, = 3.00
+    // Limit the query to the bounding box of the middle of the global array
+    boxstart[0] = 3; boxstart[1] = 3;
+    boxcount[0] = 5; boxcount[1] = 5;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+
+    start[0] = 2; start[1] = 2; // 2D point of middle of a 5x5 array
+    pts = adios_selection_points(2, 1, start);
+    pts->u.points.container_selection = box;
+    expected[0] = 3.00;
+    log ("  Read single 2D point in a 2D 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 5x5 bounding box
+    // middle point of that 5x5 block, = 3.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;
+    boxcount[0] = 5; boxcount[1] = 5;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+
+    start[0] = 12; // offset of middle of a 5x5 array
+    pts = adios_selection_points(1, 1, start);
+    pts->u.points.container_selection = box;
+    expected[0] = 3.00;
+    log ("  Read single 1D point in a 2D 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 2D coordinates in an 5x5 bounding box
+    // back diagonal of that 5x5 block, = 1.32  1.41  3.00  2.14  2.23
+    // Limit the query to the bounding box of the middle of the global array
+    boxstart[0] = 3; boxstart[1] = 3;
+    boxcount[0] = 5; boxcount[1] = 5;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+
+    // back diagonal of the 5x5 array
+    start[0] = 0; start[1] = 4;
+    start[2] = 1; start[3] = 3;
+    start[4] = 2; start[5] = 2;
+    start[6] = 3; start[7] = 1;
+    start[8] = 4; start[9] = 0;
+    pts = adios_selection_points(2, 5, start);
+    pts->u.points.container_selection = box;
+    expected[0] = 1.32;
+    expected[1] = 1.41;
+    expected[2] = 3.00;
+    expected[3] = 2.14;
+    expected[4] = 2.23;
+    log ("  Read back diagonal of box with five 2D points 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] = 11.32;
+    expected[6] = 11.41;
+    expected[7] = 13.00;
+    expected[8] = 12.14;
+    expected[9] = 12.23;
+    log ("  Read back diagonal of box with five 2D 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 6-7
+    // Read several single points with 1D offset in an 5x5 bounding box
+    // back diagonal of that 5x5 block, = 1.32  1.41  3.00  2.14  2.23
+    // Limit the query to the bounding box of the middle of the global array
+    // This is the same actual point as in Test 4
+    boxstart[0] = 3; boxstart[1] = 3;
+    boxcount[0] = 5; boxcount[1] = 5;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+
+    // back diagonal of the 5x5 array as 1D offsets
+    start[0] = 4;
+    start[1] = 8;
+    start[2] = 12;
+    start[3] = 16;
+    start[4] = 20;
+    pts = adios_selection_points(1, 5, start);
+    pts->u.points.container_selection = box;
+    expected[0] = 1.32;
+    expected[1] = 1.41;
+    expected[2] = 3.00;
+    expected[3] = 2.14;
+    expected[4] = 2.23;
+    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] = 11.32;
+    expected[6] = 11.41;
+    expected[7] = 13.00;
+    expected[8] = 12.14;
+    expected[9] = 12.23;
+    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 2D offset in an 5x5 bounding box
+    // points concentrated at middle to test the reduction of reading box size
+    // 5-point center of that 5x5 block, = 1.32  1.41  3.00  2.14  2.23
+    // The box-reduction should read a 3x3=9 element box instead of the full 5x5=25 elements
+    // Limit the query to the bounding box of the middle of the global array
+    boxstart[0] = 3; boxstart[1] = 3;
+    boxcount[0] = 5; boxcount[1] = 5;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+
+    // 5-point center cross of the 5x5 array
+    start[0] = 1; start[1] = 2;
+    start[2] = 2; start[3] = 1;
+    start[4] = 2; start[5] = 2;
+    start[6] = 2; start[7] = 3;
+    start[8] = 3; start[9] = 2;
+    pts = adios_selection_points(2, 5, start);
+    pts->u.points.container_selection = box;
+    expected[0] = 1.40;
+    expected[1] = 2.04;
+    expected[2] = 3.00;
+    expected[3] = 3.01;
+    expected[4] = 3.10;
+    log ("  Read back center cross of box with five 2D points in a 2D 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 5x5 bounding box
+    // points concentrated at middle to test the reduction of reading box size
+    // 5-point center cross of that 5x5 block, = 1.32  1.41  3.00  2.14  2.23
+    // The box-reduction should read a 3x5=15 element box instead of the full 5x5=25 elements
+    // Limit the query to the bounding box of the middle of the global array
+    // This is the same actual point as in Test 8
+    boxstart[0] = 3; boxstart[1] = 3;
+    boxcount[0] = 5; boxcount[1] = 5;
+    box = adios_selection_boundingbox (2, boxstart, boxcount);
+
+    // 5-point center cross of the 5x5 array as 1D offsets
+    start[0] = 7;
+    start[1] = 11;
+    start[2] = 12;
+    start[3] = 13;
+    start[4] = 17;
+    pts = adios_selection_points(1, 5, start);
+    pts->u.points.container_selection = box;
+    expected[0] = 1.40;
+    expected[1] = 2.04;
+    expected[2] = 3.00;
+    expected[3] = 3.01;
+    expected[4] = 3.10;
+    log ("  Read back center cross of box with five 1D offsets in a 2D bounding box at one step\n");
+    err = test_read (f, pts, 0, 1, expected);
+
+
+    /*
+     * Points in WRITEBLOCK based tests
+     */
+    log ("  --------------- Points in WriteBlocks -----------------------  \n");
+
+    // Test 10
+    // Read a single point with 2D coordinates in writeblock 2 (third block)
+    // middle point of that 5x5 block, = 2.22
+    wblock = adios_selection_writeblock(2);
+
+    start[0] = 2; start[1] = 2; // 2D point of middle of a 5x5 array
+    pts = adios_selection_points(2, 1, start);
+    pts->u.points.container_selection = wblock;
+    expected[0] = 2.22;
+    log ("  Read single 2D point in a 2D 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 11
+    // Read a single point with 1D offset in an writeblock 2
+    // middle point of that 5x5 block, = 2.22
+    // This is the same actual point as in Test 8
+    wblock = adios_selection_writeblock(2);
+
+    start[0] = 12; // offset of middle of a 5x5 array
+    pts = adios_selection_points(1, 1, start);
+    pts->u.points.container_selection = wblock;
+    expected[0] = 2.22;
+    log ("  Read single 1D point in a 2D writeblock at one step\n");
+    err = test_read (f, pts, 0, 1, expected);
+    adios_selection_delete(pts);
+    if (err)
+        goto endread;
+
+    // Test 12-13
+    // Read several single points with 2D coordinates in writeblock 2
+    // back diagonal of that 5x5 block, = 2.04 2.13 2.22 2.31 2.40
+    wblock = adios_selection_writeblock(2);
+
+    // back diagonal of the 5x5 array
+    start[0] = 0; start[1] = 4;
+    start[2] = 1; start[3] = 3;
+    start[4] = 2; start[5] = 2;
+    start[6] = 3; start[7] = 1;
+    start[8] = 4; start[9] = 0;
+    pts = adios_selection_points(2, 5, start);
+    pts->u.points.container_selection = wblock;
+    expected[0] = 2.04;
+    expected[1] = 2.13;
+    expected[2] = 2.22;
+    expected[3] = 2.31;
+    expected[4] = 2.40;
+    log ("  Read back diagonal of box with five 2D points in a 2D writeblock at one step\n");
+    err = test_read (f, pts, 0, 1, expected);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endread;
+    }
+
+    expected[5] = 12.04;
+    expected[6] = 12.13;
+    expected[7] = 12.22;
+    expected[8] = 12.31;
+    expected[9] = 12.40;
+    log ("  Read back diagonal of box with five 2D points in a 2D writeblock at two steps\n");
+    err = test_read (f, pts, 0, 2, expected);
+    adios_selection_delete(pts);
+    if (err)
+        goto endread;
+
+    // Test 14-15
+    // Read several single points with 1D offset in writeblock 2
+    // back diagonal of that 5x5 block, = 2.04 2.13 2.22 2.31 2.40
+    // This is the same actual point as in Test 12-13
+    wblock = adios_selection_writeblock(2);
+
+    // back diagonal of the 5x5 array as 1D offsets
+    start[0] = 4;
+    start[1] = 8;
+    start[2] = 12;
+    start[3] = 16;
+    start[4] = 20;
+    pts = adios_selection_points(1, 5, start);
+    pts->u.points.container_selection = wblock;
+    expected[0] = 2.04;
+    expected[1] = 2.13;
+    expected[2] = 2.22;
+    expected[3] = 2.31;
+    expected[4] = 2.40;
+    log ("  Read back diagonal of box with five 1D offsets in a 2D writeblock at one step\n");
+    err = test_read (f, pts, 0, 1, expected);
+    if (err) {
+        adios_selection_delete(pts);
+        goto endread;
+    }
+    expected[5] = 12.04;
+    expected[6] = 12.13;
+    expected[7] = 12.22;
+    expected[8] = 12.31;
+    expected[9] = 12.40;
+    log ("  Read back diagonal of box with five 1D points in a 2D 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/tests/test_src/read_points_3d.c b/tests/test_src/read_points_3d.c
new file mode 100644
index 0000000..c1c16eb
--- /dev/null
+++ b/tests/test_src/read_points_3d.c
@@ -0,0 +1,774 @@
+/* 
+ * 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/tests/test_src/selection_api.F90 b/tests/test_src/selection_api.F90
new file mode 100644
index 0000000..ed0862d
--- /dev/null
+++ b/tests/test_src/selection_api.F90
@@ -0,0 +1,218 @@
+!  
+!  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.
+!
+
+!/**************************************************************/
+!/*      Test selection creation and information API           */
+!/*      it does not write or read data                       */
+!/**************************************************************/
+program selection_api
+    use adios_read_mod
+    implicit none
+
+    integer             :: i, j, ierr
+    integer             :: comm
+    integer             :: nerr = 0, lerr
+    integer*8           :: an_int8
+
+    ! Selections
+    integer*8               :: selbb, selp, selwb, selauto
+
+    ! Parameters to create the selections
+    integer, parameter      ::  ndim_set = 2
+    integer*8, dimension(2) ::  start_set = (/ 2, 3 /)
+    integer*8, dimension(2) ::  count_set = (/ 5, 7 /)
+    integer*8, parameter    ::  npoints_set  = 4
+    integer*8, dimension(8) ::  points_set = (/ 1,2, 3,4, 5,6, 7,8 /)
+    integer, parameter      ::  index_set  = 9
+    character(len=25)       ::  hints_set = "please work"
+
+    ! Variables to retrieve
+    integer                 ::  type_get
+    integer                 ::  ndim_get
+    integer*8               ::  npoints_get
+    integer                 ::  index_get
+    character(len=25)       ::  hints_get
+    integer*8, dimension(:), allocatable ::  start_get
+    integer*8, dimension(:), allocatable ::  count_get
+    integer*8, dimension(:), allocatable ::  points_get
+
+    comm = 0
+
+    write (*,'("Test Fortran selection API")') 
+
+    write (*,'("  Create selections")') 
+    call adios_selection_boundingbox (selbb, ndim_set, start_set, count_set)
+    call adios_selection_points      (selp,  ndim_set, npoints_set, points_set)
+    call adios_selection_writeblock  (selwb, index_set)
+    call adios_selection_auto        (selauto, hints_set)
+
+    ! Get information about the created selections
+
+    !
+    ! Bounding Box
+    !
+    write (*,'("  Get information on bounding box selection")') 
+    call adios_selection_get_type (selbb, type_get)
+    write (*,'("    type  = ",$)') 
+    nerr = nerr + check_intval (type_get, ADIOS_SELECTION_TYPE_BOUNDINGBOX)
+
+    ! Get and check NDIM
+    call adios_selection_get_ndim (selbb, ndim_get)
+    write (*,'("    ndim  = ",$)') 
+    nerr = nerr + check_intval (ndim_get, ndim_set)
+
+    ! Get and check start/count arrays
+    allocate (start_get(ndim_get))
+    allocate (count_get(ndim_get))
+    call adios_selection_get_boundingbox (selbb, start_get, count_get)
+    write (*,'("    start = ",$)') 
+    nerr = nerr + check_array (ndim_get, start_get, start_set)
+    write (*,'("    count = ",$)') 
+    nerr = nerr + check_array (ndim_get, count_get, count_set)
+    deallocate (start_get)
+    deallocate (count_get)
+
+
+    ! 
+    ! Point list
+    !
+    write (*,'("  Get information on points selection")') 
+    call adios_selection_get_type (selp, type_get)
+    write (*,'("    type    = ",$)') 
+    nerr = nerr + check_intval (type_get, ADIOS_SELECTION_TYPE_POINTS)
+
+    ! Get and check NDIM
+    call adios_selection_get_ndim (selp, ndim_get)
+    write (*,'("    ndim    = ",$)') 
+    nerr = nerr + check_intval (ndim_get, ndim_set)
+     
+    ! Get and check NPOINTS
+    call adios_selection_get_npoints (selp, npoints_get)
+    write (*,'("    npoints = ",$)') 
+    nerr = nerr + check_intval8 (npoints_get, npoints_set)
+     
+    ! Get and check points arrays
+    allocate (points_get(ndim_get*npoints_get))
+    an_int8 = 0
+    call adios_selection_get_points (selp, points_get, an_int8, npoints_get)
+    write (*,'("    start = ",$)') 
+    j = ndim_get*npoints_get
+    nerr = nerr + check_array (j, points_get, points_set)
+    deallocate (points_get)
+
+
+    ! 
+    ! Writeblock
+    !
+    write (*,'("  Get information on writeblock selection")') 
+    call adios_selection_get_type (selwb, type_get)
+    write (*,'("    type  = ",$)') 
+    nerr = nerr + check_intval (type_get, ADIOS_SELECTION_TYPE_WRITEBLOCK)
+
+    ! Get and check INDEX
+    call adios_selection_get_index (selwb, index_get)
+    write (*,'("    index = ",$)') 
+    nerr = nerr + check_intval (index_get, index_set)
+     
+
+    ! 
+    ! Auto
+    !
+    write (*,'("  Get information on auto selection")') 
+    call adios_selection_get_type (selauto, type_get)
+    write (*,'("    type  = ",$)') 
+    nerr = nerr + check_intval (type_get, ADIOS_SELECTION_TYPE_AUTO)
+
+    ! Get and check hints
+    call adios_selection_get_hints (selauto, hints_get)
+    write (*,'("    hints = [",a,"]")') hints_get
+    if (hints_get == hints_set) then
+        write (*,'("  OK")') 
+    else
+        write (*,'("  FAIL. Should be [",a,"]")') hints_set 
+        nerr = nerr + 1
+    endif
+     
+
+    !
+    ! Clean-up
+    !
+    write (*,'("  Free up space of selections")') 
+    call adios_selection_delete (selbb)
+    call adios_selection_delete (selp)
+    call adios_selection_delete (selwb)
+    call adios_selection_delete (selauto)
+
+    write (*,'("  Done. Number of errors: ",i3)') nerr 
+
+    if (nerr > 0) then
+        STOP 1
+    endif
+
+
+contains
+
+
+integer function check_intval (a, b)
+    implicit none
+    integer, intent(in) ::  a, b
+    write (*,'(i0,$)') a
+    if (a == b) then
+        write (*,'("  OK")') 
+        check_intval = 0
+    else
+        write (*,'("  FAIL. Should be ",i1)') b 
+        check_intval = 1
+    endif
+end function check_intval
+    
+integer function check_intval8 (a, b)
+    implicit none
+    integer*8, intent(in) ::  a, b
+    write (*,'(i0,$)') a
+    if (a == b) then
+        write (*,'("  OK")') 
+        check_intval8 = 0
+    else
+        write (*,'("  FAIL. Should be ",i1)') b 
+        check_intval8 = 1
+    endif
+end function check_intval8
+
+integer function check_array (n, a, b)
+    implicit none
+    integer, intent(in) ::  n
+    integer*8, dimension(*), intent(in) :: a, b
+    !character, dimension(*), intent(in) :: header
+
+    integer             :: i, lerr
+
+    lerr=0
+    !write (*,'(a,"[",$)') header
+    write (*,'("[",$)')
+    do i=1,n
+        write (*,'(i0," ",$)') a(i) 
+        if (a(i) /= b(i)) then
+            lerr = lerr+1
+        endif
+    enddo
+
+    if (lerr == 0) then
+        write (*,'("]  OK")') 
+        check_array = 0
+    else
+        write (*,'("]  FAIL. Should be [",$)')
+        do i=1,n
+            write (*,'(i0," ",$)') b(i)
+        enddo
+        write (*,'("]")') 
+        check_array = 1
+    endif
+end function check_array
+
+
+end program selection_api
diff --git a/tests/test_src/test_strutil.c b/tests/test_src/test_strutil.c
new file mode 100644
index 0000000..8e2a8b6
--- /dev/null
+++ b/tests/test_src/test_strutil.c
@@ -0,0 +1,141 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "core/strutil.h"
+
+/* Test the the strutil functions in ADIOS.
+ * trimL, trimR, trimLR, tokenize_dimensions, cleanup_dimensions
+ */
+
+struct TestRecord {
+    char * str;
+    char * trimL;
+    char * trimR;
+    char * trimLR;
+};
+typedef struct TestRecord TestRecord;
+
+// Single letter
+const TestRecord tr1 = {.str="a ", .trimL="a ", .trimR="a", .trimLR="a"};
+const char * dims1[1] = {"a"};
+
+// Two elements
+const TestRecord tr2 = {.str    = " abc , efg  ",
+                        .trimL  =  "abc , efg  ",
+                        .trimR  = " abc , efg",
+                        .trimLR =  "abc , efg"
+                       };
+const char * dims2[2] = {"abc","efg"};
+
+
+// Single element in multiple lines
+const TestRecord tr3 = {.str    = " \n \t a \t \n ",
+                        .trimL  =        "a \t \n ",
+                        .trimR  = " \n \t a",
+                        .trimLR =        "a"
+                       };
+const char * dims3[1] = {"a"};
+
+// Multiple elements in multiple lines
+const TestRecord tr4 = {.str    = " \t a\tb \t, c\td ",
+                        .trimL  =     "a\tb \t, c\td ",
+                        .trimR  = " \t a\tb \t, c\td",
+                        .trimLR =     "a\tb \t, c\td"
+                       };
+const char * dims4[2] = {"a\tb", "c\td"};
+
+// Empty string
+const TestRecord tr5 = {.str    = "",
+                        .trimL  = "",
+                        .trimR  = "",
+                        .trimLR = ""
+                       };
+
+void print_elements (char ** dims, int ndims)
+{
+    int i;
+    printf("  elements   = {");
+    for (i=0; i < ndims; i++)
+    {
+        printf ("%s", dims[i]);
+        if (i < ndims - 1)
+            printf (",");
+    }
+    printf ("}\n");
+}
+
+int dotest (const TestRecord * tr, const char ** dims, int ndims)
+{
+    int nerrors = 0, i;
+    char * res, *s;
+    printf("text = [%s]\n", tr->str);
+
+    s = strdup (tr->str);
+    res = a2s_trimL(s);
+    printf("  left  trim = [%s]\n", res);
+    if (!res || strcmp (res, tr->trimL))
+    {
+        printf("   ERROR: left trim [%s] does not match expected name [%s]\n", res, tr->trimL);
+        nerrors++;
+    }
+    free (s);
+
+    s = strdup (tr->str);
+    res = a2s_trimR(s);
+    printf("  right trim = [%s]\n", res);
+    if (!res || strcmp (res, tr->trimR))
+    {
+        printf("   ERROR: right trim [%s] does not match expected name [%s]\n", res, tr->trimR);
+        nerrors++;
+    }
+    free (s);
+
+    s = strdup (tr->str);
+    res = a2s_trimLR(s);
+    printf("  full  trim = [%s]\n", res);
+    if (!res || strcmp (res, tr->trimLR))
+    {
+        printf("   ERROR: trim [%s] does not match expected name [%s]\n", res, tr->trimLR);
+        nerrors++;
+    }
+    free (s);
+
+    char ** d;
+    int count;
+    a2s_tokenize_dimensions (tr->str, &d, &count);
+    print_elements (d, count);
+    if (ndims != count)
+    {
+        printf("   ERROR: number of comma-separated elements [%d] does not match expected number [%d]\n", count, ndims);
+        nerrors++;
+    }
+    for (i=0; i<ndims; i++)
+    {
+        if ( strcmp(d[i], dims[i]))
+        {
+            printf("   ERROR: comma-separated element No %d [%s] does not match expected element [%s]\n",
+                    i, d[i], dims[i]);
+            nerrors++;
+        }
+    }
+
+    a2s_cleanup_dimensions (d, count);
+    printf ("------------------------------------------------------\n");
+    return nerrors;
+}
+
+int main (int argc, char ** argv)
+{
+    int nerrors = 0;
+    printf("\n============= Test string utility functions =========\n");
+
+    nerrors += dotest (&tr1, dims1, 1);
+    nerrors += dotest (&tr2, dims2, 2);
+    nerrors += dotest (&tr3, dims3, 1);
+    nerrors += dotest (&tr4, dims4, 2);
+    nerrors += dotest (&tr5, NULL, 0);
+
+    printf("\nNumber of errors in this test: %d\n", nerrors);
+    return nerrors;
+}
+
diff --git a/tests/test_src/text_to_pairstruct.c b/tests/test_src/text_to_pairstruct.c
new file mode 100644
index 0000000..bbf6c6b
--- /dev/null
+++ b/tests/test_src/text_to_pairstruct.c
@@ -0,0 +1,127 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "core/strutil.h"
+
+/* Test the the PairStruct functions in ADIOS.
+ * Convert text to name-value pairs.
+ */
+
+// Single pair
+const char text1[] = "a=5";
+PairStruct p1 = {.name="a", .value="5", .next=NULL};
+
+// Two pairs
+const char text2[] = "b=4 ; othername=othervalue;";
+PairStruct p2_2 = {.name="othername", .value="othervalue", .next=NULL};
+PairStruct p2   = {.name="b", .value="4", .next=&p2_2};
+
+// Single pair in multiple lines
+const char text3[] = "\n  a  \n"
+                     "\n  =  \n"
+                     "\n  5  \n";
+PairStruct p3 = {.name="a", .value="5", .next=NULL};
+
+// Multiple pairs in multiple lines, and a TAB
+const char text4[] = "a=1; \n"
+                     "\tb=2; \n"
+                     "c=3";
+PairStruct p4_c = {.name="c", .value="3", .next=NULL};
+PairStruct p4_b = {.name="b", .value="2", .next=&p4_c};
+PairStruct p4   = {.name="a", .value="1", .next=&p4_b};
+
+// Single pair, value in ""
+const char text5[] = "stringvalue=\"hello\"";
+PairStruct p5 = {.name="stringvalue", .value="\"hello\"", .next=NULL};
+
+// Single pair, value is a long string in "" containing name-value pairs delimited by ;
+const char text6[] = "stringvalue=\"a=1;b=2;c=3\"";
+PairStruct p6 = {.name="stringvalue", .value="\"a=1;b=2;c=3\"", .next=NULL};
+
+// Single pair, NULL value
+const char text7[] = "novalue";
+PairStruct p7 = {.name="novalue", .value=NULL, .next=NULL};
+
+// Multiple pairs, some value with " and ;, and multiple lines
+const char text8[] =
+        "method=MPI_AGGREGATE;parameters=\"num_aggregators=3;num_ost=2;\";"
+        "method=MPI;parameters=\"\";"
+        "method=POSIX;parameters=\"debug\";verbose";
+PairStruct p8_verb = {.name="verbose",      .value=NULL, .next=NULL};
+PairStruct p8_p3   = {.name="parameters",   .value="\"debug\"",                         .next=&p8_verb};
+PairStruct p8_m3   = {.name="method",       .value="POSIX",                             .next=&p8_p3};
+PairStruct p8_p2   = {.name="parameters",   .value="\"\"",                              .next=&p8_m3};
+PairStruct p8_m2   = {.name="method",       .value="MPI",                               .next=&p8_p2};
+PairStruct p8_p1   = {.name="parameters",   .value="\"num_aggregators=3;num_ost=2;\"",  .next=&p8_m2};
+PairStruct p8      = {.name="method",       .value="MPI_AGGREGATE",                     .next=&p8_p1};
+
+// Single pair, value with opening " and without closing "
+const char text9[] = "badexample=\"no closing quote    ";
+PairStruct p9 = {.name="badexample", .value="\"no closing quote", .next=NULL};
+
+void print_name_value_pairs (PairStruct * pairs)
+{
+    printf("pairs:\n");
+    while (pairs) {
+        printf ("   %s = %s\n", pairs->name, pairs->value);
+        pairs=pairs->next;
+    }
+}
+
+int dotest (const char * text, PairStruct *p)
+{
+    int nerrors = 0;
+    printf("text=[%s]\n", text);
+    PairStruct *q = a2s_text_to_name_value_pairs(text);
+
+    /* Get each element and check value */
+    PairStruct *p1 = p;
+    PairStruct *q1 = q;
+    while (p1 != NULL && q1 != NULL)
+    {
+        if (strcmp(p1->name,q1->name))
+        {
+            printf("   ERROR: name [%s] does not match expected name [%s]\n", q1->name, p1->name);
+            nerrors++;
+        }
+
+        if (p1->value == NULL && q1->value == NULL) {
+            // this is okay
+            ;
+        }
+        else if (p1->value == NULL || q1->value == NULL) {
+            printf("   ERROR: for name [%s], value [%s] does not match expected value [%s]\n", q1->name, q1->value, p1->value);
+                        nerrors++;
+        }
+        else if (strcmp(p1->value,q1->value))
+        {
+            printf("   ERROR: for name [%s], value [%s] does not match expected value [%s]\n", q1->name, q1->value, p1->value);
+            nerrors++;
+        }
+        p1 = p1->next;
+        q1 = q1->next;
+    }
+    print_name_value_pairs (q);
+    printf ("------------------------------------------------------\n");
+    return nerrors;
+}
+
+int main (int argc, char ** argv)
+{
+    int nerrors = 0;
+    printf("\n============= Text to name-value pairs conversion test =========\n");
+
+    nerrors += dotest (text1, &p1);
+    nerrors += dotest (text2, &p2);
+    nerrors += dotest (text3, &p3);
+    nerrors += dotest (text4, &p4);
+    nerrors += dotest (text5, &p5);
+    nerrors += dotest (text6, &p6);
+    nerrors += dotest (text7, &p7);
+    nerrors += dotest (text8, &p8);
+    nerrors += dotest (text9, &p9);
+
+    printf("\nNumber of errors in this test: %d\n", nerrors);
+    return nerrors;
+}
+
diff --git a/tests/suite/programs/transforms_specparse.c b/tests/test_src/transforms_specparse.c
similarity index 100%
rename from tests/suite/programs/transforms_specparse.c
rename to tests/test_src/transforms_specparse.c
diff --git a/tests/test_src/trim_spaces.c b/tests/test_src/trim_spaces.c
new file mode 100644
index 0000000..453f72f
--- /dev/null
+++ b/tests/test_src/trim_spaces.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "core/strutil.h"
+
+/* Test the the trim_spaces function in ADIOS.
+ */
+
+const char text1[] = "abc";
+const char result1[]  = "abc";
+
+const char text2[] = " abc";
+const char result2[]  = "abc";
+
+const char text3[] = "abc ";
+const char result3[]  = "abc";
+
+const char text4[] = " abc ";
+const char result4[]  = "abc";
+
+const char text5[] = "a bc";
+const char result5[]  = "abc";
+
+const char text6[] = "ab c";
+const char result6[]  = "abc";
+
+const char text7[] = "  a  b  c  ";
+const char result7[]  = "abc";
+
+int dotest (const char * text, const char *expected)
+{
+    int nerrors = 0;
+    printf("text=[%s]\n", text);
+    char * str = a2s_trim_spaces (text);
+
+    /* Check value */
+    if (strcmp(expected,str))
+    {
+        printf("   ERROR: text [%s] does not match expected result [%s]\n", str, expected);
+        nerrors++;
+    }
+
+    return nerrors;
+}
+
+int main (int argc, char ** argv)
+{
+    int nerrors = 0;
+    printf("\n============= Trim spaces test =========\n");
+
+    nerrors += dotest (text1, result1);
+    nerrors += dotest (text2, result2);
+    nerrors += dotest (text3, result3);
+    nerrors += dotest (text4, result4);
+    nerrors += dotest (text5, result5);
+    nerrors += dotest (text6, result6);
+    nerrors += dotest (text7, result7);
+
+    printf("\nNumber of errors in this test: %d\n", nerrors);
+    return nerrors;
+}
+
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index 6939c14..c82bf5b 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -6,7 +6,7 @@ add_subdirectory(bpls)
 add_subdirectory(bpdiff)
 add_subdirectory(bpmeta)
 add_subdirectory(bprecover)
-add_subdirectory(list_methods)
+add_subdirectory(adios_list_methods)
 
 if(BUILD_WRITE)
   add_subdirectory(adios_lint)
diff --git a/utils/Makefile.am b/utils/Makefile.am
index e6d7bb6..735d7a2 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -1,11 +1,15 @@
-SUBDIRS= gpp bpdump bp2ascii bpsplit bpls bpdiff skeldump list_methods bpmeta bprecover
+SUBDIRS= gpp bpdump bp2ascii bpsplit bpls skeldump adios_list_methods bpmeta bprecover
+
 
 if BUILD_WRITE
-SUBDIRS += adios_lint bp2bp 
+SUBDIRS += adios_lint 
+if HAVE_MPI
+    SUBDIRS += bp2bp bpdiff
 if HAVE_FASTBIT
-    SUBDIRS +=fastbit
-endif
-endif
+        SUBDIRS +=fastbit
+endif HAVE_FASTBIT
+endif HAVE_MPI
+endif BUILD_WRITE
 
 if HAVE_HDF5
 SUBDIRS += bp2h5
diff --git a/utils/Makefile.in b/utils/Makefile.in
index 6058f18..0363ab4 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -33,12 +77,13 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
- at BUILD_WRITE_TRUE@am__append_1 = adios_lint bp2bp 
- at BUILD_WRITE_TRUE@@HAVE_FASTBIT_TRUE at am__append_2 = fastbit
- at HAVE_HDF5_TRUE@am__append_3 = bp2h5
- at HAVE_NETCDF_TRUE@am__append_4 = bp2ncd
+ at BUILD_WRITE_TRUE@am__append_1 = adios_lint 
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_2 = bp2bp bpdiff
+ at BUILD_WRITE_TRUE@@HAVE_FASTBIT_TRUE@@HAVE_MPI_TRUE at am__append_3 = fastbit
+ at HAVE_HDF5_TRUE@am__append_4 = bp2h5
+ at HAVE_NETCDF_TRUE@am__append_5 = bp2ncd
 subdir = utils
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +106,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -84,25 +127,63 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = gpp bpdump bp2ascii bpsplit bpls bpdiff skeldump \
-	list_methods bpmeta bprecover adios_lint bp2bp fastbit bp2h5 \
-	bp2ncd skel
+DIST_SUBDIRS = gpp bpdump bp2ascii bpsplit bpls skeldump \
+	adios_list_methods bpmeta bprecover adios_lint bp2bp bpdiff \
+	fastbit bp2h5 bp2ncd skel
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -133,6 +214,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -157,6 +239,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -165,6 +248,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -197,6 +282,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -250,17 +336,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -291,6 +380,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -311,10 +401,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -323,9 +416,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -337,6 +427,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -371,14 +462,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -387,9 +481,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = gpp bpdump bp2ascii bpsplit bpls bpdiff skeldump \
-	list_methods bpmeta bprecover $(am__append_1) $(am__append_2) \
-	$(am__append_3) $(am__append_4) skel
+SUBDIRS = gpp bpdump bp2ascii bpsplit bpls skeldump adios_list_methods \
+	bpmeta bprecover $(am__append_1) $(am__append_2) \
+	$(am__append_3) $(am__append_4) $(am__append_5) skel
 all: all-recursive
 
 .SUFFIXES:
@@ -431,22 +525,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -461,57 +558,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -527,12 +579,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -544,15 +591,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -561,6 +604,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -597,13 +655,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -638,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -719,22 +779,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am 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 \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/adios_lint/CMakeLists.txt b/utils/adios_lint/CMakeLists.txt
index c1d0353..72458eb 100644
--- a/utils/adios_lint/CMakeLists.txt
+++ b/utils/adios_lint/CMakeLists.txt
@@ -3,6 +3,7 @@ include_directories(${PROJECT_SOURCE_DIR}/src/public)
 include_directories(${PROJECT_SOURCE_DIR}/src/core)
 include_directories(${PROJECT_SOURCE_DIR}/utils/adios_lint)
 include_directories(${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}/src ${PROJECT_BINARY_DIR}/src/public)
+include_directories(${MXML_INCLUDE_DIR})
 link_directories(${PROJECT_BINARY_DIR}/utils/adios_lint)
 
 add_executable(adios_lint adios_lint.c)
diff --git a/utils/adios_lint/Makefile.am b/utils/adios_lint/Makefile.am
index ae642e4..ce7f15d 100644
--- a/utils/adios_lint/Makefile.am
+++ b/utils/adios_lint/Makefile.am
@@ -7,11 +7,7 @@ bin_PROGRAMS=adios_lint
 
 adios_lint_SOURCES = adios_lint.c
 adios_lint_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-adios_lint_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+adios_lint_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_lint_LDADD = $(top_builddir)/src/libadios_internal_nompi.a 
 adios_lint_LDADD += $(ADIOSLIB_INT_LDADD)
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
-endif
diff --git a/utils/adios_lint/Makefile.in b/utils/adios_lint/Makefile.in
index 527ce9a..aebccba 100644
--- a/utils/adios_lint/Makefile.in
+++ b/utils/adios_lint/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = adios_lint$(EXEEXT)
 subdir = utils/adios_lint
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -90,23 +132,70 @@ am__DEPENDENCIES_1 =
 adios_lint_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-adios_lint_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+adios_lint_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(adios_lint_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_lint_SOURCES)
 DIST_SOURCES = $(adios_lint_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -114,6 +203,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -138,6 +228,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -146,11 +237,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
 CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -163,7 +255,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -180,6 +271,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -233,17 +325,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -274,6 +369,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -294,10 +390,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -306,9 +405,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -320,6 +416,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -354,14 +451,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,7 +476,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 adios_lint_SOURCES = adios_lint.c
 adios_lint_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-adios_lint_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+adios_lint_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 adios_lint_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 all: all-am
@@ -415,14 +515,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -443,7 +548,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -456,9 +562,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_lint$(EXEEXT): $(adios_lint_OBJECTS) $(adios_lint_DEPENDENCIES) 
+
+adios_lint$(EXEEXT): $(adios_lint_OBJECTS) $(adios_lint_DEPENDENCIES) $(EXTRA_adios_lint_DEPENDENCIES) 
 	@rm -f adios_lint$(EXEEXT)
-	$(adios_lint_LINK) $(adios_lint_OBJECTS) $(adios_lint_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(adios_lint_LINK) $(adios_lint_OBJECTS) $(adios_lint_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -467,19 +574,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 adios_lint-adios_lint.o: adios_lint.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_lint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_lint-adios_lint.o `test -f 'adios_lint.c' || echo '$(srcdir)/'`adios_lint.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_lint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_lint-adios_lint.o `test -f 'adios_lint.c' || echo '$(srcdir)/'`adios_lint.c
 
 adios_lint-adios_lint.obj: adios_lint.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_lint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_lint-adios_lint.obj `if test -f 'adios_lint.c'; then $(CYGPATH_W) 'adios_lint.c'; else $(CYGPATH_W) '$(srcdir)/adios_lint.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_lint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_lint-adios_lint.obj `if test -f 'adios_lint.c'; then $(CYGPATH_W) 'adios_lint.c'; else $(CYGPATH_W) '$(srcdir)/adios_lint.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -487,26 +594,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -518,15 +614,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -535,6 +627,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -586,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -671,19 +783,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/adios_list_methods/CMakeLists.txt b/utils/adios_list_methods/CMakeLists.txt
new file mode 100644
index 0000000..92d35e8
--- /dev/null
+++ b/utils/adios_list_methods/CMakeLists.txt
@@ -0,0 +1,28 @@
+include_directories(${PROJECT_SOURCE_DIR}/src)
+include_directories(${PROJECT_SOURCE_DIR}/src/core)
+include_directories(${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}/src ${PROJECT_BINARY_DIR}/src/public)
+include_directories(${PROJECT_SOURCE_DIR}/utils/adios_list_methods)
+link_directories(${PROJECT_BINARY_DIR}/utils/adios_list_methods)
+
+if(BUILD_WRITE)
+  add_executable(adios_list_methods adios_list_methods.c)
+  target_link_libraries(adios_list_methods adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES})
+  set_target_properties(adios_list_methods PROPERTIES COMPILE_FLAGS "${MACRODEFFLAG}WRITE ${ADIOSLIB_CPPFLAGS} ${ADIOSLIB_CFLAGS} ${ADIOSLIB_EXTRA_CPPFLAGS} ${MPI_C_COMPILE_FLAGS}")
+
+  if(MPI_LINK_FLAGS)
+     set_target_properties(adios_list_methods PROPERTIES LINK_FLAGS "${MPI_C_LINK_FLAGS}")
+  endif()
+
+  install(PROGRAMS ${PROJECT_BINARY_DIR}/utils/adios_list_methods/adios_list_methods DESTINATION ${bindir})
+endif(BUILD_WRITE)
+
+add_executable(adios_list_methods_readonly adios_list_methods.c)
+target_link_libraries(adios_list_methods_readonly adiosread ${ADIOSREADLIB_LDADD} ${MPI_C_LIBRARIES})
+set_target_properties(adios_list_methods_readonly PROPERTIES COMPILE_FLAGS
+"${ADIOSREADLIB_CPPFLAGS} ${ADIOSREADLIB_CFLAGS} ${ADIOSREADLIB_EXTRA_CPPFLAGS} ${MPI_C_COMPILE_FLAGS}")
+
+if(MPI_LINK_FLAGS)
+    set_target_properties(adios_list_methods_readonly PROPERTIES LINK_FLAGS "${MPI_C_LINK_FLAGS}")
+endif()
+
+install(PROGRAMS ${PROJECT_BINARY_DIR}/utils/adios_list_methods/adios_list_methods_readonly DESTINATION ${bindir})
diff --git a/utils/adios_list_methods/Makefile.am b/utils/adios_list_methods/Makefile.am
new file mode 100644
index 0000000..266e125
--- /dev/null
+++ b/utils/adios_list_methods/Makefile.am
@@ -0,0 +1,44 @@
+AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_builddir)/src/public  -I$(top_srcdir)/src -I$(top_srcdir)/src/core
+
+AUTOMAKE_OPTIONS = no-dependencies
+
+#
+# Executables for the sequential libraries
+#
+bin_PROGRAMS = adios_list_methods_readonly_nompi
+adios_list_methods_readonly_nompi_SOURCES = adios_list_methods.c
+adios_list_methods_readonly_nompi_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_SEQ_CPPFLAGS) $(ADIOSREADLIB_SEQ_CFLAGS) 
+adios_list_methods_readonly_nompi_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS) 
+adios_list_methods_readonly_nompi_LDADD =  $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+
+if BUILD_WRITE
+bin_PROGRAMS += adios_list_methods_nompi 
+adios_list_methods_nompi_SOURCES = adios_list_methods.c
+adios_list_methods_nompi_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_SEQ_CPPFLAGS) $(ADIOSLIB_SEQ_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
+adios_list_methods_nompi_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_list_methods_nompi_LDADD =  $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+endif BUILD_WRITE
+
+#
+# Executables for the parallel libraries
+#
+if HAVE_MPI
+bin_PROGRAMS += adios_list_methods_readonly
+adios_list_methods_readonly_SOURCES = adios_list_methods.c
+adios_list_methods_readonly_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS)
+adios_list_methods_readonly_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) 
+adios_list_methods_readonly_LDADD =  $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
+
+if BUILD_WRITE
+bin_PROGRAMS += adios_list_methods adios_list_methods_nompi 
+adios_list_methods_SOURCES = adios_list_methods.c
+adios_list_methods_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
+adios_list_methods_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+adios_list_methods_LDADD =  $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
+endif BUILD_WRITE
+override CC=$(MPICC)
+override CXX=$(MPICXX)
+endif HAVE_MPI
+
+
diff --git a/utils/list_methods/Makefile.in b/utils/adios_list_methods/Makefile.in
similarity index 52%
rename from utils/list_methods/Makefile.in
rename to utils/adios_list_methods/Makefile.in
index c60f94d..fd5309d 100644
--- a/utils/list_methods/Makefile.in
+++ b/utils/adios_list_methods/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,11 +78,17 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-bin_PROGRAMS = list_methods_readonly$(EXEEXT) \
-	list_methods_readonly_nompi$(EXEEXT) $(am__EXEEXT_1)
- at BUILD_WRITE_TRUE@am__append_1 = list_methods list_methods_nompi 
-subdir = utils/list_methods
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+bin_PROGRAMS = adios_list_methods_readonly_nompi$(EXEEXT) \
+	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
+ at BUILD_WRITE_TRUE@am__append_1 = adios_list_methods_nompi 
+
+#
+# Executables for the parallel libraries
+#
+ at HAVE_MPI_TRUE@am__append_2 = adios_list_methods_readonly
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_3 = adios_list_methods adios_list_methods_nompi 
+subdir = utils/adios_list_methods
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +111,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -84,68 +132,121 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
- at BUILD_WRITE_TRUE@am__EXEEXT_1 = list_methods$(EXEEXT) \
- at BUILD_WRITE_TRUE@	list_methods_nompi$(EXEEXT)
+ at BUILD_WRITE_TRUE@am__EXEEXT_1 = adios_list_methods_nompi$(EXEEXT)
+ at HAVE_MPI_TRUE@am__EXEEXT_2 = adios_list_methods_readonly$(EXEEXT)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__EXEEXT_3 =  \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	adios_list_methods$(EXEEXT) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	adios_list_methods_nompi$(EXEEXT)
 am__installdirs = "$(DESTDIR)$(bindir)"
 PROGRAMS = $(bin_PROGRAMS)
-am__list_methods_SOURCES_DIST = list_methods.c
- at BUILD_WRITE_TRUE@am_list_methods_OBJECTS =  \
- at BUILD_WRITE_TRUE@	list_methods-list_methods.$(OBJEXT)
-list_methods_OBJECTS = $(am_list_methods_OBJECTS)
+am__adios_list_methods_SOURCES_DIST = adios_list_methods.c
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am_adios_list_methods_OBJECTS = adios_list_methods-adios_list_methods.$(OBJEXT)
+adios_list_methods_OBJECTS = $(am_adios_list_methods_OBJECTS)
 am__DEPENDENCIES_1 =
- at BUILD_WRITE_TRUE@list_methods_DEPENDENCIES =  \
- at BUILD_WRITE_TRUE@	$(top_builddir)/src/libadios.a \
- at BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_1)
-list_methods_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(list_methods_LDFLAGS) $(LDFLAGS) -o $@
-am__list_methods_nompi_SOURCES_DIST = list_methods.c
- at BUILD_WRITE_TRUE@am_list_methods_nompi_OBJECTS =  \
- at BUILD_WRITE_TRUE@	list_methods_nompi-list_methods.$(OBJEXT)
-list_methods_nompi_OBJECTS = $(am_list_methods_nompi_OBJECTS)
- at BUILD_WRITE_TRUE@list_methods_nompi_DEPENDENCIES =  \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at adios_list_methods_DEPENDENCIES = $(top_builddir)/src/libadios.a \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(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 = 
+adios_list_methods_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_list_methods_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am__adios_list_methods_nompi_SOURCES_DIST = adios_list_methods.c
+ at BUILD_WRITE_TRUE@am_adios_list_methods_nompi_OBJECTS = adios_list_methods_nompi-adios_list_methods.$(OBJEXT)
+adios_list_methods_nompi_OBJECTS =  \
+	$(am_adios_list_methods_nompi_OBJECTS)
+ at BUILD_WRITE_TRUE@adios_list_methods_nompi_DEPENDENCIES =  \
 @BUILD_WRITE_TRUE@	$(top_builddir)/src/libadios_nompi.a \
 @BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_1)
-list_methods_nompi_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(list_methods_nompi_LDFLAGS) $(LDFLAGS) -o $@
-am_list_methods_readonly_OBJECTS =  \
-	list_methods_readonly-list_methods.$(OBJEXT)
-list_methods_readonly_OBJECTS = $(am_list_methods_readonly_OBJECTS)
-list_methods_readonly_DEPENDENCIES =  \
-	$(top_builddir)/src/libadiosread.a $(am__DEPENDENCIES_1)
-list_methods_readonly_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(list_methods_readonly_LDFLAGS) $(LDFLAGS) -o $@
-am_list_methods_readonly_nompi_OBJECTS =  \
-	list_methods_readonly_nompi-list_methods.$(OBJEXT)
-list_methods_readonly_nompi_OBJECTS =  \
-	$(am_list_methods_readonly_nompi_OBJECTS)
-list_methods_readonly_nompi_DEPENDENCIES =  \
-	$(top_builddir)/src/libadiosread_nompi.a $(am__DEPENDENCIES_1)
-list_methods_readonly_nompi_LINK = $(LIBTOOL) --tag=CC \
+adios_list_methods_nompi_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_list_methods_nompi_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am__adios_list_methods_readonly_SOURCES_DIST = adios_list_methods.c
+ at HAVE_MPI_TRUE@am_adios_list_methods_readonly_OBJECTS = adios_list_methods_readonly-adios_list_methods.$(OBJEXT)
+adios_list_methods_readonly_OBJECTS =  \
+	$(am_adios_list_methods_readonly_OBJECTS)
+ at HAVE_MPI_TRUE@adios_list_methods_readonly_DEPENDENCIES =  \
+ at HAVE_MPI_TRUE@	$(top_builddir)/src/libadiosread.a \
+ at HAVE_MPI_TRUE@	$(am__DEPENDENCIES_1)
+adios_list_methods_readonly_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(list_methods_readonly_nompi_LDFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_list_methods_readonly_LDFLAGS) \
 	$(LDFLAGS) -o $@
+am_adios_list_methods_readonly_nompi_OBJECTS = adios_list_methods_readonly_nompi-adios_list_methods.$(OBJEXT)
+adios_list_methods_readonly_nompi_OBJECTS =  \
+	$(am_adios_list_methods_readonly_nompi_OBJECTS)
+adios_list_methods_readonly_nompi_DEPENDENCIES =  \
+	$(top_builddir)/src/libadiosread_nompi.a $(am__DEPENDENCIES_1)
+adios_list_methods_readonly_nompi_LINK = $(LIBTOOL) $(AM_V_lt) \
+	--tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(adios_list_methods_readonly_nompi_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(list_methods_SOURCES) $(list_methods_nompi_SOURCES) \
-	$(list_methods_readonly_SOURCES) \
-	$(list_methods_readonly_nompi_SOURCES)
-DIST_SOURCES = $(am__list_methods_SOURCES_DIST) \
-	$(am__list_methods_nompi_SOURCES_DIST) \
-	$(list_methods_readonly_SOURCES) \
-	$(list_methods_readonly_nompi_SOURCES)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_list_methods_SOURCES) \
+	$(adios_list_methods_nompi_SOURCES) \
+	$(adios_list_methods_readonly_SOURCES) \
+	$(adios_list_methods_readonly_nompi_SOURCES)
+DIST_SOURCES = $(am__adios_list_methods_SOURCES_DIST) \
+	$(am__adios_list_methods_nompi_SOURCES_DIST) \
+	$(am__adios_list_methods_readonly_SOURCES_DIST) \
+	$(adios_list_methods_readonly_nompi_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -153,6 +254,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -177,6 +279,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -185,12 +288,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
-
-#if USE_PARALLEL_COMPILER
-CC = $(MPICC)
+CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -202,7 +305,7 @@ CRAY_UGNI_CPPFLAGS = @CRAY_UGNI_CPPFLAGS@
 CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
-CXX = $(MPICXX)
+CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -219,6 +322,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -272,17 +376,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -313,6 +420,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -333,10 +441,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -345,9 +456,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -359,6 +467,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -393,14 +502,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -413,22 +525,22 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 	-I$(top_builddir)/src/public -I$(top_srcdir)/src \
 	-I$(top_srcdir)/src/core
 AUTOMAKE_OPTIONS = no-dependencies
- at BUILD_WRITE_TRUE@list_methods_SOURCES = list_methods.c
- at BUILD_WRITE_TRUE@list_methods_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
- at BUILD_WRITE_TRUE@list_methods_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
- at BUILD_WRITE_TRUE@list_methods_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
- at BUILD_WRITE_TRUE@list_methods_nompi_SOURCES = list_methods.c
- at BUILD_WRITE_TRUE@list_methods_nompi_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_SEQ_CPPFLAGS) $(ADIOSLIB_SEQ_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
- at BUILD_WRITE_TRUE@list_methods_nompi_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) 
- at BUILD_WRITE_TRUE@list_methods_nompi_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-list_methods_readonly_SOURCES = list_methods.c
-list_methods_readonly_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS)
-list_methods_readonly_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) 
-list_methods_readonly_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
-list_methods_readonly_nompi_SOURCES = list_methods.c
-list_methods_readonly_nompi_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_SEQ_CPPFLAGS) $(ADIOSREADLIB_SEQ_CFLAGS) 
-list_methods_readonly_nompi_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS) 
-list_methods_readonly_nompi_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+adios_list_methods_readonly_nompi_SOURCES = adios_list_methods.c
+adios_list_methods_readonly_nompi_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_SEQ_CPPFLAGS) $(ADIOSREADLIB_SEQ_CFLAGS) 
+adios_list_methods_readonly_nompi_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS) 
+adios_list_methods_readonly_nompi_LDADD = $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
+ at BUILD_WRITE_TRUE@adios_list_methods_nompi_SOURCES = adios_list_methods.c
+ at BUILD_WRITE_TRUE@adios_list_methods_nompi_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_SEQ_CPPFLAGS) $(ADIOSLIB_SEQ_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
+ at BUILD_WRITE_TRUE@adios_list_methods_nompi_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at BUILD_WRITE_TRUE@adios_list_methods_nompi_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+ at HAVE_MPI_TRUE@adios_list_methods_readonly_SOURCES = adios_list_methods.c
+ at HAVE_MPI_TRUE@adios_list_methods_readonly_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS)
+ at HAVE_MPI_TRUE@adios_list_methods_readonly_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) 
+ at HAVE_MPI_TRUE@adios_list_methods_readonly_LDADD = $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at adios_list_methods_SOURCES = adios_list_methods.c
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at adios_list_methods_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at adios_list_methods_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at adios_list_methods_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
 all: all-am
 
 .SUFFIXES:
@@ -442,9 +554,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu utils/list_methods/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu utils/adios_list_methods/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu utils/list_methods/Makefile
+	  $(AUTOMAKE) --gnu utils/adios_list_methods/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -465,14 +577,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -493,7 +610,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -506,18 +624,22 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-list_methods$(EXEEXT): $(list_methods_OBJECTS) $(list_methods_DEPENDENCIES) 
-	@rm -f list_methods$(EXEEXT)
-	$(list_methods_LINK) $(list_methods_OBJECTS) $(list_methods_LDADD) $(LIBS)
-list_methods_nompi$(EXEEXT): $(list_methods_nompi_OBJECTS) $(list_methods_nompi_DEPENDENCIES) 
-	@rm -f list_methods_nompi$(EXEEXT)
-	$(list_methods_nompi_LINK) $(list_methods_nompi_OBJECTS) $(list_methods_nompi_LDADD) $(LIBS)
-list_methods_readonly$(EXEEXT): $(list_methods_readonly_OBJECTS) $(list_methods_readonly_DEPENDENCIES) 
-	@rm -f list_methods_readonly$(EXEEXT)
-	$(list_methods_readonly_LINK) $(list_methods_readonly_OBJECTS) $(list_methods_readonly_LDADD) $(LIBS)
-list_methods_readonly_nompi$(EXEEXT): $(list_methods_readonly_nompi_OBJECTS) $(list_methods_readonly_nompi_DEPENDENCIES) 
-	@rm -f list_methods_readonly_nompi$(EXEEXT)
-	$(list_methods_readonly_nompi_LINK) $(list_methods_readonly_nompi_OBJECTS) $(list_methods_readonly_nompi_LDADD) $(LIBS)
+
+adios_list_methods$(EXEEXT): $(adios_list_methods_OBJECTS) $(adios_list_methods_DEPENDENCIES) $(EXTRA_adios_list_methods_DEPENDENCIES) 
+	@rm -f adios_list_methods$(EXEEXT)
+	$(AM_V_CCLD)$(adios_list_methods_LINK) $(adios_list_methods_OBJECTS) $(adios_list_methods_LDADD) $(LIBS)
+
+adios_list_methods_nompi$(EXEEXT): $(adios_list_methods_nompi_OBJECTS) $(adios_list_methods_nompi_DEPENDENCIES) $(EXTRA_adios_list_methods_nompi_DEPENDENCIES) 
+	@rm -f adios_list_methods_nompi$(EXEEXT)
+	$(AM_V_CCLD)$(adios_list_methods_nompi_LINK) $(adios_list_methods_nompi_OBJECTS) $(adios_list_methods_nompi_LDADD) $(LIBS)
+
+adios_list_methods_readonly$(EXEEXT): $(adios_list_methods_readonly_OBJECTS) $(adios_list_methods_readonly_DEPENDENCIES) $(EXTRA_adios_list_methods_readonly_DEPENDENCIES) 
+	@rm -f adios_list_methods_readonly$(EXEEXT)
+	$(AM_V_CCLD)$(adios_list_methods_readonly_LINK) $(adios_list_methods_readonly_OBJECTS) $(adios_list_methods_readonly_LDADD) $(LIBS)
+
+adios_list_methods_readonly_nompi$(EXEEXT): $(adios_list_methods_readonly_nompi_OBJECTS) $(adios_list_methods_readonly_nompi_DEPENDENCIES) $(EXTRA_adios_list_methods_readonly_nompi_DEPENDENCIES) 
+	@rm -f adios_list_methods_readonly_nompi$(EXEEXT)
+	$(AM_V_CCLD)$(adios_list_methods_readonly_nompi_LINK) $(adios_list_methods_readonly_nompi_OBJECTS) $(adios_list_methods_readonly_nompi_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -526,37 +648,37 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
-list_methods-list_methods.o: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods-list_methods.o `test -f 'list_methods.c' || echo '$(srcdir)/'`list_methods.c
+adios_list_methods-adios_list_methods.o: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods-adios_list_methods.o `test -f 'adios_list_methods.c' || echo '$(srcdir)/'`adios_list_methods.c
 
-list_methods-list_methods.obj: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods-list_methods.obj `if test -f 'list_methods.c'; then $(CYGPATH_W) 'list_methods.c'; else $(CYGPATH_W) '$(srcdir)/list_methods.c'; fi`
+adios_list_methods-adios_list_methods.obj: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods-adios_list_methods.obj `if test -f 'adios_list_methods.c'; then $(CYGPATH_W) 'adios_list_methods.c'; else $(CYGPATH_W) '$(srcdir)/adios_list_methods.c'; fi`
 
-list_methods_nompi-list_methods.o: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods_nompi-list_methods.o `test -f 'list_methods.c' || echo '$(srcdir)/'`list_methods.c
+adios_list_methods_nompi-adios_list_methods.o: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods_nompi-adios_list_methods.o `test -f 'adios_list_methods.c' || echo '$(srcdir)/'`adios_list_methods.c
 
-list_methods_nompi-list_methods.obj: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods_nompi-list_methods.obj `if test -f 'list_methods.c'; then $(CYGPATH_W) 'list_methods.c'; else $(CYGPATH_W) '$(srcdir)/list_methods.c'; fi`
+adios_list_methods_nompi-adios_list_methods.obj: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods_nompi-adios_list_methods.obj `if test -f 'adios_list_methods.c'; then $(CYGPATH_W) 'adios_list_methods.c'; else $(CYGPATH_W) '$(srcdir)/adios_list_methods.c'; fi`
 
-list_methods_readonly-list_methods.o: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_readonly_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods_readonly-list_methods.o `test -f 'list_methods.c' || echo '$(srcdir)/'`list_methods.c
+adios_list_methods_readonly-adios_list_methods.o: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_readonly_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods_readonly-adios_list_methods.o `test -f 'adios_list_methods.c' || echo '$(srcdir)/'`adios_list_methods.c
 
-list_methods_readonly-list_methods.obj: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_readonly_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods_readonly-list_methods.obj `if test -f 'list_methods.c'; then $(CYGPATH_W) 'list_methods.c'; else $(CYGPATH_W) '$(srcdir)/list_methods.c'; fi`
+adios_list_methods_readonly-adios_list_methods.obj: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_readonly_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods_readonly-adios_list_methods.obj `if test -f 'adios_list_methods.c'; then $(CYGPATH_W) 'adios_list_methods.c'; else $(CYGPATH_W) '$(srcdir)/adios_list_methods.c'; fi`
 
-list_methods_readonly_nompi-list_methods.o: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_readonly_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods_readonly_nompi-list_methods.o `test -f 'list_methods.c' || echo '$(srcdir)/'`list_methods.c
+adios_list_methods_readonly_nompi-adios_list_methods.o: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_readonly_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods_readonly_nompi-adios_list_methods.o `test -f 'adios_list_methods.c' || echo '$(srcdir)/'`adios_list_methods.c
 
-list_methods_readonly_nompi-list_methods.obj: list_methods.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(list_methods_readonly_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o list_methods_readonly_nompi-list_methods.obj `if test -f 'list_methods.c'; then $(CYGPATH_W) 'list_methods.c'; else $(CYGPATH_W) '$(srcdir)/list_methods.c'; fi`
+adios_list_methods_readonly_nompi-adios_list_methods.obj: adios_list_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_list_methods_readonly_nompi_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_list_methods_readonly_nompi-adios_list_methods.obj `if test -f 'adios_list_methods.c'; then $(CYGPATH_W) 'adios_list_methods.c'; else $(CYGPATH_W) '$(srcdir)/adios_list_methods.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -564,26 +686,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -595,15 +706,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -612,6 +719,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -663,10 +785,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -748,21 +875,22 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
-
-#endif
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
+
+ at HAVE_MPI_TRUE@override CC=$(MPICC)
+ at HAVE_MPI_TRUE@override CXX=$(MPICXX)
 
 # 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/utils/list_methods/list_methods.c b/utils/adios_list_methods/adios_list_methods.c
similarity index 96%
rename from utils/list_methods/list_methods.c
rename to utils/adios_list_methods/adios_list_methods.c
index f6d1217..f936ddd 100644
--- a/utils/list_methods/list_methods.c
+++ b/utils/adios_list_methods/adios_list_methods.c
@@ -16,6 +16,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdint.h>
+#include <inttypes.h>
 #include <unistd.h>
 #include <string.h>
 #include <sys/stat.h>
@@ -31,6 +32,7 @@
 #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"
 
@@ -385,6 +387,10 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype)
         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]);
@@ -401,10 +407,10 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype)
             break;
 
         case adios_unsigned_long:
-            printf ("%llu", ((unsigned long long *) data)[item]);
+            printf ("%" PRIu64, ((uint64_t *) data)[item]);
             break;
         case adios_long:        
-            printf ("%lld", ((signed long long *) data)[item]);
+            printf ("%" PRId64, ((int64_t *) data)[item]);
             break;
 
         case adios_real:
diff --git a/utils/bp2ascii/Makefile.am b/utils/bp2ascii/Makefile.am
index 5ea6185..9f50d6b 100644
--- a/utils/bp2ascii/Makefile.am
+++ b/utils/bp2ascii/Makefile.am
@@ -7,11 +7,7 @@ noinst_PROGRAMS = bp2ascii
 
 bp2ascii_SOURCES = bp2ascii.c 
 bp2ascii_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bp2ascii_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bp2ascii_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bp2ascii_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
 bp2ascii_LDADD += $(ADIOSLIB_INT_LDADD)
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
-endif
diff --git a/utils/bp2ascii/Makefile.in b/utils/bp2ascii/Makefile.in
index 6f708a6..825bb69 100644
--- a/utils/bp2ascii/Makefile.in
+++ b/utils/bp2ascii/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = bp2ascii$(EXEEXT)
 subdir = utils/bp2ascii
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -88,23 +130,70 @@ bp2ascii_OBJECTS = $(am_bp2ascii_OBJECTS)
 am__DEPENDENCIES_1 =
 bp2ascii_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bp2ascii_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bp2ascii_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bp2ascii_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bp2ascii_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bp2ascii_SOURCES)
 DIST_SOURCES = $(bp2ascii_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -112,6 +201,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -136,6 +226,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -144,11 +235,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
 CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -161,7 +253,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -178,6 +269,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -231,17 +323,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -272,6 +367,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -292,10 +388,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -304,9 +403,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -318,6 +414,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -352,14 +449,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -374,7 +474,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 bp2ascii_SOURCES = bp2ascii.c 
 bp2ascii_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bp2ascii_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bp2ascii_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bp2ascii_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 all: all-am
@@ -420,9 +520,10 @@ clean-noinstPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bp2ascii$(EXEEXT): $(bp2ascii_OBJECTS) $(bp2ascii_DEPENDENCIES) 
+
+bp2ascii$(EXEEXT): $(bp2ascii_OBJECTS) $(bp2ascii_DEPENDENCIES) $(EXTRA_bp2ascii_DEPENDENCIES) 
 	@rm -f bp2ascii$(EXEEXT)
-	$(bp2ascii_LINK) $(bp2ascii_OBJECTS) $(bp2ascii_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bp2ascii_LINK) $(bp2ascii_OBJECTS) $(bp2ascii_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -431,19 +532,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bp2ascii-bp2ascii.o: bp2ascii.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ascii_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2ascii-bp2ascii.o `test -f 'bp2ascii.c' || echo '$(srcdir)/'`bp2ascii.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ascii_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2ascii-bp2ascii.o `test -f 'bp2ascii.c' || echo '$(srcdir)/'`bp2ascii.c
 
 bp2ascii-bp2ascii.obj: bp2ascii.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ascii_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2ascii-bp2ascii.obj `if test -f 'bp2ascii.c'; then $(CYGPATH_W) 'bp2ascii.c'; else $(CYGPATH_W) '$(srcdir)/bp2ascii.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ascii_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2ascii-bp2ascii.obj `if test -f 'bp2ascii.c'; then $(CYGPATH_W) 'bp2ascii.c'; else $(CYGPATH_W) '$(srcdir)/bp2ascii.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -451,26 +552,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -482,15 +572,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -499,6 +585,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -547,10 +648,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -633,18 +739,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bp2ascii/bp2ascii.c b/utils/bp2ascii/bp2ascii.c
index f2a2f72..26ae551 100644
--- a/utils/bp2ascii/bp2ascii.c
+++ b/utils/bp2ascii/bp2ascii.c
@@ -118,14 +118,14 @@ int main (int argc, char ** argv)
     struct adios_var_header_struct_v1 var_header;
     struct adios_var_payload_struct_v1 var_payload;
     uint64_t offset, var_len;
-    printf("characteristics count: %llu\n", element_counts); 
+    printf("characteristics count: %" PRIu64 "\n", element_counts);
 
     for (i = 0; i < element_counts; i++)
     {
         offset = vars_root->characteristics[i].offset;
         b->read_pg_offset = pg_root->offset_in_file;
 
-        printf("offset: %llu read_pg_offset=%llu\n", offset, b->read_pg_offset);
+        printf("offset: %" PRIu64 " read_pg_offset=%" PRIu64 "\n", offset, b->read_pg_offset);
         if (pg_root->next)
         {
             b->read_pg_size =   pg_root->next->offset_in_file
@@ -145,8 +145,8 @@ int main (int argc, char ** argv)
 
         read (b->f,b->buff+8, var_len);
 
-        printf("var length: %llu offset: %llu\n",var_len, offset);
-        printf ("payload_size %llux\n", var_header.payload_size);
+        printf("var length: %" PRIu64 " offset: %" PRIu64 "\n",var_len, offset);
+        printf ("payload_size %" PRIu64 "x\n", var_header.payload_size);
 
         adios_parse_var_data_header_v1 (b, &var_header);
         print_var_header (&var_header);
@@ -204,6 +204,9 @@ int main (int argc, char ** argv)
             case adios_string:
                     fprintf(outf, "%s ", (char *)var_payload.payload);
                     break;
+            case adios_string_array:
+                    fprintf(outf, "%s ", *(char **)var_payload.payload);
+                    break;
             case adios_complex:
                 for (j=0; j<(var_header.payload_size)/8;j++) 
                     fprintf(outf, "%f + %fi", *((float  *)var_payload.payload+2*j),*((float  *)var_payload.payload+j*2+1));
@@ -228,7 +231,7 @@ void print_process_group_header (uint64_t num
 {
     struct adios_method_info_struct_v1 * m;
 
-    printf ("Process Group: %llu\n", num);
+    printf ("Process Group: %" PRIu64 "\n", num);
     printf ("\tGroup Name: %s\n", pg_header->name);
     printf ("\tHost Language Fortran?: %c\n"
            ,(pg_header->host_language_fortran == adios_flag_yes ? 'Y' : 'N')
@@ -257,7 +260,7 @@ void print_process_group_index (
         printf ("\tProcess ID: %d\n", pg_root->process_id);
         printf ("\tTime Name: %s\n", pg_root->time_index_name);
         printf ("\tTime: %d\n", pg_root->time_index);
-        printf ("\tOffset in File: %llu\n", pg_root->offset_in_file);
+        printf ("\tOffset in File: %" PRIu64 "\n", pg_root->offset_in_file);
 
         pg_root = pg_root->next;
     }
diff --git a/utils/bp2bp/Makefile.am b/utils/bp2bp/Makefile.am
index 26ef548..a03cf43 100644
--- a/utils/bp2bp/Makefile.am
+++ b/utils/bp2bp/Makefile.am
@@ -7,7 +7,7 @@ bin_PROGRAMS = bp2bp
 
 bp2bp_SOURCES = bp2bp.c
 bp2bp_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
-bp2bp_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+bp2bp_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bp2bp_LDADD =  $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
 
 
diff --git a/utils/bp2bp/Makefile.in b/utils/bp2bp/Makefile.in
index 2bdea12..4ec0035 100644
--- a/utils/bp2bp/Makefile.in
+++ b/utils/bp2bp/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bp2bp$(EXEEXT)
 subdir = utils/bp2bp
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,23 +131,70 @@ bp2bp_OBJECTS = $(am_bp2bp_OBJECTS)
 am__DEPENDENCIES_1 =
 bp2bp_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-bp2bp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bp2bp_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bp2bp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bp2bp_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bp2bp_SOURCES)
 DIST_SOURCES = $(bp2bp_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -113,6 +202,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -137,6 +227,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -145,6 +236,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -179,6 +272,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -232,17 +326,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -273,6 +370,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -293,10 +391,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -305,9 +406,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -319,6 +417,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -353,14 +452,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -374,7 +476,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 AUTOMAKE_OPTIONS = no-dependencies
 bp2bp_SOURCES = bp2bp.c
 bp2bp_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
-bp2bp_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
+bp2bp_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bp2bp_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
 all: all-am
 
@@ -412,14 +514,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -440,7 +547,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -453,9 +561,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bp2bp$(EXEEXT): $(bp2bp_OBJECTS) $(bp2bp_DEPENDENCIES) 
+
+bp2bp$(EXEEXT): $(bp2bp_OBJECTS) $(bp2bp_DEPENDENCIES) $(EXTRA_bp2bp_DEPENDENCIES) 
 	@rm -f bp2bp$(EXEEXT)
-	$(bp2bp_LINK) $(bp2bp_OBJECTS) $(bp2bp_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bp2bp_LINK) $(bp2bp_OBJECTS) $(bp2bp_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -464,19 +573,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bp2bp-bp2bp.o: bp2bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2bp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2bp-bp2bp.o `test -f 'bp2bp.c' || echo '$(srcdir)/'`bp2bp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2bp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2bp-bp2bp.o `test -f 'bp2bp.c' || echo '$(srcdir)/'`bp2bp.c
 
 bp2bp-bp2bp.obj: bp2bp.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2bp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2bp-bp2bp.obj `if test -f 'bp2bp.c'; then $(CYGPATH_W) 'bp2bp.c'; else $(CYGPATH_W) '$(srcdir)/bp2bp.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2bp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2bp-bp2bp.obj `if test -f 'bp2bp.c'; then $(CYGPATH_W) 'bp2bp.c'; else $(CYGPATH_W) '$(srcdir)/bp2bp.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -484,26 +593,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -515,15 +613,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -532,6 +626,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -583,10 +692,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -668,19 +782,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 #endif
 
diff --git a/utils/bp2bp/bp2bp.c b/utils/bp2bp/bp2bp.c
index 78ff4e3..4060fdf 100644
--- a/utils/bp2bp/bp2bp.c
+++ b/utils/bp2bp/bp2bp.c
@@ -28,6 +28,7 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <unistd.h>
+#include <inttypes.h>
 #include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -228,10 +229,10 @@ int main (int argc, char ** argv) {
                 calcC(chunk_size, v, c);
                 strcpy(lbounds,"");
                 for(j=0; j<v->ndim; j++){
-                    sprintf(tstring, "%lld,", c[j]);
+                    sprintf(tstring, "%" PRId64 ",", c[j]);
                     strcat(lbounds, tstring);
                 }
-                printf("rank=%d, name=%s, chunk_size1=%lld c[]=%s\n",rank,g->var_namelist[i],chunk_size,lbounds);
+                printf("rank=%d, name=%s, chunk_size1=%" PRId64 " c[]=%s\n",rank,g->var_namelist[i],chunk_size,lbounds);
 
 
                 chunk_size = 1;
@@ -319,9 +320,9 @@ int main (int argc, char ** argv) {
                             strcpy(lbounds,"");
                             strcpy(offs,"");
                             for(j=0; j<v->ndim; j++){
-                                sprintf(tstring, "%lld,", ts[j]);
+                                sprintf(tstring, "%" PRId64 ",", ts[j]);
                                 strcat(offs, tstring);
-                                sprintf(tstring, "%lld,", uc[j]);
+                                sprintf(tstring, "%" PRId64 ",", uc[j]);
                                 strcat(lbounds, tstring);
                             }
 
@@ -382,7 +383,7 @@ int main (int argc, char ** argv) {
         // Now we have everything declared... now we need to write them out!!!!!!
         if (WRITEME==1) {
             // open up the file for writing....
-            if (DEBUG) printf("rank=%d, opening file = %s, with group %s, size=%lld\n",rank,argv[2],f->group_namelist[gidx],adios_groupsize);
+            if (DEBUG) printf("rank=%d, opening file = %s, with group %s, size=%" PRId64 "\n",rank,argv[2],f->group_namelist[gidx],adios_groupsize);
 
             if(TIMING==100)
                 start_time[0] = MPI_Wtime();
@@ -401,8 +402,8 @@ int main (int argc, char ** argv) {
             sb2[0] = adios_totalsize;
             MPI_Reduce(sb2,rb2,1,MPI_UNSIGNED_LONG_LONG,MPI_SUM,0, comm);
             if(rank==0){
-                printf("total adios_totalsize = %lld\n", *rb2);
-                printf("total adios_groupsize = %lld\n", *rb);
+                printf("total adios_totalsize = %" PRId64 "\n", *rb2);
+                printf("total adios_groupsize = %" PRId64 "\n", *rb);
             }
             free(sb); free(rb); free(sb2); free(rb2);
 
@@ -493,7 +494,7 @@ int main (int argc, char ** argv) {
                             }
 
                             if (DEBUG)
-                                printf ("ADIOS WRITE: rank=%d, name=%s datasize=%lld\n",rank,g->var_namelist[i],bytes_read);
+                                printf ("ADIOS WRITE: rank=%d, name=%s datasize=%" PRId64 "\n",rank,g->var_namelist[i],bytes_read);
 
 
                             if (TIMING==100) {
@@ -503,10 +504,10 @@ int main (int argc, char ** argv) {
                                 printf("rank=%d, write ts=",rank);
                                 int k;
                                 for(k=0; k<v->ndim; k++)
-                                    printf("%lld,", ts[k]);
+                                    printf("%" PRId64 ",", ts[k]);
                                 printf("  uc=");
                                 for(k=0; k<v->ndim; k++)
-                                    printf("%lld,", uc[k]);
+                                    printf("%" PRId64 ",", uc[k]);
                                 printf("\n");
                             }
 
@@ -619,7 +620,7 @@ int main (int argc, char ** argv) {
         sb[5] = sb[3]+sb[4];
         sb[6] = total_time[5]; //total
 
-        double * rb;
+        double * rb = NULL;
 
         if(rank==0)
             rb = (double *)malloc(size*7*sizeof(double));
@@ -1051,6 +1052,10 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype)
         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]);
@@ -1067,10 +1072,10 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype)
             break;
 
         case adios_unsigned_long:
-            printf ("%llu", ((unsigned long long *) data)[item]);
+            printf ("%" PRIu64, ((uint64_t *) data)[item]);
             break;
         case adios_long:        
-            printf ("%lld", ((signed long long *) data)[item]);
+            printf ("%" PRId64, ((int64_t *) data)[item]);
             break;
 
         case adios_real:
diff --git a/utils/bp2h5/Makefile.am b/utils/bp2h5/Makefile.am
index 6872239..491eef4 100644
--- a/utils/bp2h5/Makefile.am
+++ b/utils/bp2h5/Makefile.am
@@ -7,10 +7,8 @@ bin_PROGRAMS = bp2h5
 
 bp2h5_SOURCES = bp2h5.c
 
-if USE_PARALLEL_COMPILER
+if USE_PARALLEL_HDF5_FOR_UTILS
 
-    CC=$(MPICC)
-    CXX=$(MPICXX)
     bp2h5_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}H5_USE_16_API ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS) $(HDF5_CPPFLAGS)
     bp2h5_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)  $(HDF5_LDFLAGS)
     bp2h5_LDADD = $(top_builddir)/src/libadiosread.a
@@ -27,5 +25,6 @@ else
 
 endif
 
+CC=$(BP2H5_CC)
 
 
diff --git a/utils/bp2h5/Makefile.in b/utils/bp2h5/Makefile.in
index bb117d3..eecbdab 100644
--- a/utils/bp2h5/Makefile.in
+++ b/utils/bp2h5/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bp2h5$(EXEEXT)
 subdir = utils/bp2h5
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -87,29 +129,76 @@ PROGRAMS = $(bin_PROGRAMS)
 am_bp2h5_OBJECTS = bp2h5-bp2h5.$(OBJEXT)
 bp2h5_OBJECTS = $(am_bp2h5_OBJECTS)
 am__DEPENDENCIES_1 =
- at USE_PARALLEL_COMPILER_FALSE@bp2h5_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
- at USE_PARALLEL_COMPILER_FALSE@	$(am__DEPENDENCIES_1) \
- at USE_PARALLEL_COMPILER_FALSE@	$(am__DEPENDENCIES_1)
- at USE_PARALLEL_COMPILER_TRUE@bp2h5_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
- at USE_PARALLEL_COMPILER_TRUE@	$(am__DEPENDENCIES_1) \
- at USE_PARALLEL_COMPILER_TRUE@	$(am__DEPENDENCIES_1)
-bp2h5_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bp2h5_LDFLAGS) \
-	$(LDFLAGS) -o $@
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@bp2h5_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@	$(am__DEPENDENCIES_1) \
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@	$(am__DEPENDENCIES_1)
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@bp2h5_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@	$(am__DEPENDENCIES_1) \
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@	$(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 = 
+bp2h5_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bp2h5_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bp2h5_SOURCES)
 DIST_SOURCES = $(bp2h5_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -117,6 +206,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -141,6 +231,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -149,11 +240,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
-CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
+CC = $(BP2H5_CC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -166,7 +258,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -183,6 +274,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -236,17 +328,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -277,6 +372,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -297,10 +393,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -309,9 +408,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -323,6 +419,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -357,14 +454,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -377,15 +477,16 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public
 AUTOMAKE_OPTIONS = no-dependencies
 bp2h5_SOURCES = bp2h5.c
- at USE_PARALLEL_COMPILER_FALSE@bp2h5_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}H5_USE_16_API ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_SEQ_CPPFLAGS) $(ADIOSREADLIB_SEQ_CFLAGS) $(HDF5_CPPFLAGS)
- at USE_PARALLEL_COMPILER_TRUE@bp2h5_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}H5_USE_16_API ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS) $(HDF5_CPPFLAGS)
- at USE_PARALLEL_COMPILER_FALSE@bp2h5_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS)  $(HDF5_LDFLAGS)
- at USE_PARALLEL_COMPILER_TRUE@bp2h5_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)  $(HDF5_LDFLAGS)
- at USE_PARALLEL_COMPILER_FALSE@bp2h5_LDADD = $(top_builddir)/src/libadiosread_nompi.a \
- at USE_PARALLEL_COMPILER_FALSE@	$(ADIOSREADLIB_SEQ_LDADD) \
- at USE_PARALLEL_COMPILER_FALSE@	$(HDF5_LIBS)
- at USE_PARALLEL_COMPILER_TRUE@bp2h5_LDADD = $(top_builddir)/src/libadiosread.a \
- at USE_PARALLEL_COMPILER_TRUE@	$(ADIOSREADLIB_LDADD) $(HDF5_LIBS)
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@bp2h5_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}H5_USE_16_API ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_SEQ_CPPFLAGS) $(ADIOSREADLIB_SEQ_CFLAGS) $(HDF5_CPPFLAGS)
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@bp2h5_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}H5_USE_16_API ${MACRODEFFLAG}ADIOS_USE_READ_API_1 $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS) $(HDF5_CPPFLAGS)
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@bp2h5_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS)  $(HDF5_LDFLAGS)
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@bp2h5_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)  $(HDF5_LDFLAGS)
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@bp2h5_LDADD = $(top_builddir)/src/libadiosread_nompi.a \
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@	$(ADIOSREADLIB_SEQ_LDADD) \
+ at USE_PARALLEL_HDF5_FOR_UTILS_FALSE@	$(HDF5_LIBS)
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@bp2h5_LDADD = $(top_builddir)/src/libadiosread.a \
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@	$(ADIOSREADLIB_LDADD) \
+ at USE_PARALLEL_HDF5_FOR_UTILS_TRUE@	$(HDF5_LIBS)
 all: all-am
 
 .SUFFIXES:
@@ -422,14 +523,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -450,7 +556,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -463,9 +570,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bp2h5$(EXEEXT): $(bp2h5_OBJECTS) $(bp2h5_DEPENDENCIES) 
+
+bp2h5$(EXEEXT): $(bp2h5_OBJECTS) $(bp2h5_DEPENDENCIES) $(EXTRA_bp2h5_DEPENDENCIES) 
 	@rm -f bp2h5$(EXEEXT)
-	$(bp2h5_LINK) $(bp2h5_OBJECTS) $(bp2h5_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bp2h5_LINK) $(bp2h5_OBJECTS) $(bp2h5_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -474,19 +582,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bp2h5-bp2h5.o: bp2h5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2h5_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2h5-bp2h5.o `test -f 'bp2h5.c' || echo '$(srcdir)/'`bp2h5.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2h5_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2h5-bp2h5.o `test -f 'bp2h5.c' || echo '$(srcdir)/'`bp2h5.c
 
 bp2h5-bp2h5.obj: bp2h5.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2h5_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2h5-bp2h5.obj `if test -f 'bp2h5.c'; then $(CYGPATH_W) 'bp2h5.c'; else $(CYGPATH_W) '$(srcdir)/bp2h5.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2h5_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bp2h5-bp2h5.obj `if test -f 'bp2h5.c'; then $(CYGPATH_W) 'bp2h5.c'; else $(CYGPATH_W) '$(srcdir)/bp2h5.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -494,26 +602,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -525,15 +622,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -542,6 +635,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -593,10 +701,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -678,19 +791,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bp2h5/bp2h5.c b/utils/bp2h5/bp2h5.c
index 24a242c..9c500c7 100644
--- a/utils/bp2h5/bp2h5.c
+++ b/utils/bp2h5/bp2h5.c
@@ -90,24 +90,17 @@ char** bp_dirparser(char *str, int *nLevel);
 
 int main (int argc, char ** argv)  
 {
-    char        filename [256]; 
-    int         rank, size, gidx, i, j, k,l;
+    int         gidx, i, j;
     MPI_Comm    comm_dummy = MPI_COMM_WORLD;  /* MPI_Comm is defined through adios_read.h */
-    enum ADIOS_DATATYPES attr_type;
-    void      * data = NULL;
-    uint64_t    start[] = {0,0,0,0,0,0,0,0,0,0};
-    uint64_t    count[MAX_DIMS], hcount[MAX_DIMS], bytes_read = 0;
+    uint64_t    count[MAX_DIMS];
     herr_t      h5_err;
     char        h5name[256],aname[256],fname[256];
-    int         dims [MAX_DIMS];
-    int         h5rank[MAX_DIMS];
     int         h5i, level;
-    hid_t       grp_id [GMAX+1], space_id, dataset_id;
-    hid_t       memspace_id, dataspace_id, att_id;
+    hid_t       grp_id [GMAX+1], space_id;
+    hid_t       att_id;
     char        ** grp_name;
-    hid_t       type_id;
     hid_t       h5_type_id;
-    hsize_t     adims;
+
 
     if (argc < 2) {
         printf("Usage: %s <BP-file> <HDF5-file>\n", argv[0]);
@@ -143,7 +136,6 @@ int main (int argc, char ** argv)
 /* First create all of the groups */
         grp_id [0] = HDF5_FILE;
         for (i = 0; i < g->vars_count; i++) {
-             ADIOS_VARINFO * v = adios_inq_var_byid (g, i);
              strcpy(h5name,g->var_namelist[i]);
              grp_name = bp_dirparser (h5name, &level);
              for (j = 0; j < level-1; j++) {
@@ -204,7 +196,6 @@ int main (int argc, char ** argv)
             h5_err = bp_getH5TypeId (atype, &h5_type_id);
 
             // let's create the attribute
-            adims = 1;
             if (atype==adios_string) H5Tset_size(h5_type_id,strlen(adata)); 
             space_id = H5Screate(H5S_SCALAR); // just a scalar
             att_id = H5Acreate(HDF5_FILE, g->attr_namelist[i], h5_type_id, space_id,H5P_DEFAULT);
@@ -224,7 +215,7 @@ int main (int argc, char ** argv)
     h5_err =  H5Fclose(HDF5_FILE);
 
     MPI_Finalize();
-    return 0;
+    return (int)h5_err;
 }
 
 
@@ -261,11 +252,11 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             break;
 
         case adios_long:
-            sprintf (s, "%lld", ((int64_t *) data)[idx]);
+            sprintf (s, "%" PRId64, ((int64_t *) data)[idx]);
             break;
 
         case adios_unsigned_long:
-            sprintf (s, "%llu", ((uint64_t *) data)[idx]);
+            sprintf (s, "%" PRIu64, ((uint64_t *) data)[idx]);
             break;
 
         case adios_real:
@@ -284,6 +275,10 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             return (char*) ((char *)data+idx);
             break;
 
+        case adios_string_array:
+            return (char*) *((char **)data+idx);
+            break;
+
         case adios_complex:
             sprintf (s, "(%g, %g)", 
                     ((float *) data)[2*idx], ((float *) data)[2*idx+1]);
@@ -293,6 +288,9 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             sprintf (s, "(%lg, %lg)", 
                     ((double *) data)[2*idx], ((double *) data)[2*idx+1]);
             break;
+
+        default:
+        	break;
     }
 
     return s;
@@ -340,7 +338,7 @@ int readVar(ADIOS_GROUP *gp, ADIOS_VARINFO *vi, const char * name)
   int      readn[MAX_DIMS];   // how big chunk to read in in each dimension?
   int64_t  bytes_read;     // retval from adios_get_var()
   int      incdim;            // used in incremental reading in
-  hid_t    grp_id, space_id, dataset, global_memspace, dataspace;
+  hid_t    dataset, global_memspace;
   hid_t    local_memspace, h5_ndim ;
   hid_t    h5_err;
   hid_t    h5_type_id;
@@ -375,15 +373,15 @@ int readVar(ADIOS_GROUP *gp, ADIOS_VARINFO *vi, const char * name)
     else
       ct = icount[j];
     if (verbose>2) 
-      printf("    j=%d, st=%llu ct=%llu\n", j, st, ct);
+      printf("    j=%d, st=%" PRIu64 " ct=%" PRIu64 "\n", j, st, ct);
     start_t[j] = st;
     count_t[j] = ct;
     nelems *= ct;
     if (verbose>1) 
-      printf("    s[%d]=%llu, c[%d]=%llu, n=%llu\n", j, start_t[j], j, count_t[j], nelems);
+      printf("    s[%d]=%" PRIu64 ", c[%d]=%" PRIu64 ", n=%" PRIu64 "\n", j, start_t[j], j, count_t[j], nelems);
   }
   if (verbose>1) {
-    printf(" total size of data to read = %llu\n", nelems*elemsize);
+    printf(" total size of data to read = %" PRIu64 "\n", nelems*elemsize);
   }
   maxreadn = MAX_BUFFERSIZE/elemsize;
   if (nelems < maxreadn)
@@ -419,7 +417,7 @@ int readVar(ADIOS_GROUP *gp, ADIOS_VARINFO *vi, const char * name)
     sum = sum * (uint64_t) count_t[i];
     actualreadn = actualreadn * readn[i];
   }
-  if (verbose>1) printf("    read %d elements at once, %lld in total (nelems=%lld)\n", actualreadn, sum, nelems);
+  if (verbose>1) printf("    read %d elements at once, %" PRId64 " in total (nelems=%" PRId64 ")\n", actualreadn, sum, nelems);
 
 
   // init s and c
@@ -465,7 +463,7 @@ int readVar(ADIOS_GROUP *gp, ADIOS_VARINFO *vi, const char * name)
     dataset = H5Dopen(HDF5_FILE,name);
     if (dataset> 0) {
        global_memspace = H5Dget_space(dataset);
-       hid_t rank_old = H5Sget_simple_extent_ndims(global_memspace);
+       //hid_t rank_old = H5Sget_simple_extent_ndims(global_memspace);
        hsize_t *maxdims = (hsize_t *) malloc (h5_ndim * sizeof (hsize_t));
        h5_err = H5Sget_simple_extent_dims(global_memspace,maxdims,NULL);
        free(maxdims);
@@ -489,7 +487,7 @@ int readVar(ADIOS_GROUP *gp, ADIOS_VARINFO *vi, const char * name)
     H5Dclose(dataset);
     //H5Tclose(h5_type_id);
 
-    if (verbose>2) printf("  read %lld bytes\n", bytes_read);
+    if (verbose>2) printf("  read %" PRId64 " bytes\n", bytes_read);
 
     // print slice
 
@@ -523,7 +521,7 @@ int readVar(ADIOS_GROUP *gp, ADIOS_VARINFO *vi, const char * name)
   H5Sclose(global_memspace);
 
   free(data);
-  return 0;
+  return (int)h5_err;
 }
 
 int getTypeInfo( enum ADIOS_DATATYPES adiosvartype, int* elemsize)
@@ -584,11 +582,9 @@ int getTypeInfo( enum ADIOS_DATATYPES adiosvartype, int* elemsize)
   return 0;
 }
 
-static int nextcol=0;  // column index to start with (can have lines split in two calls)
-
 int bp_getH5TypeId(enum ADIOS_DATATYPES type, hid_t* h5_type_id)
 {
-    int size, status=0;
+    int status=0;
 
     switch (type)
     {
diff --git a/utils/bp2ncd/Makefile.am b/utils/bp2ncd/Makefile.am
index 5f80772..3b4cc7d 100644
--- a/utils/bp2ncd/Makefile.am
+++ b/utils/bp2ncd/Makefile.am
@@ -7,18 +7,18 @@ bin_PROGRAMS = bp2ncd
 
 bp2ncd_SOURCES = bp2ncd.c
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
+if USE_PARALLEL_NETCDF_FOR_UTILS
     bp2ncd_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
-    bp2ncd_CFLAGS = $(ADIOSLIB_CFLAGS) 
+    bp2ncd_CFLAGS = $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
     bp2ncd_LDFLAGS = $(ADIOSLIB_LDFLAGS) -static-libtool-libs
     bp2ncd_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
 else
     bp2ncd_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-    bp2ncd_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) -static-libtool-libs
+    bp2ncd_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS) -static-libtool-libs
     bp2ncd_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
     bp2ncd_LDADD += $(ADIOSLIB_INT_LDADD)
 endif
 
+CC=$(BP2NCD_CC)
+
 EXTRA_DIST = bp2ncd.h
diff --git a/utils/bp2ncd/Makefile.in b/utils/bp2ncd/Makefile.in
index 773d0b6..76454d9 100644
--- a/utils/bp2ncd/Makefile.in
+++ b/utils/bp2ncd/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bp2ncd$(EXEEXT)
 subdir = utils/bp2ncd
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -87,28 +129,74 @@ PROGRAMS = $(bin_PROGRAMS)
 am_bp2ncd_OBJECTS = bp2ncd-bp2ncd.$(OBJEXT)
 bp2ncd_OBJECTS = $(am_bp2ncd_OBJECTS)
 am__DEPENDENCIES_1 =
- at USE_PARALLEL_COMPILER_FALSE@bp2ncd_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
- at USE_PARALLEL_COMPILER_FALSE@	$(am__DEPENDENCIES_1)
- at USE_PARALLEL_COMPILER_TRUE@bp2ncd_DEPENDENCIES =  \
- at USE_PARALLEL_COMPILER_TRUE@	$(top_builddir)/src/libadios.a \
- at USE_PARALLEL_COMPILER_TRUE@	$(am__DEPENDENCIES_1)
-bp2ncd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(bp2ncd_CFLAGS) $(CFLAGS) \
+ at USE_PARALLEL_NETCDF_FOR_UTILS_FALSE@bp2ncd_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
+ at USE_PARALLEL_NETCDF_FOR_UTILS_FALSE@	$(am__DEPENDENCIES_1)
+ at USE_PARALLEL_NETCDF_FOR_UTILS_TRUE@bp2ncd_DEPENDENCIES = $(top_builddir)/src/libadios.a \
+ at USE_PARALLEL_NETCDF_FOR_UTILS_TRUE@	$(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 = 
+bp2ncd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(bp2ncd_CFLAGS) $(CFLAGS) \
 	$(bp2ncd_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bp2ncd_SOURCES)
 DIST_SOURCES = $(bp2ncd_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -116,6 +204,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -140,6 +229,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -148,11 +238,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
-CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
+CC = $(BP2NCD_CC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -165,7 +256,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -182,6 +272,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -235,17 +326,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -276,6 +370,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -296,10 +391,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -308,9 +406,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -322,6 +417,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -356,14 +452,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -377,14 +476,14 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 	-I$(top_srcdir)/src/public -I$(top_srcdir)/src/core
 AUTOMAKE_OPTIONS = no-dependencies
 bp2ncd_SOURCES = bp2ncd.c
- at USE_PARALLEL_COMPILER_FALSE@bp2ncd_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
- at USE_PARALLEL_COMPILER_TRUE@bp2ncd_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
- at USE_PARALLEL_COMPILER_TRUE@bp2ncd_CFLAGS = $(ADIOSLIB_CFLAGS) 
- at USE_PARALLEL_COMPILER_FALSE@bp2ncd_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) -static-libtool-libs
- at USE_PARALLEL_COMPILER_TRUE@bp2ncd_LDFLAGS = $(ADIOSLIB_LDFLAGS) -static-libtool-libs
- at USE_PARALLEL_COMPILER_FALSE@bp2ncd_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
- at USE_PARALLEL_COMPILER_FALSE@	$(ADIOSLIB_INT_LDADD)
- at USE_PARALLEL_COMPILER_TRUE@bp2ncd_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
+ at USE_PARALLEL_NETCDF_FOR_UTILS_FALSE@bp2ncd_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
+ at USE_PARALLEL_NETCDF_FOR_UTILS_TRUE@bp2ncd_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
+ at USE_PARALLEL_NETCDF_FOR_UTILS_TRUE@bp2ncd_CFLAGS = $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+ at USE_PARALLEL_NETCDF_FOR_UTILS_FALSE@bp2ncd_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS) -static-libtool-libs
+ at USE_PARALLEL_NETCDF_FOR_UTILS_TRUE@bp2ncd_LDFLAGS = $(ADIOSLIB_LDFLAGS) -static-libtool-libs
+ at USE_PARALLEL_NETCDF_FOR_UTILS_FALSE@bp2ncd_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
+ at USE_PARALLEL_NETCDF_FOR_UTILS_FALSE@	$(ADIOSLIB_INT_LDADD)
+ at USE_PARALLEL_NETCDF_FOR_UTILS_TRUE@bp2ncd_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
 EXTRA_DIST = bp2ncd.h
 all: all-am
 
@@ -422,14 +521,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -450,7 +554,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -463,9 +568,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bp2ncd$(EXEEXT): $(bp2ncd_OBJECTS) $(bp2ncd_DEPENDENCIES) 
+
+bp2ncd$(EXEEXT): $(bp2ncd_OBJECTS) $(bp2ncd_DEPENDENCIES) $(EXTRA_bp2ncd_DEPENDENCIES) 
 	@rm -f bp2ncd$(EXEEXT)
-	$(bp2ncd_LINK) $(bp2ncd_OBJECTS) $(bp2ncd_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bp2ncd_LINK) $(bp2ncd_OBJECTS) $(bp2ncd_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -474,19 +580,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bp2ncd-bp2ncd.o: bp2ncd.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ncd_CPPFLAGS) $(CPPFLAGS) $(bp2ncd_CFLAGS) $(CFLAGS) -c -o bp2ncd-bp2ncd.o `test -f 'bp2ncd.c' || echo '$(srcdir)/'`bp2ncd.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ncd_CPPFLAGS) $(CPPFLAGS) $(bp2ncd_CFLAGS) $(CFLAGS) -c -o bp2ncd-bp2ncd.o `test -f 'bp2ncd.c' || echo '$(srcdir)/'`bp2ncd.c
 
 bp2ncd-bp2ncd.obj: bp2ncd.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ncd_CPPFLAGS) $(CPPFLAGS) $(bp2ncd_CFLAGS) $(CFLAGS) -c -o bp2ncd-bp2ncd.obj `if test -f 'bp2ncd.c'; then $(CYGPATH_W) 'bp2ncd.c'; else $(CYGPATH_W) '$(srcdir)/bp2ncd.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bp2ncd_CPPFLAGS) $(CPPFLAGS) $(bp2ncd_CFLAGS) $(CFLAGS) -c -o bp2ncd-bp2ncd.obj `if test -f 'bp2ncd.c'; then $(CYGPATH_W) 'bp2ncd.c'; else $(CYGPATH_W) '$(srcdir)/bp2ncd.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -494,26 +600,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -525,15 +620,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -542,6 +633,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -593,10 +699,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -678,19 +789,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bp2ncd/bp2ncd.c b/utils/bp2ncd/bp2ncd.c
index 349a231..0358c46 100644
--- a/utils/bp2ncd/bp2ncd.c
+++ b/utils/bp2ncd/bp2ncd.c
@@ -71,12 +71,11 @@ int ncd_attr_str_ds (int ncid
                     ,struct adios_bp_buffer_struct_v1 * ptr_buffer
                     ,int count
                     ,struct var_dim * var_dims
-                    ,int var_dims_count) {
-    int i;
+                    ,int var_dims_count)
+{
     char fullname[255];
     char *path = attribute->path;
     char *name = attribute->name;
-    char *new_path;
     int  valid,retval,attid;
 
     ncd_gen_name (fullname, path, name);
@@ -113,9 +112,7 @@ int ncd_attr_str_ds (int ncid
     void *value = attribute->value;
     size_t len = 1; 
     enum ADIOS_DATATYPES type =  attribute->type;
-    struct adios_var_header_struct_v1 var_header;
     struct adios_var_payload_struct_v1 var_payload;  
-    uint64_t offset; 
     struct adios_index_var_struct_v1 * vars_root = 0;
 //    struct adios_index_attribute_struct_v1 * atts_root = 0;
 
@@ -133,7 +130,9 @@ int ncd_attr_str_ds (int ncid
                     //printf("\t      var: %s = ", vars_root->var_name);
                 }
                 else {
-                    offset = vars_root->characteristics->offset;
+                	// this cannot happen because ADIOS does not let writing attributes pointing to non-scalar variable
+                    nc_enddef(ncid);
+                    return 1;
                 }
                 break; 
             } 
@@ -210,6 +209,7 @@ int ncd_attr_str_ds (int ncid
     nc_enddef(ncid); 
     if ( var_payload.payload)
         free (var_payload.payload);
+    return 0;
 }
 
 int ncd_dataset (int ncid
@@ -221,18 +221,17 @@ int ncd_dataset (int ncid
 
     char *name = ptr_var_header->name;
     char *path = ptr_var_header->path;
-    char *new_path, fullname[256],dimname[256];
+    char fullname[256],dimname[256];
     enum ADIOS_DATATYPES type = ptr_var_header->type;
-    enum ADIOS_FLAG is_dim = ptr_var_header->is_dim;
+    //enum ADIOS_FLAG is_dim = ptr_var_header->is_dim;
     void *val = ptr_var_payload->payload; 
-    uint64_t payload_size = ptr_var_header->payload_size;
+    //uint64_t payload_size = ptr_var_header->payload_size;
     struct adios_dimension_struct_v1 *dims = ptr_var_header->dims; 
-    int maxrank = 0, i,j, valid=-1, nc_dimid=-1, retval=0, time_dimrank=0;
+    int maxrank = 0, i,j, valid=-1, nc_dimid=-1, retval=0;
     size_t rank = 0, start_dims[10],count_dims[10];
     int dimids[10];
-    const char one_name[] = "one";
     static int onename_dimid = -1;
-    int time_index; 
+    //int time_index, time_dimrank=0;
     struct adios_index_attribute_struct_v1 * atts_root = 0;
     
     memset(dimids,-1,10*sizeof(int));
@@ -250,14 +249,14 @@ int ncd_dataset (int ncid
         ++maxrank;
         if (dims->dimension.is_time_index == adios_flag_yes) {
             time_flag = adios_flag_yes;
-            time_dimrank = maxrank-1;
+            //time_dimrank = maxrank-1;
             //fprintf(stderr, "Time dim rank = %d\n",time_dimrank); 
         } 
         dims = dims->next;
     } 
     //fprintf(stderr, "variable %s, ndims = %d time_flag = %d\n",ptr_var_header->name, maxrank, time_flag); 
     dims = ptr_var_header->dims;
-    time_index = 0; 
+    //time_index = 0;
     if (dims) {
         for (rank = 0; rank < maxrank; rank++) {
             //            printf("rank cal:time_index=%d j=%d rank=%d\n",time_dimrank,j,rank);
@@ -359,14 +358,14 @@ int ncd_dataset (int ncid
                 if ( dims->dimension.var_id!=0
                         ||time_flag == adios_flag_yes) {
                     if (dims->dimension.rank!=0) {
-                        sprintf(dimname,"%s_%d",fullname,rank);
+                        sprintf(dimname,"%s_%zu",fullname,rank);
                         dimids[rank]=-1;
                         nc_inq_dimid(ncid, dimname, &dimids[rank]); 
                         if (dimids [rank] <= 0) 
                             retval=nc_def_dim (ncid, dimname,dims->dimension.rank,&dimids[rank]);
                         start_dims[rank] = 0;
                         count_dims[rank] = dims->dimension.rank;
-                        fprintf(stderr,"\tdim[%d]: c(%d):s(%d): dimid=%d\n"
+                        fprintf(stderr,"\tdim[%zu]: c(%zu):s(%zu): dimid=%d\n"
                                 ,rank 
                                 ,count_dims[rank] 
                                 ,start_dims[rank]
@@ -379,7 +378,7 @@ int ncd_dataset (int ncid
                             if (var_dims [i].id == dims->dimension.var_id) {
                                 if (dims->dimension.is_time_index == adios_flag_yes) {
                                     start_dims[rank] = var_dims[i].rank - 1;
-                                    time_index = var_dims[i].rank;
+                                    //time_index = var_dims[i].rank;
                                     count_dims[rank] = 1;
                                     dimids[rank] = var_dims [i].nc_dimid; 
                                     /*printf("\tdim[%d]: c(%d):s(%d): dimid=%d (time-index)\n"
@@ -394,7 +393,7 @@ int ncd_dataset (int ncid
                                     start_dims[rank] = 0;
                                     count_dims[rank] = var_dims[i].rank;
                                     dimids[rank]=var_dims[i].nc_dimid;
-                                    fprintf(stderr,"\tdim[%d]: c(%d):s(%d): dimid=%d\n"
+                                    fprintf(stderr,"\tdim[%zu]: c(%zu):s(%zu): dimid=%d\n"
                                             ,rank
                                             ,count_dims[rank]
                                             ,start_dims[rank]
@@ -447,7 +446,7 @@ int ncd_dataset (int ncid
                 }
                 else {
                     //printf ("Error, every dimension in netcdf need to have name!\n");
-                    sprintf(dimname,"%s_%d", fullname,rank);
+                    sprintf(dimname,"%s_%zu", fullname,rank);
                     nc_inq_dimid(ncid,dimname,&nc_dimid);
                     if (nc_dimid<0)
                         retval = nc_def_dim ( ncid, dimname, dims->dimension.rank, &nc_dimid);
@@ -455,7 +454,7 @@ int ncd_dataset (int ncid
                     count_dims[rank] = dims->dimension.rank;
                     start_dims[rank] =0; 
                     ERR(retval);
-                    fprintf(stderr, "\t local[%d]: %llu\n",rank,dims->dimension.rank);
+                    fprintf(stderr, "\t local[%zu]: %" PRIu64 "\n",rank,dims->dimension.rank);
                 } 
             }
             if (dims)
@@ -474,7 +473,7 @@ int ncd_dataset (int ncid
         } 
         for (rank = 0; rank < maxrank; rank++) {
             if (verbose>0)
-                fprintf(stderr, "\tdimension info[%d]: c(%d) s(%d)\n"
+                fprintf(stderr, "\tdimension info[%zu]: c(%zu) s(%zu)\n"
                         ,rank,count_dims[rank], start_dims[rank]);
         }
         if (time_idx == 0 && dimids[time_idx]!=0) {
@@ -492,7 +491,6 @@ int ncd_dataset (int ncid
         */
         if (is_input_fortran==1) {
             size_t tmp;
-            int start_rank = 0;
             //fprintf(stderr, "\tFlip %d Fortran dimensions, time_idx=%d\n", maxrank, time_idx);
             for (rank=0; rank < maxrank; rank++) {
                 if (rank < maxrank-1-rank) {
@@ -660,11 +658,7 @@ int ncd_dataset (int ncid
 int main (int argc, char ** argv)
 {
     char out_fname [256];
-    char * var;
-    int i = 0;
     int rc = 0;
-    uint64_t element_size = 0;
-    struct adios_bp_element_struct * element = NULL;
     if (argc < 2)
     {
         fprintf (stderr, "usage: %s <argv[1]_in> [argv[1]_out]\n"
@@ -689,7 +683,7 @@ int main (int argc, char ** argv)
         }
         
     }
-    int ncid, retval;
+    int ncid;
     nc_create ( out_fname, NC_CLOBBER | NC_64BIT_OFFSET, &ncid);
 
     struct adios_bp_buffer_struct_v1 * b = 0;
@@ -733,7 +727,6 @@ int main (int argc, char ** argv)
     adios_posix_read_attributes_index (b);
     adios_parse_attributes_index_v1 (b, &attrs_root);
 
-    uint64_t element_num = 1;
     pg = pg_root;
     while (pg)
     {
@@ -826,7 +819,7 @@ int main (int argc, char ** argv)
 
                 for( j = 0 ; j < var_dims_count; j++){
                     if (var_dims [j].id == var_header.id) { 
-                         var_dims [j].rank == *(unsigned int *) var_payload.payload; 
+                         var_dims [j].rank = *(unsigned int *) var_payload.payload;
                          flag = 1;
                          break; 
                     }
@@ -844,7 +837,6 @@ int main (int argc, char ** argv)
             if (var_payload.payload)
             {
                 free (var_payload.payload);
-                var_payload.payload;
             }
             //printf ("\n");
         }
diff --git a/utils/bpdiff/Makefile.in b/utils/bpdiff/Makefile.in
index f98a04c..74ff5ad 100644
--- a/utils/bpdiff/Makefile.in
+++ b/utils/bpdiff/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bpdiff$(EXEEXT)
 subdir = utils/bpdiff
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -90,23 +132,70 @@ bpdiff_OBJECTS = $(am_bpdiff_OBJECTS)
 am__DEPENDENCIES_1 =
 bpdiff_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
 	$(am__DEPENDENCIES_1)
-bpdiff_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bpdiff_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bpdiff_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bpdiff_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bpdiff_SOURCES)
 DIST_SOURCES = $(bpdiff_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -114,6 +203,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -138,6 +228,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -146,6 +237,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -178,6 +271,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -231,17 +325,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -272,6 +369,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -292,10 +390,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -304,9 +405,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -318,6 +416,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -352,14 +451,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -413,14 +515,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -441,7 +548,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -454,9 +562,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bpdiff$(EXEEXT): $(bpdiff_OBJECTS) $(bpdiff_DEPENDENCIES) 
+
+bpdiff$(EXEEXT): $(bpdiff_OBJECTS) $(bpdiff_DEPENDENCIES) $(EXTRA_bpdiff_DEPENDENCIES) 
 	@rm -f bpdiff$(EXEEXT)
-	$(bpdiff_LINK) $(bpdiff_OBJECTS) $(bpdiff_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bpdiff_LINK) $(bpdiff_OBJECTS) $(bpdiff_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -465,31 +574,31 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bpdiff-bpdiff.o: bpdiff.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-bpdiff.o `test -f 'bpdiff.c' || echo '$(srcdir)/'`bpdiff.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-bpdiff.o `test -f 'bpdiff.c' || echo '$(srcdir)/'`bpdiff.c
 
 bpdiff-bpdiff.obj: bpdiff.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-bpdiff.obj `if test -f 'bpdiff.c'; then $(CYGPATH_W) 'bpdiff.c'; else $(CYGPATH_W) '$(srcdir)/bpdiff.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-bpdiff.obj `if test -f 'bpdiff.c'; then $(CYGPATH_W) 'bpdiff.c'; else $(CYGPATH_W) '$(srcdir)/bpdiff.c'; fi`
 
 bpdiff-decompose_block.o: decompose_block.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-decompose_block.o `test -f 'decompose_block.c' || echo '$(srcdir)/'`decompose_block.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-decompose_block.o `test -f 'decompose_block.c' || echo '$(srcdir)/'`decompose_block.c
 
 bpdiff-decompose_block.obj: decompose_block.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-decompose_block.obj `if test -f 'decompose_block.c'; then $(CYGPATH_W) 'decompose_block.c'; else $(CYGPATH_W) '$(srcdir)/decompose_block.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-decompose_block.obj `if test -f 'decompose_block.c'; then $(CYGPATH_W) 'decompose_block.c'; else $(CYGPATH_W) '$(srcdir)/decompose_block.c'; fi`
 
 bpdiff-utils.o: utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
 
 bpdiff-utils.obj: utils.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdiff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdiff-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -497,26 +606,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -528,15 +626,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -545,6 +639,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -596,10 +705,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -681,19 +795,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bpdiff/bpdiff.c b/utils/bpdiff/bpdiff.c
index d587547..35767b2 100644
--- a/utils/bpdiff/bpdiff.c
+++ b/utils/bpdiff/bpdiff.c
@@ -18,10 +18,12 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <inttypes.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <errno.h>
+#include <math.h>
 #include "mpi.h"
 #include "utils.h"
 #include "decompose.h"
@@ -45,8 +47,6 @@ char   outfilename[256];   // File to write
 char   methodname[16];     // ADIOS write method
 char   methodparams[256];  // ADIOS write method
 
-static const int max_read_buffer_size  = 1024*1024*1024;
-static const int max_write_buffer_size = 1024*1024*1024;
 
 // Global variables
 int         rank, numproc;
@@ -219,9 +219,9 @@ int process_metadata()
         // print variable type and dimensions
         print0("    %-9s  %s", adios_type_to_string(v1->type), f1->var_namelist[i]);
         if (v1->ndim > 0) {
-            print0("[%llu", v1->dims[0]);
+            print0("[%" PRIu64, v1->dims[0]);
             for (j = 1; j < v1->ndim; j++)
-                print0(", %llu", v1->dims[j]);
+                print0(", %" PRIu64, v1->dims[j]);
             print0("] :\n");
         } else {
             print0("\tscalar\n");
@@ -244,9 +244,9 @@ int process_metadata()
         // print variable type and dimensions
         print0("    %-9s  %s", adios_type_to_string(v2->type), f2->var_namelist[i]);
         if (v2->ndim > 0) {
-            print0("[%llu", v2->dims[0]);
+            print0("[%" PRIu64, v2->dims[0]);
             for (j = 1; j < v2->ndim; j++)
-                print0(", %llu", v2->dims[j]);
+                print0(", %" PRIu64, v2->dims[j]);
             print0("] :\n");
         } else {
             print0("\tscalar\n");
@@ -257,7 +257,8 @@ int process_metadata()
      
     for(i=0; i<f1->nvars; i++){
 	    v1 = varinfo1[i].v;
-	    for(j=i; j!=i-1; ((j++)%(f2->nvars))){
+	    //for(j=i; j!=i-1; ((j++)%(f2->nvars))){
+	    for(j=i; j!=i-1; j = (j % f2->nvars)+1){
 	      v2 = varinfo2[j].v;
 	      if(strcmp(f1->var_namelist[i], f2->var_namelist[j]) == 0 &&
 	        strcmp(adios_type_to_string(v1->type), adios_type_to_string(v2->type))==0){
@@ -443,7 +444,7 @@ int compare_data(char * variable_name, void *data1, void *data2, int item, enum
                 float a, b;
                 a = ((float *) data1)[item];
                 b = ((float *) data2)[item];
-                if(abs(a-b)> fuzz_factor){
+                if(fabs(a-b)> fuzz_factor){
                     print("%s : %g in %s | %g in %s\n", variable_name, a, infilename1, b, infilename2);
                     ret++;
                 }
@@ -454,7 +455,7 @@ int compare_data(char * variable_name, void *data1, void *data2, int item, enum
                 double aa, bb;
                 aa = ((double *) data1)[item];
                 bb = ((double *) data2)[item];
-                if(abs(aa-bb)> fuzz_factor){
+                if(fabs(aa-bb)> fuzz_factor){
                     print("%s : %g in %s | %g in %s\n", variable_name, aa, infilename1, bb, infilename2);
                     ret++;
                 }
@@ -471,7 +472,7 @@ int compare_data(char * variable_name, void *data1, void *data2, int item, enum
                 a12 = ((float *) data1)[2*item+1];
                 b11 = ((float *) data2)[2*item];
                 b12 = ((float *) data2)[2*item+1];
-                if(abs(a11-b11)> fuzz_factor || abs(a12-b12)>fuzz_factor){
+                if(fabs(a11-b11)> fuzz_factor || fabs(a12-b12)>fuzz_factor){
                     print("%s : %g i%g in %s | %g i%g in %s\n", variable_name, a11, b11, infilename1, a12, b12, infilename2);
                     ret++;
                 }
@@ -485,7 +486,7 @@ int compare_data(char * variable_name, void *data1, void *data2, int item, enum
                 a22 = ((float *) data1)[2*item+1];
                 b21 = ((float *) data2)[2*item];
                 b22 = ((float *) data2)[2*item+1];
-                if(abs(a21-b21)> fuzz_factor || abs(a22-b22)>fuzz_factor){
+                if(fabs(a21-b21)> fuzz_factor || fabs(a22-b22)>fuzz_factor){
                     print("%s : %g i%g in %s | %g i%g in %s\n", variable_name, a21, b21, infilename1, a22, b22, infilename2);
                     ret++;
                 }
diff --git a/utils/bpdiff/utils.c b/utils/bpdiff/utils.c
index c03583c..6b6812d 100644
--- a/utils/bpdiff/utils.c
+++ b/utils/bpdiff/utils.c
@@ -37,10 +37,10 @@ void int64s_to_str (int n, uint64_t *values, char *s)
         s[0] = '\0';
         return;
     }
-    sprintf(s,"%llu", values[0]);
+    sprintf(s,"%" PRIu64, values[0]);
     for (i=1; i<n; i++)
     {
-        sprintf (v,",%llu", values[i]);
+        sprintf (v,",%" PRIu64, values[i]);
         strcat (s,v);
     }
 }
@@ -79,11 +79,11 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data, int idx)
             break;
 
         case adios_long:
-            sprintf (s, "%lld", ((int64_t *) data)[idx]);
+            sprintf (s, "%" PRId64, ((int64_t *) data)[idx]);
             break;
 
         case adios_unsigned_long:
-            sprintf (s, "%llu", ((uint64_t *) data)[idx]);
+            sprintf (s, "%" PRIu64, ((uint64_t *) data)[idx]);
             break;
 
         case adios_real:
diff --git a/utils/bpdiff/utils.h b/utils/bpdiff/utils.h
index 21196aa..480b1be 100644
--- a/utils/bpdiff/utils.h
+++ b/utils/bpdiff/utils.h
@@ -9,6 +9,7 @@
 
 #include <stdio.h>
 #include <stdint.h>
+#include <inttypes.h>
 #include "adios_types.h"
 
 #define MAX3(a,b,c) (a > b ? (a > c ? a : c) : (b > c ? b : c))
diff --git a/utils/bpdump/Makefile.am b/utils/bpdump/Makefile.am
index ee38e4d..3ee23ae 100644
--- a/utils/bpdump/Makefile.am
+++ b/utils/bpdump/Makefile.am
@@ -7,11 +7,7 @@ bin_PROGRAMS = bpdump
 
 bpdump_SOURCES = bpdump.c
 bpdump_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpdump_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpdump_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpdump_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
 bpdump_LDADD += $(ADIOSLIB_INT_LDADD)
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
-endif
diff --git a/utils/bpdump/Makefile.in b/utils/bpdump/Makefile.in
index 6e4eeda..ca6fe5a 100644
--- a/utils/bpdump/Makefile.in
+++ b/utils/bpdump/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bpdump$(EXEEXT)
 subdir = utils/bpdump
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,23 +131,70 @@ bpdump_OBJECTS = $(am_bpdump_OBJECTS)
 am__DEPENDENCIES_1 =
 bpdump_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bpdump_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bpdump_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bpdump_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bpdump_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bpdump_SOURCES)
 DIST_SOURCES = $(bpdump_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -113,6 +202,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -137,6 +227,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -145,11 +236,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
 CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -162,7 +254,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -179,6 +270,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -232,17 +324,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -273,6 +368,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -293,10 +389,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -305,9 +404,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -319,6 +415,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -353,14 +450,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,7 +476,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 bpdump_SOURCES = bpdump.c
 bpdump_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpdump_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpdump_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpdump_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 all: all-am
@@ -415,14 +515,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -443,7 +548,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -456,9 +562,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bpdump$(EXEEXT): $(bpdump_OBJECTS) $(bpdump_DEPENDENCIES) 
+
+bpdump$(EXEEXT): $(bpdump_OBJECTS) $(bpdump_DEPENDENCIES) $(EXTRA_bpdump_DEPENDENCIES) 
 	@rm -f bpdump$(EXEEXT)
-	$(bpdump_LINK) $(bpdump_OBJECTS) $(bpdump_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bpdump_LINK) $(bpdump_OBJECTS) $(bpdump_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -467,19 +574,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bpdump-bpdump.o: bpdump.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdump-bpdump.o `test -f 'bpdump.c' || echo '$(srcdir)/'`bpdump.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdump-bpdump.o `test -f 'bpdump.c' || echo '$(srcdir)/'`bpdump.c
 
 bpdump-bpdump.obj: bpdump.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdump-bpdump.obj `if test -f 'bpdump.c'; then $(CYGPATH_W) 'bpdump.c'; else $(CYGPATH_W) '$(srcdir)/bpdump.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpdump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpdump-bpdump.obj `if test -f 'bpdump.c'; then $(CYGPATH_W) 'bpdump.c'; else $(CYGPATH_W) '$(srcdir)/bpdump.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -487,26 +594,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -518,15 +614,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -535,6 +627,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -586,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -671,19 +783,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bpdump/bpdump.c b/utils/bpdump/bpdump.c
index f95df9d..06c7ec6 100644
--- a/utils/bpdump/bpdump.c
+++ b/utils/bpdump/bpdump.c
@@ -152,13 +152,13 @@ int main (int argc, char ** argv)
     adios_parse_index_offsets_v1 (b);
 
     /*
-    printf ("End of process groups       = %llu\n", b->end_of_pgs);
-    printf ("Process Groups Index Offset = %llu\n", b->pg_index_offset);
-    printf ("Process Groups Index Size   = %llu\n", b->pg_size);
-    printf ("Variable Index Offset       = %llu\n", b->vars_index_offset);
-    printf ("Variable Index Size         = %llu\n", b->vars_size);
-    printf ("Attribute Index Offset      = %llu\n", b->attrs_index_offset);
-    printf ("Attribute Index Size        = %llu\n", b->attrs_size);
+    printf ("End of process groups       = %" PRIu64 "\n", b->end_of_pgs);
+    printf ("Process Groups Index Offset = %" PRIu64 "\n", b->pg_index_offset);
+    printf ("Process Groups Index Size   = %" PRIu64 "\n", b->pg_size);
+    printf ("Variable Index Offset       = %" PRIu64 "\n", b->vars_index_offset);
+    printf ("Variable Index Size         = %" PRIu64 "\n", b->vars_size);
+    printf ("Attribute Index Offset      = %" PRIu64 "\n", b->attrs_index_offset);
+    printf ("Attribute Index Size        = %" PRIu64 "\n", b->attrs_size);
     */
 
     adios_posix_read_process_group_index (b);
@@ -194,12 +194,12 @@ int main (int argc, char ** argv)
         /* Note: only variables have subfile index, PG's don't so we need to be this indirect in the test */
         if (pg->offset_in_file >= b->pg_index_offset) 
         {
-            printf ("Process Group %llu offset is beyond the footer.", pg_num);
+            printf ("Process Group %" PRIu64 " offset is beyond the footer.", pg_num);
             if (have_subfiles) {
                 printf (" It is probably in a subfile but bpdump does not process subfiles.\n");
             } else {
                 printf (" Since there are no subfiles, this probably means the BP file is corrupt.\n"
-                        "offset=%llu  footer starts at %llu\n", pg->offset_in_file, b->pg_index_offset);
+                        "offset=%" PRIu64 "  footer starts at %" PRIu64 "\n", pg->offset_in_file, b->pg_index_offset);
             }
             pg = pg->next;
             continue;
@@ -234,7 +234,7 @@ int main (int argc, char ** argv)
         adios_posix_read_process_group (b);
         adios_parse_process_group_header_v1 (b, &pg_header);
         print_process_group_header (pg_num, &pg_header);
-        //printf ("\tSize of group in fil: %llu bytes\n",  b->read_pg_size);
+        //printf ("\tSize of group in fil: %" PRIu64 " bytes\n",  b->read_pg_size);
 
         adios_parse_vars_header_v1 (b, &vars_header);
         print_vars_header (&vars_header);
@@ -350,11 +350,11 @@ const char * value_to_string (enum ADIOS_DATATYPES type, void * data)
             break;
 
         case adios_long:
-            sprintf (s, "%lld", *(((int64_t *) data)));
+            sprintf (s, "%" PRId64, *(((int64_t *) data)));
             break;
 
         case adios_unsigned_long:
-            sprintf (s, "%llu", *(((uint64_t *) data)));
+            sprintf (s, "%" PRIu64, *(((uint64_t *) data)));
             break;
 
         case adios_real:
@@ -443,14 +443,14 @@ const char * value_to_string_ptr (enum ADIOS_DATATYPES type, void * data, uint64
         case adios_long:
         {
             int64_t * p = (int64_t *) data;
-            sprintf (s, "%lld", p [element]);
+            sprintf (s, "%" PRId64, p [element]);
             break;
         }
 
         case adios_unsigned_long:
         {
             uint64_t * p = (uint64_t *) data;
-            sprintf (s, "%llu", p [element]);
+            sprintf (s, "%" PRIu64, p [element]);
             break;
         }
 
@@ -476,6 +476,7 @@ const char * value_to_string_ptr (enum ADIOS_DATATYPES type, void * data, uint64
         }
 
         case adios_string:
+        case adios_string_array:
         {
             //char * p = (char *) data;
             //sprintf (s, "%s", p [element]);
@@ -514,7 +515,7 @@ void print_process_group_header (uint64_t num
 {
     struct adios_method_info_struct_v1 * m;
 
-    printf ("Process Group: %llu\n", num);
+    printf ("Process Group: %" PRIu64 "\n", num);
     printf ("\tGroup Name: %s\n", pg_header->name);
     printf ("\tHost Language Fortran?: %c\n"
            ,(pg_header->host_language_fortran == adios_flag_yes ? 'Y' : 'N')
@@ -547,7 +548,7 @@ void print_characteristic_dims(struct adios_index_characteristic_dims_struct_v1
             printf (",");
         if (dims->dims [j * 3 + 1] != 0)
         {
-            printf ("%llu:%llu:%llu"
+            printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                    ,dims->dims [j * 3 + 0]
                    ,dims->dims [j * 3 + 1]
                    ,dims->dims [j * 3 + 2]
@@ -555,7 +556,7 @@ void print_characteristic_dims(struct adios_index_characteristic_dims_struct_v1
         }
         else
         {
-            printf ("%llu"
+            printf ("%" PRIu64
                    ,dims->dims [j * 3 + 0]
                    );
         }
@@ -587,12 +588,12 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
                 }
                 else
                 {
-                    printf ("R(%llu)", d->dimension.rank);
+                    printf ("R(%" PRIu64 ")", d->dimension.rank);
                 }
             }
             else
             {
-                printf ("V(%hu)", d->dimension.var_id);
+                printf ("V(%u)", d->dimension.var_id);
             }
 
             if (   d->global_dimension.var_id != 0
@@ -607,12 +608,12 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
                     }
                     else
                     {
-                        printf (":R(%llu)", d->global_dimension.rank);
+                        printf (":R(%" PRIu64 ")", d->global_dimension.rank);
                     }
                 }
                 else
                 {
-                    printf (":V(%hu)", d->global_dimension.var_id);
+                    printf (":V(%u)", d->global_dimension.var_id);
                 }
                 if (d->local_offset.var_id == 0)
                 {
@@ -622,12 +623,12 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
                     }
                     else
                     {
-                        printf (":R(%llu)\n", d->local_offset.rank);
+                        printf (":R(%" PRIu64 ")\n", d->local_offset.rank);
 		    }
                 }
                 else
                 {
-                    printf (":V(%hu)\n", d->local_offset.var_id);
+                    printf (":V(%u)\n", d->local_offset.var_id);
                 }
             }
             printf ("\n");
@@ -636,7 +637,7 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
 	}
     }
     printf ("\t\tCharacteristics:\n");
-    printf ("\t\t\tOffset(%llu)", var_header->characteristics.offset);
+    printf ("\t\t\tOffset(%" PRIu64 ")", var_header->characteristics.offset);
 
     /* NCSU - Print min, max */
 
@@ -950,9 +951,9 @@ void print_var_payload (struct adios_var_header_struct_v1 * var_header
                 for (i = 0; i < ranks; i++)
                 {
                     if (i > 0)
-                        c += printf (",%llu", position [i]);
+                        c += printf (",%" PRIu64, position [i]);
                     else
-                        c += printf ("%llu", position [i]);
+                        c += printf ("%" PRIu64, position [i]);
                 }
                 c += printf ("] ");
                 c += printf ("%s ", value_to_string_ptr (var_header->type
@@ -1029,7 +1030,7 @@ void print_process_group_index (
         printf ("\tProcess ID: %d\n", pg_root->process_id);
         printf ("\tTime Name: %s\n", pg_root->time_index_name);
         printf ("\tTime: %d\n", pg_root->time_index);
-        printf ("\tOffset in File: %llu\n", pg_root->offset_in_file);
+        printf ("\tOffset in File: %" PRIu64 "\n", pg_root->offset_in_file);
 
         pg_root = pg_root->next;
     }
@@ -1054,14 +1055,14 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
         const char * typestr = adios_type_to_string_int (vars_root->type);
         printf ("\tDatatype: %s\n", typestr);
         //printf ("\tDatatype: %s\n", adios_type_to_string_int (vars_root->type));
-        printf ("\tVars Characteristics: %llu\n"
+        printf ("\tVars Characteristics: %" PRIu64 "\n"
                ,vars_root->characteristics_count
                );
         uint64_t i;
         for (i = 0; i < vars_root->characteristics_count; i++)
         {
-            printf ("\tOffset(%llu)", vars_root->characteristics [i].offset);
-            printf ("\tPayload Offset(%llu)", vars_root->characteristics [i].payload_offset);
+            printf ("\tOffset(%" PRIu64 ")", vars_root->characteristics [i].offset);
+            printf ("\tPayload Offset(%" PRIu64 ")", vars_root->characteristics [i].payload_offset);
             printf ("\tFile Index(%d)", vars_root->characteristics [i].file_index);
             printf ("\tTime Index(%d)", vars_root->characteristics [i].time_index);
 
@@ -1136,7 +1137,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 1]
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -1144,7 +1145,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                                );
                     }
@@ -1169,7 +1170,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                          ,dims->dims [j * 3 + 0]
                          ,dims->dims [j * 3 + 1]
                          ,dims->dims [j * 3 + 2]
@@ -1177,7 +1178,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64
                          ,dims->dims [j * 3 + 0]
                                );
                     }
@@ -1213,14 +1214,14 @@ void print_attributes_index
                    );
 	}
         printf ("\tDatatype: %s\n", adios_type_to_string_int (attrs_root->type));
-        printf ("\tAttribute Characteristics: %llu\n"
+        printf ("\tAttribute Characteristics: %" PRIu64 "\n"
                ,attrs_root->characteristics_count
                );
         uint64_t i;
         for (i = 0; i < attrs_root->characteristics_count; i++)
         {
-            printf ("\t\tOffset(%llu)", attrs_root->characteristics [i].offset);
-            printf ("\t\tPayload Offset(%llu)", attrs_root->characteristics [i].payload_offset);
+            printf ("\t\tOffset(%" PRIu64 ")", attrs_root->characteristics [i].offset);
+            printf ("\t\tPayload Offset(%" PRIu64 ")", attrs_root->characteristics [i].payload_offset);
             printf ("\t\tFile Index(%d)", attrs_root->characteristics [i].file_index);
             printf ("\t\tTime Index(%d)", attrs_root->characteristics [i].time_index);
 
@@ -1299,7 +1300,7 @@ void print_attributes_index
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 0]
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 1]
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -1307,7 +1308,7 @@ void print_attributes_index
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 0]
                                );
                     }
diff --git a/utils/bpls/Makefile.in b/utils/bpls/Makefile.in
index 9036460..7b9649f 100644
--- a/utils/bpls/Makefile.in
+++ b/utils/bpls/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bpls$(EXEEXT)
 subdir = utils/bpls
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,23 +131,70 @@ bpls_OBJECTS = $(am_bpls_OBJECTS)
 am__DEPENDENCIES_1 =
 bpls_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
 	$(am__DEPENDENCIES_1)
-bpls_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bpls_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bpls_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bpls_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bpls_SOURCES)
 DIST_SOURCES = $(bpls_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -113,6 +202,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -137,6 +227,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -145,6 +236,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -177,6 +270,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -230,17 +324,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -271,6 +368,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -291,10 +389,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -303,9 +404,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -317,6 +415,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -351,14 +450,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -412,14 +514,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -440,7 +547,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -453,9 +561,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bpls$(EXEEXT): $(bpls_OBJECTS) $(bpls_DEPENDENCIES) 
+
+bpls$(EXEEXT): $(bpls_OBJECTS) $(bpls_DEPENDENCIES) $(EXTRA_bpls_DEPENDENCIES) 
 	@rm -f bpls$(EXEEXT)
-	$(bpls_LINK) $(bpls_OBJECTS) $(bpls_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bpls_LINK) $(bpls_OBJECTS) $(bpls_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -464,19 +573,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bpls-bpls.o: bpls.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpls_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpls-bpls.o `test -f 'bpls.c' || echo '$(srcdir)/'`bpls.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpls_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpls-bpls.o `test -f 'bpls.c' || echo '$(srcdir)/'`bpls.c
 
 bpls-bpls.obj: bpls.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpls_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpls-bpls.obj `if test -f 'bpls.c'; then $(CYGPATH_W) 'bpls.c'; else $(CYGPATH_W) '$(srcdir)/bpls.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpls_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpls-bpls.obj `if test -f 'bpls.c'; then $(CYGPATH_W) 'bpls.c'; else $(CYGPATH_W) '$(srcdir)/bpls.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -484,26 +593,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -515,15 +613,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -532,6 +626,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -583,10 +692,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -668,19 +782,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 #CC=$(MPICC)
 #CXX=$(MPICXX)
diff --git a/utils/bpls/bpls.c b/utils/bpls/bpls.c
index 165950c..4d22be1 100644
--- a/utils/bpls/bpls.c
+++ b/utils/bpls/bpls.c
@@ -20,6 +20,7 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <unistd.h>
+#include <inttypes.h>
 #include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -164,7 +165,7 @@ void display_help() {
             "  --help      | -h           Print this help.\n"
             "  --verbose   | -v           Print log about what this program is doing.\n"
             "                               Use multiple -v to increase logging level.\n"
-            "Typical use: bpls -lavr <file>\n"
+            "Typical use: bpls -lav <file>\n"
             );
 }
 
@@ -452,7 +453,7 @@ void print_file_size(uint64_t size)
     }
     if (r > 511)
         s++;
-    printf ("  file size:     %lld %s\n", s, sm[idx]); 
+    printf ("  file size:     %" PRId64 " %s\n", s, sm[idx]);
 }
 
 
@@ -528,6 +529,7 @@ int doList_group (ADIOS_FILE *fp)
             if (retval) {
                 fprintf(stderr, "Error: %s\n", adios_errmsg());
             }
+            free(value);
         }
         len = strlen(adios_type_to_string(vartype));
         if (len > maxtypelen) maxtypelen = len;
@@ -586,9 +588,9 @@ int doList_group (ADIOS_FILE *fp)
                 if (timed) 
                     fprintf(outf, "%d*", vi->nsteps);
                 if (vi->ndim > 0) {
-                    fprintf(outf,"{%lld", vi->dims[0]);
+                    fprintf(outf,"{%" PRId64, vi->dims[0]);
                     for (j=1; j < vi->ndim; j++) {
-                        fprintf(outf,", %lld", vi->dims[j]);
+                        fprintf(outf,", %" PRId64, vi->dims[j]);
                     }
                     fprintf(outf,"}");
                 } else {
@@ -742,21 +744,33 @@ int doList_group (ADIOS_FILE *fp)
     }
     free(names);
     free(isVar);
+    free(vis);
     return 0;
 }                
 
 #define PRINT_ARRAY(str, ndim, dims, loopvar, format) \
     fprintf(outf,"%s",str); \
     if (ndim > 0) { \
-        fprintf(outf,"{"#format, dims[0]); \
+        fprintf(outf,"{%"#format, dims[0]); \
         for (loopvar=1; loopvar < ndim; loopvar++) { \
-            fprintf(outf,", "#format, dims[loopvar]); \
+            fprintf(outf,", %"#format, dims[loopvar]); \
         } \
         fprintf(outf,"}\n"); \
     } else { \
         fprintf(outf,"empty\n"); \
     }
 
+#define PRINT_ARRAY64(str, ndim, dims, loopvar) \
+    fprintf(outf,"%s",str); \
+    if (ndim > 0) { \
+        fprintf(outf,"{%" PRId64, dims[0]); \
+        for (loopvar=1; loopvar < ndim; loopvar++) { \
+            fprintf(outf,", %" PRId64, dims[loopvar]); \
+        } \
+        fprintf(outf,"}\n"); \
+    } else { \
+        fprintf(outf,"empty\n"); \
+    }
 
 void printMeshes (ADIOS_FILE  *fp)
 {
@@ -784,39 +798,40 @@ void printMeshes (ADIOS_FILE  *fp)
                adios_complete_meshinfo (fp, meshfp, mi); 
             }
             fprintf(outf, "    type:         ");
+
             switch (mi->type) {
                 case ADIOS_MESH_UNIFORM:
                     fprintf(outf, "uniform\n");
-                    PRINT_ARRAY("    dimensions:   ", 
+                    PRINT_ARRAY64("    dimensions:   ",
                                  mi->uniform->num_dimensions, 
                                  mi->uniform->dimensions, 
-                                 j, %lld)
+                                 j)
                     if (mi->uniform->origins) {
                         PRINT_ARRAY("    origins:      ", 
                                      mi->uniform->num_dimensions, 
                                      mi->uniform->origins, 
-                                     j, %g) 
+                                     j, g)
                     }
                     if (mi->uniform->spacings) {
                         PRINT_ARRAY ("    spacings:     ", 
                                      mi->uniform->num_dimensions, 
                                      mi->uniform->spacings,
-                                     j, %g)
+                                     j, g)
                     }
                     if (mi->uniform->maximums) {
                         PRINT_ARRAY ("    maximums:     ", 
                                      mi->uniform->num_dimensions, 
                                      mi->uniform->maximums,
-                                     j, %g)
+                                     j, g)
                     }
                     break;
 
                 case ADIOS_MESH_RECTILINEAR:
                     fprintf(outf, "rectilinear\n");
-                    PRINT_ARRAY("    dimensions:   ", 
+                    PRINT_ARRAY64("    dimensions:   ",
                                 mi->rectilinear->num_dimensions, 
                                 mi->rectilinear->dimensions, 
-                                j, %lld)
+                                j)
                     if (mi->rectilinear->use_single_var) {
                         fprintf(outf, "    coordinates:  single-var: \"%s\"\n", 
                                 mi->rectilinear->coordinates[0]);
@@ -832,10 +847,10 @@ void printMeshes (ADIOS_FILE  *fp)
 
                 case ADIOS_MESH_STRUCTURED:
                     fprintf(outf, "structured\n");
-                    PRINT_ARRAY("    dimensions:   ", 
+                    PRINT_ARRAY64("    dimensions:   ",
                                 mi->structured->num_dimensions, 
                                 mi->structured->dimensions, 
-                                j, %lld);
+                                j);
                     if (mi->structured->use_single_var) {
                         fprintf(outf, "    points:       single-var: \"%s\"\n", 
                                 mi->structured->points[0]);
@@ -853,7 +868,7 @@ void printMeshes (ADIOS_FILE  *fp)
                 case ADIOS_MESH_UNSTRUCTURED:
                     fprintf(outf, "unstructured\n");
                     if (mi->unstructured->nvar_points <= 1) {
-                        fprintf(outf, "    npoints:      %lld\n", mi->unstructured->npoints);
+                        fprintf(outf, "    npoints:      %" PRId64 "\n", mi->unstructured->npoints);
                         fprintf(outf, "    points:       single-var: \"%s\"\n", 
                                 mi->unstructured->points[0]);
                     } else {
@@ -868,7 +883,7 @@ void printMeshes (ADIOS_FILE  *fp)
                     for (i=0; i < mi->unstructured->ncsets; i++) { 
                         fprintf(outf, "    cell set %d:\n", i);
                         fprintf(outf, "      cell type:  %d\n", mi->unstructured->ctypes[i]);
-                        fprintf(outf, "      ncells:     %llu\n", mi->unstructured->ccounts[i]);
+                        fprintf(outf, "      ncells:     %" PRIu64 "\n", mi->unstructured->ccounts[i]);
                         fprintf(outf, "      cells var:  \"%s\"\n", mi->unstructured->cdata[i]);
                     }
                     fprintf(outf, "    nspaces:      %d\n", mi->unstructured->nspaces);
@@ -1148,7 +1163,7 @@ int getTypeInfo( enum ADIOS_DATATYPES adiosvartype, int* elemsize)
 }
 
 #define PRINT_DIMS64(str, v, n, loopvar) printf("%s = { ", str); \
-    for (loopvar=0; loopvar<n;loopvar++) printf("%lld ", v[loopvar]);    \
+    for (loopvar=0; loopvar<n;loopvar++) printf("%" PRId64 " ", v[loopvar]);    \
 printf("}")
 /** Read data of a variable and print 
  * Return: 0: ok, != 0 on error
@@ -1170,7 +1185,6 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
     int  readn[MAX_DIMS];   // how big chunk to read in in each dimension?
     int  status;            
     bool incdim;            // used in incremental reading in
-    ADIOS_SELECTION * sel;  // boundnig box to read
     int ndigits_dims[32];        // # of digits (to print) of each dimension 
 
     if (getTypeInfo(vi->type, &elemsize)) {
@@ -1196,13 +1210,13 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
             ct = icount[0];
 
         if (verbose>2) 
-            printf("    j=0, st=%llu ct=%llu\n", st, ct);
+            printf("    j=0, st=%" PRIu64 " ct=%" PRIu64 "\n", st, ct);
 
         start_t[0] = st;
         count_t[0] = ct;
         nelems *= ct;
         if (verbose>1) 
-            printf("    s[0]=%llu, c[0]=%llu, n=%llu\n", 
+            printf("    s[0]=%" PRIu64 ", c[0]=%" PRIu64 ", n=%" PRIu64 "\n",
                     start_t[0], count_t[0], nelems);
         
         tidx = 1;
@@ -1220,18 +1234,18 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
             ct = icount[j+tidx];
 
         if (verbose>2) 
-            printf("    j=%d, st=%llu ct=%llu\n", j+tidx, st, ct);
+            printf("    j=%d, st=%" PRIu64 " ct=%" PRIu64 "\n", j+tidx, st, ct);
 
         start_t[j+tidx] = st;
         count_t[j+tidx] = ct;
         nelems *= ct;
         if (verbose>1) 
-            printf("    s[%d]=%llu, c[%d]=%llu, n=%llu\n", 
+            printf("    s[%d]=%" PRIu64 ", c[%d]=%" PRIu64 ", n=%" PRIu64 "\n",
                     j+tidx, start_t[j+tidx], j+tidx, count_t[j+tidx], nelems);
     }
 
     if (verbose>1) {
-        printf(" total size of data to read = %llu\n", nelems*elemsize);
+        printf(" total size of data to read = %" PRIu64 "\n", nelems*elemsize);
     }
 
     print_slice_info(vi->ndim, vi->dims, timed, vi->nsteps, start_t, count_t);
@@ -1271,7 +1285,7 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
         sum = sum * (uint64_t) count_t[i];
         actualreadn = actualreadn * readn[i];
     }
-    if (verbose>1) printf("    read %d elements at once, %lld in total (nelems=%lld)\n", actualreadn, sum, nelems);
+    if (verbose>1) printf("    read %d elements at once, %" PRId64 " in total (nelems=%" PRId64 ")\n", actualreadn, sum, nelems);
 
 
     // init s and c
@@ -1300,7 +1314,7 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
         }
 
         // read a slice finally
-        sel = adios_selection_boundingbox (vi->ndim, s+tidx, c+tidx);
+        ADIOS_SELECTION *sel = adios_selection_boundingbox (vi->ndim, s+tidx, c+tidx);
         if (timed) {
             status = adios_schedule_read_byid (fp, sel, vi->varid, s[0], c[0], data); 
         } else {
@@ -1314,13 +1328,14 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
         }
 
         status = adios_perform_reads (fp, 1); // blocking read performed here
+        adios_selection_delete (sel);
         if (status < 0) {
             fprintf(stderr, "Error when reading variable %s. errno=%d : %s \n", name, adios_errno, adios_errmsg());
             free(data);
             return 11;
         }
 
-        //if (verbose>2) printf("  read %lld bytes\n", bytes_read);
+        //if (verbose>2) printf("  read %" PRId64 " bytes\n", bytes_read);
 
         // print slice
         print_dataset(data, vi->type, s, c, tdims, ndigits_dims); 
@@ -1464,9 +1479,9 @@ void print_slice_info(int ndim, uint64_t *dims, int timed, int nsteps, uint64_t
             isaslice = true;
     }
     if (isaslice) {
-        fprintf(outf,"%c   slice (%lld:%lld", commentchar, s[0], s[0]+c[0]-1);
+        fprintf(outf,"%c   slice (%" PRId64 ":%" PRId64, commentchar, s[0], s[0]+c[0]-1);
         for (i=1; i<tdim; i++) {
-            fprintf(outf,", %lld:%lld", s[i], s[i]+c[i]-1);
+            fprintf(outf,", %" PRId64 ":%" PRId64, s[i], s[i]+c[i]-1);
         }
         fprintf(outf,")\n");
     }
@@ -1731,9 +1746,9 @@ int print_dataset(void *data, enum ADIOS_DATATYPES adiosvartype,
         idxstr[0] = '\0'; // empty idx string
         if (nextcol == 0) {
             if (!noindex && tdims > 0) {
-                sprintf(idxstr,"    (%*lld",ndigits[0], ids[0]);
+                sprintf(idxstr,"    (%*" PRId64,ndigits[0], ids[0]);
                 for (i=1; i<tdims; i++) {
-                    sprintf(buf,",%*lld",ndigits[i],ids[i]);
+                    sprintf(buf,",%*" PRId64,ndigits[i],ids[i]);
                     strcat(idxstr, buf);
                 }
                 strcat(idxstr,")    ");
@@ -1835,7 +1850,7 @@ void print_decomp(ADIOS_VARINFO *vi)
                 }
                 for (k=0; k < vi->ndim; k++) {
                     if (vi->blockinfo[blockid].count[k]) {
-                    fprintf(outf, "%*lld:%*lld", 
+                    fprintf(outf, "%*" PRId64 ":%*" PRId64,
                             ndigits_dims[k],
                             vi->blockinfo[blockid].start[k],
                             ndigits_dims[k],
diff --git a/utils/bpmeta/CMakeLists.txt b/utils/bpmeta/CMakeLists.txt
index 2e1e758..e26d5c5 100644
--- a/utils/bpmeta/CMakeLists.txt
+++ b/utils/bpmeta/CMakeLists.txt
@@ -6,7 +6,7 @@ include_directories(${PROJECT_SOURCE_DIR}/src/public)
 link_directories(${PROJECT_BINARY_DIR}/src)
 
 add_executable(bpmeta bpmeta.c)
-target_link_libraries(bpmeta adios_internal_nompi ${ADIOSLIB_INT_LDADD})
+target_link_libraries(bpmeta adios_internal_nompi ${ADIOSLIB_INT_LDADD} ${CMAKE_THREAD_LIBS_INIT})
 set_target_properties(bpmeta PROPERTIES COMPILE_FLAGS "${ADIOSLIB_EXTRA_CPPFLAGS} ${ADIOSLIB_INT_CPPFLAGS} ${ADIOSLIB_INT_CFLAGS}")
 
 install(PROGRAMS ${CMAKE_BINARY_DIR}/utils/bpmeta/bpmeta DESTINATION ${bindir})
diff --git a/utils/bpmeta/Makefile.am b/utils/bpmeta/Makefile.am
index 2648764..4e86c7f 100644
--- a/utils/bpmeta/Makefile.am
+++ b/utils/bpmeta/Makefile.am
@@ -7,11 +7,7 @@ bin_PROGRAMS = bpmeta
 
 bpmeta_SOURCES = bpmeta.c
 bpmeta_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpmeta_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpmeta_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS) $(PTHREAD_LIBS)
 bpmeta_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
 bpmeta_LDADD += $(ADIOSLIB_INT_LDADD)
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
-endif
diff --git a/utils/bpmeta/Makefile.in b/utils/bpmeta/Makefile.in
index 185a01a..80d25ea 100644
--- a/utils/bpmeta/Makefile.in
+++ b/utils/bpmeta/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bpmeta$(EXEEXT)
 subdir = utils/bpmeta
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,23 +131,70 @@ bpmeta_OBJECTS = $(am_bpmeta_OBJECTS)
 am__DEPENDENCIES_1 =
 bpmeta_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bpmeta_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bpmeta_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bpmeta_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bpmeta_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bpmeta_SOURCES)
 DIST_SOURCES = $(bpmeta_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -113,6 +202,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -137,6 +227,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -145,11 +236,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
 CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -162,7 +254,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -179,6 +270,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -232,17 +324,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -273,6 +368,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -293,10 +389,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -305,9 +404,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -319,6 +415,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -353,14 +450,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -376,7 +476,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 bpmeta_SOURCES = bpmeta.c
 bpmeta_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpmeta_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpmeta_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS) $(PTHREAD_LIBS)
 bpmeta_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 all: all-am
@@ -415,14 +515,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -443,7 +548,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -456,9 +562,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bpmeta$(EXEEXT): $(bpmeta_OBJECTS) $(bpmeta_DEPENDENCIES) 
+
+bpmeta$(EXEEXT): $(bpmeta_OBJECTS) $(bpmeta_DEPENDENCIES) $(EXTRA_bpmeta_DEPENDENCIES) 
 	@rm -f bpmeta$(EXEEXT)
-	$(bpmeta_LINK) $(bpmeta_OBJECTS) $(bpmeta_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bpmeta_LINK) $(bpmeta_OBJECTS) $(bpmeta_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -467,19 +574,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bpmeta-bpmeta.o: bpmeta.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpmeta_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpmeta-bpmeta.o `test -f 'bpmeta.c' || echo '$(srcdir)/'`bpmeta.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpmeta_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpmeta-bpmeta.o `test -f 'bpmeta.c' || echo '$(srcdir)/'`bpmeta.c
 
 bpmeta-bpmeta.obj: bpmeta.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpmeta_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpmeta-bpmeta.obj `if test -f 'bpmeta.c'; then $(CYGPATH_W) 'bpmeta.c'; else $(CYGPATH_W) '$(srcdir)/bpmeta.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpmeta_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpmeta-bpmeta.obj `if test -f 'bpmeta.c'; then $(CYGPATH_W) 'bpmeta.c'; else $(CYGPATH_W) '$(srcdir)/bpmeta.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -487,26 +594,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -518,15 +614,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -535,6 +627,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -586,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -671,19 +783,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bpmeta/bpmeta.c b/utils/bpmeta/bpmeta.c
index cc3cb8a..6656b7b 100644
--- a/utils/bpmeta/bpmeta.c
+++ b/utils/bpmeta/bpmeta.c
@@ -198,12 +198,12 @@ int main (int argc, char ** argv)
     {
         startidx = endidx + 1;
         endidx = startidx + K - 1;
-        targs[tid].tid = tid;
-        targs[tid].startidx = startidx;
-        targs[tid].endidx = endidx;
         if (tid < L) {
             endidx++;
         }
+        targs[tid].tid = tid;
+        targs[tid].startidx = startidx;
+        targs[tid].endidx = endidx;
         if (verbose)
             printf ("Process subfiles from %d to %d with thread %d\n", 
                     targs[tid].startidx, targs[tid].endidx, targs[tid].tid);
@@ -281,7 +281,6 @@ int write_index (struct adios_index_struct_v1 * index, char * fname)
     uint64_t buffer_size = 0;
     uint64_t buffer_offset = 0;
     uint64_t index_start = 0; 
-    int err;
     int f;
     uint16_t flag = 0;
     ssize_t bytes_written = 0;
@@ -290,12 +289,12 @@ int write_index (struct adios_index_struct_v1 * index, char * fname)
     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset
             ,index_start, index);
     if (verbose>2) {
-        printf ("buffer=%p size=%lld offset=%lld\n", buffer, buffer_size, buffer_offset);
+        printf ("buffer=%p size=%" PRId64 " offset=%" PRId64 "\n", buffer, buffer_size, buffer_offset);
     }
 
     adios_write_version_flag_v1 (&buffer, &buffer_size, &buffer_offset, flag);
     if (verbose>2) {
-        printf ("buffer=%p size=%lld offset=%lld\n", buffer, buffer_size, buffer_offset);
+        printf ("buffer=%p size=%" PRId64 " offset=%" PRId64 "\n", buffer, buffer_size, buffer_offset);
     }
 
     f = open (fname, O_CREAT | O_RDWR, 0644);
@@ -314,7 +313,7 @@ int write_index (struct adios_index_struct_v1 * index, char * fname)
     } 
     else if (bytes_written != (ssize_t) buffer_offset) 
     {
-        fprintf (stderr, "Failed to write metadata of %lld bytes to file %s. "
+        fprintf (stderr, "Failed to write metadata of %" PRId64 " bytes to file %s. "
                 "Only wrote %lld bytes\n", buffer_offset, fname, (long long)bytes_written);
     }
     close(f);
@@ -367,13 +366,13 @@ int process_subfiles (int tid, int startidx, int endidx)
         adios_parse_index_offsets_v1 (b[idx]);
 
         /*
-           printf ("End of process groups       = %llu\n", b->end_of_pgs);
-           printf ("Process Groups Index Offset = %llu\n", b->pg_index_offset);
-           printf ("Process Groups Index Size   = %llu\n", b->pg_size);
-           printf ("Variable Index Offset       = %llu\n", b->vars_index_offset);
-           printf ("Variable Index Size         = %llu\n", b->vars_size);
-           printf ("Attribute Index Offset      = %llu\n", b->attrs_index_offset);
-           printf ("Attribute Index Size        = %llu\n", b->attrs_size);
+           printf ("End of process groups       = %" PRIu64 "\n", b->end_of_pgs);
+           printf ("Process Groups Index Offset = %" PRIu64 "\n", b->pg_index_offset);
+           printf ("Process Groups Index Size   = %" PRIu64 "\n", b->pg_size);
+           printf ("Variable Index Offset       = %" PRIu64 "\n", b->vars_index_offset);
+           printf ("Variable Index Size         = %" PRIu64 "\n", b->vars_size);
+           printf ("Attribute Index Offset      = %" PRIu64 "\n", b->attrs_index_offset);
+           printf ("Attribute Index Size        = %" PRIu64 "\n", b->attrs_size);
          */
 
         adios_posix_read_process_group_index (b[idx]);
@@ -449,7 +448,7 @@ void print_pg_index (int tid, struct adios_index_process_group_struct_v1 * pg_ro
                 printf ("Thread %d:   \tProcess ID: %d\n", tid, pg_root->process_id);
                 printf ("Thread %d:   \tTime Name: %s\n", tid, pg_root->time_index_name);
                 printf ("Thread %d:   \tTime: %d\n", tid, pg_root->time_index);
-                printf ("Thread %d:   \tOffset in File: %llu\n", tid, pg_root->offset_in_file);
+                printf ("Thread %d:   \tOffset in File: %" PRIu64 "\n", tid, pg_root->offset_in_file);
         }
         pg_root = pg_root->next;
         npg++;
@@ -485,14 +484,14 @@ void print_variable_index (int tid, struct adios_index_var_struct_v1 * vars_root
             }
             const char * typestr = adios_type_to_string_int (vars_root->type);
             printf ("Thread %d: \tDatatype: %s\n", tid, typestr);
-            printf ("Thread %d: \tVars Characteristics: %llu\n",
+            printf ("Thread %d: \tVars Characteristics: %" PRIu64 "\n",
                     tid, vars_root->characteristics_count
                    );
             uint64_t i;
             for (i = 0; i < vars_root->characteristics_count; i++)
             {
-                printf ("Thread %d: \tOffset(%llu)", tid, vars_root->characteristics [i].offset);
-                printf ("\tPayload Offset(%llu)", vars_root->characteristics [i].payload_offset);
+                printf ("Thread %d: \tOffset(%" PRIu64 ")", tid, vars_root->characteristics [i].offset);
+                printf ("\tPayload Offset(%" PRIu64 ")", vars_root->characteristics [i].payload_offset);
                 printf ("\tFile Index(%d)", vars_root->characteristics [i].file_index);
                 printf ("\tTime Index(%d)", vars_root->characteristics [i].time_index);
 
@@ -560,7 +559,7 @@ void print_variable_index (int tid, struct adios_index_var_struct_v1 * vars_root
                                 != 0
                            )
                         {
-                            printf ("%llu:%llu:%llu"
+                            printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                                     ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                                     ,vars_root->characteristics [i].dims.dims [j * 3 + 1]
                                     ,vars_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -568,7 +567,7 @@ void print_variable_index (int tid, struct adios_index_var_struct_v1 * vars_root
                         }
                         else
                         {
-                            printf ("%llu"
+                            printf ("%" PRIu64
                                     ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                                    );
                         }
@@ -593,7 +592,7 @@ void print_variable_index (int tid, struct adios_index_var_struct_v1 * vars_root
                                 != 0
                            )
                         {
-                            printf ("%llu:%llu:%llu"
+                            printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                                     ,dims->dims [j * 3 + 0]
                                     ,dims->dims [j * 3 + 1]
                                     ,dims->dims [j * 3 + 2]
@@ -601,7 +600,7 @@ void print_variable_index (int tid, struct adios_index_var_struct_v1 * vars_root
                         }
                         else
                         {
-                            printf ("%llu"
+                            printf ("%" PRIu64
                                     ,dims->dims [j * 3 + 0]
                                    );
                         }
@@ -648,15 +647,15 @@ void print_attribute_index (int tid, struct adios_index_attribute_struct_v1 * at
             }
             printf ("Thread %d: \tDatatype: %s\n", tid, 
                         adios_type_to_string_int (attrs_root->type));
-            printf ("Thread %d: \tAttribute Characteristics: %llu\n", tid,
+            printf ("Thread %d: \tAttribute Characteristics: %" PRIu64 "\n", tid,
                         attrs_root->characteristics_count
                    );
             uint64_t i;
             for (i = 0; i < attrs_root->characteristics_count; i++)
             {
-                printf ("Thread %d: \t\tOffset(%llu)", tid, 
+                printf ("Thread %d: \t\tOffset(%" PRIu64 ")", tid,
                             attrs_root->characteristics [i].offset);
-                printf ("\t\tPayload Offset(%llu)", attrs_root->characteristics [i].payload_offset);
+                printf ("\t\tPayload Offset(%" PRIu64 ")", attrs_root->characteristics [i].payload_offset);
                 printf ("\t\tFile Index(%d)", attrs_root->characteristics [i].file_index);
                 printf ("\t\tTime Index(%d)", attrs_root->characteristics [i].time_index);
 
@@ -726,7 +725,7 @@ void print_attribute_index (int tid, struct adios_index_attribute_struct_v1 * at
                                 != 0
                            )
                         {
-                            printf ("%llu:%llu:%llu"
+                            printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                                     ,attrs_root->characteristics [i].dims.dims [j * 3 + 0]
                                     ,attrs_root->characteristics [i].dims.dims [j * 3 + 1]
                                     ,attrs_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -734,7 +733,7 @@ void print_attribute_index (int tid, struct adios_index_attribute_struct_v1 * at
                         }
                         else
                         {
-                            printf ("%llu"
+                            printf ("%" PRIu64
                                     ,attrs_root->characteristics [i].dims.dims [j * 3 + 0]
                                    );
                         }
diff --git a/utils/bprecover/Makefile.am b/utils/bprecover/Makefile.am
index a24cc00..db0a8af 100644
--- a/utils/bprecover/Makefile.am
+++ b/utils/bprecover/Makefile.am
@@ -7,11 +7,7 @@ bin_PROGRAMS = bprecover
 
 bprecover_SOURCES = bprecover.c
 bprecover_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bprecover_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bprecover_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bprecover_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
 bprecover_LDADD += $(ADIOSLIB_INT_LDADD)
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
-endif
diff --git a/utils/bprecover/Makefile.in b/utils/bprecover/Makefile.in
index adb6acd..824da28 100644
--- a/utils/bprecover/Makefile.in
+++ b/utils/bprecover/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bprecover$(EXEEXT)
 subdir = utils/bprecover
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -90,23 +132,70 @@ am__DEPENDENCIES_1 =
 bprecover_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bprecover_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+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 = 
+bprecover_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(bprecover_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bprecover_SOURCES)
 DIST_SOURCES = $(bprecover_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -114,6 +203,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -138,6 +228,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -146,11 +237,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
 CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -163,7 +255,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -180,6 +271,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -233,17 +325,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -274,6 +369,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -294,10 +390,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -306,9 +405,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -320,6 +416,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -354,14 +451,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -377,7 +477,7 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 bprecover_SOURCES = bprecover.c
 bprecover_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bprecover_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bprecover_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bprecover_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 all: all-am
@@ -416,14 +516,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -444,7 +549,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -457,9 +563,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bprecover$(EXEEXT): $(bprecover_OBJECTS) $(bprecover_DEPENDENCIES) 
+
+bprecover$(EXEEXT): $(bprecover_OBJECTS) $(bprecover_DEPENDENCIES) $(EXTRA_bprecover_DEPENDENCIES) 
 	@rm -f bprecover$(EXEEXT)
-	$(bprecover_LINK) $(bprecover_OBJECTS) $(bprecover_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bprecover_LINK) $(bprecover_OBJECTS) $(bprecover_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -468,19 +575,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bprecover-bprecover.o: bprecover.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bprecover_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bprecover-bprecover.o `test -f 'bprecover.c' || echo '$(srcdir)/'`bprecover.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bprecover_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bprecover-bprecover.o `test -f 'bprecover.c' || echo '$(srcdir)/'`bprecover.c
 
 bprecover-bprecover.obj: bprecover.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bprecover_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bprecover-bprecover.obj `if test -f 'bprecover.c'; then $(CYGPATH_W) 'bprecover.c'; else $(CYGPATH_W) '$(srcdir)/bprecover.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bprecover_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bprecover-bprecover.obj `if test -f 'bprecover.c'; then $(CYGPATH_W) 'bprecover.c'; else $(CYGPATH_W) '$(srcdir)/bprecover.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -488,26 +595,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -519,15 +615,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -536,6 +628,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -587,10 +694,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -672,19 +784,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bprecover/bprecover.c b/utils/bprecover/bprecover.c
index 04e657d..4dd97c2 100644
--- a/utils/bprecover/bprecover.c
+++ b/utils/bprecover/bprecover.c
@@ -75,7 +75,6 @@ void store_scalar_dimensions (
     if (var_header->is_dim == adios_flag_yes)
     {
         if (var_header->id < MAX_DIMENSION_INDEX) {
-            uint64_t size = adios_get_type_size (var_header->type, var_payload->payload);
             uint64_t d = 0L;
             switch (var_header->type)
             {
@@ -110,7 +109,7 @@ void store_scalar_dimensions (
                            var_header->path, var_header->name);
                     break;
             }
-            dim_value [var_header->id] = *(unsigned int *) var_payload->payload;
+            dim_value [var_header->id] = d;
 
 
         } else {
@@ -155,7 +154,7 @@ uint64_t get_dimension (struct adios_dimension_item_struct_v1 * d, int return_fo
         {
             printf ("  !!! ERROR !!! Reference to dimension of variable id %d but "
                     " we haven't stored this scalar variable. Result is invalid dimension\n",
-                    id, MAX_DIMENSION_INDEX);
+                    id);
             dim = INVALID_DIM;
         }
         else 
@@ -237,7 +236,7 @@ int find_pg (int fd, uint64_t offset, uint64_t file_size, uint64_t * pgsize_repo
     const int N_READ_AHEAD = 1024;
     char buf[N_READ_AHEAD]; // temporary buffer to read data in and parse for info
 
-    printf ("Look for a Process Group (PG) at offset %llu\n", offset);
+    printf ("Look for a Process Group (PG) at offset %" PRIu64 "\n", offset);
     lseek (fd, offset, SEEK_SET);
     // read a few bytes in
     errno = 0;
@@ -253,7 +252,7 @@ int find_pg (int fd, uint64_t offset, uint64_t file_size, uint64_t * pgsize_repo
 
     uint64_t pgsize;
     pgsize = *(uint64_t*) buf;  // first 8 bytes is size of PG
-    printf ("  PG reported size: %llu\n", pgsize);
+    printf ("  PG reported size: %" PRIu64 "\n", pgsize);
 
     if (pgsize < 28) {
         printf ("   === PG reported size is too small. This is not a (good) PG.\n");
@@ -415,26 +414,26 @@ void write_index (int fd, uint64_t file_offset, struct adios_index_struct_v1 *
     uint64_t buffer_offset = 0L;
     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset, file_offset, index);
     adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
-    printf ("Index metadata size is %llu bytes\n", buffer_offset);
+    printf ("Index metadata size is %" PRIu64 " bytes\n", buffer_offset);
     if  (do_write_index) 
     {
-        printf ("Ready to write index to file offset %llu. Size is %llu bytes\n",
+        printf ("Ready to write index to file offset %" PRIu64 ". Size is %" PRIu64 " bytes\n",
                 file_offset, buffer_offset);
         lseek (fd, file_offset, SEEK_SET);
         ssize_t s = write (fd, buffer, buffer_offset);
         if (s != buffer_offset) {
-            printf ("ERROR: Only wrote %llu bytes of index data instead of the attempted %llu bytes\n",
+            printf ("ERROR: Only wrote %llu bytes of index data instead of the attempted %" PRIu64 " bytes\n",
                     (unsigned long long)s, buffer_offset);
         } else {
-            printf ("Wrote index to file offset %llu. Size is %llu bytes\n", file_offset, buffer_offset);
+            printf ("Wrote index to file offset %" PRIu64 ". Size is %" PRIu64 " bytes\n", file_offset, buffer_offset);
         }
-        printf ("Truncate file to size %llu\n", file_offset+s);
+        printf ("Truncate file to size %" PRIu64 "\n", file_offset+s);
         ftruncate (fd, file_offset+s);
     }
     else 
     {
         printf ("To actually recover the file by rewriting the index, use -f option.\n"
-                "Final file will be truncted to %llu bytes\n", file_offset+buffer_offset);
+                "Final file will be truncted to %" PRIu64 " bytes\n", file_offset+buffer_offset);
     }
 }
 
@@ -459,7 +458,6 @@ void print_usage (int argc, char ** argv)
 int main (int argc, char ** argv)
 {
     char * filename;
-    int rc = 0;
 
     if (argc < 2 || argc > 3)
     {
@@ -490,7 +488,6 @@ int main (int argc, char ** argv)
 
     have_subfiles = 0;
     struct adios_bp_buffer_struct_v1 * b = 0;
-    uint32_t version = 0;
 
     b = malloc (sizeof (struct adios_bp_buffer_struct_v1));
     adios_buffer_struct_init (b);
@@ -513,7 +510,7 @@ int main (int argc, char ** argv)
 
     b->f = fd; 
 
-    printf ("File size in bytes: %llu\n", file_size);
+    printf ("File size in bytes: %" PRIu64 "\n", file_size);
 
     /* Variables to build new index */
     struct adios_index_struct_v1 * index = adios_alloc_index_v1(1);
@@ -538,7 +535,7 @@ int main (int argc, char ** argv)
     {
         curr_offset = new_offset;
         pg_num++;
-        printf ("PG %llu found at offset %llu\n", pg_num, curr_offset);
+        printf ("PG %" PRIu64 " found at offset %" PRIu64 "\n", pg_num, curr_offset);
 
 
         /* Let's process the group */
@@ -618,7 +615,7 @@ int main (int argc, char ** argv)
         }
 
         pgsize_actual = b->offset;
-        printf ("Actual size of group by processing: %llu bytes\n", pgsize_actual);
+        printf ("Actual size of group by processing: %" PRIu64 " bytes\n", pgsize_actual);
 
         pg = pg->next;
         
@@ -644,7 +641,7 @@ int main (int argc, char ** argv)
     curr_offset += pgsize_actual;
 
     printf (DIVIDER);
-    printf ("Found %llu PGs to be processable\n", pg_num);
+    printf ("Found %" PRIu64 " PGs to be processable\n", pg_num);
 
     write_index (fd, curr_offset, index);
     adios_posix_close_internal (b); // will close fd
@@ -706,14 +703,14 @@ const char * value_to_string_ptr (enum ADIOS_DATATYPES type, void * data, uint64
         case adios_long:
         {
             int64_t * p = (int64_t *) data;
-            sprintf (s, "%lld", p [element]);
+            sprintf (s, "%" PRId64, p [element]);
             break;
         }
 
         case adios_unsigned_long:
         {
             uint64_t * p = (uint64_t *) data;
-            sprintf (s, "%llu", p [element]);
+            sprintf (s, "%" PRIu64, p [element]);
             break;
         }
 
@@ -739,6 +736,7 @@ const char * value_to_string_ptr (enum ADIOS_DATATYPES type, void * data, uint64
         }
 
         case adios_string:
+        case adios_string_array:
         {
             //char * p = (char *) data;
             //sprintf (s, "%s", p [element]);
@@ -777,7 +775,7 @@ void print_process_group_header (uint64_t num
 {
     struct adios_method_info_struct_v1 * m;
 
-    //printf ("Process Group: %llu\n", num);
+    //printf ("Process Group: %" PRIu64 "\n", num);
     printf ("\tGroup Name: %s\n", pg_header->name);
     printf ("\tHost Language Fortran?: %c\n"
            ,(pg_header->host_language_fortran == adios_flag_yes ? 'Y' : 'N')
@@ -810,7 +808,7 @@ void print_characteristic_dims(struct adios_index_characteristic_dims_struct_v1
             printf (",");
         if (dims->dims [j * 3 + 1] != 0)
         {
-            printf ("%llu:%llu:%llu"
+            printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                    ,dims->dims [j * 3 + 0]
                    ,dims->dims [j * 3 + 1]
                    ,dims->dims [j * 3 + 2]
@@ -818,7 +816,7 @@ void print_characteristic_dims(struct adios_index_characteristic_dims_struct_v1
         }
         else
         {
-            printf ("%llu"
+            printf ("%" PRIu64
                    ,dims->dims [j * 3 + 0]
                    );
         }
@@ -851,12 +849,12 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
                 }
                 else
                 {
-                    printf ("R(%llu)", d->dimension.rank);
+                    printf ("R(%" PRIu64 ")", d->dimension.rank);
                 }
             }
             else
             {
-                printf ("V(%hu)", d->dimension.var_id);
+                printf ("V(%u)", d->dimension.var_id);
             }
 
             if (   d->global_dimension.var_id != 0
@@ -871,12 +869,12 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
                     }
                     else
                     {
-                        printf (":R(%llu)", d->global_dimension.rank);
+                        printf (":R(%" PRIu64 ")", d->global_dimension.rank);
                     }
                 }
                 else
                 {
-                    printf (":V(%hu)", d->global_dimension.var_id);
+                    printf (":V(%u)", d->global_dimension.var_id);
                 }
                 if (d->local_offset.var_id == 0)
                 {
@@ -886,12 +884,12 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
                     }
                     else
                     {
-                        printf (":R(%llu)\n", d->local_offset.rank);
+                        printf (":R(%" PRIu64 ")\n", d->local_offset.rank);
 		    }
                 }
                 else
                 {
-                    printf (":V(%hu)\n", d->local_offset.var_id);
+                    printf (":V(%u)\n", d->local_offset.var_id);
                 }
             }
             printf ("\n");
@@ -900,7 +898,7 @@ void print_var_header (struct adios_var_header_struct_v1 * var_header)
 	}
     }
     printf ("\t\tCharacteristics:\n");
-    printf ("\t\t\tOffset(%llu)", var_header->characteristics.offset);
+    printf ("\t\t\tOffset(%" PRIu64 ")", var_header->characteristics.offset);
 
     /* NCSU - Print min, max */
 
@@ -1030,7 +1028,8 @@ void adios_var_element_count (int rank
 }
 #endif
 
-    // for writing out bits in a global way, we would need this piece
+/*
+// for writing out bits in a global way, we would need this piece
 static
 int increment_dimension (enum ADIOS_FLAG host_language_fortran
                         ,uint64_t element
@@ -1116,7 +1115,9 @@ int increment_dimension (enum ADIOS_FLAG host_language_fortran
     return 1;  // we only get here if we are within all bounds
 #endif
 }
+*/
 
+/*
 static
 int dims_not_max (uint64_t * position, uint64_t * dims, int ranks)
 {
@@ -1130,7 +1131,7 @@ int dims_not_max (uint64_t * position, uint64_t * dims, int ranks)
 
     return 0;
 }
-
+*/
 
 void print_attrs_header (
                       struct adios_attributes_header_struct_v1 * attrs_header
@@ -1181,7 +1182,7 @@ void print_process_group_index (
         printf ("\tProcess ID: %d\n", pg_root->process_id);
         printf ("\tTime Name: %s\n", pg_root->time_index_name);
         printf ("\tTime: %d\n", pg_root->time_index);
-        printf ("\tOffset in File: %llu\n", pg_root->offset_in_file);
+        printf ("\tOffset in File: %" PRIu64 "\n", pg_root->offset_in_file);
 
         pg_root = pg_root->next;
     }
@@ -1206,14 +1207,14 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
         const char * typestr = adios_type_to_string_int (vars_root->type);
         printf ("\tDatatype: %s\n", typestr);
         //printf ("\tDatatype: %s\n", adios_type_to_string_int (vars_root->type));
-        printf ("\tVars Characteristics: %llu\n"
+        printf ("\tVars Characteristics: %" PRIu64 "\n"
                ,vars_root->characteristics_count
                );
         uint64_t i;
         for (i = 0; i < vars_root->characteristics_count; i++)
         {
-            printf ("\tOffset(%llu)", vars_root->characteristics [i].offset);
-            printf ("\tPayload Offset(%llu)", vars_root->characteristics [i].payload_offset);
+            printf ("\tOffset(%" PRIu64 ")", vars_root->characteristics [i].offset);
+            printf ("\tPayload Offset(%" PRIu64 ")", vars_root->characteristics [i].payload_offset);
             printf ("\tFile Index(%d)", vars_root->characteristics [i].file_index);
             printf ("\tTime Index(%d)", vars_root->characteristics [i].time_index);
 
@@ -1288,7 +1289,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 1]
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -1296,7 +1297,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64
                          ,vars_root->characteristics [i].dims.dims [j * 3 + 0]
                                );
                     }
@@ -1321,7 +1322,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                          ,dims->dims [j * 3 + 0]
                          ,dims->dims [j * 3 + 1]
                          ,dims->dims [j * 3 + 2]
@@ -1329,7 +1330,7 @@ void print_vars_index (struct adios_index_var_struct_v1 * vars_root)
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64
                          ,dims->dims [j * 3 + 0]
                                );
                     }
@@ -1365,14 +1366,14 @@ void print_attributes_index
                    );
 	}
         printf ("\tDatatype: %s\n", adios_type_to_string_int (attrs_root->type));
-        printf ("\tAttribute Characteristics: %llu\n"
+        printf ("\tAttribute Characteristics: %" PRIu64 "\n"
                ,attrs_root->characteristics_count
                );
         uint64_t i;
         for (i = 0; i < attrs_root->characteristics_count; i++)
         {
-            printf ("\t\tOffset(%llu)", attrs_root->characteristics [i].offset);
-            printf ("\t\tPayload Offset(%llu)", attrs_root->characteristics [i].payload_offset);
+            printf ("\t\tOffset(%" PRIu64 ")", attrs_root->characteristics [i].offset);
+            printf ("\t\tPayload Offset(%" PRIu64 ")", attrs_root->characteristics [i].payload_offset);
             printf ("\t\tFile Index(%d)", attrs_root->characteristics [i].file_index);
             printf ("\t\tTime Index(%d)", attrs_root->characteristics [i].time_index);
 
@@ -1451,7 +1452,7 @@ void print_attributes_index
                         != 0
                        )
                     {
-                        printf ("%llu:%llu:%llu"
+                        printf ("%" PRIu64 ":%" PRIu64 ":%" PRIu64
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 0]
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 1]
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 2]
@@ -1459,7 +1460,7 @@ void print_attributes_index
                     }
                     else
                     {
-                        printf ("%llu"
+                        printf ("%" PRIu64
                          ,attrs_root->characteristics [i].dims.dims [j * 3 + 0]
                                );
                     }
diff --git a/utils/bpsplit/Makefile.am b/utils/bpsplit/Makefile.am
index 093e8b6..53de727 100644
--- a/utils/bpsplit/Makefile.am
+++ b/utils/bpsplit/Makefile.am
@@ -7,24 +7,19 @@ bin_PROGRAMS = bpsplit bpappend bpgettime
 
 bpsplit_SOURCES = bpsplit.c
 bpsplit_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpsplit_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpsplit_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpsplit_LDADD = $(top_builddir)/src/libadios_internal_nompi.a 
 bpsplit_LDADD += $(ADIOSLIB_INT_LDADD)
 
 bpappend_SOURCES = bpappend.c
 bpappend_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpappend_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpappend_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpappend_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
 bpappend_LDADD += $(ADIOSLIB_INT_LDADD)
 
 bpgettime_SOURCES = bpgettime.c
 bpgettime_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpgettime_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpgettime_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpgettime_LDADD = $(top_builddir)/src/libadios_internal_nompi.a
 bpgettime_LDADD += $(ADIOSLIB_INT_LDADD)
 
-if USE_PARALLEL_COMPILER
-    CC=$(MPICC)
-    CXX=$(MPICXX)
-endif
-
diff --git a/utils/bpsplit/Makefile.in b/utils/bpsplit/Makefile.in
index 890b0b2..ac5a691 100644
--- a/utils/bpsplit/Makefile.in
+++ b/utils/bpsplit/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bpsplit$(EXEEXT) bpappend$(EXEEXT) bpgettime$(EXEEXT)
 subdir = utils/bpsplit
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,39 +131,86 @@ bpappend_OBJECTS = $(am_bpappend_OBJECTS)
 am__DEPENDENCIES_1 =
 bpappend_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bpappend_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bpappend_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+bpappend_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bpappend_LDFLAGS) $(LDFLAGS) -o $@
 am_bpgettime_OBJECTS = bpgettime-bpgettime.$(OBJEXT)
 bpgettime_OBJECTS = $(am_bpgettime_OBJECTS)
 bpgettime_DEPENDENCIES =  \
 	$(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bpgettime_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+bpgettime_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(bpgettime_LDFLAGS) $(LDFLAGS) -o $@
 am_bpsplit_OBJECTS = bpsplit-bpsplit.$(OBJEXT)
 bpsplit_OBJECTS = $(am_bpsplit_OBJECTS)
 bpsplit_DEPENDENCIES = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(am__DEPENDENCIES_1)
-bpsplit_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bpsplit_LDFLAGS) \
-	$(LDFLAGS) -o $@
+bpsplit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(bpsplit_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(bpappend_SOURCES) $(bpgettime_SOURCES) $(bpsplit_SOURCES)
 DIST_SOURCES = $(bpappend_SOURCES) $(bpgettime_SOURCES) \
 	$(bpsplit_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -129,6 +218,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -153,6 +243,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -161,11 +252,12 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
 CC = @CC@
- at USE_PARALLEL_COMPILER_TRUE@CC = $(MPICC)
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
@@ -178,7 +270,6 @@ CRAY_UGNI_LDFLAGS = @CRAY_UGNI_LDFLAGS@
 CRAY_UGNI_LIBS = @CRAY_UGNI_LIBS@
 CSH = @CSH@
 CXX = @CXX@
- at USE_PARALLEL_COMPILER_TRUE@CXX = $(MPICXX)
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
@@ -195,6 +286,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -248,17 +340,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -289,6 +384,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -309,10 +405,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -321,9 +420,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -335,6 +431,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -369,14 +466,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -391,17 +491,17 @@ AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src \
 AUTOMAKE_OPTIONS = no-dependencies
 bpsplit_SOURCES = bpsplit.c
 bpsplit_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpsplit_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpsplit_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpsplit_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 bpappend_SOURCES = bpappend.c
 bpappend_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpappend_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpappend_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpappend_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 bpgettime_SOURCES = bpgettime.c
 bpgettime_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_INT_CFLAGS)
-bpgettime_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS)
+bpgettime_LDFLAGS = $(ADIOSLIB_INT_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 bpgettime_LDADD = $(top_builddir)/src/libadios_internal_nompi.a \
 	$(ADIOSLIB_INT_LDADD)
 all: all-am
@@ -440,14 +540,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -468,7 +573,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -481,15 +587,18 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-bpappend$(EXEEXT): $(bpappend_OBJECTS) $(bpappend_DEPENDENCIES) 
+
+bpappend$(EXEEXT): $(bpappend_OBJECTS) $(bpappend_DEPENDENCIES) $(EXTRA_bpappend_DEPENDENCIES) 
 	@rm -f bpappend$(EXEEXT)
-	$(bpappend_LINK) $(bpappend_OBJECTS) $(bpappend_LDADD) $(LIBS)
-bpgettime$(EXEEXT): $(bpgettime_OBJECTS) $(bpgettime_DEPENDENCIES) 
+	$(AM_V_CCLD)$(bpappend_LINK) $(bpappend_OBJECTS) $(bpappend_LDADD) $(LIBS)
+
+bpgettime$(EXEEXT): $(bpgettime_OBJECTS) $(bpgettime_DEPENDENCIES) $(EXTRA_bpgettime_DEPENDENCIES) 
 	@rm -f bpgettime$(EXEEXT)
-	$(bpgettime_LINK) $(bpgettime_OBJECTS) $(bpgettime_LDADD) $(LIBS)
-bpsplit$(EXEEXT): $(bpsplit_OBJECTS) $(bpsplit_DEPENDENCIES) 
+	$(AM_V_CCLD)$(bpgettime_LINK) $(bpgettime_OBJECTS) $(bpgettime_LDADD) $(LIBS)
+
+bpsplit$(EXEEXT): $(bpsplit_OBJECTS) $(bpsplit_DEPENDENCIES) $(EXTRA_bpsplit_DEPENDENCIES) 
 	@rm -f bpsplit$(EXEEXT)
-	$(bpsplit_LINK) $(bpsplit_OBJECTS) $(bpsplit_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(bpsplit_LINK) $(bpsplit_OBJECTS) $(bpsplit_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -498,31 +607,31 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 bpappend-bpappend.o: bpappend.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpappend_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpappend-bpappend.o `test -f 'bpappend.c' || echo '$(srcdir)/'`bpappend.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpappend_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpappend-bpappend.o `test -f 'bpappend.c' || echo '$(srcdir)/'`bpappend.c
 
 bpappend-bpappend.obj: bpappend.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpappend_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpappend-bpappend.obj `if test -f 'bpappend.c'; then $(CYGPATH_W) 'bpappend.c'; else $(CYGPATH_W) '$(srcdir)/bpappend.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpappend_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpappend-bpappend.obj `if test -f 'bpappend.c'; then $(CYGPATH_W) 'bpappend.c'; else $(CYGPATH_W) '$(srcdir)/bpappend.c'; fi`
 
 bpgettime-bpgettime.o: bpgettime.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpgettime_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpgettime-bpgettime.o `test -f 'bpgettime.c' || echo '$(srcdir)/'`bpgettime.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpgettime_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpgettime-bpgettime.o `test -f 'bpgettime.c' || echo '$(srcdir)/'`bpgettime.c
 
 bpgettime-bpgettime.obj: bpgettime.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpgettime_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpgettime-bpgettime.obj `if test -f 'bpgettime.c'; then $(CYGPATH_W) 'bpgettime.c'; else $(CYGPATH_W) '$(srcdir)/bpgettime.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpgettime_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpgettime-bpgettime.obj `if test -f 'bpgettime.c'; then $(CYGPATH_W) 'bpgettime.c'; else $(CYGPATH_W) '$(srcdir)/bpgettime.c'; fi`
 
 bpsplit-bpsplit.o: bpsplit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpsplit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpsplit-bpsplit.o `test -f 'bpsplit.c' || echo '$(srcdir)/'`bpsplit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpsplit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpsplit-bpsplit.o `test -f 'bpsplit.c' || echo '$(srcdir)/'`bpsplit.c
 
 bpsplit-bpsplit.obj: bpsplit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpsplit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpsplit-bpsplit.obj `if test -f 'bpsplit.c'; then $(CYGPATH_W) 'bpsplit.c'; else $(CYGPATH_W) '$(srcdir)/bpsplit.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bpsplit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bpsplit-bpsplit.obj `if test -f 'bpsplit.c'; then $(CYGPATH_W) 'bpsplit.c'; else $(CYGPATH_W) '$(srcdir)/bpsplit.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -530,26 +639,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -561,15 +659,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -578,6 +672,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -629,10 +738,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -714,19 +828,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/bpsplit/bpappend.c b/utils/bpsplit/bpappend.c
index 714fcf3..11d31cd 100644
--- a/utils/bpsplit/bpappend.c
+++ b/utils/bpsplit/bpappend.c
@@ -15,6 +15,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <inttypes.h>
 
 #ifndef __USE_LARGEFILE64
 #define __USE_LARGEFILE64
@@ -42,7 +43,7 @@
 #  define strndup(str,len) strdup(str)
 #endif
 
-#if defined(__APPLE__) || defined(__WIN32__) 
+#if defined(__APPLE__) || defined(__WIN32__)  || defined(__CYGWIN__) 
 #    define lseek64 lseek
 #    define open64  open
 #endif
@@ -213,12 +214,12 @@ int read_indexes(char *filename, bool input) {
         printf (DIVIDER);
         printf ("%s file %s:\n", (input ? "Input" : "Output"), filename);
         printf ("Process Groups Index:\n");
-        printf ("Process Groups Index Offset = %llu\n", bp->pg_index_offset);
-        printf ("Process Groups Index Size   = %llu\n", bp->pg_size);
-        printf ("Variable Index Offset       = %llu\n", bp->vars_index_offset);
-        printf ("Variable Index Size         = %llu\n", bp->vars_size);
-        printf ("Attribute Index Offset      = %llu\n", bp->attrs_index_offset);
-        printf ("Attribute Index Size        = %llu\n", bp->attrs_size);
+        printf ("Process Groups Index Offset = %" PRIu64 "\n", bp->pg_index_offset);
+        printf ("Process Groups Index Size   = %" PRIu64 "\n", bp->pg_size);
+        printf ("Variable Index Offset       = %" PRIu64 "\n", bp->vars_index_offset);
+        printf ("Variable Index Size         = %" PRIu64 "\n", bp->vars_size);
+        printf ("Attribute Index Offset      = %" PRIu64 "\n", bp->attrs_index_offset);
+        printf ("Attribute Index Size        = %" PRIu64 "\n", bp->attrs_size);
     }
 
     // set global pointers 
@@ -273,8 +274,8 @@ int copy_file( const char *filein, const char *fileout) {
     while (bytes_read > 0) {
         bytes_written = write( outf, (void *) buf, bytes_read);
         if (bytes_written != bytes_read) {
-            fprintf(stderr, "Error: could not write %d bytes to output file %s at offset 0: %s\n", 
-                    bytes_read, fileout, strerror(errno));
+            fprintf(stderr, "Error: could not write %lld bytes to output file %s at offset 0: %s\n",
+                    (long long)bytes_read, fileout, strerror(errno));
             close(inf);
             close(outf);
             return 4;
@@ -283,13 +284,13 @@ int copy_file( const char *filein, const char *fileout) {
         bytes_read = read( inf, (void *)buf, COPYBUFSIZE);
     }
     if (bytes_read < 0) {
-        fprintf(stderr, "Error at reading input file %s from offset %llu: %s\n", 
+        fprintf(stderr, "Error at reading input file %s from offset %" PRIu64 ": %s\n",
                 filein, bytes_copied, strerror(errno));
         close(inf);
         close(outf);
         return 2;
     }
-    if (verbose>1) printf("  copied %llu (0x%llx) bytes of data into %s\n", bytes_copied, bytes_copied, fileout);
+    if (verbose>1) printf("  copied %" PRIu64 " (0x%" PRIx64 ") bytes of data into %s\n", bytes_copied, bytes_copied, fileout);
 
     close(inf);
     close(outf);
@@ -394,14 +395,14 @@ int recover(int f) {
     // write old index into a buffer
     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset, index_start, 
                           idx);
-    if (verbose>1) fprintf(stderr, "  original index size %llu 0x%llx\n", buffer_offset, buffer_offset);
+    if (verbose>1) fprintf(stderr, "  original index size %" PRIu64 " 0x%" PRIx64 "\n", buffer_offset, buffer_offset);
     adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
     adios_clear_index_v1 (idx);
     adios_free_index_v1 (idx);
 
     // write index buffer out
-    if (verbose>1) fprintf(stderr, "  write %llu 0x%llx bytes of indexes...\n", buffer_offset, buffer_offset);
+    if (verbose>1) fprintf(stderr, "  write %" PRIu64 " 0x%" PRIx64 " bytes of indexes...\n", buffer_offset, buffer_offset);
     bytes_written = write (f, buffer, buffer_offset);
     free(buffer);
     if (bytes_written == -1) {
@@ -409,7 +410,7 @@ int recover(int f) {
         return 2;
     }
     if (bytes_written != buffer_offset) {
-        fprintf(stderr, "  Error: could not write complete original index into output file: %zu bytes from %llu\n"
+        fprintf(stderr, "  Error: could not write complete original index into output file: %zu bytes from %" PRIu64 "\n"
                 "Index in output file will be damaged.\n",
                 bytes_written, buffer_offset);
         return 2;
@@ -451,26 +452,26 @@ int append_in_to_out( const char *fileout, const char *filein) {
     off_t    pos;
     lseek64 (in_bp->f, 0, SEEK_SET);
     if (verbose>1) 
-        printf("  seek in output to end of group data, %llu (0x%llx) \n", 
+        printf("  seek in output to end of group data, %" PRIu64 " (0x%" PRIx64 ") \n",
                 out_bp->pg_index_offset, out_bp->pg_index_offset);
     pos = lseek64 (f, out_bp->pg_index_offset, SEEK_SET); // seek behind groups, overwrite old index
     if (pos != out_bp->pg_index_offset) {
-            fprintf(stderr, "Error: cannot seek to offset %llu (0x%llx) in file %s: %s\n", 
+            fprintf(stderr, "Error: cannot seek to offset %" PRIu64 " (0x%" PRIx64 ") in file %s: %s\n",
                     out_bp->pg_index_offset, out_bp->pg_index_offset, filein, strerror(errno));
             close(f);
             return 2;
     }
-    if (verbose>1) printf("  copy data from input file, %llu bytes\n", in_bp->pg_index_offset);
+    if (verbose>1) printf("  copy data from input file, %" PRIu64 " bytes\n", in_bp->pg_index_offset);
     while (bytes_copied < bytes_to_copy) {
         bytes_read = read( in_bp->f, (void *)buf, COPYBUFSIZE);
         if (bytes_read < 0) {
-            fprintf(stderr, "Error at reading input file %s from offset %llu: %s\n", 
+            fprintf(stderr, "Error at reading input file %s from offset %" PRIu64 ": %s\n",
                     filein, bytes_copied, strerror(errno));
             recover(f);
             close(f);
             return 3;
         } else if (bytes_read == 0) {
-            fprintf(stderr, "Error unexpected end of input file %s at offset %llu: %s\n", 
+            fprintf(stderr, "Error unexpected end of input file %s at offset %" PRIu64 ": %s\n",
                     filein, bytes_copied, strerror(errno));
             recover(f);
             close(f);
@@ -482,8 +483,8 @@ int append_in_to_out( const char *fileout, const char *filein) {
 
         bytes_written = write( f, (void *) buf, bytes_read);
         if (bytes_written != bytes_read) {
-            fprintf(stderr, "Error: could not write %d bytes to output file %s at offset %llu: %s\n", 
-                    bytes_read, fileout, out_bp->pg_index_offset+bytes_copied, strerror(errno));
+            fprintf(stderr, "Error: could not write %lld bytes to output file %s at offset %" PRIu64 ": %s\n",
+                    (long long)bytes_read, fileout, out_bp->pg_index_offset+bytes_copied, strerror(errno));
             recover(f);
             close(f);
             return 4;
@@ -491,7 +492,7 @@ int append_in_to_out( const char *fileout, const char *filein) {
 
         bytes_copied += bytes_written;
     }
-    if (verbose>1) printf("  written %llu (0x%llx) bytes of data into %s\n", bytes_copied, bytes_copied, fileout);
+    if (verbose>1) printf("  written %" PRIu64 " (0x%" PRIx64 ") bytes of data into %s\n", bytes_copied, bytes_copied, fileout);
 
     // Append input indexes into the output indexes
     char * buffer = 0;
@@ -504,18 +505,18 @@ int append_in_to_out( const char *fileout, const char *filein) {
     idx->vars_root = out_vars_root;
     idx->attrs_root = out_attrs_root;
 
-    if (verbose>1) printf("  index starts at %llu (0x%llx)\n", index_start, index_start);
+    if (verbose>1) printf("  index starts at %" PRIu64 " (0x%" PRIx64 ")\n", index_start, index_start);
 
     // merge in old indicies
     adios_merge_index_v1 (idx,
                           in_pg_root, in_vars_root, in_attrs_root, 0);
     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset, index_start, 
                           idx);
-    if (verbose>1) printf("  index size %llu 0x%llx\n", buffer_offset, buffer_offset);
+    if (verbose>1) printf("  index size %" PRIu64 " 0x%" PRIx64 "\n", buffer_offset, buffer_offset);
     adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
     // write index buffer out
-    if (verbose>1) printf("  write %llu 0x%llx bytes of indexes into %s\n", buffer_offset, buffer_offset, fileout);
+    if (verbose>1) printf("  write %" PRIu64 " 0x%" PRIx64 " bytes of indexes into %s\n", buffer_offset, buffer_offset, fileout);
     bytes_written = write (f, buffer, buffer_offset);
 
     if (verbose>1) printf("  written %zu 0x%zx bytes of indexes into %s\n", bytes_written, bytes_written, fileout);
diff --git a/utils/bpsplit/bpsplit.c b/utils/bpsplit/bpsplit.c
index 9ca6e4c..8a20ba9 100644
--- a/utils/bpsplit/bpsplit.c
+++ b/utils/bpsplit/bpsplit.c
@@ -15,6 +15,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <inttypes.h>
 
 #ifndef __USE_LARGEFILE64
 #define __USE_LARGEFILE64
@@ -42,7 +43,7 @@
 #  define strndup(str,len) strdup(str)
 #endif
 
-#if defined(__APPLE__) || defined(__WIN32__) 
+#if defined(__APPLE__) || defined(__WIN32__)  || defined(__CYGWIN__) 
 #    define lseek64 lseek
 #    define open64  open
 #endif
@@ -256,13 +257,13 @@ int read_indexes(char *filename) {
     if (verbose>1) {
         printf (DIVIDER);
         printf ("Process Groups Index:\n");
-        printf ("End of process groups       = %llu\n", in_bp->end_of_pgs);
-        printf ("Process Groups Index Offset = %llu\n", in_bp->pg_index_offset);
-        printf ("Process Groups Index Size   = %llu\n", in_bp->pg_size);
-        printf ("Variable Index Offset       = %llu\n", in_bp->vars_index_offset);
-        printf ("Variable Index Size         = %llu\n", in_bp->vars_size);
-        printf ("Attribute Index Offset      = %llu\n", in_bp->attrs_index_offset);
-        printf ("Attribute Index Size        = %llu\n", in_bp->attrs_size);
+        printf ("End of process groups       = %" PRIu64 "\n", in_bp->end_of_pgs);
+        printf ("Process Groups Index Offset = %" PRIu64 "\n", in_bp->pg_index_offset);
+        printf ("Process Groups Index Size   = %" PRIu64 "\n", in_bp->pg_size);
+        printf ("Variable Index Offset       = %" PRIu64 "\n", in_bp->vars_index_offset);
+        printf ("Variable Index Size         = %" PRIu64 "\n", in_bp->vars_size);
+        printf ("Attribute Index Offset      = %" PRIu64 "\n", in_bp->attrs_index_offset);
+        printf ("Attribute Index Size        = %" PRIu64 "\n", in_bp->attrs_size);
     }
 
     return excode;
@@ -396,7 +397,7 @@ void split_pg_index( uint32_t from, uint32_t to) {
 
         if (section == 1)  {
             // recalculate the offset of the outgoing group to the position in the output
-            if (verbose>1) printf("    group time %d offset %lld -> %lld\n", 
+            if (verbose>1) printf("    group time %d offset %" PRId64 " -> %" PRId64 "\n",
                             pg->time_index, pg->offset_in_file, pg->offset_in_file - out_offset_start);
             pg->offset_in_file -= out_offset_start;
         }
@@ -410,7 +411,7 @@ void split_pg_index( uint32_t from, uint32_t to) {
         out_offset_end = tail_pg_root->offset_in_file; // end points to a byte which is not copied!
     else
         out_offset_end = in_bp->pg_index_offset; // pg index is right after all the pg data in the bp file
-    if (verbose>1) printf("  offset start = %llu  end = %llu\n", out_offset_start, out_offset_end);
+    if (verbose>1) printf("  offset start = %" PRIu64 "  end = %" PRIu64 "\n", out_offset_start, out_offset_end);
 }
 
 /** Determine the start and beginning offsets in input file (of groups) that should be
@@ -432,7 +433,7 @@ void determine_pg_offsets() {
         out_offset_start = 0;
         out_offset_end = 0;
     }
-    if (verbose>1) printf("  offset start = %llu  end = %llu\n", out_offset_start, out_offset_end);
+    if (verbose>1) printf("  offset start = %" PRIu64 "  end = %" PRIu64 "\n", out_offset_start, out_offset_end);
 }
 */
 
@@ -547,17 +548,17 @@ int write_out( const char *fileout, const char *filein) {
     ssize_t bytes_read, bytes_written;
     uint64_t bytes_to_copy = out_offset_end - out_offset_start; // end byte should not be copied
     uint64_t bytes_copied  = 0;
-    if (verbose>1) printf("  seek in input file to %llu\n", out_offset_start);
+    if (verbose>1) printf("  seek in input file to %" PRIu64 "\n", out_offset_start);
     lseek64 (in_bp->f, out_offset_start, SEEK_SET);
     while (bytes_copied < bytes_to_copy) {
         bytes_read = read( in_bp->f, (void *)buf, COPYBUFSIZE);
         if (bytes_read < 0) {
-            fprintf(stderr, "Error at reading input file %s from offset %llu: %s\n", 
+            fprintf(stderr, "Error at reading input file %s from offset %" PRIu64 ": %s\n",
                     filein, out_offset_start+bytes_copied, strerror(errno));
             close(f);
             return 2;
         } else if (bytes_read == 0) {
-            fprintf(stderr, "Error unexpected end of input file %s at offset %llu: %s\n", 
+            fprintf(stderr, "Error unexpected end of input file %s at offset %" PRIu64 ": %s\n",
                     filein, out_offset_start+bytes_copied, strerror(errno));
             close(f);
             return 3;
@@ -568,26 +569,26 @@ int write_out( const char *fileout, const char *filein) {
 
         bytes_written = write( f, (void *) buf, bytes_read);
         if (bytes_written != bytes_read) {
-            fprintf(stderr, "Error: could not write %d bytes to output file %s at offset %llu: %s\n", 
-                    bytes_read, fileout, out_offset_start+bytes_copied, strerror(errno));
+            fprintf(stderr, "Error: could not write %lld bytes to output file %s at offset %" PRIu64 ": %s\n",
+                    (long long)bytes_read, fileout, out_offset_start+bytes_copied, strerror(errno));
             close(f);
             return 4;
         }
 
         bytes_copied += bytes_written;
     }
-    if (verbose>1) printf("  written %llu %llx bytes of data into %s\n", bytes_copied, bytes_copied, fileout);
+    if (verbose>1) printf("  written %" PRIu64 " %" PRIx64 " bytes of data into %s\n", bytes_copied, bytes_copied, fileout);
 
     // write indexes and version into a buffer
     char * buffer = NULL;
     uint64_t buffer_size = 0;
     uint64_t buffer_offset = 0;
     adios_write_index_v1 (&buffer, &buffer_size, &buffer_offset, bytes_copied, idx);
-    if (verbose>1) printf("  index size %llu 0x%llx\n", buffer_offset, buffer_offset);
+    if (verbose>1) printf("  index size %" PRIu64 " 0x%" PRIx64 "\n", buffer_offset, buffer_offset);
     adios_write_version_v1 (&buffer, &buffer_size, &buffer_offset);
 
     // write buffer out
-    if (verbose>1) printf("  write %llu 0x%llx bytes of indexes into %s\n", buffer_offset, buffer_offset, fileout);
+    if (verbose>1) printf("  write %" PRIu64 " 0x%" PRIx64 " bytes of indexes into %s\n", buffer_offset, buffer_offset, fileout);
     bytes_written = write (f, buffer, buffer_offset);
 
     if (verbose>1) printf("  written %zu 0x%zx bytes of indexes into %s\n", bytes_written, bytes_written, fileout);
diff --git a/utils/fastbit/Makefile.am b/utils/fastbit/Makefile.am
index 287071f..1abfadb 100644
--- a/utils/fastbit/Makefile.am
+++ b/utils/fastbit/Makefile.am
@@ -1,17 +1,15 @@
 AUTOMAKE_OPTIONS = no-dependencies
 
-INCLUDES = $(all_includes)
-
-INCLUDES += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/core
+AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/core
 
 
 bin_PROGRAMS = adios_index_fastbit
 
 adios_index_fastbit_SOURCES = adios_index_fastbit.c 
-
-adios_index_fastbit_CPPFLAGS = $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS)
+adios_index_fastbit_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS)
 adios_index_fastbit_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_index_fastbit_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_index_fastbit_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 
 CLEANFILES = *.idx
 
diff --git a/utils/fastbit/Makefile.in b/utils/fastbit/Makefile.in
index 76cede3..eb2c3be 100644
--- a/utils/fastbit/Makefile.in
+++ b/utils/fastbit/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = adios_index_fastbit$(EXEEXT)
 subdir = utils/fastbit
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -90,23 +132,71 @@ adios_index_fastbit_OBJECTS = $(am_adios_index_fastbit_OBJECTS)
 am__DEPENDENCIES_1 =
 adios_index_fastbit_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-adios_index_fastbit_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(adios_index_fastbit_LDFLAGS) $(LDFLAGS) -o $@
+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 = 
+adios_index_fastbit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(adios_index_fastbit_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(adios_index_fastbit_SOURCES)
 DIST_SOURCES = $(adios_index_fastbit_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -114,6 +204,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -138,6 +229,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -146,6 +238,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -178,6 +272,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -231,17 +326,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -272,6 +370,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -292,10 +391,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -304,9 +406,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -318,6 +417,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -352,14 +452,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -369,12 +472,12 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = no-dependencies
-INCLUDES = $(all_includes) -I$(top_builddir)/src/public \
+AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/core
 adios_index_fastbit_SOURCES = adios_index_fastbit.c 
-adios_index_fastbit_CPPFLAGS = $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS)
+adios_index_fastbit_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS)
 adios_index_fastbit_LDADD = $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-adios_index_fastbit_LDFLAGS = $(ADIOSLIB_LDFLAGS)
+adios_index_fastbit_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.idx
 all: all-am
 
@@ -412,14 +515,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -440,7 +548,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -453,9 +562,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-adios_index_fastbit$(EXEEXT): $(adios_index_fastbit_OBJECTS) $(adios_index_fastbit_DEPENDENCIES) 
+
+adios_index_fastbit$(EXEEXT): $(adios_index_fastbit_OBJECTS) $(adios_index_fastbit_DEPENDENCIES) $(EXTRA_adios_index_fastbit_DEPENDENCIES) 
 	@rm -f adios_index_fastbit$(EXEEXT)
-	$(adios_index_fastbit_LINK) $(adios_index_fastbit_OBJECTS) $(adios_index_fastbit_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(adios_index_fastbit_LINK) $(adios_index_fastbit_OBJECTS) $(adios_index_fastbit_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -464,19 +574,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 adios_index_fastbit-adios_index_fastbit.o: adios_index_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_index_fastbit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_index_fastbit-adios_index_fastbit.o `test -f 'adios_index_fastbit.c' || echo '$(srcdir)/'`adios_index_fastbit.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_index_fastbit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_index_fastbit-adios_index_fastbit.o `test -f 'adios_index_fastbit.c' || echo '$(srcdir)/'`adios_index_fastbit.c
 
 adios_index_fastbit-adios_index_fastbit.obj: adios_index_fastbit.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_index_fastbit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_index_fastbit-adios_index_fastbit.obj `if test -f 'adios_index_fastbit.c'; then $(CYGPATH_W) 'adios_index_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/adios_index_fastbit.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adios_index_fastbit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adios_index_fastbit-adios_index_fastbit.obj `if test -f 'adios_index_fastbit.c'; then $(CYGPATH_W) 'adios_index_fastbit.c'; else $(CYGPATH_W) '$(srcdir)/adios_index_fastbit.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -484,26 +594,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -515,15 +614,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -532,6 +627,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -583,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -669,19 +784,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/utils/fastbit/adios_index_fastbit.c b/utils/fastbit/adios_index_fastbit.c
index 4671ce9..127b7ac 100644
--- a/utils/fastbit/adios_index_fastbit.c
+++ b/utils/fastbit/adios_index_fastbit.c
@@ -46,11 +46,11 @@ void defineFastbitVar(int nblocks, const char* name, int64_t* ids, int adiosType
     //int offset= i*5;
     char offsetStr[100] = "";
     if (offset != NULL) {
-      sprintf(offsetStr, "%llu", offset[i]);
+      sprintf(offsetStr, "%" PRIu64, offset[i]);
     } 
 
     char dimStr[100];
-    sprintf(dimStr, "%llu", localDim[i]);
+    sprintf(dimStr, "%" PRIu64, localDim[i]);
     ids[i] = adios_define_var (gAdios_group, name, "", adiosType, dimStr, globalStr, offsetStr);
     //adios_set_transform (ids[i], "identity");
   }
@@ -60,11 +60,11 @@ int64_t defineAdiosVar(const char* name,  int adiosType, uint64_t localDim, cons
 {
     char offsetStr[100] = "";
     if (offset != 0) {
-      sprintf(offsetStr, "%llu", offset);
+      sprintf(offsetStr, "%" PRIu64, offset);
     } 
 
     char dimStr[100];
-    sprintf(dimStr, "%llu", localDim);
+    sprintf(dimStr, "%" PRIu64, localDim);
     int64_t id =  adios_define_var (gAdios_group, name, "", adiosType, dimStr, globalStr, offsetStr);
     printf("id = %ld \n", id);
     return id;
@@ -86,7 +86,7 @@ void verifyData(ADIOS_FILE* f, ADIOS_VARINFO* v, int k, int timestep)
       for (j=0; j<v->ndim; j++) 
       {  
 	  blockBytes *= v->blockinfo[k].count[j];
-	  //printf("%llu:%llu ", v->blockinfo[k].start[j], v->blockinfo[k].count[j]);
+	  //printf("%" PRIu64 ":%" PRIu64 " ", v->blockinfo[k].start[j], v->blockinfo[k].count[j]);
       }
 
       void* data = NULL;
@@ -128,7 +128,7 @@ void fastbitIndex(const char* datasetName, void* data, uint64_t blockSize, FastB
   fastbitErr = fastbit_iapi_deconstruct_index(datasetName, keys, nk, offsets, no, bms, nb);
   assertErr(fastbitErr, "failed with fastbit_iapi_deconstruct on ", datasetName);
   
-  //printf("nk/no/nb %lld %lld %lld\n", *nk, *no, *nb);
+  //printf("nk/no/nb %" PRId64 " %" PRId64 " %" PRId64 "\n", *nk, *no, *nb);
   
   fastbit_iapi_free_all();
 
@@ -276,7 +276,7 @@ void onSelection(int rank, ADIOS_FILE* f, ADIOS_VARINFO* v, int timestep, char*
       logTime("  indexed on block");
       logTimeMillis("  indexed on block");
       
-      printf("    rank:%d, index created =  %llu, %llu, %llu, on var:%d, timestep: %d, selection %s\n", rank, nb, nk, no, v->varid, timestep, selName);
+      printf("    rank:%d, index created =  %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", on var:%d, timestep: %d, selection %s\n", rank, nb, nk, no, v->varid, timestep, selName);
       sum_nb += nb; sum_nk += nk, sum_no += no;
 
       adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 500); // +5MB for extra room in buffer
@@ -289,7 +289,7 @@ void onSelection(int rank, ADIOS_FILE* f, ADIOS_VARINFO* v, int timestep, char*
       uint64_t adios_totalsize;     
       adios_group_size (gAdios_write_file, estimatedbytes +1048576, &adios_totalsize);     
 
-      printf("=> adios open output file: %s, rank %d allocated %llu bytes... \n", gIdxFileName, rank, adios_totalsize); 
+      printf("=> adios open output file: %s, rank %d allocated %" PRIu64 " bytes... \n", gIdxFileName, rank, adios_totalsize);
 
 
       defineFastbitVar(1, bmsVarName, &var_ids_bms, adios_unsigned_integer, &nb,0,0);    			    
@@ -416,7 +416,7 @@ void processData(void* data, uint64_t dataCount, int rank, int timestep, char* s
       logTime("  indexed on block");
       logTimeMillis("  indexed on block");
       
-      printf("  RANK:%d, index created =  %llu, %llu, %llu, on var:%d, timestep: %d, block %s\n", rank, nb, nk, no, v->varid, timestep, selName);
+      printf("  RANK:%d, index created =  %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", on var:%d, timestep: %d, block %s\n", rank, nb, nk, no, v->varid, timestep, selName);
       sum_nb += nb; sum_nk += nk, sum_no += no;
 
       
@@ -424,7 +424,7 @@ void processData(void* data, uint64_t dataCount, int rank, int timestep, char* s
       defineFastbitVar(1, keyVarName, &var_ids_key, adios_double, &nk, 0, 0);
       defineFastbitVar(1, offsetName, &var_ids_offset, adios_long, &no, 0, 0); 
 
-      printf("bms[0] = %llu, bms[1]=%llu \n", bms[0], bms[1]);
+      printf("bms[0] = %" PRIu64 ", bms[1]=%" PRIu64 " \n", bms[0], bms[1]);
       //var_ids_bms = defineAdiosVar(bmsVarName, adios_unsigned_integer, nb, 0, 0);
       //var_ids_key = defineAdiosVar(keyVarName, adios_double, nk, 0, 0);
       //var_ids_offset = defineAdiosVar(offsetName, adios_long, no, 0, 0);
@@ -476,7 +476,7 @@ void onBlock(int rank, ADIOS_FILE* f, ADIOS_VARINFO* v, int i, int j, int blockC
       logTime(notes); logTimeMillis(notes);
       localtime(&indexRefresh);
       
-      //printf("   %d th block / (%d), size= %llu bytes=%llu", j, blockSize, blockCounter, blockDataByteSize);
+      //printf("   %d th block / (%d), size= %" PRIu64 " bytes=%" PRIu64, j, blockSize, blockCounter, blockDataByteSize);
       
       void* data = malloc (blockDataByteSize);
       ADIOS_SELECTION* blockSel = adios_selection_writeblock(j);
@@ -533,8 +533,8 @@ void buildIndex_mpi(ADIOS_FILE* f, ADIOS_VARINFO* v, int rank, int size)
 	 }
        }
 
-       printf(" rank %d, varid %d, timestep %d  total index created =  %llu, %llu, %llu, \n", rank, v->varid, i, sum_nb, sum_nk, sum_no);
-       printf(" rank %d, varid %d, timestep %d  total bytes         =  %llu, %llu, %llu, \n", rank, v->varid, i,
+       printf(" rank %d, varid %d, timestep %d  total index created =  %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", \n", rank, v->varid, i, sum_nb, sum_nk, sum_no);
+       printf(" rank %d, varid %d, timestep %d  total bytes         =  %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", \n", rank, v->varid, i,
 	      adios_type_size(adios_unsigned_integer , NULL)*sum_nb,
 	      adios_type_size(adios_double, NULL)*sum_nk, 
 	      adios_type_size(adios_long, NULL)*sum_no);
@@ -717,7 +717,7 @@ int64_t getByteEstimationOnFile(ADIOS_FILE* f, int rank)
 
     uint64_t varSize = estimateBytesOnVar(f, v);
     if (rank == 0) {
-      printf(" var: %s has size: %lld\n", varName, varSize);
+      printf(" var: %s has size: %" PRId64 "\n", varName, varSize);
     }
     bytes += varSize;
 
@@ -750,7 +750,7 @@ int64_t getByteEstimation(ADIOS_FILE* f, int rank, int argc, char** argv)
 	return -1;
       }
       uint64_t varSize = estimateBytesOnVar(f, v);
-      printf(" var: %s has size: %lld\n", varName, varSize);
+      printf(" var: %s has size: %" PRId64 "\n", varName, varSize);
       bytes += varSize;
       adios_free_varinfo(v);
       i++;
@@ -796,17 +796,17 @@ int main (int argc, char** argv)
   gIdxFileName = fastbit_adios_util_getFastbitIndexFileName(argv[1]);
   unlink(gIdxFileName);
 
-      adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 500); // +5MB for extra room in buffer
+      //adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 500); // +5MB for extra room in buffer
       adios_declare_group (&gAdios_group, gGroupNameFastbitIdx, "", adios_flag_yes);
       adios_select_method (gAdios_group, "MPI", "", "");
 
       adios_open (&gAdios_write_file, gGroupNameFastbitIdx, gIdxFileName, "w", MPI_COMM_WORLD);
 
 #ifdef MULTI_BLOCK
-      int testid = adios_define_var (gAdios_group, "pack", "", adios_integer , 0, 0, 0);
+      int64_t testid = adios_define_var (gAdios_group, "pack", "", adios_integer , 0, 0, 0);
 #endif
 #ifdef BOX
-      int testid = adios_define_var (gAdios_group, "elements", "", adios_integer , 0, 0, 0);
+      int64_t testid = adios_define_var (gAdios_group, "elements", "", adios_integer , 0, 0, 0);
 #endif
       //uint64_t estimatedbytes = (nb+nk+no)*adios_type_size(adios_double, NULL);
       int jobCounter = getJobCounter(f);
@@ -821,7 +821,7 @@ int main (int argc, char** argv)
       uint64_t adios_totalsize;      // adios_group_size needs to be call before any write_byid, Otherwise write_byid does nothing 
       adios_group_size (gAdios_write_file, estimatedbytes , &adios_totalsize);     
 
-      printf("=> .. adios open output file: %s, rank %d allocated %llu bytes... \n", gIdxFileName, rank, adios_totalsize); 
+      printf("=> .. adios open output file: %s, rank %d allocated %" PRIu64 " bytes... \n", gIdxFileName, rank, adios_totalsize);
       // IMPORTANT: 
       // can only call open/close once in a process
       // otherwise data is tangled or only the data in the last open/close call is recorded
diff --git a/utils/gpp/CMakeLists.txt b/utils/gpp/CMakeLists.txt
index 6220b9f..374ca51 100644
--- a/utils/gpp/CMakeLists.txt
+++ b/utils/gpp/CMakeLists.txt
@@ -1 +1,5 @@
-install(PROGRAMS gpp.py ad_config.py type_mapper.py DESTINATION ${bindir})
+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})
+
+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 60f333d..041e5ca 100644
--- a/utils/gpp/Makefile.am
+++ b/utils/gpp/Makefile.am
@@ -1,5 +1,5 @@
 dist_bin_SCRIPTS = gpp.py ad_config.py type_mapper.py
 
 all-local:
-	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/gpp.py $(srcdir)/ad_config.py $(srcdir)/type_mapper.py $(builddir)
+	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 a579b0c..9433dea 100644
--- a/utils/gpp/Makefile.in
+++ b/utils/gpp/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,8 +79,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = utils/gpp
-DIST_COMMON = $(dist_bin_SCRIPTS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(srcdir)/gpp.py.in $(dist_bin_SCRIPTS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -80,7 +122,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = gpp.py
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -103,15 +145,40 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)"
 SCRIPTS = $(dist_bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -136,6 +203,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -144,6 +212,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -176,6 +246,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -229,17 +300,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -270,6 +344,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -290,10 +365,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -302,9 +380,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -316,6 +391,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -350,14 +426,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -400,10 +479,15 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+gpp.py: $(top_builddir)/config.status $(srcdir)/gpp.py.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -431,20 +515,18 @@ uninstall-dist_binSCRIPTS:
 	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
 
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
 
 
 distdir: $(DISTFILES)
@@ -494,10 +576,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -578,21 +665,21 @@ uninstall-am: uninstall-dist_binSCRIPTS
 .MAKE: install-am install-strip
 
 .PHONY: all all-am all-local check check-am clean clean-generic \
-	clean-libtool 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 uninstall 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
 
 
 all-local:
-	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/gpp.py $(srcdir)/ad_config.py $(srcdir)/type_mapper.py $(builddir)
+	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/ad_config.py $(srcdir)/type_mapper.py $(builddir); chmod a+x *.py
 
 # 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/utils/gpp/ad_config.py b/utils/gpp/ad_config.py
index 504e42c..9e7e0b0 100755
--- a/utils/gpp/ad_config.py
+++ b/utils/gpp/ad_config.py
@@ -11,7 +11,7 @@ class adiosConfig:
         doc = xml.dom.minidom.parse (config_file_name)
         nodes = doc.childNodes
         if (nodes.length != 1):
-            print 'malformed adios config file, should contain only a single adios-config element'
+            print('malformed adios config file, should contain only a single adios-config element')
             raise SystemExit
         self.config_node = nodes[0]
 
@@ -41,7 +41,7 @@ class adiosConfig:
 
     def get_buffer (self):
         #return the buffer info
-        print 'get_buffer is not yet implemented'
+        print('get_buffer is not yet implemented')
 
     def get_host_language (self):
         return self.config_node.getAttribute ('host-language')
@@ -65,7 +65,7 @@ class adiosGroup:
             if node.localName == 'var':
                 newvar = var (node, self, self.time_index)
                 self.vars.append (newvar)
-                #print 'Add to dict local var ['+newvar.get_fullpath()+']'
+                #print('Add to dict local var ['+newvar.get_fullpath()+']')
                 self.vardict [newvar.get_fullpath()] = newvar
                 self.vars_and_gwrites_and_attrs.append (newvar)
             #elif node.localName == 'attribute':
@@ -79,7 +79,7 @@ class adiosGroup:
                     if gb_node.localName == 'var':
                         newvar = var (gb_node, self, self.time_index)
                         self.vars.append (newvar)
-                        #print 'Add to dict global var ['+newvar.get_fullpath()+']'
+                        #print('Add to dict global var ['+newvar.get_fullpath()+']')
                         self.vardict [newvar.get_fullpath()] = newvar
                         self.vars_and_gwrites_and_attrs.append (newvar)
                     elif gb_node.localName == 'gwrite':
@@ -102,8 +102,8 @@ class adiosGroup:
 
     # Returns the variable from this group with the specified name, or None
     def get_var (self, varfullpath):
-        #print '          get_var('+varfullpath+')'
-        if self.vardict.has_key (varfullpath):
+        #print('          get_var('+varfullpath+')')
+        if varfullpath in self.vardict:
             return self.vardict [varfullpath]
 
         return None
@@ -184,10 +184,10 @@ class var:
             # place the dimensions in a list and remove the time-index if it is there.
             dims = filter (lambda x : x != self.time_index, self.var_node.getAttribute ('dimensions').split(',') )
             cleandims = []
-            #print '       get_dimensions of var '+self.get_fullpath()
+            #print('       get_dimensions of var '+self.get_fullpath())
             for d in dims:
 
-                #print '          dim "'+str(d)+'"'
+                #print('          dim "'+str(d)+'"')
                 if d.isdigit():
                     cleandims.append (d)
                     continue
@@ -196,10 +196,10 @@ class var:
                 # for that variable
                 dim_var = self.get_group().get_var (d)				
                 if dim_var != None:
-                    #print '            dim var found, get name...'
+                    #print('            dim var found, get name...')
                     d = dim_var.get_gwrite()
                 #else:
-                    #print '            dim var NOT found'
+                    #print('            dim var NOT found')
                     
 
                 cleandims.append (d)
diff --git a/utils/gpp/gpp.py b/utils/gpp/gpp.py
index 87f1320..7c0c4c0 100755
--- a/utils/gpp/gpp.py
+++ b/utils/gpp/gpp.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/sw/sith/python/2.7.3/rhel6_gnu4.4.6/bin/python
 
 import sys
 import os
@@ -22,10 +22,10 @@ def checkXML (config_file, path):
     if rv == 0:
         return 'success'
     elif rv == 32512:  # System unable to find adios_lint command
-        print "Unable to find adios_lint. Proceeding with code generation."
+        print("Unable to find adios_lint. Proceeding with code generation.")
         return 'success'
     else:
-        print "gpp.py failed."
+        print("gpp.py failed.")
         return 'failure'
 
 
@@ -58,11 +58,11 @@ def get_c_groupsize_code (group):
 
 
 def get_fortran_groupsize_code (group):
-    #print 'Get Fortran Groupsize code for group "'+group.get_name()+'"'
+    #print('Get Fortran Groupsize code for group "'+group.get_name()+'"')
     groupsize_code_string = ''
     groupsize_code_string += 'adios_groupsize = '
     for v in group.get_vars():
-        #print '  count variable "'+v.get_fullpath()+'"'
+        #print('  count variable "'+v.get_fullpath()+'"')
         if (v.is_scalar() ):
             if v.get_type() != 'string':
                 groupsize_code_string += ('%d' % type_mapper.get_size (v.get_type() ) + ' &\n                + ')
@@ -72,7 +72,7 @@ def get_fortran_groupsize_code (group):
             groupsize_code_string += ('%d * ' % type_mapper.get_size (v.get_type() ) )
 
             for d in v.get_dimensions():
-                #print '  count dim "'+d+'"'
+                #print('  count dim "'+d+'"')
                 # need to check whether this is the timestep
                 groupsize_code_string += '(' + d + ') * '
 
@@ -85,7 +85,7 @@ def get_fortran_groupsize_code (group):
 
     groupsize_code_string += '\ncall adios_group_size (adios_handle, adios_groupsize, adios_totalsize, adios_err)'
 
-    #print 'Done Fortran Groupsize'
+    #print('Done Fortran Groupsize')
     return groupsize_code_string;
 
 
@@ -215,7 +215,7 @@ def generate_fortran (config):
 
 
 def generate_c (config):
-    #print "c"
+    #print("c")
 
     # Output a gwrite_*.ch file for each group in the config
     for group in config.get_groups():
@@ -247,7 +247,7 @@ def main (argv=None):
   
     # Must be called with one argument, the name of the xml file
     if len (sys.argv) != 2:
-        print 'Usage: gpp.py <config file>\n'
+        print('Usage: gpp.py <config file>\n')
         return 1
 
 
@@ -268,7 +268,7 @@ def main (argv=None):
     elif lang == 'c' or lang == 'cpp':
         generate_c (config)
     else:
-        print "Fatal: Language unknown or unspecified"
+        print("Fatal: Language unknown or unspecified")
         raise SystemExit
 
 
diff --git a/utils/gpp/gpp.py b/utils/gpp/gpp.py.in
similarity index 94%
copy from utils/gpp/gpp.py
copy to utils/gpp/gpp.py.in
index 87f1320..7a61d4e 100755
--- a/utils/gpp/gpp.py
+++ b/utils/gpp/gpp.py.in
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!@PYTHON_EXECUTABLE@
 
 import sys
 import os
@@ -22,10 +22,10 @@ def checkXML (config_file, path):
     if rv == 0:
         return 'success'
     elif rv == 32512:  # System unable to find adios_lint command
-        print "Unable to find adios_lint. Proceeding with code generation."
+        print("Unable to find adios_lint. Proceeding with code generation.")
         return 'success'
     else:
-        print "gpp.py failed."
+        print("gpp.py failed.")
         return 'failure'
 
 
@@ -58,11 +58,11 @@ def get_c_groupsize_code (group):
 
 
 def get_fortran_groupsize_code (group):
-    #print 'Get Fortran Groupsize code for group "'+group.get_name()+'"'
+    #print('Get Fortran Groupsize code for group "'+group.get_name()+'"')
     groupsize_code_string = ''
     groupsize_code_string += 'adios_groupsize = '
     for v in group.get_vars():
-        #print '  count variable "'+v.get_fullpath()+'"'
+        #print('  count variable "'+v.get_fullpath()+'"')
         if (v.is_scalar() ):
             if v.get_type() != 'string':
                 groupsize_code_string += ('%d' % type_mapper.get_size (v.get_type() ) + ' &\n                + ')
@@ -72,7 +72,7 @@ def get_fortran_groupsize_code (group):
             groupsize_code_string += ('%d * ' % type_mapper.get_size (v.get_type() ) )
 
             for d in v.get_dimensions():
-                #print '  count dim "'+d+'"'
+                #print('  count dim "'+d+'"')
                 # need to check whether this is the timestep
                 groupsize_code_string += '(' + d + ') * '
 
@@ -85,7 +85,7 @@ def get_fortran_groupsize_code (group):
 
     groupsize_code_string += '\ncall adios_group_size (adios_handle, adios_groupsize, adios_totalsize, adios_err)'
 
-    #print 'Done Fortran Groupsize'
+    #print('Done Fortran Groupsize')
     return groupsize_code_string;
 
 
@@ -215,7 +215,7 @@ def generate_fortran (config):
 
 
 def generate_c (config):
-    #print "c"
+    #print("c")
 
     # Output a gwrite_*.ch file for each group in the config
     for group in config.get_groups():
@@ -247,7 +247,7 @@ def main (argv=None):
   
     # Must be called with one argument, the name of the xml file
     if len (sys.argv) != 2:
-        print 'Usage: gpp.py <config file>\n'
+        print('Usage: gpp.py <config file>\n')
         return 1
 
 
@@ -268,7 +268,7 @@ def main (argv=None):
     elif lang == 'c' or lang == 'cpp':
         generate_c (config)
     else:
-        print "Fatal: Language unknown or unspecified"
+        print("Fatal: Language unknown or unspecified")
         raise SystemExit
 
 
diff --git a/utils/gpp/type_mapper.py b/utils/gpp/type_mapper.py
index 97b9db3..7922525 100755
--- a/utils/gpp/type_mapper.py
+++ b/utils/gpp/type_mapper.py
@@ -29,7 +29,9 @@ c_types = {
     'unsigned double' : 'unsigned double',
     'unsigned real*8' : 'unsigned double',
     'complex' : 'complex',
-    'double complex' : 'double complex'
+    'complex*8' : 'complex',
+    'double complex' : 'double complex',
+    'complex*16' : 'double complex'
 }
 
 fortran_types = {
@@ -60,8 +62,10 @@ fortran_types = {
     'real*8' : 'real*8',
     'unsigned double' : 'unsigned real*8',
     'unsigned real*8' : 'unsigned real*8',
-    'complex' : 'complex',
-    'double complex' : 'double complex'
+    'complex' : 'complex*8',
+    'complex*8' : 'complex*8',
+    'double complex' : 'complex*16',
+    'complex*16' : 'complex*16'
 }
 
 type_sizes = {
@@ -93,7 +97,9 @@ type_sizes = {
     'unsigned double' : 8,
     'unsigned real*8' : 8,
     'complex' : 8,
-    'double complex' : 16
+    'complex*8' : 8,
+    'double complex' : 16,
+    'complex*16' : 16
 }
 
 def get_c_type (parsed_type):
diff --git a/utils/list_methods/CMakeLists.txt b/utils/list_methods/CMakeLists.txt
deleted file mode 100644
index 1d42587..0000000
--- a/utils/list_methods/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-include_directories(${PROJECT_SOURCE_DIR}/src)
-include_directories(${PROJECT_SOURCE_DIR}/src/core)
-include_directories(${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}/src ${PROJECT_BINARY_DIR}/src/public)
-include_directories(${PROJECT_SOURCE_DIR}/utils/list_methods)
-link_directories(${PROJECT_BINARY_DIR}/utils/list_methods)
-
-if(BUILD_WRITE)
-  add_executable(list_methods list_methods.c)
-  target_link_libraries(list_methods adios ${ADIOSLIB_LDADD} ${MPI_C_LIBRARIES})
-  set_target_properties(list_methods PROPERTIES COMPILE_FLAGS "${MACRODEFFLAG}WRITE ${ADIOSLIB_CPPFLAGS} ${ADIOSLIB_CFLAGS} ${ADIOSLIB_EXTRA_CPPFLAGS} ${MPI_C_COMPILE_FLAGS}")
-
-  if(MPI_LINK_FLAGS)
-     set_target_properties(list_methods PROPERTIES LINK_FLAGS "${MPI_C_LINK_FLAGS}")
-  endif()
-
-  install(PROGRAMS ${PROJECT_BINARY_DIR}/utils/list_methods/list_methods DESTINATION ${bindir})
-endif(BUILD_WRITE)
-
-add_executable(list_methods_readonly list_methods.c)
-target_link_libraries(list_methods_readonly adiosread ${ADIOSREADLIB_LDADD} ${MPI_C_LIBRARIES})
-set_target_properties(list_methods_readonly PROPERTIES COMPILE_FLAGS
-"${ADIOSREADLIB_CPPFLAGS} ${ADIOSREADLIB_CFLAGS} ${ADIOSREADLIB_EXTRA_CPPFLAGS} ${MPI_C_COMPILE_FLAGS}")
-
-if(MPI_LINK_FLAGS)
-    set_target_properties(list_methods_readonly PROPERTIES LINK_FLAGS "${MPI_C_LINK_FLAGS}")
-endif()
-
-install(PROGRAMS ${PROJECT_BINARY_DIR}/utils/list_methods/list_methods_readonly DESTINATION ${bindir})
diff --git a/utils/list_methods/Makefile.am b/utils/list_methods/Makefile.am
deleted file mode 100644
index 9b1f9bd..0000000
--- a/utils/list_methods/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-AM_CPPFLAGS = $(all_includes)
-AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_builddir)/src/public  -I$(top_srcdir)/src -I$(top_srcdir)/src/core
-
-AUTOMAKE_OPTIONS = no-dependencies
-
-bin_PROGRAMS = list_methods_readonly list_methods_readonly_nompi
-
-if BUILD_WRITE
-bin_PROGRAMS += list_methods list_methods_nompi 
-list_methods_SOURCES = list_methods.c
-list_methods_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_CPPFLAGS) $(ADIOSLIB_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
-list_methods_LDFLAGS = $(ADIOSLIB_LDFLAGS) 
-list_methods_LDADD =  $(top_builddir)/src/libadios.a $(ADIOSLIB_LDADD)
-
-list_methods_nompi_SOURCES = list_methods.c
-list_methods_nompi_CPPFLAGS = $(AM_CPPFLAGS) ${MACRODEFFLAG}WRITE $(ADIOSLIB_SEQ_CPPFLAGS) $(ADIOSLIB_SEQ_CFLAGS) $(ADIOSLIB_EXTRA_CPPFLAGS) 
-list_methods_nompi_LDFLAGS = $(ADIOSLIB_SEQ_LDFLAGS) 
-list_methods_nompi_LDADD =  $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-endif
-
-list_methods_readonly_SOURCES = list_methods.c
-list_methods_readonly_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS) $(ADIOSREADLIB_CFLAGS)
-list_methods_readonly_LDFLAGS = $(ADIOSREADLIB_LDFLAGS) 
-list_methods_readonly_LDADD =  $(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
-
-list_methods_readonly_nompi_SOURCES = list_methods.c
-list_methods_readonly_nompi_CPPFLAGS = $(AM_CPPFLAGS) $(ADIOSREADLIB_SEQ_CPPFLAGS) $(ADIOSREADLIB_SEQ_CFLAGS) 
-list_methods_readonly_nompi_LDFLAGS = $(ADIOSREADLIB_SEQ_LDFLAGS) 
-list_methods_readonly_nompi_LDADD =  $(top_builddir)/src/libadiosread_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
-
-#if USE_PARALLEL_COMPILER
-CC=$(MPICC)
-CXX=$(MPICXX)
-#endif
-
-
diff --git a/utils/skel/Makefile.am b/utils/skel/Makefile.am
index 6fa386a..bf6fe53 100644
--- a/utils/skel/Makefile.am
+++ b/utils/skel/Makefile.am
@@ -1,4 +1,9 @@
-SUBDIRS = etc src
+SUBDIRS = etc
+
+if HAVE_MPI
+    SUBDIRS += src
+endif
+
 
 dist_bin_SCRIPTS = bin/skel bin/set_method.sh bin/skel_extract.py bin/skel_cat.py
 
diff --git a/utils/skel/Makefile.in b/utils/skel/Makefile.in
index 62b9130..1b79af7 100644
--- a/utils/skel/Makefile.in
+++ b/utils/skel/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -17,6 +16,51 @@
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,10 +79,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ at HAVE_MPI_TRUE@am__append_1 = src
 subdir = utils/skel
-DIST_COMMON = $(dist_bin_SCRIPTS) $(dist_pythonlib_DATA) \
-	$(dist_template_DATA) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(dist_bin_SCRIPTS) $(dist_pythonlib_DATA) \
+	$(dist_template_DATA)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +106,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -105,27 +148,71 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pythonlibdir)" \
 	"$(DESTDIR)$(templatedir)"
 SCRIPTS = $(dist_bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(dist_pythonlib_DATA) $(dist_template_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = etc src
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -156,6 +243,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -180,6 +268,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -188,6 +277,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -220,6 +311,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -273,17 +365,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -314,6 +409,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -334,10 +430,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -346,9 +445,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -360,6 +456,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -394,14 +491,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -410,7 +510,7 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = etc src
+SUBDIRS = etc $(am__append_1)
 dist_bin_SCRIPTS = bin/skel bin/set_method.sh bin/skel_extract.py bin/skel_cat.py
 pythonlibdir = @libdir@/python
 dist_pythonlib_DATA = \
@@ -502,8 +602,11 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -531,9 +634,7 @@ uninstall-dist_binSCRIPTS:
 	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -542,8 +643,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-dist_pythonlibDATA: $(dist_pythonlib_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pythonlibdir)" || $(MKDIR_P) "$(DESTDIR)$(pythonlibdir)"
 	@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"; \
@@ -557,13 +661,14 @@ 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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pythonlibdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pythonlibdir)" && rm -f $$files
+	dir='$(DESTDIR)$(pythonlibdir)'; $(am__uninstall_files_from_dir)
 install-dist_templateDATA: $(dist_template_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(templatedir)" || $(MKDIR_P) "$(DESTDIR)$(templatedir)"
 	@list='$(dist_template_DATA)'; test -n "$(templatedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(templatedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(templatedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -577,27 +682,28 @@ uninstall-dist_templateDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(dist_template_DATA)'; test -n "$(templatedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(templatedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(templatedir)" && rm -f $$files
+	dir='$(DESTDIR)$(templatedir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -612,57 +718,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -678,12 +739,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -695,15 +751,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -712,6 +764,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -748,13 +815,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -792,10 +856,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -874,24 +943,22 @@ ps-am:
 uninstall-am: uninstall-dist_binSCRIPTS uninstall-dist_pythonlibDATA \
 	uninstall-dist_templateDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am all-local check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dist_binSCRIPTS \
-	install-dist_pythonlibDATA install-dist_templateDATA \
-	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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am uninstall-dist_binSCRIPTS \
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+	check check-am clean clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am \
+	install-dist_binSCRIPTS install-dist_pythonlibDATA \
+	install-dist_templateDATA 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 installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-dist_binSCRIPTS \
 	uninstall-dist_pythonlibDATA uninstall-dist_templateDATA
 
 
diff --git a/utils/skel/etc/Makefile.in b/utils/skel/etc/Makefile.in
index 37b24c4..3902026 100644
--- a/utils/skel/etc/Makefile.in
+++ b/utils/skel/etc/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,7 +79,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = utils/skel/etc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -58,14 +102,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -81,8 +123,25 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -104,13 +163,21 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(etcdir)"
 DATA = $(etc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -135,6 +202,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -143,6 +211,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -175,6 +245,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -228,17 +299,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -269,6 +343,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -289,10 +364,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -301,9 +379,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -315,6 +390,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -349,14 +425,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -411,8 +490,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-etcDATA: $(etc_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(etcdir)" || $(MKDIR_P) "$(DESTDIR)$(etcdir)"
 	@list='$(etc_DATA)'; test -n "$(etcdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(etcdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(etcdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -426,14 +508,12 @@ uninstall-etcDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(etc_DATA)'; test -n "$(etcdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(etcdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(etcdir)" && rm -f $$files
-tags: TAGS
-TAGS:
+	dir='$(DESTDIR)$(etcdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
 
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
 
 
 distdir: $(DISTFILES)
@@ -483,10 +563,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -567,16 +652,16 @@ uninstall-am: uninstall-etcDATA
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-etcDATA 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 \
-	uninstall uninstall-am uninstall-etcDATA
+	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-dvi \
+	install-dvi-am install-etcDATA 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-etcDATA
 
 
 all: compiler_fragment.mk
diff --git a/utils/skel/etc/templates/xml.tmpl b/utils/skel/etc/templates/xml.tmpl
index 92c7494..594236c 100644
--- a/utils/skel/etc/templates/xml.tmpl
+++ b/utils/skel/etc/templates/xml.tmpl
@@ -22,7 +22,7 @@
   </adios-group>
 
   <method group="${bpy.get_group_name()}" method="${bpy.get_method()}" />
-  <buffer size-MB="10" allocate-time="now" />
+  <buffer max-size-MB="10" />
 </adios-config>
 
 
diff --git a/utils/skel/src/Makefile.in b/utils/skel/src/Makefile.in
index efbb5b5..f4f725d 100644
--- a/utils/skel/src/Makefile.in
+++ b/utils/skel/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -17,6 +16,51 @@
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,8 +81,8 @@ build_triplet = @build@
 host_triplet = @host@
 @BUILD_FORTRAN_TRUE at am__append_1 = skel_xml_output_f.c
 subdir = utils/skel/src
-DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/config/depcomp $(library_include_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -61,14 +105,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -105,32 +147,89 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" \
 	"$(DESTDIR)$(library_includedir)"
 LIBRARIES = $(lib_LIBRARIES)
 ARFLAGS = cru
+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 = 
 libskel_a_AR = $(AR) $(ARFLAGS)
 libskel_a_LIBADD =
 am__libskel_a_SOURCES_DIST = skel_xml_output.c skel_xml_output_f.c
 @BUILD_FORTRAN_TRUE at am__objects_1 = skel_xml_output_f.$(OBJEXT)
 am_libskel_a_OBJECTS = skel_xml_output.$(OBJEXT) $(am__objects_1)
 libskel_a_OBJECTS = $(am_libskel_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+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 = 
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(libskel_a_SOURCES)
 DIST_SOURCES = $(am__libskel_a_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 HEADERS = $(library_include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -138,6 +237,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -162,6 +262,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -170,6 +271,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -202,6 +305,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -255,17 +359,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -296,6 +403,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -316,10 +424,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -328,9 +439,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -342,6 +450,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -376,14 +485,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -432,7 +544,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-libLIBRARIES: $(lib_LIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -440,6 +551,8 @@ install-libLIBRARIES: $(lib_LIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
 	@$(POST_INSTALL)
@@ -456,16 +569,15 @@ uninstall-libLIBRARIES:
 	@$(NORMAL_UNINSTALL)
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
 
 clean-libLIBRARIES:
 	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
-libskel.a: $(libskel_a_OBJECTS) $(libskel_a_DEPENDENCIES) 
-	-rm -f libskel.a
-	$(libskel_a_AR) libskel.a $(libskel_a_OBJECTS) $(libskel_a_LIBADD)
-	$(RANLIB) libskel.a
+
+libskel.a: $(libskel_a_OBJECTS) $(libskel_a_DEPENDENCIES) $(EXTRA_libskel_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libskel.a
+	$(AM_V_AR)$(libskel_a_AR) libskel.a $(libskel_a_OBJECTS) $(libskel_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libskel.a
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -477,25 +589,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/skel_xml_output_f.Po at am__quote@
 
 .c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
- at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -504,8 +616,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-library_includeHEADERS: $(library_include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(library_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_includedir)"
 	@list='$(library_include_HEADERS)'; test -n "$(library_includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(library_includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(library_includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -519,30 +634,17 @@ uninstall-library_includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(library_include_HEADERS)'; test -n "$(library_includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(library_includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(library_includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+	dir='$(DESTDIR)$(library_includedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -554,15 +656,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -571,6 +669,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -622,10 +735,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -710,20 +828,20 @@ uninstall-am: uninstall-libLIBRARIES uninstall-library_includeHEADERS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am \
-	install-libLIBRARIES install-library_includeHEADERS \
-	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-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-libLIBRARIES \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLIBRARIES clean-libtool cscopelist-am ctags ctags-am \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libLIBRARIES \
+	install-library_includeHEADERS 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \
 	uninstall-library_includeHEADERS
 
 
diff --git a/utils/skeldump/Makefile.in b/utils/skeldump/Makefile.in
index 3008f61..2fbeec8 100644
--- a/utils/skeldump/Makefile.in
+++ b/utils/skeldump/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -36,7 +80,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = skeldump$(EXEEXT)
 subdir = utils/skeldump
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -59,14 +103,12 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_lustre.m4 \
 	$(top_srcdir)/config/ac_mxml.m4 \
 	$(top_srcdir)/config/ac_nc4par.m4 \
-	$(top_srcdir)/config/ac_ncsu_timer.m4 \
 	$(top_srcdir)/config/ac_netcdf.m4 \
 	$(top_srcdir)/config/ac_nssi.m4 \
 	$(top_srcdir)/config/ac_pablo.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_ridcompress.m4 \
 	$(top_srcdir)/config/ac_szip.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
@@ -89,23 +131,70 @@ skeldump_OBJECTS = $(am_skeldump_OBJECTS)
 am__DEPENDENCIES_1 =
 skeldump_DEPENDENCIES = $(top_builddir)/src/libadiosread_nompi.a \
 	$(am__DEPENDENCIES_1)
-skeldump_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(skeldump_LDFLAGS) \
-	$(LDFLAGS) -o $@
+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 = 
+skeldump_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(skeldump_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
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp =
 am__depfiles_maybe =
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+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 = $(skeldump_SOURCES)
 DIST_SOURCES = $(skeldump_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -113,6 +202,7 @@ ACLOCAL = @ACLOCAL@
 ADIOSLIB_CFLAGS = @ADIOSLIB_CFLAGS@
 ADIOSLIB_CPPFLAGS = @ADIOSLIB_CPPFLAGS@
 ADIOSLIB_EXTRA_CPPFLAGS = @ADIOSLIB_EXTRA_CPPFLAGS@
+ADIOSLIB_EXTRA_LDFLAGS = @ADIOSLIB_EXTRA_LDFLAGS@
 ADIOSLIB_INT_CFLAGS = @ADIOSLIB_INT_CFLAGS@
 ADIOSLIB_INT_CPPFLAGS = @ADIOSLIB_INT_CPPFLAGS@
 ADIOSLIB_INT_LDADD = @ADIOSLIB_INT_LDADD@
@@ -137,6 +227,7 @@ ALACRITY_CPPFLAGS = @ALACRITY_CPPFLAGS@
 ALACRITY_LDFLAGS = @ALACRITY_LDFLAGS@
 ALACRITY_LIBS = @ALACRITY_LIBS@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APLOD_CPPFLAGS = @APLOD_CPPFLAGS@
 APLOD_LDFLAGS = @APLOD_LDFLAGS@
 APLOD_LIBS = @APLOD_LIBS@
@@ -145,6 +236,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BP2H5_CC = @BP2H5_CC@
+BP2NCD_CC = @BP2NCD_CC@
 BZIP2_CPPFLAGS = @BZIP2_CPPFLAGS@
 BZIP2_LDFLAGS = @BZIP2_LDFLAGS@
 BZIP2_LIBS = @BZIP2_LIBS@
@@ -177,6 +270,7 @@ DEPDIR = @DEPDIR@
 DIMES_CPPFLAGS = @DIMES_CPPFLAGS@
 DIMES_LDFLAGS = @DIMES_LDFLAGS@
 DIMES_LIBS = @DIMES_LIBS@
+DLLTOOL = @DLLTOOL@
 DMALLOC_CPPFLAGS = @DMALLOC_CPPFLAGS@
 DMALLOC_LDFLAGS = @DMALLOC_LDFLAGS@
 DMALLOC_LIBS = @DMALLOC_LIBS@
@@ -230,17 +324,20 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 LUSTRE_CPPFLAGS = @LUSTRE_CPPFLAGS@
 LUSTRE_LDFLAGS = @LUSTRE_LDFLAGS@
 LUSTRE_LIBS = @LUSTRE_LIBS@
 MACRODEFFLAG = @MACRODEFFLAG@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPICXX = @MPICXX@
 MPIFC = @MPIFC@
 MPILIBS = @MPILIBS@
+MXML_BUILD_LDFLAGS = @MXML_BUILD_LDFLAGS@
 MXML_CPPFLAGS = @MXML_CPPFLAGS@
 MXML_LDFLAGS = @MXML_LDFLAGS@
 MXML_LIBS = @MXML_LIBS@
@@ -271,6 +368,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PAMI_CFLAGS = @PAMI_CFLAGS@
 PAMI_CPPFLAGS = @PAMI_CPPFLAGS@
@@ -291,10 +389,13 @@ PORTALS_RT_HEADER = @PORTALS_RT_HEADER@
 PTHREAD_CC = @PTHREAD_CC@
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXECUTABLE = @PYTHON_EXECUTABLE@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
-RIDCOMPRESS_CPPFLAGS = @RIDCOMPRESS_CPPFLAGS@
-RIDCOMPRESS_LDFLAGS = @RIDCOMPRESS_LDFLAGS@
-RIDCOMPRESS_LIBS = @RIDCOMPRESS_LIBS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -303,9 +404,6 @@ STRIP = @STRIP@
 SZIP_CPPFLAGS = @SZIP_CPPFLAGS@
 SZIP_LDFLAGS = @SZIP_LDFLAGS@
 SZIP_LIBS = @SZIP_LIBS@
-TIMER_CPPFLAGS = @TIMER_CPPFLAGS@
-TIMER_LDFLAGS = @TIMER_LDFLAGS@
-TIMER_LIBS = @TIMER_LIBS@
 VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
@@ -317,6 +415,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
@@ -351,14 +450,17 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -413,14 +515,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -441,7 +548,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -454,9 +562,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-skeldump$(EXEEXT): $(skeldump_OBJECTS) $(skeldump_DEPENDENCIES) 
+
+skeldump$(EXEEXT): $(skeldump_OBJECTS) $(skeldump_DEPENDENCIES) $(EXTRA_skeldump_DEPENDENCIES) 
 	@rm -f skeldump$(EXEEXT)
-	$(skeldump_LINK) $(skeldump_OBJECTS) $(skeldump_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(skeldump_LINK) $(skeldump_OBJECTS) $(skeldump_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -465,19 +574,19 @@ distclean-compile:
 	-rm -f *.tab.c
 
 .c.o:
-	$(COMPILE) -c $<
+	$(AM_V_CC)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+	$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
-	$(LTCOMPILE) -c -o $@ $<
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
 skeldump-skeldump.o: skeldump.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(skeldump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o skeldump-skeldump.o `test -f 'skeldump.c' || echo '$(srcdir)/'`skeldump.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(skeldump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o skeldump-skeldump.o `test -f 'skeldump.c' || echo '$(srcdir)/'`skeldump.c
 
 skeldump-skeldump.obj: skeldump.c
-	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(skeldump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o skeldump-skeldump.obj `if test -f 'skeldump.c'; then $(CYGPATH_W) 'skeldump.c'; else $(CYGPATH_W) '$(srcdir)/skeldump.c'; fi`
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(skeldump_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o skeldump-skeldump.obj `if test -f 'skeldump.c'; then $(CYGPATH_W) 'skeldump.c'; else $(CYGPATH_W) '$(srcdir)/skeldump.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -485,26 +594,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -516,15 +614,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -533,6 +627,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -584,10 +693,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -669,19 +783,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am 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-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am 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-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 #CC=$(MPICC)
 #CXX=$(MPICXX)
diff --git a/utils/skeldump/skeldump.c b/utils/skeldump/skeldump.c
index a37edf6..97f6f9a 100644
--- a/utils/skeldump/skeldump.c
+++ b/utils/skeldump/skeldump.c
@@ -104,7 +104,7 @@ struct option options[] = {
 //    {"string",               no_argument,          NULL,    'S'},
 //    {"columns",              required_argument,    NULL,    'n'}, 
 //    {"format",               required_argument,    NULL,    'f'}, 
-    {"hidden_attrs",         no_argument,          &hidden_attrs,    true}, 
+    {"hidden_attrs",         no_argument,          (int*)&hidden_attrs,    true},
 //    {"decomp",               no_argument,          NULL,    'D'},
     //    {"time",                 required_argument,    NULL,    't'}, 
     {NULL,                   0,                    NULL,    0}
@@ -178,8 +178,7 @@ int main( int argc, char *argv[] ) {
     ////prgname = strdup(argv[0]);
 
     /* other variables */
-    int c, last_c='_';
-    int last_opt = -1;
+    int c;
     /* Process the arguments */
     while ((c = getopt_long(argc, argv, optstring, options, NULL)) != -1) {
         switch (c) {
@@ -292,7 +291,6 @@ int main( int argc, char *argv[] ) {
                 printf("Processing default: %c\n", c);
                 break;
         } /* end switch */
-        last_c = c;
     } /* end while */
 
     /* Check if we have a file defined */
@@ -383,7 +381,11 @@ void init_globals(void) {
 
 
 #define PRINT_DIMS(str, v, n, loopvar) printf("%s = { ", str); \
-    for (loopvar=0; loopvar<n;loopvar++) printf("%lld ", v[loopvar]);    \
+    for (loopvar=0; loopvar<n;loopvar++) printf("%d ", v[loopvar]);    \
+printf("}")
+
+#define PRINT_DIMS64(str, v64, n, loopvar) printf("%s = { ", str); \
+    for (loopvar=0; loopvar<n;loopvar++) printf("%" PRId64, v64[loopvar]);    \
 printf("}")
 
 void printSettings(void) {
@@ -439,14 +441,14 @@ void print_file_size(uint64_t size)
     static const char *sm[]={"bytes", "KB", "MB", "GB", "TB", "PB", "EB"};
     uint64_t s = size, r;
     int idx = 0;
-    while ( s/1024 > 0 ) {
+    while ( s/1024 > 0 && idx < sn) {
         r = s%1024; 
         s = s/1024;
         idx++;
     }
     if (r > 511)
         s++;
-    printf ("  file size:     %lld %s\n", s, sm[idx]); 
+    printf ("  file size:     %" PRId64 " %s\n", s, sm[idx]);
 
 }
 
@@ -466,9 +468,7 @@ int doList_group (ADIOS_FILE *fp)
     ADIOS_VARINFO **vis; 
     enum ADIOS_DATATYPES vartype;
     int     i, j, n;             // loop vars
-    int     status;
     int     attrsize;                       // info about one attribute
-    int     mpi_comm_dummy=0;
     bool    matches;
     int     len, maxlen, maxtypelen;
     int     retval;
@@ -540,7 +540,7 @@ int doList_group (ADIOS_FILE *fp)
              fh->pgs_root->adios_host_language_fortran==adios_flag_yes?"Fortran":"C");
 #endif
 
-    fprintf (outf, "procs: %i\n", fh->mfooter.pgs_count);
+    fprintf (outf, "procs: %" PRIu64 "\n", fh->mfooter.pgs_count);
     fprintf (outf, "group: group1\n");
 
 
@@ -601,14 +601,14 @@ int doList_group (ADIOS_FILE *fp)
                 fprintf(outf, "    dims: ");
                 if (vi->ndim > 0) {
                     if (vi->blockinfo)
-                        fprintf(outf,"[%lld", vi->blockinfo[0].count[0]);
+                        fprintf(outf,"[%" PRId64, vi->blockinfo[0].count[0]);
                     else
-                        fprintf(outf,"[%lld", vi->dims[0]);
+                        fprintf(outf,"[%" PRId64, vi->dims[0]);
                     for (j=1; j < vi->ndim; j++) {
                         if (vi->blockinfo)
-                            fprintf(outf,", %lld", vi->blockinfo[0].count[j]);
+                            fprintf(outf,", %" PRId64, vi->blockinfo[0].count[j]);
                         else
-                            fprintf(outf,", %lld", vi->dims[j]);
+                            fprintf(outf,", %" PRId64, vi->dims[j]);
                     }
                     fprintf(outf,"],");
                 } else {
@@ -616,7 +616,7 @@ int doList_group (ADIOS_FILE *fp)
                 }
 
                 if (longopt || plot) {
-                    status = adios_inq_var_stat (fp, vi, timestep && timed, 0);
+                    adios_inq_var_stat (fp, vi, timestep && timed, 0);
                 }
 
                 if (plot && vi->statistics && vi->statistics->histogram) {
@@ -916,9 +916,10 @@ int print_data_hist(ADIOS_VARINFO * vi, char * varname)
     strcat(xtics, ")\n");
 
     fprintf(out_plot, "start = -0.5\npos(x) = start + x * 1\nset boxwidth 1\nset style fill solid border 5#5lt6#6\n");
-    fprintf(out_plot, xtics);
+    fprintf(out_plot, "%s", xtics);
     fprintf(out_plot, "plot '%s' using 3 smooth frequency w boxes\n", hist_file);
     fprintf(out_plot, "pause -1 'Press Enter to quit'\n");
+    return 0;
 }
 
 int cmpstringp(const void *p1, const void *p2)
@@ -1075,13 +1076,13 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
             ct = icount[0];
 
         if (verbose>2) 
-            printf("    j=0, st=%llu ct=%llu\n", st, ct);
+            printf("    j=0, st=%" PRIu64 " ct=%" PRIu64 "\n", st, ct);
 
         start_t[0] = st;
         count_t[0] = ct;
         nelems *= ct;
         if (verbose>1) 
-            printf("    s[0]=%llu, c[0]=%llu, n=%llu\n", 
+            printf("    s[0]=%" PRIu64 ", c[0]=%" PRIu64 ", n=%" PRIu64 "\n",
                     start_t[0], count_t[0], nelems);
         
         tidx = 1;
@@ -1099,18 +1100,18 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
             ct = icount[j+tidx];
 
         if (verbose>2) 
-            printf("    j=%d, st=%llu ct=%llu\n", j+tidx, st, ct);
+            printf("    j=%d, st=%" PRIu64 " ct=%" PRIu64 "\n", j+tidx, st, ct);
 
         start_t[j+tidx] = st;
         count_t[j+tidx] = ct;
         nelems *= ct;
         if (verbose>1) 
-            printf("    s[%d]=%llu, c[%d]=%llu, n=%llu\n", 
+            printf("    s[%d]=%" PRIu64 ", c[%d]=%" PRIu64 ", n=%" PRIu64 "\n",
                     j+tidx, start_t[j+tidx], j+tidx, count_t[j+tidx], nelems);
     }
 
     if (verbose>1) {
-        printf(" total size of data to read = %llu\n", nelems*elemsize);
+        printf(" total size of data to read = %" PRIu64 "\n", nelems*elemsize);
     }
 
     print_slice_info(vi->ndim, vi->dims, timed, vi->nsteps, start_t, count_t);
@@ -1150,7 +1151,7 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
         sum = sum * (uint64_t) count_t[i];
         actualreadn = actualreadn * readn[i];
     }
-    if (verbose>1) printf("    read %d elements at once, %lld in total (nelems=%lld)\n", actualreadn, sum, nelems);
+    if (verbose>1) printf("    read %d elements at once, %" PRId64 " in total (nelems=%" PRId64 ")\n", actualreadn, sum, nelems);
 
 
     // init s and c
@@ -1173,8 +1174,8 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
 
         if (verbose>2) {
             printf("adios_read_var name=%s ", name);
-            PRINT_DIMS("  start", s, tdims, j); 
-            PRINT_DIMS("  count", c, tdims, j); 
+            PRINT_DIMS64("  start", s, tdims, j);
+            PRINT_DIMS64("  count", c, tdims, j);
             printf("  read %d elems\n", actualreadn);
         }
 
@@ -1199,7 +1200,7 @@ int readVar(ADIOS_FILE *fp, ADIOS_VARINFO *vi, const char * name, bool timed)
             return 11;
         }
 
-        //if (verbose>2) printf("  read %lld bytes\n", bytes_read);
+        //if (verbose>2) printf("  read %" PRId64 " bytes\n", bytes_read);
 
         // print slice
         print_dataset(data, vi->type, s, c, tdims, ndigits_dims); 
@@ -1343,9 +1344,9 @@ void print_slice_info(int ndim, uint64_t *dims, int timed, int nsteps, uint64_t
             isaslice = true;
     }
     if (isaslice) {
-        fprintf(outf,"%c   slice (%lld:%lld", commentchar, s[0], s[0]+c[0]-1);
+        fprintf(outf,"%c   slice (%" PRId64 ":%" PRId64, commentchar, s[0], s[0]+c[0]-1);
         for (i=1; i<tdim; i++) {
-            fprintf(outf,", %lld:%lld", s[i], s[i]+c[i]-1);
+            fprintf(outf,", %" PRId64 ":%" PRId64, s[i], s[i]+c[i]-1);
         }
         fprintf(outf,")\n");
     }
@@ -1355,7 +1356,6 @@ int print_data_as_string(void * data, int maxlen, enum ADIOS_DATATYPES adiosvart
 {
     char *str = (char *)data;
     int len = maxlen;
-    bool cstring = false;
     switch(adiosvartype) {
         case adios_unsigned_byte:
         case adios_byte:
@@ -1407,6 +1407,7 @@ int print_data_characteristics(void * min, void * max, double * avg, double * st
             else fprintf(outf, "      null  ");
             break;
         case adios_string:
+        case adios_string_array:
             break;
 
         case adios_unsigned_short:
@@ -1495,7 +1496,7 @@ int print_data_characteristics(void * min, void * max, double * avg, double * st
 
         case adios_long_double:
             //fprintf(outf,(f ? format : "%g "), ((double *) data)[item]);
-            fprintf(outf,(f ? format : "????????"));
+            fprintf(outf, "%s", (f ? format : "????????"));
             break;
 
             // TO DO
@@ -1508,6 +1509,8 @@ int print_data_characteristics(void * min, void * max, double * avg, double * st
                fprintf(outf,(f ? format : "(%g,i%g)" ), ((double *) data)[2*item], ((double *) data)[2*item+1]);
                break;
              */
+        default:
+            break;
     } // end switch
     return 0;
 }
@@ -1530,6 +1533,10 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype, bool all
         case adios_string:
             fprintf(outf,(f ? format : "%s"), ((char *) data)+item);
             break;
+        case adios_string_array:
+            // we expect one elemet of the array here
+            fprintf(outf,(f ? format : "\"%s\""), *((char **)data+item));
+            break;
 
         case adios_unsigned_short:  
             fprintf(outf,(f ? format : "%hu "), ((unsigned short *) data)[item]);
@@ -1563,7 +1570,7 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype, bool all
 
         case adios_long_double:
             //fprintf(outf,(f ? format : "%g "), ((double *) data)[item]);
-            fprintf(outf,(f ? format : "????????"));
+            fprintf(outf, "%s", (f ? format : "????????"));
             break;
 
 
@@ -1574,6 +1581,8 @@ int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype, bool all
         case adios_double_complex:
             fprintf(outf,(f ? format : "(%g,i%g)" ), ((double *) data)[2*item], ((double *) data)[2*item+1]);
             break;
+        default:
+            break;
     } // end switch
     return 0;
 }
@@ -1582,7 +1591,7 @@ int print_dataset(void *data, enum ADIOS_DATATYPES adiosvartype,
         uint64_t *s, uint64_t *c, int tdims, int *ndigits)
 {
     int i,item, steps;
-    char idxstr[128], vstr[128], buf[16];
+    char idxstr[128], buf[16];
     uint64_t ids[MAX_DIMS];  // current indices
     bool roll;
 
@@ -1601,9 +1610,9 @@ int print_dataset(void *data, enum ADIOS_DATATYPES adiosvartype,
         idxstr[0] = '\0'; // empty idx string
         if (nextcol == 0) {
             if (!noindex && tdims > 0) {
-                sprintf(idxstr,"    (%*lld",ndigits[0], ids[0]);
+                sprintf(idxstr,"    (%*" PRId64, ndigits[0], ids[0]);
                 for (i=1; i<tdims; i++) {
-                    sprintf(buf,",%*lld",ndigits[i],ids[i]);
+                    sprintf(buf,",%*" PRId64, ndigits[i], ids[i]);
                     strcat(idxstr, buf);
                 }
                 strcat(idxstr,")    ");
@@ -1671,27 +1680,17 @@ int print_decomp(ADIOS_VARINFO *vi)
             fprintf(outf, "        step %*d: ", ndigits_nsteps, i);
             fprintf(outf, "%d instances available\n", vi->nblocks[i]);
         }
-        return 0;
     } 
     else 
     {
         // arrays
-        int ndigits_nblocks;
-        int ndigits_dims[32];
-        for (k=0; k < vi->ndim; k++) {
-            // get digit lengths for each dimension
-            ndigits_dims[k] = ndigits (vi->dims[k]-1);
-        }
-
         for (i=0; i < /*vi->nsteps*/1; i++) { // For now, just look at the first step xx
-            fprintf(outf, "    decomposition: [", ndigits_nsteps, i);
+            fprintf(outf, "    decomposition: [");
             fprintf(outf,"\n");
-            ndigits_nblocks = ndigits (vi->nblocks[i]-1);
             for (j=0; j < vi->nblocks[i]; j++) {
                 fprintf(outf,"        [");
-                //fprintf(outf,"        block %*d: [", ndigits_nblocks, j);
                 for (k=0; k < vi->ndim; k++) {
-                    fprintf(outf, "[%lld,%lld]", 
+                    fprintf(outf, "[%" PRId64 ",%" PRId64 "]",
                             vi->blockinfo[j].start[k],
                             vi->blockinfo[j].start[k] + vi->blockinfo[j].count[k]-1);
                     if (k < vi->ndim-1)
@@ -1705,6 +1704,7 @@ int print_decomp(ADIOS_VARINFO *vi)
             fprintf(outf,"    ]\n");
         }
     }
+    return 0;
 }
 
 // parse a string "0, 3; 027" into an integer array
diff --git a/wrappers/java/test/test1.sh b/wrappers/java/test/test1.sh
index 056ce16..78838c3 100755
--- a/wrappers/java/test/test1.sh
+++ b/wrappers/java/test/test1.sh
@@ -29,7 +29,7 @@ cat << EOF > config.xml
 
 <method group="temperature" method="MPI">stripe_count=1;stripe_size=10485760;num_aggregators=2;merging_pgs=0</method>
 
-<buffer size-MB="2" allocate-time="now"/>
+<buffer max-size-MB="2"/>
 
 </adios-config>
 EOF
diff --git a/wrappers/matlab/posix_method.bp b/wrappers/matlab/posix_method.bp
deleted file mode 100644
index dc7b0cd..0000000
Binary files a/wrappers/matlab/posix_method.bp and /dev/null differ
diff --git a/wrappers/matlab/posix_method.bp.dir/posix_method.bp.0 b/wrappers/matlab/posix_method.bp.dir/posix_method.bp.0
deleted file mode 100644
index 13efbd1..0000000
Binary files a/wrappers/matlab/posix_method.bp.dir/posix_method.bp.0 and /dev/null differ
diff --git a/wrappers/matlab/two_groups19.bp b/wrappers/matlab/two_groups19.bp
deleted file mode 120000
index f798eed..0000000
--- a/wrappers/matlab/two_groups19.bp
+++ /dev/null
@@ -1 +0,0 @@
-/ccs/home/pnorbert/two_groups19.bp
\ No newline at end of file
diff --git a/wrappers/matlab/xgc.diagnosis.bp b/wrappers/matlab/xgc.diagnosis.bp
deleted file mode 120000
index 3a792f7..0000000
--- a/wrappers/matlab/xgc.diagnosis.bp
+++ /dev/null
@@ -1 +0,0 @@
-/lustre/atlas/proj-shared/env003/jyc/titan/test-adios/xgc.diagnosis.bp
\ No newline at end of file
diff --git a/wrappers/numpy/DEVELOPER b/wrappers/numpy/DEVELOPER
new file mode 100644
index 0000000..eeccd5a
--- /dev/null
+++ b/wrappers/numpy/DEVELOPER
@@ -0,0 +1,17 @@
+#!/bin/bash
+echo ">>> Working on adios ..."
+python setup.py register 
+python setup.py sdist upload
+echo ">>> Done."
+
+echo ">>> Working on adios_mpi ..."
+mv setup.py setup.py.nompi
+mv setup_mpi.py setup.py
+
+python setup.py register 
+python setup.py sdist upload
+echo ">>> Done."
+
+mv setup.py setup_mpi.py
+mv setup.py.nompi setup.py
+echo ">>> All done."
diff --git a/wrappers/numpy/MANIFEST.in b/wrappers/numpy/MANIFEST.in
index 0d9cf57..b94acee 100644
--- a/wrappers/numpy/MANIFEST.in
+++ b/wrappers/numpy/MANIFEST.in
@@ -1,2 +1,5 @@
 include mpi.cfg
+include mpi-compat.h 
 include conf/*.py
+include src/*.py
+include src_mpi/*.py
diff --git a/wrappers/numpy/_hl/__init__.py b/wrappers/numpy/_hl/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/wrappers/numpy/_hl/selections.py b/wrappers/numpy/_hl/selections.py
new file mode 100644
index 0000000..9ec0671
--- /dev/null
+++ b/wrappers/numpy/_hl/selections.py
@@ -0,0 +1,309 @@
+import numpy as np
+import itertools
+
+import sys
+if sys.version_info < (3,):
+    integer_types = (int, long,)
+else:
+    integer_types = (int,)
+
+def select(shape, args):
+    """
+    Return either SimpleSelection or FancySelection
+    """
+    if not isinstance(args, tuple):
+        args = (args,)
+
+    for a in args:
+        if isinstance(a, slice) and a.step is not None and a.step != 1:
+            sel = FancySelection(shape)
+            sel[args]
+            return sel
+        if not isinstance(a, slice) and a is not Ellipsis:
+            try:
+                int(a)
+            except Exception:
+                sel = FancySelection(shape)
+                sel[args]
+                return sel
+
+    sel = SimpleSelection(shape)
+    sel[args]
+    return sel
+
+class Selection(object):
+    """
+    Abstact selection
+    """
+
+    @property
+    def shape(self):
+        """ Shape of whole dataspace """
+        return self._shape
+
+    @property
+    def ndim(self):
+        """ Shape of whole dataspace """
+        return len(self._shape)
+
+    @property
+    def mshape(self):
+        """ Shape of current selection """
+        raise NotImplementedError()
+
+    def __init__(self, shape):
+        shape = tuple(shape)
+        self._shape = shape
+
+class SimpleSelection(Selection):
+    """
+    Simple boundingbox selection
+    """
+
+    @property
+    def mshape(self):
+        """ Shape of current selection """
+        return self._mshape
+
+    @property
+    def sel(self):
+        """ Shape of current selection """
+        return self._sel
+
+    def __init__(self, shape, *args, **kwds):
+        Selection.__init__(self, shape, *args, **kwds)
+        rank = len(self.shape)
+        self._sel = ((0,)*rank, self.shape, (1,)*rank, (False,)*rank)
+        self._mshape = self.shape
+
+    def __getitem__(self, args):
+
+        if not isinstance(args, tuple):
+            args = (args,)
+
+        if self.shape == ():
+            if len(args) > 0 and args[0] not in (Ellipsis, ()):
+                raise TypeError("Invalid index for scalar dataset (only ..., () allowed)")
+            return self
+
+        start, count, step, scalar = _handle_simple(self.shape, args)
+
+        self._sel = (start, count, step, scalar)
+
+        self._mshape = tuple(x for x, y in zip(count, scalar) if not y)
+
+        return self
+
+class FancySelection(Selection):
+
+    """
+        Implements advanced NumPy-style selection operations in addition to
+        the standard slice-and-int behavior.
+
+        Indexing arguments may be ints, slices, lists of indicies, or
+        per-axis (1D) boolean arrays.
+
+        Broadcasting is not supported for these selections.
+    """
+
+    @property
+    def mshape(self):
+        return self._mshape
+
+    @property
+    def sel(self):
+        """ Shape of current selection """
+        return self._sel
+
+    @property
+    def morder(self):
+        """ Shape of current selection """
+        return self._morder
+
+    def __init__(self, shape, *args, **kwds):
+        Selection.__init__(self, shape, *args, **kwds)
+        self._mshape = self.shape
+
+    def __getitem__(self, args):
+
+        if not isinstance(args, tuple):
+            args = (args,)
+
+        args = _expand_ellipsis(args, len(self.shape))
+
+        slicelist = []
+        scalarlist = []
+        for idx, arg in enumerate(args):
+            length = self.shape[idx]
+            s = False
+            if isinstance(arg, slice):
+                arg = (arg,)
+                pass
+            elif isinstance(arg, (integer_types, float)):
+                x,y,z = _translate_int(int(arg), length)
+                arg = (slice(x, x+y, z),)
+                s = True
+            elif isinstance(arg, (np.ndarray, list, tuple)):
+                if hasattr(arg, 'dtype') and arg.dtype == np.dtype('bool'):
+                    if len(arg.shape) != 1:
+                        raise TypeError("Boolean indexing arrays must be 1-D")
+                    arg = arg.nonzero()[0]
+                arg = _translate_indexlist(arg, length)
+
+            slicelist.append(arg)
+            scalarlist.append(s)
+        assert(len(slicelist) == self.ndim)
+        assert(len(scalarlist) == self.ndim)
+        if sum([len(x)>1 for x in slicelist]) > 1:
+            raise TypeError("Multi-block subselection more than 2 dimenions is not currently allowed for advanced selection")
+
+
+        sellist = []
+        for args in itertools.product(*slicelist):
+            start, count, step, scalar = _handle_simple(self.shape, args)
+            sellist.append((start, count, step, scalar))
+        self._sel = tuple(sellist)
+
+        ## Compute merge orders
+        dims = []
+        t0 = (0,) * self.ndim
+        for t1 in itertools.product(*[range(len(x)) for x in slicelist]):
+            diff = list(map(lambda a,b: a == b, t0, t1))
+            idx = 0
+            try:
+                idx = diff.index(False)
+            except:
+                pass
+            dims.append(idx)
+            t0 = t1
+        self._morder = tuple(dims)
+
+        ## Compute mshape
+        if len(sellist) > 0:
+            mshape = []
+            for idx, arg in enumerate(self.sel):
+                if idx == 0:
+                    mshape = list(arg[1])
+                else:
+                    d = self.morder[idx]
+                    mshape[d] = mshape[d] + arg[1][d]
+
+            mshape = [x for x, y in zip(mshape, scalarlist) if not y]
+            self._mshape = tuple(mshape)
+
+def _expand_ellipsis(args, rank):
+    """ Expand ellipsis objects and fill in missing axes.
+    """
+    n_el = sum(1 for arg in args if arg is Ellipsis)
+    if n_el > 1:
+        raise ValueError("Only one ellipsis may be used.")
+    elif n_el == 0 and len(args) != rank:
+        args = args + (Ellipsis,)
+
+    final_args = []
+    n_args = len(args)
+    for idx, arg in enumerate(args):
+
+        if arg is Ellipsis:
+            final_args.extend( (slice(None,None,None),)*(rank-n_args+1) )
+        else:
+            final_args.append(arg)
+
+    if len(final_args) > rank:
+        raise TypeError("Argument sequence too long")
+
+    return final_args
+
+def _handle_simple(shape, args):
+    """ Process a "simple" selection tuple, containing only slices and
+        integer objects.  Return is a 4-tuple with tuples for start,
+        count, step, and a flag which tells if the axis is a "scalar"
+        selection (indexed by an integer).
+
+        If "args" is shorter than "shape", the remaining axes are fully
+        selected.
+    """
+    args = _expand_ellipsis(args, len(shape))
+
+    start = []
+    count = []
+    step  = []
+    scalar = []
+
+    for arg, length in zip(args, shape):
+        if isinstance(arg, slice):
+            x,y,z = _translate_slice(arg, length)
+            s = False
+        else:
+            try:
+                x,y,z = _translate_int(int(arg), length)
+                s = True
+            except TypeError:
+                raise TypeError('Illegal index "%s" (must be a slice or number)' % (arg,))
+        start.append(x)
+        count.append(y)
+        step.append(z)
+        scalar.append(s)
+
+    return tuple(start), tuple(count), tuple(step), tuple(scalar)
+
+def _translate_int(exp, length):
+    """ Given an integer index, return a 3-tuple
+        (start, count, step)
+        for hyperslab selection
+    """
+    if exp < 0:
+        exp = length+exp
+
+    if not 0<=exp<length:
+        raise ValueError("Index (%s) out of range (0-%s)" % (exp, length-1))
+
+    return exp, 1, 1
+
+def _translate_slice(exp, length):
+    """ Given a slice object, return a 3-tuple
+        (start, count, step)
+        for use with the hyperslab selection routines
+    """
+    start, stop, step = exp.indices(length)
+        # Now if step > 0, then start and stop are in [0, length];
+        # if step < 0, they are in [-1, length - 1] (Python 2.6b2 and later;
+        # Python issue 3004).
+
+    if step < 1:
+        raise ValueError("Step must be >= 1 (got %d)" % step)
+    if stop < start:
+        raise ValueError("Reverse-order selections are not allowed")
+
+    count = 1 + (stop - start - 1) // step
+
+    return start, count, step
+
+def _translate_indexlist(exp, length):
+    """ Given a index list, return a list of slice objects
+        representing blocks
+    """
+    if not isinstance(exp, (tuple, list, np.ndarray)):
+        exp = (exp,)
+
+    if len(exp) == 0:
+        return (slice(0, length),)
+
+    for x in exp:
+        if x >= length:
+            raise ValueError("Index (%s) out of range (0-%s)" % (x, length-1))
+
+    slicelist = []
+    start = exp[0]
+    end = exp[0]
+    for idx in exp[1:]:
+        if idx - end == 1:
+            end = idx
+            continue
+        else:
+            slicelist.append(slice(start, end+1))
+            start = idx
+            end = idx
+    slicelist.append(slice(start, end+1))
+
+    return tuple(slicelist)
diff --git a/wrappers/numpy/adios.cpp b/wrappers/numpy/adios.cpp
index 47b2bb7..24a46d7 100644
--- a/wrappers/numpy/adios.cpp
+++ b/wrappers/numpy/adios.cpp
@@ -1,28 +1,16 @@
-/* Generated by Cython 0.22 */
+/* Generated by Cython 0.24 */
 
 #define PY_SSIZE_T_CLEAN
-#ifndef CYTHON_USE_PYLONG_INTERNALS
-#ifdef PYLONG_BITS_IN_DIGIT
-#define CYTHON_USE_PYLONG_INTERNALS 0
-#else
-#include "pyconfig.h"
-#ifdef PYLONG_BITS_IN_DIGIT
-#define CYTHON_USE_PYLONG_INTERNALS 1
-#else
-#define CYTHON_USE_PYLONG_INTERNALS 0
-#endif
-#endif
-#endif
 #include "Python.h"
 #ifndef Py_PYTHON_H
     #error Python headers needed to compile C extensions, please install development version of Python.
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
     #error Cython requires Python 2.6+ or Python 3.2+.
 #else
-#define CYTHON_ABI "0_22"
+#define CYTHON_ABI "0_24"
 #include <stddef.h>
 #ifndef offsetof
-#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
 #endif
 #if !defined(WIN32) && !defined(MS_WINDOWS)
   #ifndef __stdcall
@@ -48,45 +36,59 @@
   #define Py_HUGE_VAL HUGE_VAL
 #endif
 #ifdef PYPY_VERSION
-#define CYTHON_COMPILING_IN_PYPY 1
-#define CYTHON_COMPILING_IN_CPYTHON 0
+  #define CYTHON_COMPILING_IN_PYPY 1
+  #define CYTHON_COMPILING_IN_CPYTHON 0
 #else
-#define CYTHON_COMPILING_IN_PYPY 0
-#define CYTHON_COMPILING_IN_CPYTHON 1
+  #define CYTHON_COMPILING_IN_PYPY 0
+  #define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
+  #define CYTHON_USE_PYLONG_INTERNALS 1
+#endif
+#if CYTHON_USE_PYLONG_INTERNALS
+  #include "longintrepr.h"
+  #undef SHIFT
+  #undef BASE
+  #undef MASK
 #endif
 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
-#define Py_OptimizeFlag 0
+  #define Py_OptimizeFlag 0
 #endif
 #define __PYX_BUILD_PY_SSIZE_T "n"
 #define CYTHON_FORMAT_SSIZE_T "z"
 #if PY_MAJOR_VERSION < 3
   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
-  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
           PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
   #define __Pyx_DefaultClassType PyClass_Type
 #else
   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
-  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
   #define __Pyx_DefaultClassType PyType_Type
 #endif
-#if PY_MAJOR_VERSION >= 3
+#ifndef Py_TPFLAGS_CHECKTYPES
   #define Py_TPFLAGS_CHECKTYPES 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_INDEX
   #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
 #endif
-#if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE)
+#ifndef Py_TPFLAGS_HAVE_FINALIZE
   #define Py_TPFLAGS_HAVE_FINALIZE 0
 #endif
 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
   #define CYTHON_PEP393_ENABLED 1
-  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                               0 : _PyUnicode_Ready((PyObject *)(op)))
   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
 #else
   #define CYTHON_PEP393_ENABLED 0
   #define __Pyx_PyUnicode_READY(op)       (0)
@@ -95,16 +97,26 @@
   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
 #endif
 #if CYTHON_COMPILING_IN_PYPY
   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
   #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
-  #define __Pyx_PyFrozenSet_Size(s)         PyObject_Size(s)
 #else
   #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
-  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ? \
+  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
       PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
-  #define __Pyx_PyFrozenSet_Size(s)         PySet_Size(s)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
+  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
+  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
+  #define PyObject_Malloc(s)   PyMem_Malloc(s)
+  #define PyObject_Free(p)     PyMem_Free(p)
+  #define PyObject_Realloc(p)  PyMem_Realloc(p)
 #endif
 #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
@@ -113,6 +125,9 @@
 #else
   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
 #endif
+#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
+  #define PyObject_ASCII(o)            PyObject_Repr(o)
+#endif
 #if PY_MAJOR_VERSION >= 3
   #define PyBaseString_Type            PyUnicode_Type
   #define PyStringObject               PyUnicodeObject
@@ -169,16 +184,18 @@
 #else
   #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
 #endif
-#ifndef CYTHON_INLINE
-  #if defined(__GNUC__)
-    #define CYTHON_INLINE __inline__
-  #elif defined(_MSC_VER)
-    #define CYTHON_INLINE __inline
-  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-    #define CYTHON_INLINE inline
-  #else
-    #define CYTHON_INLINE
-  #endif
+#if PY_VERSION_HEX >= 0x030500B1
+#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
+#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
+#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
+typedef struct {
+    unaryfunc am_await;
+    unaryfunc am_aiter;
+    unaryfunc am_anext;
+} __Pyx_PyAsyncMethodsStruct;
+#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
+#else
+#define __Pyx_PyType_AsAsync(obj) NULL
 #endif
 #ifndef CYTHON_RESTRICT
   #if defined(__GNUC__)
@@ -191,37 +208,49 @@
     #define CYTHON_RESTRICT
   #endif
 #endif
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
-  /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and
-   a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is
-   a quiet NaN. */
-  float value;
-  memset(&value, 0xFF, sizeof(value));
-  return value;
-}
+#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
+
+#ifndef __cplusplus
+  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
+#endif
+#ifndef CYTHON_INLINE
+  #define CYTHON_INLINE inline
 #endif
-#define __Pyx_void_to_None(void_result) (void_result, Py_INCREF(Py_None), Py_None)
-#ifdef __cplusplus
 template<typename T>
-void __Pyx_call_destructor(T* x) {
-    x->~T();
+void __Pyx_call_destructor(T& x) {
+    x.~T();
 }
 template<typename T>
 class __Pyx_FakeReference {
   public:
     __Pyx_FakeReference() : ptr(NULL) { }
-    __Pyx_FakeReference(T& ref) : ptr(&ref) { }
+    __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
     T *operator->() { return ptr; }
     operator T&() { return *ptr; }
   private:
     T *ptr;
 };
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+  #define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#ifdef NAN
+#define __PYX_NAN() ((float) NAN)
+#else
+static CYTHON_INLINE float __PYX_NAN() {
+  float value;
+  memset(&value, 0xFF, sizeof(value));
+  return value;
+}
 #endif
 
 
+#define __PYX_ERR(f_index, lineno, Ln_error) \
+{ \
+  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
+}
+
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
@@ -238,10 +267,6 @@ class __Pyx_FakeReference {
   #endif
 #endif
 
-#if defined(WIN32) || defined(MS_WINDOWS)
-#define _USE_MATH_DEFINES
-#endif
-#include <math.h>
 #define __PYX_HAVE__adios
 #define __PYX_HAVE_API__adios
 #include "string.h"
@@ -275,7 +300,14 @@ class __Pyx_FakeReference {
 #   define CYTHON_UNUSED
 # endif
 #endif
-typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
+#ifndef CYTHON_NCP_UNUSED
+# if CYTHON_COMPILING_IN_CPYTHON
+#  define CYTHON_NCP_UNUSED
+# else
+#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
@@ -283,16 +315,34 @@ typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (    \
-    (sizeof(type) < sizeof(Py_ssize_t))  ||             \
-    (sizeof(type) > sizeof(Py_ssize_t) &&               \
-          likely(v < (type)PY_SSIZE_T_MAX ||            \
-                 v == (type)PY_SSIZE_T_MAX)  &&         \
-          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||       \
-                                v == (type)PY_SSIZE_T_MIN)))  ||  \
-    (sizeof(type) == sizeof(Py_ssize_t) &&              \
-          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||        \
+#define __Pyx_uchar_cast(c) ((unsigned char)c)
+#define __Pyx_long_cast(x) ((long)x)
+#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
+    (sizeof(type) < sizeof(Py_ssize_t))  ||\
+    (sizeof(type) > sizeof(Py_ssize_t) &&\
+          likely(v < (type)PY_SSIZE_T_MAX ||\
+                 v == (type)PY_SSIZE_T_MAX)  &&\
+          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
+                                v == (type)PY_SSIZE_T_MIN)))  ||\
+    (sizeof(type) == sizeof(Py_ssize_t) &&\
+          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                                v == (type)PY_SSIZE_T_MAX)))  )
+#if defined (__cplusplus) && __cplusplus >= 201103L
+    #include <cstdlib>
+    #define __Pyx_sst_abs(value) std::abs(value)
+#elif SIZEOF_INT >= SIZEOF_SIZE_T
+    #define __Pyx_sst_abs(value) abs(value)
+#elif SIZEOF_LONG >= SIZEOF_SIZE_T
+    #define __Pyx_sst_abs(value) labs(value)
+#elif defined (_MSC_VER) && defined (_M_X64)
+    #define __Pyx_sst_abs(value) _abs64(value)
+#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define __Pyx_sst_abs(value) llabs(value)
+#elif defined (__GNUC__)
+    #define __Pyx_sst_abs(value) __builtin_llabs(value)
+#else
+    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
+#endif
 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
@@ -327,10 +377,11 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
 #define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
-#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
+#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
 #if CYTHON_COMPILING_IN_CPYTHON
@@ -339,6 +390,12 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
 #endif
 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+#if PY_MAJOR_VERSION >= 3
+#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
+#else
+#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
+#endif
+#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
 static int __Pyx_sys_getdefaultencoding_not_ascii;
 static int __Pyx_init_sys_getdefaultencoding_params(void) {
@@ -429,11 +486,13 @@ static PyObject *__pyx_d;
 static PyObject *__pyx_b;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
+static PyObject *__pyx_empty_unicode;
 static int __pyx_lineno;
 static int __pyx_clineno = 0;
 static const char * __pyx_cfilenm= __FILE__;
 static const char *__pyx_filename;
 
+/* None.proto */
 #if !defined(CYTHON_CCOMPLEX)
   #if defined(__cplusplus)
     #define CYTHON_CCOMPLEX 1
@@ -462,7 +521,7 @@ static const char *__pyx_f[] = {
   "type.pxd",
 };
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":726
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":725
  * # in Cython to enable them only on the right systems.
  * 
  * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
@@ -471,7 +530,7 @@ static const char *__pyx_f[] = {
  */
 typedef npy_int8 __pyx_t_5numpy_int8_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":727
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":726
  * 
  * ctypedef npy_int8       int8_t
  * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
@@ -480,7 +539,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
  */
 typedef npy_int16 __pyx_t_5numpy_int16_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":728
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":727
  * ctypedef npy_int8       int8_t
  * ctypedef npy_int16      int16_t
  * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
@@ -489,7 +548,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
  */
 typedef npy_int32 __pyx_t_5numpy_int32_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":729
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":728
  * ctypedef npy_int16      int16_t
  * ctypedef npy_int32      int32_t
  * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
@@ -498,7 +557,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
  */
 typedef npy_int64 __pyx_t_5numpy_int64_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
  * #ctypedef npy_int128     int128_t
  * 
  * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
@@ -507,7 +566,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
  */
 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":734
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
  * 
  * ctypedef npy_uint8      uint8_t
  * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
@@ -516,7 +575,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
  */
 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":735
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":734
  * ctypedef npy_uint8      uint8_t
  * ctypedef npy_uint16     uint16_t
  * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
@@ -525,7 +584,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
  */
 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":736
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":735
  * ctypedef npy_uint16     uint16_t
  * ctypedef npy_uint32     uint32_t
  * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
@@ -534,7 +593,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
  */
 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
  * #ctypedef npy_uint128    uint128_t
  * 
  * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
@@ -543,7 +602,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
  */
 typedef npy_float32 __pyx_t_5numpy_float32_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":741
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
  * 
  * ctypedef npy_float32    float32_t
  * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
@@ -552,7 +611,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
  */
 typedef npy_float64 __pyx_t_5numpy_float64_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":749
  * # The int types are mapped a bit surprising --
  * # numpy.int corresponds to 'l' and numpy.long to 'q'
  * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
@@ -561,7 +620,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
  */
 typedef npy_long __pyx_t_5numpy_int_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750
  * # numpy.int corresponds to 'l' and numpy.long to 'q'
  * ctypedef npy_long       int_t
  * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
@@ -570,7 +629,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
  */
 typedef npy_longlong __pyx_t_5numpy_long_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":752
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751
  * ctypedef npy_long       int_t
  * ctypedef npy_longlong   long_t
  * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
@@ -579,7 +638,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
  */
 typedef npy_longlong __pyx_t_5numpy_longlong_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":753
  * ctypedef npy_longlong   longlong_t
  * 
  * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
@@ -588,7 +647,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
  */
 typedef npy_ulong __pyx_t_5numpy_uint_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
  * 
  * ctypedef npy_ulong      uint_t
  * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
@@ -597,7 +656,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
  */
 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
  * ctypedef npy_ulong      uint_t
  * ctypedef npy_ulonglong  ulong_t
  * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
@@ -606,7 +665,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
  */
 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":757
  * ctypedef npy_ulonglong  ulonglong_t
  * 
  * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
@@ -615,7 +674,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
  */
 typedef npy_intp __pyx_t_5numpy_intp_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
  * 
  * ctypedef npy_intp       intp_t
  * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
@@ -624,7 +683,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
  */
 typedef npy_uintp __pyx_t_5numpy_uintp_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":761
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
  * ctypedef npy_uintp      uintp_t
  * 
  * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
@@ -633,7 +692,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
  */
 typedef npy_double __pyx_t_5numpy_float_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":761
  * 
  * ctypedef npy_double     float_t
  * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
@@ -642,7 +701,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
  */
 typedef npy_double __pyx_t_5numpy_double_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
  * ctypedef npy_double     float_t
  * ctypedef npy_double     double_t
  * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
@@ -650,6 +709,7 @@ typedef npy_double __pyx_t_5numpy_double_t;
  * ctypedef npy_cfloat      cfloat_t
  */
 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     typedef ::std::complex< float > __pyx_t_float_complex;
@@ -660,6 +720,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
     typedef struct { float real, imag; } __pyx_t_float_complex;
 #endif
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     typedef ::std::complex< double > __pyx_t_double_complex;
@@ -672,18 +733,18 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
 
 
 /*--- Type declarations ---*/
+struct __pyx_obj_5adios_softdict;
 struct __pyx_obj_5adios_file;
+struct __pyx_obj_5adios_blockinfo;
 struct __pyx_obj_5adios_var;
 struct __pyx_obj_5adios_attr;
+struct __pyx_obj_5adios_group;
 struct __pyx_obj_5adios_smartdict;
 struct __pyx_obj_5adios_writer;
 struct __pyx_obj_5adios_attrinfo;
 struct __pyx_obj_5adios_varinfo;
-struct __pyx_obj_5adios___pyx_scope_struct____getitem__;
-struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr;
-struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":764
  * ctypedef npy_longdouble longdouble_t
  * 
  * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
@@ -692,7 +753,7 @@ struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr;
  */
 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
  * 
  * ctypedef npy_cfloat      cfloat_t
  * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
@@ -701,7 +762,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
  */
 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
  * ctypedef npy_cfloat      cfloat_t
  * ctypedef npy_cdouble     cdouble_t
  * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
@@ -710,7 +771,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
  */
 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":768
  * ctypedef npy_clongdouble clongdouble_t
  * 
  * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
@@ -730,36 +791,38 @@ struct __pyx_opt_args_5adios_adios2npdtype;
 struct __pyx_opt_args_5adios_read_init;
 struct __pyx_opt_args_5adios_read_finalize;
 struct __pyx_opt_args_5adios_4file_advance;
+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":305
- * ## ====================
- * 
- * cpdef init(char * config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm)
+/* "adios.pyx":381
+ * cdef MPI_Comm read_init_comm
  * 
+ * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
  */
 struct __pyx_opt_args_5adios_init {
   int __pyx_n;
   MPI_Comm comm;
 };
 
-/* "adios.pyx":308
- *     return adios_init(config, comm)
+/* "adios.pyx":386
+ *     return adios_init(s2b(config), init_comm)
  * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
  */
 struct __pyx_opt_args_5adios_open {
   int __pyx_n;
   MPI_Comm comm;
 };
 
-/* "adios.pyx":323
+/* "adios.pyx":401
  *     return total_size
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):             # <<<<<<<<<<<<<<
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):
  */
@@ -768,7 +831,7 @@ struct __pyx_opt_args_5adios_write {
   PyObject *dtype;
 };
 
-/* "adios.pyx":356
+/* "adios.pyx":441
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -780,59 +843,59 @@ struct __pyx_opt_args_5adios_finalize {
   int mype;
 };
 
-/* "adios.pyx":362
- * ## ADIOS No-XML API
+/* "adios.pyx":448
  * ## ====================
- * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm)
  * 
+ * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
  */
 struct __pyx_opt_args_5adios_init_noxml {
   int __pyx_n;
   MPI_Comm comm;
 };
 
-/* "adios.pyx":370
+/* "adios.pyx":458
  *                                  buffer_size)
  * 
- * cpdef int64_t declare_group(char * name,             # <<<<<<<<<<<<<<
- *                             char * time_index = "",
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
  *                             int stats = 1):
  */
 struct __pyx_opt_args_5adios_declare_group {
   int __pyx_n;
-  char *time_index;
+  PyObject *time_index;
   int stats;
 };
 
-/* "adios.pyx":380
+/* "adios.pyx":468
  *     return id
  * 
  * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
- *                      char * name,
- *                      char * path,
+ *                      str name,
+ *                      str path,
  */
 struct __pyx_opt_args_5adios_define_var {
   int __pyx_n;
-  char *dimensions;
-  char *global_dimensions;
-  char *local_offsets;
+  PyObject *dimensions;
+  PyObject *global_dimensions;
+  PyObject *local_offsets;
 };
 
-/* "adios.pyx":450
+/* "adios.pyx":540
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
- *                          char * method,
- *                          char * parameters = "",
+ *                          str method,
+ *                          str parameters = "",
  */
 struct __pyx_opt_args_5adios_select_method {
   int __pyx_n;
-  char *parameters;
-  char *base_path;
+  PyObject *parameters;
+  PyObject *base_path;
 };
 
-/* "adios.pyx":464
+/* "adios.pyx":554
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -844,34 +907,34 @@ struct __pyx_opt_args_5adios_adios2npdtype {
   int strlen;
 };
 
-/* "adios.pyx":592
+/* "adios.pyx":683
  * 
  * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
+ * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
  *                     MPI_Comm comm = MPI_COMM_WORLD,
- *                     char * parameters = ""):
+ *                     str parameters = ""):
  */
 struct __pyx_opt_args_5adios_read_init {
   int __pyx_n;
-  char *method_name;
+  PyObject *method_name;
   MPI_Comm comm;
-  char *parameters;
+  PyObject *parameters;
 };
 
-/* "adios.pyx":600
+/* "adios.pyx":693
  * 
  * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):             # <<<<<<<<<<<<<<
+ * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
  *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)
+ *     return adios_read_finalize_method (s2b(method))
  */
 struct __pyx_opt_args_5adios_read_finalize {
   int __pyx_n;
-  char *method_name;
+  PyObject *method_name;
 };
 
-/* "adios.pyx":736
- *         printfile(self.fp)
+/* "adios.pyx":870
+ *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
  *         """
@@ -883,31 +946,72 @@ struct __pyx_opt_args_5adios_4file_advance {
   float timeout_sec;
 };
 
-/* "adios.pyx":888
+/* "adios.pyx":1168
  *         self.nsteps = self.vp.nsteps
  * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):             # <<<<<<<<<<<<<<
- *         """ Perform read.
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform points read.
  * 
  */
+struct __pyx_opt_args_5adios_3var_read_points {
+  int __pyx_n;
+  PyObject *points;
+  PyObject *from_steps;
+  PyObject *nsteps;
+};
+
+/* "adios.pyx":1224
+ *         return var
+ * 
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform block read.
+ * 
+ */
+struct __pyx_opt_args_5adios_3var_read_writeblock {
+  int __pyx_n;
+  PyObject *from_steps;
+  PyObject *nsteps;
+};
+
+/* "adios.pyx":1265
+ *         return var
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
+ */
 struct __pyx_opt_args_5adios_3var_read {
   int __pyx_n;
   PyObject *offset;
   PyObject *count;
+  PyObject *scalar;
   PyObject *from_steps;
   PyObject *nsteps;
   PyObject *fill;
+  PyObject *step_scalar;
 };
 
-/* "adios.pyx":605
+/* "adios.pyx":698
+ * 
+ * ## dict for handling '/' prefix
+ * cdef class softdict(dict):             # <<<<<<<<<<<<<<
+ *     def __getitem__(self, varname):
+ *         if not isinstance(varname, tuple):
+ */
+struct __pyx_obj_5adios_softdict {
+  PyDictObject __pyx_base;
+};
+
+
+/* "adios.pyx":722
  * 
  * ## Python class for ADIOS_FILE structure
- * cdef class file:             # <<<<<<<<<<<<<<
+ * cdef class file(dict):             # <<<<<<<<<<<<<<
  *     """
  *     file class for Adios file read and write.
  */
 struct __pyx_obj_5adios_file {
-  PyObject_HEAD
+  PyDictObject __pyx_base;
   struct __pyx_vtabstruct_5adios_file *__pyx_vtab;
   ADIOS_FILE *fp;
   PyObject *name;
@@ -919,20 +1023,38 @@ struct __pyx_obj_5adios_file {
   int version;
   int file_size;
   int is_stream;
+  struct __pyx_obj_5adios_softdict *vars;
+  struct __pyx_obj_5adios_softdict *attrs;
   PyObject *var;
   PyObject *attr;
 };
 
 
-/* "adios.pyx":798
- *                  self.file_size)
+/* "adios.pyx":994
+ *         return list(s-set(['']))
+ * 
+ * cdef class blockinfo(object):             # <<<<<<<<<<<<<<
+ *     cpdef tuple start
+ *     cpdef tuple count
+ */
+struct __pyx_obj_5adios_blockinfo {
+  PyObject_HEAD
+  PyObject *start;
+  PyObject *count;
+  int process_id;
+  int time_index;
+};
+
+
+/* "adios.pyx":1029
+ *                 self.count)
  * 
- * cdef class var:             # <<<<<<<<<<<<<<
+ * cdef class var(dict):             # <<<<<<<<<<<<<<
  *     """
  *     Adios variable class.
  */
 struct __pyx_obj_5adios_var {
-  PyObject_HEAD
+  PyDictObject __pyx_base;
   struct __pyx_vtabstruct_5adios_var *__pyx_vtab;
   struct __pyx_obj_5adios_file *file;
   ADIOS_VARINFO *vp;
@@ -942,13 +1064,15 @@ struct __pyx_obj_5adios_var {
   int ndim;
   PyObject *dims;
   int nsteps;
+  struct __pyx_obj_5adios_softdict *attrs;
+  PyObject *blockinfo;
 };
 
 
-/* "adios.pyx":1063
- *                          nsteps=nsteps_)
+/* "adios.pyx":1494
+ *         return self.attrs.keys()
  * 
- * cdef class attr:             # <<<<<<<<<<<<<<
+ * cdef class attr(object):             # <<<<<<<<<<<<<<
  *     """
  *     Adios attribute class.
  */
@@ -961,7 +1085,23 @@ struct __pyx_obj_5adios_attr {
 };
 
 
-/* "adios.pyx":1141
+/* "adios.pyx":1580
+ *                (self.name, self.dtype, self.value)
+ * 
+ * cdef class group(dict):             # <<<<<<<<<<<<<<
+ *     """
+ *     Adios group class.
+ */
+struct __pyx_obj_5adios_group {
+  PyDictObject __pyx_base;
+  struct __pyx_obj_5adios_file *file;
+  PyObject *name;
+  struct __pyx_obj_5adios_softdict *vars;
+  struct __pyx_obj_5adios_softdict *attrs;
+};
+
+
+/* "adios.pyx":1692
  * 
  * ## Helper dict
  * cdef class smartdict(dict):             # <<<<<<<<<<<<<<
@@ -974,10 +1114,10 @@ struct __pyx_obj_5adios_smartdict {
 };
 
 
-/* "adios.pyx":1153
+/* "adios.pyx":1704
  *             self.factory(key, value)
  * 
- * cdef class writer:             # <<<<<<<<<<<<<<
+ * cdef class writer(object):             # <<<<<<<<<<<<<<
  *     """
  *     writer class for Adios write.
  */
@@ -989,17 +1129,18 @@ struct __pyx_obj_5adios_writer {
   PyObject *method;
   PyObject *method_params;
   int is_noxml;
+  PyObject *mode;
   MPI_Comm comm;
-  PyObject *var;
-  PyObject *attr;
+  PyObject *vars;
+  PyObject *attrs;
 };
 
 
-/* "adios.pyx":1347
- *                  self.attr.keys())
+/* "adios.pyx":1922
+ *         self.close()
  * 
- * cdef class attrinfo:             # <<<<<<<<<<<<<<
- *     cdef bytes name
+ * cdef class attrinfo(object):             # <<<<<<<<<<<<<<
+ *     cdef str name
  *     cdef bint is_static # Use define_byvalue, if True
  */
 struct __pyx_obj_5adios_attrinfo {
@@ -1011,11 +1152,11 @@ struct __pyx_obj_5adios_attrinfo {
 };
 
 
-/* "adios.pyx":1400
+/* "adios.pyx":1975
  *                  self.dtype)
  * 
- * cdef class varinfo:             # <<<<<<<<<<<<<<
- *     cdef bytes name
+ * cdef class varinfo(object):             # <<<<<<<<<<<<<<
+ *     cdef str name
  *     cdef public ldim
  */
 struct __pyx_obj_5adios_varinfo {
@@ -1028,60 +1169,11 @@ struct __pyx_obj_5adios_varinfo {
 };
 
 
-/* "adios.pyx":1010
- *                 self.nsteps)
- * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
- */
-struct __pyx_obj_5adios___pyx_scope_struct____getitem__ {
-  PyObject_HEAD
-  PyObject *__pyx_v_dims_;
-  PyObject *__pyx_v_index_;
-  struct __pyx_obj_5adios_var *__pyx_v_self;
-};
-
-
-/* "adios.pyx":1031
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
- * 
- */
-struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr {
-  PyObject_HEAD
-  struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *__pyx_outer_scope;
-  PyObject *__pyx_v_x;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-  PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "adios.pyx":1039
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
- * 
- */
-struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr {
-  PyObject_HEAD
-  struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *__pyx_outer_scope;
-  PyObject *__pyx_v_x;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-  PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
 
-/* "adios.pyx":605
+/* "adios.pyx":722
  * 
  * ## Python class for ADIOS_FILE structure
- * cdef class file:             # <<<<<<<<<<<<<<
+ * cdef class file(dict):             # <<<<<<<<<<<<<<
  *     """
  *     file class for Adios file read and write.
  */
@@ -1089,15 +1181,16 @@ struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr {
 struct __pyx_vtabstruct_5adios_file {
   PyObject *(*close)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch);
   PyObject *(*printself)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch);
+  PyObject *(*release_step)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch);
   PyObject *(*advance)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_4file_advance *__pyx_optional_args);
 };
 static struct __pyx_vtabstruct_5adios_file *__pyx_vtabptr_5adios_file;
 
 
-/* "adios.pyx":798
- *                  self.file_size)
+/* "adios.pyx":1029
+ *                 self.count)
  * 
- * cdef class var:             # <<<<<<<<<<<<<<
+ * cdef class var(dict):             # <<<<<<<<<<<<<<
  *     """
  *     Adios variable class.
  */
@@ -1105,12 +1198,15 @@ static struct __pyx_vtabstruct_5adios_file *__pyx_vtabptr_5adios_file;
 struct __pyx_vtabstruct_5adios_var {
   PyObject *(*close)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch);
   PyObject *(*advance)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch);
+  PyObject *(*read_points)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_points *__pyx_optional_args);
+  PyObject *(*read_writeblock)(struct __pyx_obj_5adios_var *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_writeblock *__pyx_optional_args);
   PyObject *(*read)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read *__pyx_optional_args);
   PyObject *(*printself)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch);
 };
 static struct __pyx_vtabstruct_5adios_var *__pyx_vtabptr_5adios_var;
 
 /* --- Runtime support code (head) --- */
+/* Refnanny.proto */
 #ifndef CYTHON_REFNANNY
   #define CYTHON_REFNANNY 0
 #endif
@@ -1127,19 +1223,19 @@ static struct __pyx_vtabstruct_5adios_var *__pyx_vtabptr_5adios_var;
   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
 #ifdef WITH_THREAD
-  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
-          if (acquire_gil) { \
-              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
-              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
-              PyGILState_Release(__pyx_gilstate_save); \
-          } else { \
-              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
+          if (acquire_gil) {\
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
+              PyGILState_Release(__pyx_gilstate_save);\
+          } else {\
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
           }
 #else
-  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
 #endif
-  #define __Pyx_RefNannyFinishContext() \
+  #define __Pyx_RefNannyFinishContext()\
           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
@@ -1162,17 +1258,18 @@ static struct __pyx_vtabstruct_5adios_var *__pyx_vtabptr_5adios_var;
   #define __Pyx_XGOTREF(r)
   #define __Pyx_XGIVEREF(r)
 #endif
-#define __Pyx_XDECREF_SET(r, v) do {                            \
-        PyObject *tmp = (PyObject *) r;                         \
-        r = v; __Pyx_XDECREF(tmp);                              \
+#define __Pyx_XDECREF_SET(r, v) do {\
+        PyObject *tmp = (PyObject *) r;\
+        r = v; __Pyx_XDECREF(tmp);\
     } while (0)
-#define __Pyx_DECREF_SET(r, v) do {                             \
-        PyObject *tmp = (PyObject *) r;                         \
-        r = v; __Pyx_DECREF(tmp);                               \
+#define __Pyx_DECREF_SET(r, v) do {\
+        PyObject *tmp = (PyObject *) r;\
+        r = v; __Pyx_DECREF(tmp);\
     } while (0)
 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
 
+/* PyObjectGetAttrStr.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
     PyTypeObject* tp = Py_TYPE(obj);
@@ -1188,22 +1285,124 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
 #endif
 
+/* GetBuiltinName.proto */
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
-#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
-    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
-    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) : \
-    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) : \
+/* PyObjectCall.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
+#else
+#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
+#endif
+
+/* PyObjectCallMethO.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
+#endif
+
+/* PyObjectCallOneArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+
+/* PyObjectCallNoArg.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+#else
+#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
+#endif
+
+/* PyThreadStateGet.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = PyThreadState_GET();
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* WriteUnraisableException.proto */
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename,
+                                  int full_traceback, int nogil);
+
+/* ArgTypeTest.proto */
+static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact);
+
+/* decode_c_bytes.proto */
+static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
+
+/* decode_bytes.proto */
+static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
+         PyObject* string, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
+    return __Pyx_decode_c_bytes(
+        PyBytes_AS_STRING(string), PyBytes_GET_SIZE(string),
+        start, stop, encoding, errors, decode_func);
+}
+
+/* SliceObject.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
+        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
+        int has_cstart, int has_cstop, int wraparound);
+
+/* PySequenceContains.proto */
+static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
+    int result = PySequence_Contains(seq, item);
+    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
+
+/* ListAppend.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
+    PyListObject* L = (PyListObject*) list;
+    Py_ssize_t len = Py_SIZE(list);
+    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
+        Py_INCREF(x);
+        PyList_SET_ITEM(list, len, x);
+        Py_SIZE(list) = len+1;
+        return 0;
+    }
+    return PyList_Append(list, x);
+}
+#else
+#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
+#endif
+
+/* GetItemInt.proto */
+#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
+    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
                __Pyx_GetItemInt_Generic(o, to_py_func(i))))
-#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
-    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
-    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \
+#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
     (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                               int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
-    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
-    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \
+#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
     (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                               int wraparound, int boundscheck);
@@ -1211,13 +1410,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                      int is_list, int wraparound, int boundscheck);
 
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb);
-
-static void __Pyx_WriteUnraisable(const char *name, int clineno,
-                                  int lineno, const char *filename,
-                                  int full_traceback);
-
+/* ListExtend.proto */
 static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject* none = _PyList_Extend((PyListObject*)L, v);
@@ -1230,62 +1423,65 @@ static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
 #endif
 }
 
+/* PyIntBinop.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
-    PyListObject* L = (PyListObject*) list;
-    Py_ssize_t len = Py_SIZE(list);
-    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
-        Py_INCREF(x);
-        PyList_SET_ITEM(list, len, x);
-        Py_SIZE(list) = len+1;
-        return 0;
-    }
-    return PyList_Append(list, x);
-}
+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
 #else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
+#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
+    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
+#endif
+
+/* PyIntBinop.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
+#else
+#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\
+    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
 #endif
 
+/* RaiseArgTupleInvalid.proto */
 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
 
+/* RaiseDoubleKeywords.proto */
 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
 
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
-    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+/* ParseKeywords.proto */
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
     const char* function_name);
 
+/* ExtTypeTest.proto */
 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
 
+/* GetModuleGlobalName.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
-#else
-#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
-#endif
-
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact);
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
+/* IncludeStringH.proto */
 #include <string.h>
 
+/* BytesEquals.proto */
 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
 
+/* UnicodeEquals.proto */
 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
 
+/* StrEquals.proto */
 #if PY_MAJOR_VERSION >= 3
 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
 #else
 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
 #endif
 
+/* PyIntBinop.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
+#else
+#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
+    PyObject_RichCompare(op1, op2, Py_EQ)
+    #endif
+
+/* ListCompAppend.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
     PyListObject* L = (PyListObject*) list;
@@ -1302,58 +1498,83 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
 #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
 #endif
 
+/* RaiseException.proto */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+
+/* py_dict_keys.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);
+
+/* UnpackUnboundCMethod.proto */
+typedef struct {
+    PyObject *type;
+    PyObject **method_name;
+    PyCFunction func;
+    PyObject *method;
+    int flag;
+} __Pyx_CachedCFunction;
+
+/* CallUnboundCMethod0.proto */
+static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
 #if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+#define __Pyx_CallUnboundCMethod0(cfunc, self)\
+    ((likely((cfunc)->func)) ?\
+        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
+         (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
+             ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) : __Pyx__CallUnboundCMethod0(cfunc, self)))) :\
+        __Pyx__CallUnboundCMethod0(cfunc, self))
 #else
-#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
+#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
 #endif
 
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
+/* dict_getitem_default.proto */
+static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
+/* None.proto */
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
 
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+/* bytes_tailmatch.proto */
+static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg,
+                                         Py_ssize_t start, Py_ssize_t end, int direction);
+static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr,
+                                   Py_ssize_t start, Py_ssize_t end, int direction);
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);
+/* unicode_tailmatch.proto */
+static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr,
+                                     Py_ssize_t start, Py_ssize_t end, int direction);
 
-static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) {
-    int result = PySequence_Contains(seq, item);
-    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
+/* str_tailmatch.proto */
+static CYTHON_INLINE int __Pyx_PyStr_Tailmatch(PyObject* self, PyObject* arg, Py_ssize_t start,
+                                               Py_ssize_t end, int direction);
 
-static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
+/* RaiseTooManyValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
 
-#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound) \
-    __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
-static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
-        PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
-        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
-        int has_cstart, int has_cstop, int wraparound);
+/* RaiseNeedMoreValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
 
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
+/* IterFinish.proto */
+static CYTHON_INLINE int __Pyx_IterFinish(void);
 
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
-        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+/* UnpackItemEndCheck.proto */
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
+
+/* SliceObject.proto */
+#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
+    __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
+static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
+        PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
         PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
         int has_cstart, int has_cstop, int wraparound);
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
-static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
-#else
-#define __Pyx_PyList_GetSlice(seq, start, stop)   PySequence_GetSlice(seq, start, stop)
-#define __Pyx_PyTuple_GetSlice(seq, start, stop)  PySequence_GetSlice(seq, start, stop)
-#endif
-
-#ifndef __PYX_FORCE_INIT_THREADS
-  #define __PYX_FORCE_INIT_THREADS 0
-#endif
-
-static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */
+/* None.proto */
+static CYTHON_INLINE int __Pyx_div_int(int, int);
 
-#define UNARY_NEG_WOULD_OVERFLOW(x)            (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
+/* UnaryNegOverflows.proto */
+#define UNARY_NEG_WOULD_OVERFLOW(x)\
+        (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
 
-#if PY_MAJOR_VERSION >= 3
+/* DictGetItem.proto */
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     PyObject *value;
     value = PyDict_GetItemWithError(d, key);
@@ -1373,6 +1594,26 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
 #endif
 
+/* PyObjectCallMethod0.proto */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
+
+/* RaiseNoneIterError.proto */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+/* UnpackTupleError.proto */
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
+
+/* UnpackTuple2.proto */
+static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
+                                             int is_tuple, int has_known_size, int decref_tuple);
+
+/* dict_iter.proto */
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_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) {
@@ -1390,40 +1631,31 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
 #endif
 
-static CYTHON_INLINE int __Pyx_IterFinish(void);
-
-static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
-
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
-
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
-
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
-
-static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
+/* py_dict_values.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
 
-static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
-                                             int is_tuple, int has_known_size, int decref_tuple);
+/* SetVTable.proto */
+static int __Pyx_SetVtable(PyObject *dict, void *vtable);
 
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
-                                                   Py_ssize_t* p_orig_length, int* p_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);
+/* Import.proto */
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
 
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
+/* ImportFrom.proto */
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
 
+/* CalculateMetaclass.proto */
 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
 
+/* Py3ClassCreate.proto */
 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                            PyObject *mkw, PyObject *modname, PyObject *doc);
 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                       PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
 
+/* CodeObjectCache.proto */
 typedef struct {
-    int code_line;
     PyCodeObject* code_object;
+    int code_line;
 } __Pyx_CodeObjectCacheEntry;
 struct __Pyx_CodeObjectCache {
     int count;
@@ -1435,39 +1667,35 @@ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int co
 static PyCodeObject *__pyx_find_code_object(int code_line);
 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
 
+/* AddTraceback.proto */
 static void __Pyx_AddTraceback(const char *funcname, int c_line,
                                int py_line, const char *filename);
 
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-static CYTHON_INLINE MPI_Comm __Pyx_PyInt_As_MPI_Comm(PyObject *);
-
-static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *);
-
-static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *);
-
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value);
 
-static int __Pyx_Print(PyObject*, PyObject *, int);
-#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3
-static PyObject* __pyx_print = 0;
-static PyObject* __pyx_print_kwargs = 0;
-#endif
-
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value);
 
-static int __Pyx_PrintOne(PyObject* stream, PyObject *o);
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_READ_METHOD(ADIOS_READ_METHOD value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value);
 
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_DATATYPES(ADIOS_DATATYPES value);
+
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     #define __Pyx_CREAL(z) ((z).real())
@@ -1480,7 +1708,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     #define __Pyx_CREAL(z) ((z).real)
     #define __Pyx_CIMAG(z) ((z).imag)
 #endif
-#if (defined(_WIN32) || defined(__clang__)) && defined(__cplusplus) && CYTHON_CCOMPLEX
+#if defined(__cplusplus) && CYTHON_CCOMPLEX         && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
     #define __Pyx_SET_CREAL(z,x) ((z).real(x))
     #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
 #else
@@ -1488,8 +1716,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
 #endif
 
+/* None.proto */
 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
     #define __Pyx_c_eqf(a, b)   ((a)==(b))
     #define __Pyx_c_sumf(a, b)  ((a)+(b))
@@ -1527,8 +1757,10 @@ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(floa
     #endif
 #endif
 
+/* None.proto */
 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
     #define __Pyx_c_eq(a, b)   ((a)==(b))
     #define __Pyx_c_sum(a, b)  ((a)+(b))
@@ -1566,41 +1798,37 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do
     #endif
 #endif
 
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);
 
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
+/* CIntFromPy.proto */
+static CYTHON_INLINE MPI_Comm __Pyx_PyInt_As_MPI_Comm(PyObject *);
 
-#define __Pyx_Generator_USED
-#include <structmember.h>
-#include <frameobject.h>
-typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *);
-typedef struct {
-    PyObject_HEAD
-    __pyx_generator_body_t body;
-    PyObject *closure;
-    PyObject *exc_type;
-    PyObject *exc_value;
-    PyObject *exc_traceback;
-    PyObject *gi_weakreflist;
-    PyObject *classobj;
-    PyObject *yieldfrom;
-    PyObject *gi_name;
-    PyObject *gi_qualname;
-    int resume_label;
-    char is_running;
-} __pyx_GeneratorObject;
-static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
-                                                  PyObject *closure, PyObject *name, PyObject *qualname);
-static int __pyx_Generator_init(void);
-static int __Pyx_Generator_clear(PyObject* self);
-#if 1 || PY_VERSION_HEX < 0x030300B0
-static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue);
-#else
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue)
-#endif
+/* CIntFromPy.proto */
+static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE ADIOS_DATATYPES __Pyx_PyInt_As_ADIOS_DATATYPES(PyObject *);
 
+/* CIntFromPy.proto */
+static CYTHON_INLINE ADIOS_LOCKMODE __Pyx_PyInt_As_ADIOS_LOCKMODE(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE ADIOS_READ_METHOD __Pyx_PyInt_As_ADIOS_READ_METHOD(PyObject *);
+
+/* CheckBinaryVersion.proto */
 static int __Pyx_check_binary_version(void);
 
+/* PyIdentifierFromString.proto */
 #if !defined(__Pyx_PyIdentifier_FromString)
 #if PY_MAJOR_VERSION < 3
   #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
@@ -1609,35 +1837,43 @@ static int __Pyx_check_binary_version(void);
 #endif
 #endif
 
+/* ModuleImport.proto */
 static PyObject *__Pyx_ImportModule(const char *name);
 
+/* TypeImport.proto */
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
 
+/* InitStrings.proto */
 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
 
 static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_5adios_4file_release_step(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_4file_advance *__pyx_optional_args); /* proto*/
 static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_points *__pyx_optional_args); /* proto*/
+static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_v_rank, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_writeblock *__pyx_optional_args); /* proto*/
 static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read *__pyx_optional_args); /* proto*/
 static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 
 /* Module declarations from 'cpython.buffer' */
 
-/* Module declarations from 'cpython.ref' */
-
 /* Module declarations from 'libc.string' */
 
 /* Module declarations from 'libc.stdio' */
 
-/* Module declarations from 'cpython.object' */
-
 /* Module declarations from '__builtin__' */
 
 /* Module declarations from 'cpython.type' */
 static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
 
+/* Module declarations from 'cpython' */
+
+/* Module declarations from 'cpython.object' */
+
+/* Module declarations from 'cpython.ref' */
+
 /* Module declarations from 'libc.stdlib' */
 
 /* Module declarations from 'numpy' */
@@ -1654,39 +1890,50 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, cha
 
 /* Module declarations from 'cpython.string' */
 
+/* Module declarations from 'cpython.bytes' */
+
+/* Module declarations from 'cpython.unicode' */
+
+/* Module declarations from 'cpython.version' */
+
 /* Module declarations from 'libc.stdint' */
 
 /* Module declarations from 'adios' */
+static PyTypeObject *__pyx_ptype_5adios_softdict = 0;
 static PyTypeObject *__pyx_ptype_5adios_file = 0;
+static PyTypeObject *__pyx_ptype_5adios_blockinfo = 0;
 static PyTypeObject *__pyx_ptype_5adios_var = 0;
 static PyTypeObject *__pyx_ptype_5adios_attr = 0;
+static PyTypeObject *__pyx_ptype_5adios_group = 0;
 static PyTypeObject *__pyx_ptype_5adios_smartdict = 0;
 static PyTypeObject *__pyx_ptype_5adios_writer = 0;
 static PyTypeObject *__pyx_ptype_5adios_attrinfo = 0;
 static PyTypeObject *__pyx_ptype_5adios_varinfo = 0;
-static PyTypeObject *__pyx_ptype_5adios___pyx_scope_struct____getitem__ = 0;
-static PyTypeObject *__pyx_ptype_5adios___pyx_scope_struct_1_genexpr = 0;
-static PyTypeObject *__pyx_ptype_5adios___pyx_scope_struct_2_genexpr = 0;
+static MPI_Comm __pyx_v_5adios_init_comm;
+static MPI_Comm __pyx_v_5adios_read_init_comm;
+static void __pyx_f_5adios_test_str(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_5adios_b2s(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_5adios_s2b(PyObject *, int __pyx_skip_dispatch); /*proto*/
 static char **__pyx_f_5adios_to_cstring_array(PyObject *); /*proto*/
 static PyObject *__pyx_f_5adios___parse_index(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
-static PyObject *__pyx_f_5adios_init(char *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init *__pyx_optional_args); /*proto*/
-static int64_t __pyx_f_5adios_open(char *, char *, char *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_open *__pyx_optional_args); /*proto*/
+static PyObject *__pyx_f_5adios_init(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init *__pyx_optional_args); /*proto*/
+static int64_t __pyx_f_5adios_open(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_open *__pyx_optional_args); /*proto*/
 static int64_t __pyx_f_5adios_set_group_size(int64_t, uint64_t, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_write(int64_t, char *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_write *__pyx_optional_args); /*proto*/
-static int __pyx_f_5adios_write_int(int64_t, char *, int, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_write_long(int64_t, char *, long, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_write_float(int64_t, char *, float, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_write_double(int64_t, char *, double, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_read(int64_t, char *, PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_write(int64_t, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_write *__pyx_optional_args); /*proto*/
+static int __pyx_f_5adios_write_int(int64_t, PyObject *, int, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_write_long(int64_t, PyObject *, long, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_write_float(int64_t, PyObject *, float, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_write_double(int64_t, PyObject *, double, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_read(int64_t, PyObject *, PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_5adios_close(int64_t, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_5adios_finalize(int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_finalize *__pyx_optional_args); /*proto*/
 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(char *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_declare_group *__pyx_optional_args); /*proto*/
-static int __pyx_f_5adios_define_var(int64_t, char *, char *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_define_var *__pyx_optional_args); /*proto*/
-static int __pyx_f_5adios_define_attribute(int64_t, char *, char *, int, char *, char *, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_define_attribute_byvalue(int64_t, char *, char *, PyObject *, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_5adios_select_method(int64_t, char *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_select_method *__pyx_optional_args); /*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 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 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*/
@@ -1699,433 +1946,323 @@ static int __pyx_f_5adios_read_finalize(int __pyx_skip_dispatch, struct __pyx_op
 int __pyx_module_is_main_adios = 0;
 
 /* Implementation of 'adios' */
+static PyObject *__pyx_builtin_print;
 static PyObject *__pyx_builtin_xrange;
 static PyObject *__pyx_builtin_Ellipsis;
 static PyObject *__pyx_builtin_range;
 static PyObject *__pyx_builtin_KeyError;
 static PyObject *__pyx_builtin_TypeError;
 static PyObject *__pyx_builtin_IndexError;
+static PyObject *__pyx_builtin_all;
 static PyObject *__pyx_builtin_zip;
+static PyObject *__pyx_builtin_enumerate;
 static PyObject *__pyx_builtin_NotImplementedError;
 static PyObject *__pyx_builtin_ValueError;
 static PyObject *__pyx_builtin_RuntimeError;
-static PyObject *__pyx_pf_5adios___parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim); /* proto */
-static PyObject *__pyx_pf_5adios_2init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_config, MPI_Comm __pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_5adios_4open(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_group_name, char *__pyx_v_name, char *__pyx_v_mode, MPI_Comm __pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_5adios_6set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size); /* proto */
-static PyObject *__pyx_pf_5adios_8write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype); /* proto */
-static PyObject *__pyx_pf_5adios_10write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, int __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_12write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, long __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_14write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, float __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_16write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, double __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_18read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArrayObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_20close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p); /* proto */
-static PyObject *__pyx_pf_5adios_22finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype); /* proto */
-static PyObject *__pyx_pf_5adios_24init_noxml(CYTHON_UNUSED PyObject *__pyx_self, MPI_Comm __pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_5adios_26allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size); /* proto */
-static PyObject *__pyx_pf_5adios_28declare_group(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, char *__pyx_v_time_index, int __pyx_v_stats); /* proto */
-static PyObject *__pyx_pf_5adios_30define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_dimensions, char *__pyx_v_global_dimensions, char *__pyx_v_local_offsets); /* proto */
-static PyObject *__pyx_pf_5adios_32define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_value, char *__pyx_v_var); /* proto */
-static PyObject *__pyx_pf_5adios_34define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_36select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_method, char *__pyx_v_parameters, char *__pyx_v_base_path); /* proto */
-static PyObject *__pyx_pf_5adios_38adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen); /* proto */
-static PyObject *__pyx_pf_5adios_40np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype); /* proto */
-static PyObject *__pyx_pf_5adios_42adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type); /* proto */
-static PyObject *__pyx_pf_5adios_44read_init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name, MPI_Comm __pyx_v_comm, char *__pyx_v_parameters); /* proto */
-static PyObject *__pyx_pf_5adios_46read_finalize(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name); /* 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 */
-static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_10file_sizec___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_self, char *__pyx_v_fname, char *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec); /* proto */
-static PyObject *__pyx_pf_5adios_4file_2__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_4close(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_6printself(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_8advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec); /* proto */
-static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
-static PyObject *__pyx_pf_5adios_4file_12__repr__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_3var___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_4file_3var_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_5adios_4file_3var_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4file_4attr___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_4file_4attr_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_5adios_4file_4attr_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_4name___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, char *__pyx_v_name); /* proto */
-static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_8read(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill); /* proto */
-static PyObject *__pyx_pf_5adios_3var_10printself(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_12__repr__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_11__getitem___genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_11__getitem___3genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_5adios_3var_14__getitem__(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
-static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, char *__pyx_v_name); /* proto */
-static PyObject *__pyx_pf_5adios_4attr_2__repr__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_factory); /* proto */
-static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_3var___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_4attr___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, char *__pyx_v_fname, int __pyx_v_is_noxml, MPI_Comm __pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_gname, char *__pyx_v_method, char *__pyx_v_method_params); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__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, char *__pyx_v_attrname); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_attrname, char *__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_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 */
-static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, char *__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, char *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset); /* 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 */
-static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_7varinfo_4ldim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_7varinfo_4ldim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_5adios_7varinfo_4ldim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_7varinfo_4gdim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_7varinfo_4gdim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_5adios_7varinfo_4gdim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_7varinfo_6offset___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_7varinfo_6offset_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_5adios_7varinfo_6offset_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-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_48readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname); /* proto */
-static PyObject *__pyx_pf_5adios_50bpls(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_file(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios_var(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios_attr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios_smartdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios_writer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios_attrinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios_varinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios___pyx_scope_struct____getitem__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_5adios___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static char __pyx_k_B[] = "B";
-static char __pyx_k_H[] = "H";
-static char __pyx_k_I[] = "I";
-static char __pyx_k_L[] = "L";
-static char __pyx_k_O[] = "O";
-static char __pyx_k_Q[] = "Q";
-static char __pyx_k_S[] = "S";
-static char __pyx_k_b[] = "b";
-static char __pyx_k_d[] = "d";
-static char __pyx_k_f[] = "f";
-static char __pyx_k_g[] = "g";
-static char __pyx_k_h[] = "h";
-static char __pyx_k_i[] = "i";
-static char __pyx_k_k[] = "k";
-static char __pyx_k_l[] = "l";
-static char __pyx_k_q[] = "q";
-static char __pyx_k_t[] = "t";
-static char __pyx_k_v[] = "v";
-static char __pyx_k_w[] = "w";
-static char __pyx_k_BP[] = "BP";
-static char __pyx_k_NO[] = "NO";
-static char __pyx_k_Zd[] = "Zd";
-static char __pyx_k_Zf[] = "Zf";
-static char __pyx_k_Zg[] = "Zg";
-static char __pyx_k__7[] = "";
-static char __pyx_k_fh[] = "fh";
-static char __pyx_k_fp[] = "fp";
-static char __pyx_k_np[] = "np";
-static char __pyx_k_vp[] = "vp";
-static char __pyx_k_NOW[] = "NOW";
-static char __pyx_k_YES[] = "YES";
-static char __pyx_k__11[] = "/";
-static char __pyx_k__31[] = " ";
-static char __pyx_k__33[] = "(,)";
-static char __pyx_k_any[] = "any";
-static char __pyx_k_doc[] = "__doc__";
-static char __pyx_k_end[] = "end";
-static char __pyx_k_get[] = "get";
-static char __pyx_k_str[] = "str_";
-static char __pyx_k_val[] = "val";
-static char __pyx_k_var[] = "var";
-static char __pyx_k_zip[] = "zip";
-static char __pyx_k_FLAG[] = "FLAG";
-static char __pyx_k_ICEE[] = "ICEE";
-static char __pyx_k_args[] = "args";
-static char __pyx_k_bool[] = "bool_";
-static char __pyx_k_bpls[] = "bpls";
-static char __pyx_k_byte[] = "byte";
-static char __pyx_k_char[] = "char";
-static char __pyx_k_comm[] = "comm";
-static char __pyx_k_copy[] = "copy";
-static char __pyx_k_dims[] = "dims";
-static char __pyx_k_fd_p[] = "fd_p";
-static char __pyx_k_file[] = "file";
-static char __pyx_k_fill[] = "fill";
-static char __pyx_k_gdim[] = "gdim";
-static char __pyx_k_init[] = "__init__";
-static char __pyx_k_int8[] = "int8";
-static char __pyx_k_keys[] = "keys";
-static char __pyx_k_last[] = "last";
-static char __pyx_k_ldim[] = "ldim";
-static char __pyx_k_long[] = "long";
-static char __pyx_k_main[] = "__main__";
-static char __pyx_k_mode[] = "mode";
-static char __pyx_k_mype[] = "mype";
-static char __pyx_k_name[] = "name";
-static char __pyx_k_ndim[] = "ndim";
-static char __pyx_k_path[] = "path";
-static char __pyx_k_read[] = "read";
-static char __pyx_k_real[] = "real";
-static char __pyx_k_send[] = "send";
-static char __pyx_k_size[] = "size";
-static char __pyx_k_step[] = "step";
-static char __pyx_k_test[] = "__test__";
-static char __pyx_k_type[] = "type";
-static char __pyx_k_vars[] = "vars";
-static char __pyx_k_when[] = "when";
-static char __pyx_k_15s_d[] = "%15s : %d";
-static char __pyx_k_15s_s[] = "%15s : %s";
-static char __pyx_k_DIMES[] = "DIMES";
-static char __pyx_k_LATER[] = "LATER";
-static char __pyx_k_adios[] = "adios";
-static char __pyx_k_array[] = "array";
-static char __pyx_k_attrs[] = "attrs";
-static char __pyx_k_atype[] = "atype";
-static char __pyx_k_bytes[] = "(bytes)";
-static char __pyx_k_close[] = "close";
-static char __pyx_k_count[] = "count";
-static char __pyx_k_dtype[] = "dtype";
-static char __pyx_k_flags[] = "flags";
-static char __pyx_k_float[] = "float_";
-static char __pyx_k_fname[] = "fname";
-static char __pyx_k_gname[] = "gname";
-static char __pyx_k_group[] = "group";
-static char __pyx_k_index[] = "index";
-static char __pyx_k_int16[] = "int16";
-static char __pyx_k_int32[] = "int32";
-static char __pyx_k_int64[] = "int64";
-static char __pyx_k_numpy[] = "numpy";
-static char __pyx_k_nvars[] = "nvars";
-static char __pyx_k_print[] = "print";
-static char __pyx_k_range[] = "range";
-static char __pyx_k_shape[] = "shape";
-static char __pyx_k_short[] = "short";
-static char __pyx_k_split[] = "split";
-static char __pyx_k_stats[] = "stats";
-static char __pyx_k_strip[] = "strip";
-static char __pyx_k_throw[] = "throw";
-static char __pyx_k_uint8[] = "uint8";
-static char __pyx_k_value[] = "value";
-static char __pyx_k_varid[] = "varid";
-static char __pyx_k_write[] = "write";
-static char __pyx_k_zeros[] = "zeros";
-static char __pyx_k_15s_lu[] = "%15s : %lu";
-static char __pyx_k_POSIX1[] = "POSIX1";
-static char __pyx_k_config[] = "config";
-static char __pyx_k_define[] = "define";
-static char __pyx_k_double[] = "double";
-static char __pyx_k_import[] = "__import__";
-static char __pyx_k_method[] = "method";
-static char __pyx_k_module[] = "__module__";
-static char __pyx_k_nattrs[] = "nattrs";
-static char __pyx_k_nsteps[] = "nsteps";
-static char __pyx_k_offset[] = "offset";
-static char __pyx_k_string[] = "string";
-static char __pyx_k_strlen[] = "strlen";
-static char __pyx_k_uint16[] = "uint16";
-static char __pyx_k_uint32[] = "uint32";
-static char __pyx_k_uint64[] = "uint64";
-static char __pyx_k_values[] = "values";
-static char __pyx_k_xrange[] = "xrange";
-static char __pyx_k_Reading[] = "Reading ... ";
-static char __pyx_k_UNKNOWN[] = "UNKNOWN";
-static char __pyx_k_advance[] = "advance";
-static char __pyx_k_bytes_2[] = "bytes";
-static char __pyx_k_complex[] = "complex_";
-static char __pyx_k_factory[] = "factory";
-static char __pyx_k_float16[] = "float16";
-static char __pyx_k_float32[] = "float32";
-static char __pyx_k_float64[] = "float64";
-static char __pyx_k_genexpr[] = "genexpr";
-static char __pyx_k_indices[] = "indices";
-static char __pyx_k_integer[] = "integer";
-static char __pyx_k_prepare[] = "__prepare__";
-static char __pyx_k_readvar[] = "readvar";
-static char __pyx_k_replace[] = "replace";
-static char __pyx_k_setitem[] = "__setitem__";
-static char __pyx_k_squeeze[] = "squeeze";
-static char __pyx_k_unknown[] = "unknown";
-static char __pyx_k_varname[] = "varname";
-static char __pyx_k_version[] = "version";
-static char __pyx_k_DATATYPE[] = "DATATYPE";
-static char __pyx_k_Ellipsis[] = "Ellipsis";
-static char __pyx_k_FLEXPATH[] = "FLEXPATH";
-static char __pyx_k_KeyError[] = "KeyError";
-static char __pyx_k_attrname[] = "attrname";
-static char __pyx_k_float128[] = "float128";
-static char __pyx_k_group_id[] = "group_id";
-static char __pyx_k_is_noxml[] = "is_noxml";
-static char __pyx_k_itemsize[] = "itemsize";
-static char __pyx_k_iterkeys[] = "iterkeys";
-static char __pyx_k_qualname[] = "__qualname__";
-static char __pyx_k_subtract[] = "subtract";
-static char __pyx_k_var_dict[] = "var: dict";
-static char __pyx_k_AdiosFile[] = "=== AdiosFile ===";
-static char __pyx_k_TypeError[] = "TypeError";
-static char __pyx_k_attr_dict[] = "attr: dict";
-static char __pyx_k_base_path[] = "base_path";
-static char __pyx_k_complex64[] = "complex64";
-static char __pyx_k_complex_2[] = "complex";
-static char __pyx_k_data_size[] = "data_size";
-static char __pyx_k_file_size[] = "file_size";
-static char __pyx_k_is_static[] = "is_static";
-static char __pyx_k_is_stream[] = "is_stream";
-static char __pyx_k_iteritems[] = "iteritems";
-static char __pyx_k_last_step[] = "last_step";
-static char __pyx_k_lock_mode[] = "lock_mode";
-static char __pyx_k_metaclass[] = "__metaclass__";
-static char __pyx_k_printself[] = "printself";
-static char __pyx_k_DATASPACES[] = "DATASPACES";
-static char __pyx_k_IndexError[] = "IndexError";
-static char __pyx_k_ValueError[] = "ValueError";
-static char __pyx_k_complex128[] = "complex128";
-static char __pyx_k_contiguous[] = "contiguous";
-static char __pyx_k_dimensions[] = "dimensions";
-static char __pyx_k_endianness[] = "endianness";
-static char __pyx_k_from_steps[] = "from_steps";
-static char __pyx_k_group_name[] = "group_name";
-static char __pyx_k_parameters[] = "parameters";
-static char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
-static char __pyx_k_time_index[] = "time_index";
-static char __pyx_k_time_steps[] = "time_steps";
-static char __pyx_k_READ_METHOD[] = "READ_METHOD";
-static char __pyx_k_buffer_size[] = "buffer_size";
-static char __pyx_k_gdim_object[] = "gdim: object";
-static char __pyx_k_ldim_object[] = "ldim: object";
-static char __pyx_k_long_double[] = "long_double";
-static char __pyx_k_method_name[] = "method_name";
-static char __pyx_k_timeout_sec[] = "timeout_sec";
-static char __pyx_k_BP_AGGREGATE[] = "BP_AGGREGATE";
-static char __pyx_k_RuntimeError[] = "RuntimeError";
-static char __pyx_k_current_step[] = "current_step";
-static char __pyx_k_string_array[] = "string_array";
-static char __pyx_k_value_object[] = "value: object";
-static char __pyx_k_var_namelist[] = "var_namelist";
-static char __pyx_k_AdiosVariable[] = "=== AdiosVariable ===";
-static char __pyx_k_Value_is_none[] = "Value is none";
-static char __pyx_k_attr_namelist[] = "attr_namelist";
-static char __pyx_k_local_offsets[] = "local_offsets";
-static char __pyx_k_method_params[] = "method_params";
-static char __pyx_k_offset_object[] = "offset: object";
-static char __pyx_k_unsigned_byte[] = "unsigned_byte";
-static char __pyx_k_unsigned_long[] = "unsigned_long";
-static char __pyx_k_double_complex[] = "double_complex";
-static char __pyx_k_unsigned_short[] = "unsigned_short";
-static char __pyx_k_Not_a_valid_var[] = "Not a valid var";
-static char __pyx_k_Not_an_open_var[] = "Not an open var";
-static char __pyx_k_Unhashable_type[] = "Unhashable type";
-static char __pyx_k_Not_an_open_file[] = "Not an open file";
-static char __pyx_k_unsigned_integer[] = "unsigned_integer";
-static char __pyx_k_BUFFER_ALLOC_WHEN[] = "BUFFER_ALLOC_WHEN";
-static char __pyx_k_No_valid_variable[] = "No valid variable";
-static char __pyx_k_The_variable_name[] = " The variable name. ";
-static char __pyx_k_global_dimensions[] = "global_dimensions";
-static char __pyx_k_var_read_line_888[] = "var.read (line 888)";
-static char __pyx_k_The_attribute_name[] = " The attribute name ";
-static char __pyx_k_NotImplementedError[] = "NotImplementedError";
-static char __pyx_k_Internal_variable_id[] = " Internal variable id. ";
-static char __pyx_k_Not_an_open_variable[] = "Not an open variable";
-static char __pyx_k_The_version_of_Adios[] = " The version of Adios. ";
-static char __pyx_k_The_attribute_s_value[] = " The attribute's value ";
-static char __pyx_k_The_filename_to_write[] = " The filename to write. ";
-static char __pyx_k_Use_default_BP_method[] = ". Use default BP method";
-static char __pyx_k_The_size_of_Adios_file[] = " The size of Adios file. ";
-static char __pyx_k_The_last_timestep_index[] = " The last timestep index. ";
-static char __pyx_k_The_number_of_variables[] = " The number of variables. ";
-static char __pyx_k_The_number_of_attributes[] = " The number of attributes. ";
-static char __pyx_k_getitem___locals_genexpr[] = "__getitem__.<locals>.genexpr";
-static char __pyx_k_The_shape_of_the_variable[] = " The shape of the variable. ";
-static char __pyx_k_Too_many_indices_for_data[] = "Too many indices for data";
-static char __pyx_k_The_current_timestep_index[] = " The current timestep index. ";
-static char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
-static char __pyx_k_writer_define_var_line_1244[] = "writer.define_var (line 1244)";
-static char __pyx_k_Step_size_d_is_not_supported[] = "Step size (%d) is not supported.";
-static char __pyx_k_Name_index_r_is_not_supported[] = "Name index (%r) is not supported.";
-static char __pyx_k_WARN_Invalid_read_method_name[] = "[WARN] Invalid read method name:";
-static char __pyx_k_Data_type_is_not_supported_yet[] = "Data type is not supported yet";
-static 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 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            from_steps (int, optional): starting step index (default: None)\n            nsteps (int, optional): number of tim [...]
-static char __pyx_k_The_attribute_type_as_in_numpy[] = " The attribute type as in numpy.dtype ";
-static char __pyx_k_writer_declare_group_line_1222[] = "writer.declare_group (line 1222)";
-static char __pyx_k_AdiosVar_varid_r_dtype_r_ndim_r[] = "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)";
-static char __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim[] = "AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)";
-static char __pyx_k_Boolean_to_indicate_using_No_XM[] = " Boolean to indicate using No-XML or not. ";
-static 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.define_var [...]
-static char __pyx_k_Dictionary_of_attributes_to_wri[] = " Dictionary of attributes to write. ";
-static char __pyx_k_Dictionary_of_variables_to_writ[] = " Dictionary of variables to write. ";
-static char __pyx_k_Indicating_reader_type_file_rea[] = " Indicating reader type; file reader or stream reader ";
-static char __pyx_k_Step_index_is_out_of_range_from[] = "Step index is out of range: from_steps=%r, nsteps=%r";
-static char __pyx_k_The_endianness_of_the_stored_da[] = " The endianness of the stored data. ";
-static char __pyx_k_The_filename_or_stream_name_ass[] = " The filename (or stream name) associated with. ";
-static char __pyx_k_The_groupname_associated_with_t[] = " The groupname associated with the file. ";
-static char __pyx_k_The_number_of_dimensions_of_the[] = " The number of dimensions of the variable. ";
-static char __pyx_k_The_number_of_time_steps_of_the[] = " The number of time steps of the variable. ";
-static char __pyx_k_Users_jyc_project_adios_devel_w[] = "/Users/jyc/project/adios-devel/wrappers/numpy/adios.pyx";
-static char __pyx_k_Variable_type_as_in_numpy_dtype[] = " Variable type as in numpy.dtype. ";
-static char __pyx_k_Warning_No_support_yet_s_type_d[] = "Warning: No support yet: %s (type=%d, bytes=%d)";
-static char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
-static char __pyx_k_ADIOS_ADIOS_python_module_module[] = "ADIOS: ADIOS python module\n\n.. moduleauthor:: Jong Choi <choij at ornl.gov>\n";
-static char __pyx_k_AdiosAttr_name_r_dtype_r_value_r[] = "AdiosAttr (name=%r, dtype=%r, value=%r)";
-static char __pyx_k_AdiosAttrinfo_name_r_is_static_r[] = "AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)";
-static char __pyx_k_AdiosFile_path_r_nvars_r_var_r_n[] = "AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, current_step=%r, last_step=%r, file_size=%r)";
-static char __pyx_k_AdiosWriter_fname_r_gname_r_meth[] = "AdiosWriter (fname=%r, gname=%r, method=%r, method_params=%r, var=%r, attr=%r)";
-static char __pyx_k_Count_dimension_mismatch_count_d[] = "Count dimension mismatch (count dim: %r)";
-static char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
-static char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
-static char __pyx_k_Offset_dimension_mismatch_offset[] = "Offset dimension mismatch (offset dim: %r)";
-static char __pyx_k_Only_contiguous_arrays_are_suppo[] = "Only contiguous arrays are supported.";
-static char __pyx_k_Requested_is_larger_than_the_sha[] = "Requested is larger than the shape.";
-static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
-static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
+static const char __pyx_k_[] = "/";
+static const char __pyx_k_C[] = "C";
+static const char __pyx_k_S[] = "S";
+static const char __pyx_k_U[] = "U";
+static const char __pyx_k_f[] = "f";
+static const char __pyx_k_k[] = "k";
+static const char __pyx_k_l[] = "l";
+static const char __pyx_k_t[] = "t";
+static const char __pyx_k_v[] = "v";
+static const char __pyx_k_w[] = "w";
+static const char __pyx_k_BP[] = "BP";
+static const char __pyx_k_NO[] = "NO";
+static const char __pyx_k_fh[] = "fh";
+static const char __pyx_k_fp[] = "fp";
+static const char __pyx_k_hl[] = "_hl";
+static const char __pyx_k_np[] = "np";
+static const char __pyx_k_os[] = "os";
+static const char __pyx_k_vp[] = "vp";
+static const char __pyx_k_ALL[] = "ALL";
+static const char __pyx_k_NOW[] = "NOW";
+static const char __pyx_k_Var[] = "Var";
+static const char __pyx_k_YES[] = "YES";
+static const char __pyx_k__10[] = "";
+static const char __pyx_k__63[] = " ";
+static const char __pyx_k__65[] = "(,)";
+static const char __pyx_k_all[] = "all";
+static const char __pyx_k_any[] = "any";
+static const char __pyx_k_doc[] = "__doc__";
+static const char __pyx_k_get[] = "get";
+static const char __pyx_k_key[] = "key";
+static const char __pyx_k_sel[] = "sel";
+static const char __pyx_k_val[] = "val";
+static const char __pyx_k_var[] = "var";
+static const char __pyx_k_zip[] = "zip";
+static const char __pyx_k_Attr[] = "Attr";
+static const char __pyx_k_FLAG[] = "FLAG";
+static const char __pyx_k_File[] = "File";
+static const char __pyx_k_ICEE[] = "ICEE";
+static const char __pyx_k_NONE[] = "NONE";
+static const char __pyx_k_axis[] = "axis";
+static const char __pyx_k_bool[] = "bool_";
+static const char __pyx_k_bpls[] = "bpls";
+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_dims[] = "dims";
+static const char __pyx_k_fd_p[] = "fd_p";
+static const char __pyx_k_file[] = "file";
+static const char __pyx_k_fill[] = "fill";
+static const char __pyx_k_gdim[] = "gdim";
+static const char __pyx_k_init[] = "__init__";
+static const char __pyx_k_int8[] = "int8";
+static const char __pyx_k_keys[] = "keys";
+static const char __pyx_k_last[] = "last";
+static const char __pyx_k_ldim[] = "ldim";
+static const char __pyx_k_long[] = "long";
+static const char __pyx_k_main[] = "__main__";
+static const char __pyx_k_mode[] = "mode";
+static const char __pyx_k_mype[] = "mype";
+static const char __pyx_k_name[] = "name";
+static const char __pyx_k_ndim[] = "ndim";
+static const char __pyx_k_path[] = "path";
+static const char __pyx_k_prod[] = "prod";
+static const char __pyx_k_rank[] = "rank";
+static const char __pyx_k_read[] = "read";
+static const char __pyx_k_real[] = "real";
+static const char __pyx_k_size[] = "size";
+static const char __pyx_k_test[] = "__test__";
+static const char __pyx_k_type[] = "type";
+static const char __pyx_k_vars[] = "vars";
+static const char __pyx_k_when[] = "when";
+static const char __pyx_k_15s_d[] = "%15s : %d";
+static const char __pyx_k_15s_s[] = "%15s : %s";
+static const char __pyx_k_DIMES[] = "DIMES";
+static const char __pyx_k_LATER[] = "LATER";
+static const char __pyx_k_adios[] = "adios";
+static const char __pyx_k_array[] = "array";
+static const char __pyx_k_attrs[] = "attrs";
+static const char __pyx_k_atype[] = "atype";
+static const char __pyx_k_bytes[] = "(bytes)";
+static const char __pyx_k_close[] = "close";
+static const char __pyx_k_count[] = "count";
+static const char __pyx_k_dtype[] = "dtype";
+static const char __pyx_k_flags[] = "flags";
+static const char __pyx_k_float[] = "float_";
+static const char __pyx_k_fname[] = "fname";
+static const char __pyx_k_gname[] = "gname";
+static const char __pyx_k_group[] = "group";
+static const char __pyx_k_index[] = "index";
+static const char __pyx_k_int16[] = "int16";
+static const char __pyx_k_int32[] = "int32";
+static const char __pyx_k_int64[] = "int64";
+static const char __pyx_k_numpy[] = "numpy";
+static const char __pyx_k_nvars[] = "nvars";
+static const char __pyx_k_order[] = "order";
+static const char __pyx_k_print[] = "print";
+static const char __pyx_k_range[] = "range";
+static const char __pyx_k_shape[] = "shape";
+static const char __pyx_k_short[] = "short";
+static const char __pyx_k_split[] = "split";
+static const char __pyx_k_start[] = "start";
+static const char __pyx_k_stats[] = "stats";
+static const char __pyx_k_strip[] = "strip";
+static const char __pyx_k_uint8[] = "uint8";
+static const char __pyx_k_value[] = "value";
+static const char __pyx_k_varid[] = "varid";
+static const char __pyx_k_write[] = "write";
+static const char __pyx_k_zeros[] = "zeros";
+static const char __pyx_k_15s_lu[] = "%15s : %lu";
+static const char __pyx_k_POSIX1[] = "POSIX1";
+static const char __pyx_k_Writer[] = "Writer";
+static const char __pyx_k_config[] = "config";
+static const char __pyx_k_define[] = "define";
+static const char __pyx_k_double[] = "double";
+static const char __pyx_k_encode[] = "encode";
+static const char __pyx_k_import[] = "__import__";
+static const char __pyx_k_method[] = "method";
+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_nsteps[] = "nsteps";
+static const char __pyx_k_offset[] = "offset";
+static const char __pyx_k_points[] = "points";
+static const char __pyx_k_rstrip[] = "rstrip";
+static const char __pyx_k_scalar[] = "scalar";
+static const char __pyx_k_select[] = "select";
+static const char __pyx_k_string[] = "string";
+static const char __pyx_k_strlen[] = "strlen";
+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_xrange[] = "xrange";
+static const char __pyx_k_CURRENT[] = "CURRENT";
+static const char __pyx_k_Reading[] = "Reading ... ";
+static const char __pyx_k_UNKNOWN[] = "UNKNOWN";
+static const char __pyx_k_Varinfo[] = "Varinfo";
+static const char __pyx_k_advance[] = "advance";
+static const char __pyx_k_complex[] = "complex_";
+static const char __pyx_k_dirname[] = "dirname";
+static const char __pyx_k_factory[] = "factory";
+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_integer[] = "integer";
+static const char __pyx_k_is_open[] = "is_open";
+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_unknown[] = "unknown";
+static const char __pyx_k_varname[] = "varname";
+static const char __pyx_k_version[] = "version";
+static const char __pyx_k_Attrinfo[] = "Attrinfo";
+static const char __pyx_k_DATATYPE[] = "DATATYPE";
+static const char __pyx_k_Ellipsis[] = "Ellipsis";
+static const char __pyx_k_FLEXPATH[] = "FLEXPATH";
+static const char __pyx_k_KeyError[] = "KeyError";
+static const char __pyx_k_LOCKMODE[] = "LOCKMODE";
+static const char __pyx_k_asscalar[] = "asscalar";
+static const char __pyx_k_attrname[] = "attrname";
+static const char __pyx_k_float128[] = "float128";
+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_qualname[] = "__qualname__";
+static const char __pyx_k_readattr[] = "_readattr";
+static const char __pyx_k_string_2[] = "string_";
+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_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_is_static[] = "is_static";
+static const char __pyx_k_is_stream[] = "is_stream";
+static const char __pyx_k_iteritems[] = "iteritems";
+static const char __pyx_k_last_step[] = "last_step";
+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_traceback[] = "traceback";
+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_complex128[] = "complex128";
+static const char __pyx_k_contiguous[] = "contiguous";
+static const char __pyx_k_dimensions[] = "dimensions";
+static const char __pyx_k_endianness[] = "endianness";
+static const char __pyx_k_from_steps[] = "from_steps";
+static const char __pyx_k_group_name[] = "group_name";
+static const char __pyx_k_parameters[] = "parameters";
+static const char __pyx_k_process_id[] = "process_id";
+static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
+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_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_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_timeout_sec[] = "timeout_sec";
+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";
+static const char __pyx_k_release_step[] = "release_step";
+static const char __pyx_k_string_array[] = "string_array";
+static const char __pyx_k_var_namelist[] = "var_namelist";
+static const char __pyx_k_AdiosVariable[] = "=== AdiosVariable ===";
+static const char __pyx_k_Value_is_none[] = "Value is none";
+static const char __pyx_k_attr_namelist[] = "attr_namelist";
+static const char __pyx_k_declare_group[] = "declare_group";
+static const char __pyx_k_local_offsets[] = "local_offsets";
+static const char __pyx_k_method_params[] = "method_params";
+static const char __pyx_k_normalize_key[] = "normalize_key";
+static const char __pyx_k_unsigned_byte[] = "unsigned_byte";
+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_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";
+static const char __pyx_k_SimpleSelection[] = "SimpleSelection";
+static const char __pyx_k_Unhashable_type[] = "Unhashable type";
+static const char __pyx_k_exception_value[] = "exception_value";
+static const char __pyx_k_read_writeblock[] = "read_writeblock";
+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_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_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_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_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_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)";
+static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
+static const char __pyx_k_ADIOS_ADIOS_python_module_module[] = "ADIOS: ADIOS python module\n\n.. moduleauthor:: Jong Choi <choij at ornl.gov>\n";
+static const char __pyx_k_AdiosAttr_name_r_dtype_r_value_r[] = "AdiosAttr (name=%r, dtype=%r, value=%r)";
+static const char __pyx_k_AdiosAttrinfo_name_r_is_static_r[] = "AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)";
+static const char __pyx_k_AdiosBlockinfo_process_id_r_time[] = "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)";
+static const char __pyx_k_AdiosWriter_fname_r_gname_r_meth[] = "AdiosWriter (fname=%r, gname=%r, method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)";
+static const char __pyx_k_All_points_must_have_the_same_le[] = "All points must have the same length %r";
+static const char __pyx_k_Count_dimension_mismatch_count_d[] = "Count dimension mismatch (count dim: %r)";
+static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
+static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
+static const char __pyx_k_Offset_dimension_mismatch_offset[] = "Offset dimension mismatch (offset dim: %r)";
+static const char __pyx_k_Only_contiguous_arrays_are_suppo[] = "Only contiguous arrays are supported.";
+static const char __pyx_k_Requested_is_larger_than_the_sha[] = "Requested is larger than the shape.";
+static const char __pyx_k_Scalar_dimension_mismatch_scalar[] = "Scalar dimension mismatch (scalar dim: %r)";
+static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
+static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
+static PyObject *__pyx_kp_s_;
 static PyObject *__pyx_kp_s_15s_d;
 static PyObject *__pyx_kp_s_15s_lu;
 static PyObject *__pyx_kp_s_15s_s;
+static PyObject *__pyx_n_s_ALL;
 static PyObject *__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r;
 static PyObject *__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r;
+static PyObject *__pyx_kp_s_AdiosBlockinfo_process_id_r_time;
 static PyObject *__pyx_kp_s_AdiosFile;
-static PyObject *__pyx_kp_s_AdiosFile_path_r_nvars_r_var_r_n;
-static PyObject *__pyx_kp_s_AdiosVar_varid_r_dtype_r_ndim_r;
+static PyObject *__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r;
+static PyObject *__pyx_kp_s_AdiosGroup_vars_r_attrs_r;
+static PyObject *__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r;
 static PyObject *__pyx_kp_s_AdiosVariable;
 static PyObject *__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim;
 static PyObject *__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth;
+static PyObject *__pyx_kp_s_All_points_must_have_the_same_le;
+static PyObject *__pyx_n_s_Attr;
+static PyObject *__pyx_n_s_Attrinfo;
 static PyObject *__pyx_n_s_BP;
 static PyObject *__pyx_n_s_BP_AGGREGATE;
 static PyObject *__pyx_n_s_BUFFER_ALLOC_WHEN;
+static PyObject *__pyx_n_s_C;
+static PyObject *__pyx_n_s_CURRENT;
 static PyObject *__pyx_kp_s_Count_dimension_mismatch_count_d;
 static PyObject *__pyx_n_s_DATASPACES;
 static PyObject *__pyx_n_s_DATATYPE;
@@ -2136,63 +2273,72 @@ static PyObject *__pyx_kp_u_Define_a_variable_associated_wi;
 static PyObject *__pyx_n_s_Ellipsis;
 static PyObject *__pyx_n_s_FLAG;
 static PyObject *__pyx_n_s_FLEXPATH;
+static PyObject *__pyx_n_s_FancySelection;
+static PyObject *__pyx_n_s_File;
 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor;
 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2;
 static PyObject *__pyx_n_s_ICEE;
 static PyObject *__pyx_n_s_IndexError;
 static PyObject *__pyx_n_s_KeyError;
 static PyObject *__pyx_n_s_LATER;
+static PyObject *__pyx_n_s_LOCKMODE;
 static PyObject *__pyx_n_s_NO;
+static PyObject *__pyx_n_s_NONE;
 static PyObject *__pyx_n_s_NOW;
-static PyObject *__pyx_kp_s_Name_index_r_is_not_supported;
-static PyObject *__pyx_kp_s_No_valid_variable;
 static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
 static PyObject *__pyx_n_s_NotImplementedError;
 static PyObject *__pyx_kp_s_Not_a_valid_var;
 static PyObject *__pyx_kp_s_Not_an_open_file;
 static PyObject *__pyx_kp_s_Not_an_open_var;
 static PyObject *__pyx_kp_s_Not_an_open_variable;
+static PyObject *__pyx_kp_s_Not_implemented_yet;
 static PyObject *__pyx_kp_s_Offset_dimension_mismatch_offset;
 static PyObject *__pyx_kp_s_Only_contiguous_arrays_are_suppo;
+static PyObject *__pyx_n_s_POSIX1;
 static PyObject *__pyx_kp_u_Perform_read_Read_data_from_an;
 static PyObject *__pyx_n_s_READ_METHOD;
+static PyObject *__pyx_kp_s_Rank_is_out_of_range_nblock_r;
 static PyObject *__pyx_kp_s_Reading;
 static PyObject *__pyx_kp_s_Requested_is_larger_than_the_sha;
 static PyObject *__pyx_n_s_RuntimeError;
 static PyObject *__pyx_n_s_S;
+static PyObject *__pyx_kp_s_Scalar_dimension_mismatch_scalar;
+static PyObject *__pyx_n_s_SimpleSelection;
 static PyObject *__pyx_kp_s_Step_index_is_out_of_range_from;
-static PyObject *__pyx_kp_s_Step_size_d_is_not_supported;
-static PyObject *__pyx_kp_s_Too_many_indices_for_data;
 static PyObject *__pyx_n_s_TypeError;
+static PyObject *__pyx_n_s_U;
 static PyObject *__pyx_n_s_UNKNOWN;
 static PyObject *__pyx_kp_s_Unhashable_type;
 static PyObject *__pyx_kp_s_Use_default_BP_method;
 static PyObject *__pyx_kp_s_Users_jyc_project_adios_devel_w;
 static PyObject *__pyx_n_s_ValueError;
 static PyObject *__pyx_kp_s_Value_is_none;
+static PyObject *__pyx_n_s_Var;
+static PyObject *__pyx_n_s_Varinfo;
 static PyObject *__pyx_kp_s_WARN_Invalid_read_method_name;
 static PyObject *__pyx_kp_s_Warning_No_support_yet_s_type_d;
+static PyObject *__pyx_n_s_Writer;
 static PyObject *__pyx_n_s_YES;
-static PyObject *__pyx_kp_s__11;
-static PyObject *__pyx_kp_s__31;
-static PyObject *__pyx_kp_s__33;
-static PyObject *__pyx_kp_s__7;
+static PyObject *__pyx_kp_s__10;
+static PyObject *__pyx_kp_s__63;
+static PyObject *__pyx_kp_s__65;
 static PyObject *__pyx_n_s_adios;
 static PyObject *__pyx_n_s_advance;
+static PyObject *__pyx_n_s_all;
 static PyObject *__pyx_n_s_any;
-static PyObject *__pyx_n_s_args;
 static PyObject *__pyx_n_s_array;
+static PyObject *__pyx_n_s_asscalar;
 static PyObject *__pyx_n_s_attr_namelist;
 static PyObject *__pyx_n_s_attrname;
 static PyObject *__pyx_n_s_attrs;
 static PyObject *__pyx_n_s_atype;
+static PyObject *__pyx_n_s_axis;
 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_byte;
 static PyObject *__pyx_kp_s_bytes;
-static PyObject *__pyx_n_s_bytes_2;
 static PyObject *__pyx_n_s_char;
 static PyObject *__pyx_n_s_close;
 static PyObject *__pyx_n_s_comm;
@@ -2200,21 +2346,27 @@ static PyObject *__pyx_n_s_complex;
 static PyObject *__pyx_n_s_complex128;
 static PyObject *__pyx_n_s_complex64;
 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_copy;
 static PyObject *__pyx_n_s_count;
 static PyObject *__pyx_n_s_current_step;
 static PyObject *__pyx_n_s_data_size;
+static PyObject *__pyx_n_s_declare_group;
 static PyObject *__pyx_n_s_define;
 static PyObject *__pyx_n_s_dimensions;
 static PyObject *__pyx_n_s_dims;
+static PyObject *__pyx_n_s_dirname;
 static PyObject *__pyx_n_s_doc;
 static PyObject *__pyx_n_s_double;
 static PyObject *__pyx_n_s_double_complex;
 static PyObject *__pyx_n_s_dtype;
-static PyObject *__pyx_n_s_end;
+static PyObject *__pyx_n_s_encode;
 static PyObject *__pyx_n_s_endianness;
+static PyObject *__pyx_n_s_enumerate;
+static PyObject *__pyx_n_s_exception_type;
+static PyObject *__pyx_n_s_exception_value;
 static PyObject *__pyx_n_s_f;
 static PyObject *__pyx_n_s_factory;
 static PyObject *__pyx_n_s_fd_p;
@@ -2232,17 +2384,16 @@ static PyObject *__pyx_n_s_fname;
 static PyObject *__pyx_n_s_fp;
 static PyObject *__pyx_n_s_from_steps;
 static PyObject *__pyx_n_s_gdim;
-static PyObject *__pyx_n_s_genexpr;
 static PyObject *__pyx_n_s_get;
-static PyObject *__pyx_n_s_getitem___locals_genexpr;
+static PyObject *__pyx_n_s_getitem;
 static PyObject *__pyx_n_s_global_dimensions;
 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_hl;
 static PyObject *__pyx_n_s_import;
 static PyObject *__pyx_n_s_index;
-static PyObject *__pyx_n_s_indices;
 static PyObject *__pyx_n_s_init;
 static PyObject *__pyx_n_s_int16;
 static PyObject *__pyx_n_s_int32;
@@ -2250,13 +2401,16 @@ static PyObject *__pyx_n_s_int64;
 static PyObject *__pyx_n_s_int8;
 static PyObject *__pyx_n_s_integer;
 static PyObject *__pyx_n_s_is_noxml;
+static PyObject *__pyx_n_s_is_open;
 static PyObject *__pyx_n_s_is_static;
 static PyObject *__pyx_n_s_is_stream;
 static PyObject *__pyx_n_s_itemsize;
 static PyObject *__pyx_n_s_iteritems;
 static PyObject *__pyx_n_s_iterkeys;
 static PyObject *__pyx_n_s_k;
+static PyObject *__pyx_n_s_key;
 static PyObject *__pyx_n_s_keys;
+static PyObject *__pyx_n_s_l;
 static PyObject *__pyx_n_s_last;
 static PyObject *__pyx_n_s_last_step;
 static PyObject *__pyx_n_s_ldim;
@@ -2271,50 +2425,70 @@ static PyObject *__pyx_n_s_method_name;
 static PyObject *__pyx_n_s_method_params;
 static PyObject *__pyx_n_s_mode;
 static PyObject *__pyx_n_s_module;
+static PyObject *__pyx_n_s_morder;
+static PyObject *__pyx_n_s_mshape;
 static PyObject *__pyx_n_s_mype;
 static PyObject *__pyx_n_s_name;
 static PyObject *__pyx_n_s_nattrs;
 static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous;
 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_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_os;
 static PyObject *__pyx_n_s_parameters;
 static PyObject *__pyx_n_s_path;
+static PyObject *__pyx_n_s_points;
 static PyObject *__pyx_n_s_prepare;
 static PyObject *__pyx_n_s_print;
 static PyObject *__pyx_n_s_printself;
+static PyObject *__pyx_n_s_process_id;
+static PyObject *__pyx_n_s_prod;
 static PyObject *__pyx_n_s_pyx_vtable;
 static PyObject *__pyx_n_s_qualname;
 static PyObject *__pyx_n_s_range;
+static PyObject *__pyx_n_s_rank;
 static PyObject *__pyx_n_s_read;
+static PyObject *__pyx_n_s_read_points;
+static PyObject *__pyx_n_s_read_writeblock;
+static PyObject *__pyx_n_s_readattr;
 static PyObject *__pyx_n_s_readvar;
+static PyObject *__pyx_n_s_readvar_2;
 static PyObject *__pyx_n_s_real;
+static PyObject *__pyx_n_s_release_step;
 static PyObject *__pyx_n_s_replace;
-static PyObject *__pyx_n_s_send;
+static PyObject *__pyx_n_s_reshape;
+static PyObject *__pyx_n_s_rstrip;
+static PyObject *__pyx_n_s_scalar;
+static PyObject *__pyx_n_s_sel;
+static PyObject *__pyx_n_s_select;
+static PyObject *__pyx_n_s_selections;
 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_split;
-static PyObject *__pyx_n_s_squeeze;
+static PyObject *__pyx_n_s_start;
+static PyObject *__pyx_n_s_startswith;
 static PyObject *__pyx_n_s_stats;
-static PyObject *__pyx_n_s_step;
-static PyObject *__pyx_n_s_str;
+static PyObject *__pyx_n_s_step_scalar;
 static PyObject *__pyx_n_s_string;
+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_subtract;
 static PyObject *__pyx_n_s_t;
 static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_throw;
 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_tostring;
+static PyObject *__pyx_n_s_traceback;
 static PyObject *__pyx_n_s_type;
 static PyObject *__pyx_n_s_uint16;
 static PyObject *__pyx_n_s_uint32;
@@ -2332,19 +2506,197 @@ static PyObject *__pyx_n_s_value;
 static PyObject *__pyx_n_s_values;
 static PyObject *__pyx_n_s_var;
 static PyObject *__pyx_n_s_var_namelist;
-static PyObject *__pyx_kp_u_var_read_line_888;
+static PyObject *__pyx_kp_u_var_read_line_1265;
 static PyObject *__pyx_n_s_varid;
 static PyObject *__pyx_n_s_varname;
 static PyObject *__pyx_n_s_vars;
 static PyObject *__pyx_n_s_version;
 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_1222;
-static PyObject *__pyx_kp_u_writer_define_var_line_1244;
+static PyObject *__pyx_kp_u_writer_declare_group_line_1782;
+static PyObject *__pyx_kp_u_writer_define_var_line_1804;
 static PyObject *__pyx_n_s_xrange;
 static PyObject *__pyx_n_s_zeros;
 static PyObject *__pyx_n_s_zip;
+static PyObject *__pyx_pf_5adios_test_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
+static PyObject *__pyx_pf_5adios_2b2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
+static PyObject *__pyx_pf_5adios_4s2b(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
+static PyObject *__pyx_pf_5adios_6normalize_key(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keys); /* proto */
+static PyObject *__pyx_pf_5adios_8__parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim); /* proto */
+static PyObject *__pyx_pf_5adios_10init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_config, MPI_Comm __pyx_v_comm); /* proto */
+static PyObject *__pyx_pf_5adios_12open(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_group_name, PyObject *__pyx_v_name, PyObject *__pyx_v_mode, MPI_Comm __pyx_v_comm); /* proto */
+static PyObject *__pyx_pf_5adios_14set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size); /* proto */
+static PyObject *__pyx_pf_5adios_16write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype); /* proto */
+static PyObject *__pyx_pf_5adios_18write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, int __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_20write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, long __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_22write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, float __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_24write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_26read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_28close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p); /* proto */
+static PyObject *__pyx_pf_5adios_30finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype); /* proto */
+static PyObject *__pyx_pf_5adios_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self, MPI_Comm __pyx_v_comm); /* proto */
+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_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 */
+static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_9file_size___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec); /* proto */
+static PyObject *__pyx_pf_5adios_4file_2__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_4__enter__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_6__exit__(struct __pyx_obj_5adios_file *__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_4file_8close(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_10printself(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_12release_step(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_14advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec); /* proto */
+static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_26is_open(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file_28__nonzero__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file_30__bool__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_4vars___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file_4vars_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_4file_4vars_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_5attrs___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file_5attrs_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_4file_5attrs_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_3var___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file_3var_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_4file_3var_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4file_4attr___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4file_4attr_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_4file_4attr_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_9blockinfo_5start___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_9blockinfo_5count___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_9blockinfo_10process_id___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_9blockinfo_10time_index___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, int __pyx_v_process_id, int __pyx_v_time_index); /* proto */
+static PyObject *__pyx_pf_5adios_9blockinfo_2__repr__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_4name___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_5shape___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_5attrs___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_8read_points(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps); /* proto */
+static PyObject *__pyx_pf_5adios_3var_10read_writeblock(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_v_rank, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps); /* proto */
+static PyObject *__pyx_pf_5adios_3var_12read(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_scalar, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill, PyObject *__pyx_v_step_scalar); /* proto */
+static PyObject *__pyx_pf_5adios_3var_14printself(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_5adios_4attr_4__repr__(struct __pyx_obj_5adios_attr *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_5group_4vars___get__(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_5group_4vars_2__set__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_5group_4vars_4__del__(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_5group_5attrs___get__(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_5group_5attrs_2__set__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_5group_5attrs_4__del__(struct __pyx_obj_5adios_group *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_factory); /* proto */
+static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+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 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_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 */
+static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+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_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 */
+static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_7varinfo_4ldim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_7varinfo_4ldim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_7varinfo_4ldim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_7varinfo_4gdim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_7varinfo_4gdim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_7varinfo_4gdim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_7varinfo_6offset___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_7varinfo_6offset_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_7varinfo_6offset_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+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 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*/
+static PyObject *__pyx_tp_new_5adios_file(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_blockinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_var(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_attr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_group(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_smartdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_writer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_attrinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_5adios_varinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys = {0, &__pyx_n_s_keys, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, &__pyx_n_s_values, 0, 0, 0};
 static PyObject *__pyx_int_0;
 static PyObject *__pyx_int_1;
 static PyObject *__pyx_int_2;
@@ -2362,550 +2714,496 @@ static PyObject *__pyx_int_51;
 static PyObject *__pyx_int_52;
 static PyObject *__pyx_int_54;
 static PyObject *__pyx_int_neg_1;
-static MPI_Comm __pyx_k__4;
-static MPI_Comm __pyx_k__5;
-static MPI_Comm __pyx_k__6;
+static MPI_Comm __pyx_k__7;
 static MPI_Comm __pyx_k__8;
 static MPI_Comm __pyx_k__9;
-static ADIOS_LOCKMODE __pyx_k__10;
-static MPI_Comm __pyx_k__22;
-static PyObject *__pyx_k__23;
-static PyObject *__pyx_k__24;
-static PyObject *__pyx_k__25;
-static PyObject *__pyx_k__27;
-static PyObject *__pyx_k__28;
-static PyObject *__pyx_k__29;
-static PyObject *__pyx_slice_;
-static PyObject *__pyx_slice__2;
-static PyObject *__pyx_tuple__3;
-static PyObject *__pyx_slice__16;
-static PyObject *__pyx_slice__19;
-static PyObject *__pyx_slice__20;
+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 PyObject *__pyx_k__55;
+static PyObject *__pyx_k__56;
+static PyObject *__pyx_k__59;
+static PyObject *__pyx_k__60;
+static PyObject *__pyx_k__61;
+static PyObject *__pyx_slice__3;
+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__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_tuple__13;
-static PyObject *__pyx_tuple__14;
-static PyObject *__pyx_tuple__15;
 static PyObject *__pyx_tuple__17;
 static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__26;
+static PyObject *__pyx_tuple__19;
+static PyObject *__pyx_tuple__20;
+static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__24;
+static PyObject *__pyx_tuple__25;
+static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__29;
 static PyObject *__pyx_tuple__30;
 static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__33;
 static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__40;
-static PyObject *__pyx_tuple__41;
 static PyObject *__pyx_tuple__42;
 static PyObject *__pyx_tuple__43;
 static PyObject *__pyx_tuple__44;
 static PyObject *__pyx_tuple__45;
 static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_codeobj__46;
-static PyObject *__pyx_codeobj__48;
-
-/* "adios.pyx":19
- * from cpython.string cimport PyString_AsString
- * 
- * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):
- */
-
-static char **__pyx_f_5adios_to_cstring_array(PyObject *__pyx_v_list_str) {
-  char **__pyx_v_ret;
-  Py_ssize_t __pyx_v_i;
-  char **__pyx_r;
+static PyObject *__pyx_tuple__49;
+static PyObject *__pyx_tuple__50;
+static PyObject *__pyx_tuple__52;
+static PyObject *__pyx_tuple__57;
+static PyObject *__pyx_tuple__58;
+static PyObject *__pyx_tuple__62;
+static PyObject *__pyx_tuple__64;
+static PyObject *__pyx_tuple__66;
+static PyObject *__pyx_tuple__67;
+static PyObject *__pyx_tuple__68;
+static PyObject *__pyx_tuple__69;
+static PyObject *__pyx_tuple__70;
+static PyObject *__pyx_tuple__71;
+static PyObject *__pyx_tuple__72;
+static PyObject *__pyx_tuple__73;
+static PyObject *__pyx_tuple__74;
+static PyObject *__pyx_tuple__75;
+static PyObject *__pyx_tuple__76;
+static PyObject *__pyx_tuple__77;
+static PyObject *__pyx_tuple__79;
+static PyObject *__pyx_tuple__81;
+static PyObject *__pyx_codeobj__78;
+static PyObject *__pyx_codeobj__80;
+static PyObject *__pyx_codeobj__82;
+
+/* "adios.pyx":33
+ * ## To convert a string to bytes: "str".encode()
+ * ## To convert bytes to a String: b"".decode() or str(b"")
+ * cpdef void test_str(str x):             # <<<<<<<<<<<<<<
+ *     cdef char * y = strdup(x.encode())
+ *     print(x, str(y))
+ */
+
+static PyObject *__pyx_pw_5adios_1test_str(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static void __pyx_f_5adios_test_str(PyObject *__pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  char *__pyx_v_y;
   __Pyx_RefNannyDeclarations
-  Py_ssize_t __pyx_t_1;
-  Py_ssize_t __pyx_t_2;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("to_cstring_array", 0);
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("test_str", 0);
 
-  /* "adios.pyx":20
+  /* "adios.pyx":34
+ * ## To convert bytes to a String: b"".decode() or str(b"")
+ * cpdef void test_str(str x):
+ *     cdef char * y = strdup(x.encode())             # <<<<<<<<<<<<<<
+ *     print(x, str(y))
  * 
- * cdef char ** to_cstring_array(list_str):
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))             # <<<<<<<<<<<<<<
- *     for i in xrange(len(list_str)):
- *         ret[i] = PyString_AsString(list_str[i])
  */
-  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_ret = ((char **)malloc((__pyx_t_1 * (sizeof(char *)))));
-
-  /* "adios.pyx":21
- * cdef char ** to_cstring_array(list_str):
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):             # <<<<<<<<<<<<<<
- *         ret[i] = PyString_AsString(list_str[i])
- *     return ret
- */
-  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
-    __pyx_v_i = __pyx_t_2;
-
-    /* "adios.pyx":22
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):
- *         ret[i] = PyString_AsString(list_str[i])             # <<<<<<<<<<<<<<
- *     return ret
- * 
- */
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_list_str, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyString_AsString(__pyx_t_3); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    (__pyx_v_ret[__pyx_v_i]) = __pyx_t_4;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (__pyx_t_3) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __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, 34, __pyx_L1_error)
   }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 34, __pyx_L1_error)
+  __pyx_v_y = strdup(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":23
- *     for i in xrange(len(list_str)):
- *         ret[i] = PyString_AsString(list_str[i])
- *     return ret             # <<<<<<<<<<<<<<
+  /* "adios.pyx":35
+ * cpdef void test_str(str x):
+ *     cdef char * y = strdup(x.encode())
+ *     print(x, str(y))             # <<<<<<<<<<<<<<
  * 
- * ## ====================
+ * from cpython.version cimport PY_MAJOR_VERSION
  */
-  __pyx_r = __pyx_v_ret;
-  goto __pyx_L0;
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __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, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_x);
+  __Pyx_GIVEREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __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, 35, __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":19
- * from cpython.string cimport PyString_AsString
- * 
- * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):
+  /* "adios.pyx":33
+ * ## To convert a string to bytes: "str".encode()
+ * ## To convert bytes to a String: b"".decode() or str(b"")
+ * cpdef void test_str(str x):             # <<<<<<<<<<<<<<
+ *     cdef char * y = strdup(x.encode())
+ *     print(x, str(y))
  */
 
   /* function exit code */
+  goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_WriteUnraisable("adios.to_cstring_array", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_r = 0;
+  __Pyx_WriteUnraisable("adios.test_str", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_1test_str(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_5adios_test_str[] = "test_str(str x) -> void";
+static PyObject *__pyx_pw_5adios_1test_str(PyObject *__pyx_self, PyObject *__pyx_v_x) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("test_str (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), (&PyString_Type), 1, "x", 1))) __PYX_ERR(0, 33, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_test_str(__pyx_self, ((PyObject*)__pyx_v_x));
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":278
- * 
- * 
- * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):
+static PyObject *__pyx_pf_5adios_test_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("test_str", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_void_to_None(__pyx_f_5adios_test_str(__pyx_v_x, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __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.test_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":46
+ * ## python2: str(b"") return str
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return str(x)
  */
 
-static PyObject *__pyx_pw_5adios_1__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject *__pyx_v_ndim, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_fixed = NULL;
-  PyObject *__pyx_v_length = NULL;
-  PyObject *__pyx_v_slice_ = NULL;
+static PyObject *__pyx_pw_5adios_3b2s(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static PyObject *__pyx_f_5adios_b2s(PyObject *__pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *(*__pyx_t_5)(PyObject *);
-  PyObject *__pyx_t_6 = NULL;
-  Py_ssize_t __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__parse_index", 0);
-  __Pyx_INCREF(__pyx_v_index);
+  __Pyx_RefNannySetupContext("b2s", 0);
 
-  /* "adios.pyx":280
- * cpdef __parse_index(index, ndim):
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
- *         index = (index,)
- * 
+  /* "adios.pyx":47
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return str(x)
+ *     else:
  */
-  __pyx_t_1 = PyTuple_Check(__pyx_v_index); 
-  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = ((PY_MAJOR_VERSION < 3) != 0);
+  if (__pyx_t_1) {
 
-    /* "adios.pyx":281
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):
- *         index = (index,)             # <<<<<<<<<<<<<<
- * 
- *     fixed = []
+    /* "adios.pyx":48
+ * cpdef str b2s(bytes x):
+ *     if PY_MAJOR_VERSION < 3:
+ *         return str(x)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return x.decode()
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_v_x);
+    __Pyx_GIVEREF(__pyx_v_x);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x);
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_index);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index);
-    __Pyx_GIVEREF(__pyx_v_index);
-    __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 48, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L3;
+    goto __pyx_L0;
+
+    /* "adios.pyx":47
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return str(x)
+ *     else:
+ */
   }
-  __pyx_L3:;
 
-  /* "adios.pyx":283
- *         index = (index,)
+  /* "adios.pyx":50
+ *         return str(x)
+ *     else:
+ *         return x.decode()             # <<<<<<<<<<<<<<
  * 
- *     fixed = []             # <<<<<<<<<<<<<<
- *     length = len(index)
+ * cpdef bytes s2b(str x):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    if (unlikely(__pyx_v_x == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
+      __PYX_ERR(0, 50, __pyx_L1_error)
+    }
+    __pyx_t_3 = __Pyx_decode_bytes(__pyx_v_x, 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 50, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "adios.pyx":46
+ * ## python2: str(b"") return str
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return str(x)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.b2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3b2s(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_5adios_2b2s[] = "b2s(bytes x) -> str";
+static PyObject *__pyx_pw_5adios_3b2s(PyObject *__pyx_self, PyObject *__pyx_v_x) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("b2s (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), (&PyBytes_Type), 1, "x", 1))) __PYX_ERR(0, 46, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_2b2s(__pyx_self, ((PyObject*)__pyx_v_x));
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_2b2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("b2s", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_5adios_b2s(__pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __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.b2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":52
+ *         return x.decode()
  * 
+ * cpdef bytes s2b(str x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return <bytes>x
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_fixed = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
 
-  /* "adios.pyx":284
+static PyObject *__pyx_pw_5adios_5s2b(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static PyObject *__pyx_f_5adios_s2b(PyObject *__pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("s2b", 0);
+
+  /* "adios.pyx":53
  * 
- *     fixed = []
- *     length = len(index)             # <<<<<<<<<<<<<<
+ * cpdef bytes s2b(str x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return <bytes>x
+ *     else:
+ */
+  __pyx_t_1 = ((PY_MAJOR_VERSION < 3) != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":54
+ * cpdef bytes s2b(str x):
+ *     if PY_MAJOR_VERSION < 3:
+ *         return <bytes>x             # <<<<<<<<<<<<<<
+ *     else:
+ *         return x.encode()
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject*)__pyx_v_x));
+    __pyx_r = ((PyObject*)__pyx_v_x);
+    goto __pyx_L0;
+
+    /* "adios.pyx":53
  * 
- *     for slice_ in index:
+ * cpdef bytes s2b(str x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return <bytes>x
+ *     else:
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_length = __pyx_t_3;
-  __pyx_t_3 = 0;
+  }
 
-  /* "adios.pyx":286
- *     length = len(index)
+  /* "adios.pyx":56
+ *         return <bytes>x
+ *     else:
+ *         return x.encode()             # <<<<<<<<<<<<<<
  * 
- *     for slice_ in index:             # <<<<<<<<<<<<<<
- *         if slice_ is Ellipsis:
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ * def normalize_key(keys):
  */
-  if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
-    __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_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #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_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
+    __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, 56, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_6 = __pyx_t_5(__pyx_t_3);
-      if (unlikely(!__pyx_t_6)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_6);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_6);
-    __pyx_t_6 = 0;
-
-    /* "adios.pyx":287
- * 
- *     for slice_ in index:
- *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- *         elif isinstance(slice_, (int, long)):
- */
-    __pyx_t_2 = (__pyx_v_slice_ == __pyx_builtin_Ellipsis);
-    __pyx_t_1 = (__pyx_t_2 != 0);
-    if (__pyx_t_1) {
-
-      /* "adios.pyx":288
- *     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_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PyList_GET_SIZE(__pyx_v_fixed); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __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 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_INCREF(__pyx_slice_);
-      PyList_SET_ITEM(__pyx_t_9, 0, __pyx_slice_);
-      __Pyx_GIVEREF(__pyx_slice_);
-      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      goto __pyx_L6;
-    }
-
-    /* "adios.pyx":289
- *         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))
- *         else:
- */
-    __pyx_t_2 = PyInt_Check(__pyx_v_slice_); 
-    __pyx_t_11 = (__pyx_t_2 != 0);
-    if (!__pyx_t_11) {
-    } else {
-      __pyx_t_1 = __pyx_t_11;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_t_11 = PyLong_Check(__pyx_v_slice_); 
-    __pyx_t_2 = (__pyx_t_11 != 0);
-    __pyx_t_1 = __pyx_t_2;
-    __pyx_L7_bool_binop_done:;
-    __pyx_t_2 = (__pyx_t_1 != 0);
-    if (__pyx_t_2) {
-
-      /* "adios.pyx":290
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- *         elif isinstance(slice_, (int, long)):
- *             fixed.append(slice(slice_, slice_+1, None))             # <<<<<<<<<<<<<<
- *         else:
- *             fixed.append(slice_)
- */
-      __pyx_t_9 = PyNumber_Add(__pyx_v_slice_, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L6;
-    }
-    /*else*/ {
-
-      /* "adios.pyx":292
- *             fixed.append(slice(slice_, slice_+1, None))
- *         else:
- *             fixed.append(slice_)             # <<<<<<<<<<<<<<
- *         length -= 1
- * 
- */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_v_slice_); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
     }
-    __pyx_L6:;
-
-    /* "adios.pyx":293
- *         else:
- *             fixed.append(slice_)
- *         length -= 1             # <<<<<<<<<<<<<<
- * 
- *     index = tuple(fixed)
- */
-    __pyx_t_8 = PyNumber_InPlaceSubtract(__pyx_v_length, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF_SET(__pyx_v_length, __pyx_t_8);
-    __pyx_t_8 = 0;
-
-    /* "adios.pyx":286
- *     length = len(index)
- * 
- *     for slice_ in index:             # <<<<<<<<<<<<<<
- *         if slice_ is Ellipsis:
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- */
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "adios.pyx":295
- *         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_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
-  __pyx_t_3 = 0;
-
-  /* "adios.pyx":296
- * 
- *     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_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_v_ndim, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  if (__pyx_t_2) {
-
-    /* "adios.pyx":297
- *     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_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_3 = PyNumber_Subtract(__pyx_v_ndim, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_8 = PyNumber_Multiply(__pyx_tuple__3, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L9;
+    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 56, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
   }
-  __pyx_L9:;
-
-  /* "adios.pyx":299
- *         index += (slice(None),) * (ndim-len(index))
- * 
- *     return index             # <<<<<<<<<<<<<<
- * 
- * ## ====================
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_index);
-  __pyx_r = __pyx_v_index;
-  goto __pyx_L0;
 
-  /* "adios.pyx":278
+  /* "adios.pyx":52
+ *         return x.decode()
  * 
- * 
- * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):
+ * cpdef bytes s2b(str x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return <bytes>x
  */
 
   /* function exit code */
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.s2b", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_fixed);
-  __Pyx_XDECREF(__pyx_v_length);
-  __Pyx_XDECREF(__pyx_v_slice_);
-  __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_1__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios___parse_index[] = "__parse_index(index, ndim)";
-static PyObject *__pyx_pw_5adios_1__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_index = 0;
-  PyObject *__pyx_v_ndim = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_5s2b(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_5adios_4s2b[] = "s2b(str x) -> bytes";
+static PyObject *__pyx_pw_5adios_5s2b(PyObject *__pyx_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__parse_index (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_ndim,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_index)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        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_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __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_index = values[0];
-    __pyx_v_ndim = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios___parse_index(__pyx_self, __pyx_v_index, __pyx_v_ndim);
+  __Pyx_RefNannySetupContext("s2b (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), (&PyString_Type), 1, "x", 1))) __PYX_ERR(0, 52, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_4s2b(__pyx_self, ((PyObject*)__pyx_v_x));
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios___parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim) {
+static PyObject *__pyx_pf_5adios_4s2b(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__parse_index", 0);
+  __Pyx_RefNannySetupContext("s2b", 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_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -2914,7 +3212,7 @@ static PyObject *__pyx_pf_5adios___parse_index(CYTHON_UNUSED PyObject *__pyx_sel
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.s2b", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -2922,663 +3220,779 @@ static PyObject *__pyx_pf_5adios___parse_index(CYTHON_UNUSED PyObject *__pyx_sel
   return __pyx_r;
 }
 
-/* "adios.pyx":305
- * ## ====================
- * 
- * cpdef init(char * config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm)
+/* "adios.pyx":58
+ *         return x.encode()
  * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
  */
 
-static PyObject *__pyx_pw_5adios_3init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_5adios_init(char *__pyx_v_config, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init *__pyx_optional_args) {
-  MPI_Comm __pyx_v_comm = __pyx_k__4;
-  PyObject *__pyx_r = NULL;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7normalize_key(PyObject *__pyx_self, PyObject *__pyx_v_keys); /*proto*/
+static char __pyx_doc_5adios_6normalize_key[] = "normalize_key(keys)";
+static PyMethodDef __pyx_mdef_5adios_7normalize_key = {"normalize_key", (PyCFunction)__pyx_pw_5adios_7normalize_key, METH_O, __pyx_doc_5adios_6normalize_key};
+static PyObject *__pyx_pw_5adios_7normalize_key(PyObject *__pyx_self, PyObject *__pyx_v_keys) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("init", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_comm = __pyx_optional_args->comm;
-    }
-  }
-
-  /* "adios.pyx":306
- * 
- * cpdef init(char * config, MPI_Comm comm = MPI_COMM_WORLD):
- *     return adios_init(config, comm)             # <<<<<<<<<<<<<<
- * 
- * cpdef int64_t open(char * group_name,
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(adios_init(__pyx_v_config, __pyx_v_comm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "adios.pyx":305
- * ## ====================
- * 
- * cpdef init(char * config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm)
- * 
- */
+  __Pyx_RefNannySetupContext("normalize_key (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6normalize_key(__pyx_self, ((PyObject *)__pyx_v_keys));
 
   /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_3init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_2init[] = "init(char *config, MPI_Comm comm=MPI_COMM_WORLD)";
-static PyObject *__pyx_pw_5adios_3init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_config;
-  MPI_Comm __pyx_v_comm;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
+static PyObject *__pyx_pf_5adios_6normalize_key(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keys) {
+  PyObject *__pyx_v_l = NULL;
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("init (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_config,&__pyx_n_s_comm,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_config)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  __Pyx_RefNannySetupContext("normalize_key", 0);
+  __Pyx_INCREF(__pyx_v_keys);
+
+  /* "adios.pyx":59
+ * 
+ * def normalize_key(keys):
+ *     if not isinstance(keys, list):             # <<<<<<<<<<<<<<
+ *         keys = [keys,]
+ *     l = list()
+ */
+  __pyx_t_1 = PyList_Check(__pyx_v_keys); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":60
+ * def normalize_key(keys):
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]             # <<<<<<<<<<<<<<
+ *     l = list()
+ *     for key in keys:
+ */
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_keys);
+    __Pyx_GIVEREF(__pyx_v_keys);
+    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_keys);
+    __Pyx_DECREF_SET(__pyx_v_keys, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":59
+ * 
+ * def normalize_key(keys):
+ *     if not isinstance(keys, list):             # <<<<<<<<<<<<<<
+ *         keys = [keys,]
+ *     l = list()
+ */
+  }
+
+  /* "adios.pyx":61
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ *     l = list()             # <<<<<<<<<<<<<<
+ *     for key in keys:
+ *         if key.startswith('/'):
+ */
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_l = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":62
+ *         keys = [keys,]
+ *     l = list()
+ *     for key in keys:             # <<<<<<<<<<<<<<
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ */
+  if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) {
+    __pyx_t_3 = __pyx_v_keys; __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_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __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, 62, __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, 62, __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, 62, __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, 62, __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, 62, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        #endif
       }
     } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      __pyx_t_6 = __pyx_t_5(__pyx_t_3);
+      if (unlikely(!__pyx_t_6)) {
+        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, 62, __pyx_L1_error)
+        }
         break;
-        default: goto __pyx_L5_argtuple_error;
       }
+      __Pyx_GOTREF(__pyx_t_6);
     }
-    __pyx_v_config = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_config) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[1]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_comm = __pyx_k__4;
+    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6);
+    __pyx_t_6 = 0;
+
+    /* "adios.pyx":63
+ *     l = list()
+ *     for key in keys:
+ *         if key.startswith('/'):             # <<<<<<<<<<<<<<
+ *             key = key[1:]
+ *         if '/' not in key:
+ */
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_startswith); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 63, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_2) {
+
+      /* "adios.pyx":64
+ *     for key in keys:
+ *         if key.startswith('/'):
+ *             key = key[1:]             # <<<<<<<<<<<<<<
+ *         if '/' not in key:
+ *             l.append(key)
+ */
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key, 1, 0, NULL, NULL, &__pyx_slice__3, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 64, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios.pyx":63
+ *     l = list()
+ *     for key in keys:
+ *         if key.startswith('/'):             # <<<<<<<<<<<<<<
+ *             key = key[1:]
+ *         if '/' not in key:
+ */
     }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_5adios_2init(__pyx_self, __pyx_v_config, __pyx_v_comm);
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":65
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ *         if '/' not in key:             # <<<<<<<<<<<<<<
+ *             l.append(key)
+ *     return (l)
+ */
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_, __pyx_v_key, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 65, __pyx_L1_error)
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
 
-static PyObject *__pyx_pf_5adios_2init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_config, MPI_Comm __pyx_v_comm) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_5adios_init __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("init", 0);
+      /* "adios.pyx":66
+ *             key = key[1:]
+ *         if '/' not in key:
+ *             l.append(key)             # <<<<<<<<<<<<<<
+ *     return (l)
+ * 
+ */
+      __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_l, __pyx_v_key); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 66, __pyx_L1_error)
+
+      /* "adios.pyx":65
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ *         if '/' not in key:             # <<<<<<<<<<<<<<
+ *             l.append(key)
+ *     return (l)
+ */
+    }
+
+    /* "adios.pyx":62
+ *         keys = [keys,]
+ *     l = list()
+ *     for key in keys:             # <<<<<<<<<<<<<<
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ */
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios.pyx":67
+ *         if '/' not in key:
+ *             l.append(key)
+ *     return (l)             # <<<<<<<<<<<<<<
+ * 
+ * cdef char ** to_cstring_array(list_str):
+ */
   __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_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __Pyx_INCREF(__pyx_v_l);
+  __pyx_r = __pyx_v_l;
   goto __pyx_L0;
 
+  /* "adios.pyx":58
+ *         return x.encode()
+ * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ */
+
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios.normalize_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_l);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_keys);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":308
- *     return adios_init(config, comm)
+/* "adios.pyx":69
+ *     return (l)
  * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
+ * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):
  */
 
-static PyObject *__pyx_pw_5adios_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int64_t __pyx_f_5adios_open(char *__pyx_v_group_name, char *__pyx_v_name, char *__pyx_v_mode, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_open *__pyx_optional_args) {
-  MPI_Comm __pyx_v_comm = __pyx_k__5;
-  int64_t __pyx_v_fd;
-  CYTHON_UNUSED int __pyx_v_result;
-  int64_t __pyx_r;
+static char **__pyx_f_5adios_to_cstring_array(PyObject *__pyx_v_list_str) {
+  char **__pyx_v_ret;
+  Py_ssize_t __pyx_v_i;
+  PyObject *__pyx_v_bstr = NULL;
+  char **__pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("open", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_comm = __pyx_optional_args->comm;
-    }
-  }
+  Py_ssize_t __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  char *__pyx_t_5;
+  __Pyx_RefNannySetupContext("to_cstring_array", 0);
 
-  /* "adios.pyx":314
- *     cdef int64_t fd
- *     cdef int result
- *     result = adios_open(&fd, group_name, name, mode, comm)             # <<<<<<<<<<<<<<
- *     return fd
+  /* "adios.pyx":70
  * 
+ * cdef char ** to_cstring_array(list_str):
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))             # <<<<<<<<<<<<<<
+ *     for i in xrange(len(list_str)):
+ *         bstr = s2b(list_str[i])
  */
-  __pyx_v_result = adios_open((&__pyx_v_fd), __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm);
+  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 70, __pyx_L1_error)
+  __pyx_v_ret = ((char **)malloc((__pyx_t_1 * (sizeof(char *)))));
 
-  /* "adios.pyx":315
- *     cdef int result
- *     result = adios_open(&fd, group_name, name, mode, comm)
- *     return fd             # <<<<<<<<<<<<<<
+  /* "adios.pyx":71
+ * cdef char ** to_cstring_array(list_str):
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):             # <<<<<<<<<<<<<<
+ *         bstr = s2b(list_str[i])
+ *         ret[i] = PyBytes_AsString(bstr)
+ */
+  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 71, __pyx_L1_error)
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
+
+    /* "adios.pyx":72
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):
+ *         bstr = s2b(list_str[i])             # <<<<<<<<<<<<<<
+ *         ret[i] = PyBytes_AsString(bstr)
+ *     return ret
+ */
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_list_str, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 72, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_5adios_s2b(((PyObject*)__pyx_t_3), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_bstr, ((PyObject*)__pyx_t_4));
+    __pyx_t_4 = 0;
+
+    /* "adios.pyx":73
+ *     for i in xrange(len(list_str)):
+ *         bstr = s2b(list_str[i])
+ *         ret[i] = PyBytes_AsString(bstr)             # <<<<<<<<<<<<<<
+ *     return ret
  * 
- * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
  */
-  __pyx_r = __pyx_v_fd;
+    __pyx_t_5 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_5 == NULL)) __PYX_ERR(0, 73, __pyx_L1_error)
+    (__pyx_v_ret[__pyx_v_i]) = __pyx_t_5;
+  }
+
+  /* "adios.pyx":74
+ *         bstr = s2b(list_str[i])
+ *         ret[i] = PyBytes_AsString(bstr)
+ *     return ret             # <<<<<<<<<<<<<<
+ * 
+ * ## ====================
+ */
+  __pyx_r = __pyx_v_ret;
   goto __pyx_L0;
 
-  /* "adios.pyx":308
- *     return adios_init(config, comm)
+  /* "adios.pyx":69
+ *     return (l)
  * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
+ * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_WriteUnraisable("adios.to_cstring_array", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_bstr);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_4open[] = "open(char *group_name, char *name, char *mode, MPI_Comm comm=MPI_COMM_WORLD) -> int64_t";
-static PyObject *__pyx_pw_5adios_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_group_name;
-  char *__pyx_v_name;
-  char *__pyx_v_mode;
-  MPI_Comm __pyx_v_comm;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
+/* "adios.pyx":349
+ *     ALL =2
+ * 
+ * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):
+ */
+
+static PyObject *__pyx_pw_5adios_9__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject *__pyx_v_ndim, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_v_fixed = NULL;
+  PyObject *__pyx_v_length = NULL;
+  PyObject *__pyx_v_slice_ = NULL;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("open (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_name,&__pyx_n_s_name,&__pyx_n_s_mode,&__pyx_n_s_comm,0};
-    PyObject* values[4] = {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  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_name)) != 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("open", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[3] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_group_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_group_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_mode = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_mode) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[3]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[3]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_comm = __pyx_k__5;
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_5adios_4open(__pyx_self, __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4open(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_group_name, char *__pyx_v_name, char *__pyx_v_mode, MPI_Comm __pyx_v_comm) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_5adios_open __pyx_t_2;
+  int __pyx_t_1;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("open", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  PyObject *__pyx_t_6 = NULL;
+  Py_ssize_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  __Pyx_RefNannySetupContext("__parse_index", 0);
+  __Pyx_INCREF(__pyx_v_index);
 
-/* "adios.pyx":317
- *     return fd
+  /* "adios.pyx":351
+ * cpdef __parse_index(index, ndim):
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
+ *         index = (index,)
  * 
- * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
- *     cdef uint64_t total_size
- *     cdef int result
  */
+  __pyx_t_1 = PyTuple_Check(__pyx_v_index); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-static PyObject *__pyx_pw_5adios_7set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int64_t __pyx_f_5adios_set_group_size(int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  uint64_t __pyx_v_total_size;
-  CYTHON_UNUSED int __pyx_v_result;
-  int64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("set_group_size", 0);
-
-  /* "adios.pyx":320
- *     cdef uint64_t total_size
- *     cdef int result
- *     result = adios_group_size(fd_p, data_size, &total_size)             # <<<<<<<<<<<<<<
- *     return total_size
+    /* "adios.pyx":352
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):
+ *         index = (index,)             # <<<<<<<<<<<<<<
  * 
+ *     fixed = []
  */
-  __pyx_v_result = adios_group_size(__pyx_v_fd_p, __pyx_v_data_size, (&__pyx_v_total_size));
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_index);
+    __Pyx_GIVEREF(__pyx_v_index);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index);
+    __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* "adios.pyx":321
- *     cdef int result
- *     result = adios_group_size(fd_p, data_size, &total_size)
- *     return total_size             # <<<<<<<<<<<<<<
+    /* "adios.pyx":351
+ * cpdef __parse_index(index, ndim):
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
+ *         index = (index,)
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):
  */
-  __pyx_r = __pyx_v_total_size;
-  goto __pyx_L0;
+  }
 
-  /* "adios.pyx":317
- *     return fd
+  /* "adios.pyx":354
+ *         index = (index,)
+ * 
+ *     fixed = []             # <<<<<<<<<<<<<<
+ *     length = len(index)
  * 
- * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
- *     cdef uint64_t total_size
- *     cdef int result
  */
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_fixed = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":355
+ * 
+ *     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_GOTREF(__pyx_t_3);
+  __pyx_v_length = __pyx_t_3;
+  __pyx_t_3 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_7set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_6set_group_size[] = "set_group_size(int64_t fd_p, uint64_t data_size) -> int64_t";
-static PyObject *__pyx_pw_5adios_7set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  uint64_t __pyx_v_data_size;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("set_group_size (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_data_size,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;
+  /* "adios.pyx":357
+ *     length = len(index)
+ * 
+ *     for slice_ in index:             # <<<<<<<<<<<<<<
+ *         if slice_ is Ellipsis:
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ */
+  if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_6);
+        #endif
       }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        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_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_t_6 = __pyx_t_5(__pyx_t_3);
+      if (unlikely(!__pyx_t_6)) {
+        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)
         }
+        break;
       }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_6);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_6set_group_size(__pyx_self, __pyx_v_fd_p, __pyx_v_data_size);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_6set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __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_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_6);
+    __pyx_t_6 = 0;
 
-/* "adios.pyx":323
- *     return total_size
+    /* "adios.pyx":358
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):             # <<<<<<<<<<<<<<
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
+ *     for slice_ in index:
+ *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ *         elif isinstance(slice_, (int, long)):
  */
+    __pyx_t_2 = (__pyx_v_slice_ == __pyx_builtin_Ellipsis);
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
 
-static PyObject *__pyx_pw_5adios_9write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, char *__pyx_v_name, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_write *__pyx_optional_args) {
-  PyObject *__pyx_v_dtype = ((PyObject *)Py_None);
-  PyArrayObject *__pyx_v_val_ = 0;
-  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;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dtype = __pyx_optional_args->dtype;
+      /* "adios.pyx":359
+ *     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_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_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_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_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_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)
+        __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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+      /* "adios.pyx":358
+ * 
+ *     for slice_ in index:
+ *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ *         elif isinstance(slice_, (int, long)):
+ */
+      goto __pyx_L6;
     }
-  }
 
-  /* "adios.pyx":325
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
+    /* "adios.pyx":360
+ *         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))
+ *         elif isinstance(slice_, (float)):
  */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+    __pyx_t_2 = PyInt_Check(__pyx_v_slice_); 
+    __pyx_t_11 = (__pyx_t_2 != 0);
+    if (!__pyx_t_11) {
+    } else {
+      __pyx_t_1 = __pyx_t_11;
+      goto __pyx_L7_bool_binop_done;
+    }
+    __pyx_t_11 = PyLong_Check(__pyx_v_slice_); 
+    __pyx_t_2 = (__pyx_t_11 != 0);
+    __pyx_t_1 = __pyx_t_2;
+    __pyx_L7_bool_binop_done:;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
 
-    /* "adios.pyx":326
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
- *             val_ = val
+      /* "adios.pyx":361
+ *             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_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_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_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+      /* "adios.pyx":360
+ *         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))
+ *         elif isinstance(slice_, (float)):
+ */
+      goto __pyx_L6;
+    }
+
+    /* "adios.pyx":362
+ *         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))
  *         else:
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
+    __pyx_t_2 = PyFloat_Check(__pyx_v_slice_); 
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
 
-      /* "adios.pyx":327
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:
- *             val_ = val             # <<<<<<<<<<<<<<
+      /* "adios.pyx":363
+ *             fixed.append(slice(slice_, slice_+1, None))
+ *         elif isinstance(slice_, (float)):
+ *             fixed.append(slice(int(slice_), int(slice_)+1, None))             # <<<<<<<<<<<<<<
  *         else:
- *             val_ = np.array(val, copy=True)
+ *             fixed.append(slice_)
  */
-      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __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;
-      goto __pyx_L4;
+      __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __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_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_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_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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+      /* "adios.pyx":362
+ *         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))
+ *         else:
+ */
+      goto __pyx_L6;
     }
-    /*else*/ {
 
-      /* "adios.pyx":329
- *             val_ = val
+    /* "adios.pyx":365
+ *             fixed.append(slice(int(slice_), int(slice_)+1, None))
  *         else:
- *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
- *     else:
- *         val_ = np.array(val, dtype=dtype)
+ *             fixed.append(slice_)             # <<<<<<<<<<<<<<
+ *         length -= 1
+ * 
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-      __pyx_t_6 = 0;
+    /*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_L4:;
-    goto __pyx_L3;
+    __pyx_L6:;
+
+    /* "adios.pyx":366
+ *         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_GOTREF(__pyx_t_9);
+    __Pyx_DECREF_SET(__pyx_v_length, __pyx_t_9);
+    __pyx_t_9 = 0;
+
+    /* "adios.pyx":357
+ *     length = len(index)
+ * 
+ *     for slice_ in index:             # <<<<<<<<<<<<<<
+ *         if slice_ is Ellipsis:
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ */
   }
-  /*else*/ {
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":331
- *             val_ = np.array(val, copy=True)
- *     else:
- *         val_ = np.array(val, dtype=dtype)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":368
+ *         length -= 1
  * 
- *     return adios_write (fd_p, name, <void *> val_.data)
+ *     index = tuple(fixed)             # <<<<<<<<<<<<<<
+ *     if len(index) < ndim:
+ *         index += (slice(None),) * (ndim-len(index))
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_INCREF(__pyx_v_val);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_val);
-    __Pyx_GIVEREF(__pyx_v_val);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_dtype) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_AsTuple(__pyx_v_fixed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":369
+ * 
+ *     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_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_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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":370
+ *     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_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_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_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_val_ = ((PyArrayObject *)__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_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_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
+ * 
+ *     index = tuple(fixed)
+ *     if len(index) < ndim:             # <<<<<<<<<<<<<<
+ *         index += (slice(None),) * (ndim-len(index))
+ * 
+ */
   }
-  __pyx_L3:;
 
-  /* "adios.pyx":333
- *         val_ = np.array(val, dtype=dtype)
+  /* "adios.pyx":372
+ *         index += (slice(None),) * (ndim-len(index))
  * 
- *     return adios_write (fd_p, name, <void *> val_.data)             # <<<<<<<<<<<<<<
+ *     return index             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):
+ * ## ====================
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, ((void *)__pyx_v_val_->data));
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_index);
+  __pyx_r = __pyx_v_index;
   goto __pyx_L0;
 
-  /* "adios.pyx":323
- *     return total_size
+  /* "adios.pyx":349
+ *     ALL =2
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):             # <<<<<<<<<<<<<<
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
+ * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_WriteUnraisable("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_fixed);
+  __Pyx_XDECREF(__pyx_v_length);
+  __Pyx_XDECREF(__pyx_v_slice_);
+  __Pyx_XDECREF(__pyx_v_index);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_9write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_8write[] = "write(int64_t fd_p, char *name, val, dtype=None) -> int";
-static PyObject *__pyx_pw_5adios_9write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  PyObject *__pyx_v_val = 0;
-  PyObject *__pyx_v_dtype = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_9__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_8__parse_index[] = "__parse_index(index, ndim)";
+static PyObject *__pyx_pw_5adios_9__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_index = 0;
+  PyObject *__pyx_v_ndim = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write (wrapper)", 0);
+  __Pyx_RefNannySetupContext("__parse_index (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,&__pyx_n_s_dtype,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[3] = ((PyObject *)Py_None);
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_ndim,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  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;
@@ -3587,81 +4001,57 @@ static PyObject *__pyx_pw_5adios_9write(PyObject *__pyx_self, PyObject *__pyx_ar
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index)) != 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("write", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ndim)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
-          if (value) { values[3] = value; kw_args--; }
+          __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, 1); __PYX_ERR(0, 349, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) __PYX_ERR(0, 349, __pyx_L3_error)
       }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
+      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_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = values[2];
-    __pyx_v_dtype = values[3];
+    __pyx_v_index = values[0];
+    __pyx_v_ndim = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 349, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_8write(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val, __pyx_v_dtype);
+  __pyx_r = __pyx_pf_5adios_8__parse_index(__pyx_self, __pyx_v_index, __pyx_v_ndim);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_8write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype) {
+static PyObject *__pyx_pf_5adios_8__parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_5adios_write __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__parse_index", 0);
   __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -3669,65 +4059,92 @@ static PyObject *__pyx_pf_5adios_8write(CYTHON_UNUSED PyObject *__pyx_self, int6
   return __pyx_r;
 }
 
-/* "adios.pyx":335
- *     return adios_write (fd_p, name, <void *> val_.data)
- * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+/* "adios.pyx":381
+ * cdef MPI_Comm read_init_comm
  * 
+ * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
  */
 
-static PyObject *__pyx_pw_5adios_11write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_write_int(int64_t __pyx_v_fd_p, char *__pyx_v_name, int __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
+static PyObject *__pyx_pw_5adios_11init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5adios_init(PyObject *__pyx_v_config, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init *__pyx_optional_args) {
+  MPI_Comm __pyx_v_comm = __pyx_k__7;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_int", 0);
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("init", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_comm = __pyx_optional_args->comm;
+    }
+  }
 
-  /* "adios.pyx":336
+  /* "adios.pyx":383
+ * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):
+ *     global init_comm
+ *     init_comm = comm             # <<<<<<<<<<<<<<
+ *     return adios_init(s2b(config), init_comm)
  * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+ */
+  __pyx_v_5adios_init_comm = __pyx_v_comm;
+
+  /* "adios.pyx":384
+ *     global init_comm
+ *     init_comm = comm
+ *     return adios_init(s2b(config), init_comm)             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):
+ * cpdef int64_t open(str group_name,
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
+  __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_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_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":335
- *     return adios_write (fd_p, name, <void *> val_.data)
- * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios.pyx":381
+ * cdef MPI_Comm read_init_comm
  * 
+ * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_11write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_10write_int[] = "write_int(int64_t fd_p, char *name, int val) -> int";
-static PyObject *__pyx_pw_5adios_11write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  int __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_11init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_10init[] = "init(str config, MPI_Comm comm=MPI_COMM_WORLD)";
+static PyObject *__pyx_pw_5adios_11init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_config = 0;
+  MPI_Comm __pyx_v_comm;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_int (wrapper)", 0);
+  __Pyx_RefNannySetupContext("init (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_config,&__pyx_n_s_comm,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  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;
@@ -3736,58 +4153,62 @@ static PyObject *__pyx_pw_5adios_11write_int(PyObject *__pyx_self, PyObject *__p
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_config)) != 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("write_int", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[1] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 381, __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);
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __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)
+    } else {
+      __pyx_v_comm = __pyx_k__7;
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 381, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_10write_int(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), (&PyString_Type), 1, "config", 1))) __PYX_ERR(0, 381, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_10init(__pyx_self, __pyx_v_config, __pyx_v_comm);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_10write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, int __pyx_v_val) {
+static PyObject *__pyx_pf_5adios_10init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_config, MPI_Comm __pyx_v_comm) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write_int", 0);
+  struct __pyx_opt_args_5adios_init __pyx_t_2;
+  __Pyx_RefNannySetupContext("init", 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_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3796,7 +4217,7 @@ static PyObject *__pyx_pf_5adios_10write_int(CYTHON_UNUSED PyObject *__pyx_self,
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -3804,64 +4225,104 @@ static PyObject *__pyx_pf_5adios_10write_int(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios.pyx":338
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+/* "adios.pyx":386
+ *     return adios_init(s2b(config), init_comm)
  * 
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
  */
 
-static PyObject *__pyx_pw_5adios_13write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_write_long(int64_t __pyx_v_fd_p, char *__pyx_v_name, long __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
+static PyObject *__pyx_pw_5adios_13open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int64_t __pyx_f_5adios_open(PyObject *__pyx_v_group_name, PyObject *__pyx_v_name, PyObject *__pyx_v_mode, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_open *__pyx_optional_args) {
+  MPI_Comm __pyx_v_comm = __pyx_k__8;
+  int64_t __pyx_v_fd;
+  CYTHON_UNUSED int __pyx_v_result;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_long", 0);
+  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;
+  __Pyx_RefNannySetupContext("open", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_comm = __pyx_optional_args->comm;
+    }
+  }
 
-  /* "adios.pyx":339
+  /* "adios.pyx":392
+ *     cdef int64_t fd
+ *     cdef int result
+ *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm)             # <<<<<<<<<<<<<<
+ *     return fd
  * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+ */
+  __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_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_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_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_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
+ *     cdef int result
+ *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm)
+ *     return fd             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):
+ * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
+  __pyx_r = __pyx_v_fd;
   goto __pyx_L0;
 
-  /* "adios.pyx":338
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios.pyx":386
+ *     return adios_init(s2b(config), init_comm)
  * 
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("adios.open", __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_13write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_12write_long[] = "write_long(int64_t fd_p, char *name, long val) -> int";
-static PyObject *__pyx_pw_5adios_13write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  long __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_13open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_12open[] = "open(str group_name, str name, str mode, MPI_Comm comm=MPI_COMM_WORLD) -> int64_t";
+static PyObject *__pyx_pw_5adios_13open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_group_name = 0;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_mode = 0;
+  MPI_Comm __pyx_v_comm;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_long (wrapper)", 0);
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_name,&__pyx_n_s_name,&__pyx_n_s_mode,&__pyx_n_s_comm,0};
+    PyObject* values[4] = {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  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);
@@ -3871,67 +4332,89 @@ static PyObject *__pyx_pw_5adios_13write_long(PyObject *__pyx_self, PyObject *__
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_name)) != 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("write_long", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 1); __PYX_ERR(0, 386, __pyx_L3_error)
         }
         case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 2); __PYX_ERR(0, 386, __pyx_L3_error)
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[3] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) __PYX_ERR(0, 386, __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);
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_group_name = ((PyObject*)values[0]);
+    __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)
+    } else {
+      __pyx_v_comm = __pyx_k__8;
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __Pyx_PyInt_As_long(values[2]); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 386, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_12write_long(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  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)
+  __pyx_r = __pyx_pf_5adios_12open(__pyx_self, __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_12write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, long __pyx_v_val) {
+static PyObject *__pyx_pf_5adios_12open(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_group_name, PyObject *__pyx_v_name, PyObject *__pyx_v_mode, MPI_Comm __pyx_v_comm) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write_long", 0);
+  int64_t __pyx_t_1;
+  struct __pyx_opt_args_5adios_open __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("open", 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_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
   goto __pyx_L0;
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -3939,36 +4422,47 @@ static PyObject *__pyx_pf_5adios_12write_long(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "adios.pyx":341
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+/* "adios.pyx":395
+ *     return fd
  * 
+ * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
+ *     cdef uint64_t total_size
+ *     cdef int result
  */
 
-static PyObject *__pyx_pw_5adios_15write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_write_float(int64_t __pyx_v_fd_p, char *__pyx_v_name, float __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
+static PyObject *__pyx_pw_5adios_15set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int64_t __pyx_f_5adios_set_group_size(int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  uint64_t __pyx_v_total_size;
+  CYTHON_UNUSED int __pyx_v_result;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_float", 0);
+  __Pyx_RefNannySetupContext("set_group_size", 0);
 
-  /* "adios.pyx":342
+  /* "adios.pyx":398
+ *     cdef uint64_t total_size
+ *     cdef int result
+ *     result = adios_group_size(fd_p, data_size, &total_size)             # <<<<<<<<<<<<<<
+ *     return total_size
  * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+ */
+  __pyx_v_result = adios_group_size(__pyx_v_fd_p, __pyx_v_data_size, (&__pyx_v_total_size));
+
+  /* "adios.pyx":399
+ *     cdef int result
+ *     result = adios_group_size(fd_p, data_size, &total_size)
+ *     return total_size             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
+  __pyx_r = __pyx_v_total_size;
   goto __pyx_L0;
 
-  /* "adios.pyx":341
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios.pyx":395
+ *     return fd
  * 
+ * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
+ *     cdef uint64_t total_size
+ *     cdef int result
  */
 
   /* function exit code */
@@ -3978,26 +4472,21 @@ static int __pyx_f_5adios_write_float(int64_t __pyx_v_fd_p, char *__pyx_v_name,
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_15write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_14write_float[] = "write_float(int64_t fd_p, char *name, float val) -> int";
-static PyObject *__pyx_pw_5adios_15write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_15set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_14set_group_size[] = "set_group_size(int64_t fd_p, uint64_t data_size) -> int64_t";
+static PyObject *__pyx_pw_5adios_15set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  float __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  uint64_t __pyx_v_data_size;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_float (wrapper)", 0);
+  __Pyx_RefNannySetupContext("set_group_size (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_data_size,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  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;
@@ -4009,55 +4498,45 @@ static PyObject *__pyx_pw_5adios_15write_float(PyObject *__pyx_self, PyObject *_
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 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("write_float", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data_size)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, 1); __PYX_ERR(0, 395, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) __PYX_ERR(0, 395, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+    } 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);
-      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_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __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, 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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 395, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_14write_float(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  __pyx_r = __pyx_pf_5adios_14set_group_size(__pyx_self, __pyx_v_fd_p, __pyx_v_data_size);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_14write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, float __pyx_v_val) {
+static PyObject *__pyx_pf_5adios_14set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write_float", 0);
+  __Pyx_RefNannySetupContext("set_group_size", 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_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __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, 395, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4066,7 +4545,7 @@ static PyObject *__pyx_pf_5adios_14write_float(CYTHON_UNUSED PyObject *__pyx_sel
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4074,64 +4553,303 @@ static PyObject *__pyx_pf_5adios_14write_float(CYTHON_UNUSED PyObject *__pyx_sel
   return __pyx_r;
 }
 
-/* "adios.pyx":344
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+/* "adios.pyx":401
+ *     return total_size
  * 
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
  */
 
-static PyObject *__pyx_pw_5adios_17write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_write_double(int64_t __pyx_v_fd_p, char *__pyx_v_name, double __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_17write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_write *__pyx_optional_args) {
+  PyObject *__pyx_v_dtype = ((PyObject *)Py_None);
+  PyArrayObject *__pyx_v_val_ = 0;
+  void *__pyx_v_ptr;
+  PyObject *__pyx_v_bstr = NULL;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_double", 0);
+  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;
+  __Pyx_RefNannySetupContext("write", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_dtype = __pyx_optional_args->dtype;
+    }
+  }
 
-  /* "adios.pyx":345
+  /* "adios.pyx":403
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):
+ *     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":404
+ *     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_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_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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_2) {
+
+      /* "adios.pyx":405
+ *     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)
+      __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
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "adios.pyx":407
+ *             val_ = val
+ *         else:
+ *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
+ *     else:
+ *         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_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_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_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_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)
+      __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)
+      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
+      __pyx_t_6 = 0;
+    }
+    __pyx_L4:;
+
+    /* "adios.pyx":403
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":409
+ *             val_ = np.array(val, copy=True)
+ *     else:
+ *         val_ = np.array(val, dtype=dtype)             # <<<<<<<<<<<<<<
+ * 
+ *     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_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_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_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_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)
+    __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)
+    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+  __pyx_L3:;
+
+  /* "adios.pyx":412
+ * 
+ *     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_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_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)
+  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_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
+ *     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_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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
+ *     if (val_.dtype.char in ('S', 'U')):
+ *         bstr = val_.tostring()
+ *         ptr = <void *> PyBytes_AS_STRING(bstr)             # <<<<<<<<<<<<<<
+ *     else:
+ *         ptr = <void *> val_.data
+ */
+    __pyx_v_ptr = ((void *)PyBytes_AS_STRING(__pyx_v_bstr));
+
+    /* "adios.pyx":412
+ * 
+ *     cdef void * ptr
+ *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
+ *         bstr = val_.tostring()
+ *         ptr = <void *> PyBytes_AS_STRING(bstr)
+ */
+    goto __pyx_L5;
+  }
+
+  /* "adios.pyx":416
+ *         ptr = <void *> PyBytes_AS_STRING(bstr)
+ *     else:
+ *         ptr = <void *> val_.data             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), ptr)
+ */
+  /*else*/ {
+    __pyx_v_ptr = ((void *)__pyx_v_val_->data);
+  }
+  __pyx_L5:;
+
+  /* "adios.pyx":418
+ *         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_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_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_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_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":344
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios.pyx":401
+ *     return total_size
  * 
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_WriteUnraisable("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_bstr);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_17write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_16write_double[] = "write_double(int64_t fd_p, char *name, double val) -> int";
-static PyObject *__pyx_pw_5adios_17write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_17write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_16write[] = "write(int64_t fd_p, str name, val, dtype=None) -> int";
+static PyObject *__pyx_pw_5adios_17write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  double __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_val = 0;
+  PyObject *__pyx_v_dtype = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_double (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,&__pyx_n_s_dtype,0};
+    PyObject* values[4] = {0,0,0,0};
+    values[3] = ((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  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);
@@ -4146,62 +4864,78 @@ static PyObject *__pyx_pw_5adios_17write_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_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 1); __PYX_ERR(0, 401, __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_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 2); __PYX_ERR(0, 401, __pyx_L3_error)
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
+          if (value) { values[3] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 401, __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);
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __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, 401, __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_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 401, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_16write_double(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 401, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_16write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, double __pyx_v_val) {
+static PyObject *__pyx_pf_5adios_16write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write_double", 0);
+  int __pyx_t_1;
+  struct __pyx_opt_args_5adios_write __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("write", 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_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
   goto __pyx_L0;
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4209,114 +4943,48 @@ static PyObject *__pyx_pf_5adios_16write_double(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "adios.pyx":348
+/* "adios.pyx":420
+ *     return adios_write (fd_p, s2b(name), ptr)
  * 
+ * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int read(int64_t fd_p, char * name, np.ndarray val):             # <<<<<<<<<<<<<<
- *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
- *     print "Reading ... ", val.itemsize * val.size, "(bytes)"
  */
 
-static PyObject *__pyx_pw_5adios_19read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_read(int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArrayObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_19write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_write_int(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, int __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  uint64_t __pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
-
-  /* "adios.pyx":349
- * 
- * cpdef int read(int64_t fd_p, char * 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, name, <void *> val.data, val.itemsize * val.size)
- */
-  #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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_int", 0);
 
-  /* "adios.pyx":350
- * cpdef int read(int64_t fd_p, char * 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, name, <void *> val.data, val.itemsize * val.size)
+  /* "adios.pyx":421
  * 
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_kp_s_Reading);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Reading);
-  __Pyx_GIVEREF(__pyx_kp_s_Reading);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  __Pyx_INCREF(__pyx_kp_s_bytes);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_s_bytes);
-  __Pyx_GIVEREF(__pyx_kp_s_bytes);
-  __pyx_t_4 = 0;
-  if (__Pyx_Print(0, __pyx_t_1, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":351
- *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
- *     print "Reading ... ", val.itemsize * val.size, "(bytes)"
- *     return adios_read(fd_p, name, <void *> val.data, val.itemsize * val.size)             # <<<<<<<<<<<<<<
+ * cpdef int write_int (int64_t fd_p, str name, int val):
+ *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
- * cpdef int close(int64_t fd_p):
+ * cpdef int write_long (int64_t fd_p, str name, long val):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 421, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 421, __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;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_5 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_5 == (uint64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = adios_read(__pyx_v_fd_p, __pyx_v_name, ((void *)__pyx_v_val->data), __pyx_t_5);
   goto __pyx_L0;
 
-  /* "adios.pyx":348
+  /* "adios.pyx":420
+ *     return adios_write (fd_p, s2b(name), ptr)
  * 
+ * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int read(int64_t fd_p, char * name, np.ndarray val):             # <<<<<<<<<<<<<<
- *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
- *     print "Reading ... ", val.itemsize * val.size, "(bytes)"
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_WriteUnraisable("adios.read", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_WriteUnraisable("adios.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
@@ -4324,18 +4992,15 @@ static int __pyx_f_5adios_read(int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArray
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_19read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_18read[] = "read(int64_t fd_p, char *name, ndarray val) -> int";
-static PyObject *__pyx_pw_5adios_19read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_19write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_18write_int[] = "write_int(int64_t fd_p, str name, int val) -> int";
+static PyObject *__pyx_pw_5adios_19write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  PyArrayObject *__pyx_v_val = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_int (wrapper)", 0);
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
     PyObject* values[3] = {0,0,0};
@@ -4357,16 +5022,16 @@ static PyObject *__pyx_pw_5adios_19read(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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 1); __PYX_ERR(0, 420, __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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 2); __PYX_ERR(0, 420, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) __PYX_ERR(0, 420, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -4375,20 +5040,20 @@ static PyObject *__pyx_pw_5adios_19read(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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = ((PyArrayObject *)values[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_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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 420, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_val), __pyx_ptype_5numpy_ndarray, 1, "val", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_5adios_18read(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 420, __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 */
   goto __pyx_L0;
@@ -4399,16 +5064,13 @@ static PyObject *__pyx_pw_5adios_19read(PyObject *__pyx_self, PyObject *__pyx_ar
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_18read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArrayObject *__pyx_v_val) {
+static PyObject *__pyx_pf_5adios_18write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, int __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
+  __Pyx_RefNannySetupContext("write_int", 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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __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, 420, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4417,7 +5079,7 @@ static PyObject *__pyx_pf_5adios_18read(CYTHON_UNUSED PyObject *__pyx_self, int6
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4425,81 +5087,134 @@ static PyObject *__pyx_pf_5adios_18read(CYTHON_UNUSED PyObject *__pyx_self, int6
   return __pyx_r;
 }
 
-/* "adios.pyx":353
- *     return adios_read(fd_p, name, <void *> val.data, val.itemsize * val.size)
+/* "adios.pyx":423
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
- *     return adios_close(fd_p)
+ * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
  */
 
-static PyObject *__pyx_pw_5adios_21close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
-static int __pyx_f_5adios_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_21write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_write_long(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, long __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("close", 0);
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_long", 0);
 
-  /* "adios.pyx":354
+  /* "adios.pyx":424
  * 
- * cpdef int close(int64_t fd_p):
- *     return adios_close(fd_p)             # <<<<<<<<<<<<<<
+ * cpdef int write_long (int64_t fd_p, str name, long val):
+ *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
- * cpdef int finalize(int mype = 0):
+ * cpdef int write_float (int64_t fd_p, str name, float val):
  */
-  __pyx_r = adios_close(__pyx_v_fd_p);
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __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_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":353
- *     return adios_read(fd_p, name, <void *> val.data, val.itemsize * val.size)
+  /* "adios.pyx":423
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
- *     return adios_close(fd_p)
+ * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios.write_long", __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_21close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
-static char __pyx_doc_5adios_20close[] = "close(int64_t fd_p) -> int";
-static PyObject *__pyx_pw_5adios_21close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p) {
+static PyObject *__pyx_pw_5adios_21write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_20write_long[] = "write_long(int64_t fd_p, str name, long val) -> int";
+static PyObject *__pyx_pw_5adios_21write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_fd_p;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_v_name = 0;
+  long __pyx_v_val;
   PyObject *__pyx_r = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RefNannySetupContext("write_long (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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_fd_p)) != 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("write_long", 1, 3, 3, 1); __PYX_ERR(0, 423, __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)
+        }
+      }
+      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)
+      }
+    } 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_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_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)
   }
   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_L3_error:;
-  __Pyx_AddTraceback("adios.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_20close(__pyx_self, ((int64_t)__pyx_v_fd_p));
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 423, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_20close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p) {
+static PyObject *__pyx_pf_5adios_20write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, long __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_RefNannySetupContext("write_long", 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_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __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, 423, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4508,7 +5223,7 @@ static PyObject *__pyx_pf_5adios_20close(CYTHON_UNUSED PyObject *__pyx_self, int
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4516,68 +5231,73 @@ static PyObject *__pyx_pf_5adios_20close(CYTHON_UNUSED PyObject *__pyx_self, int
   return __pyx_r;
 }
 
-/* "adios.pyx":356
- *     return adios_close(fd_p)
+/* "adios.pyx":426
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
- *     return adios_finalize(mype)
+ * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
  */
 
-static PyObject *__pyx_pw_5adios_23finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_finalize *__pyx_optional_args) {
-  int __pyx_v_mype = ((int)0);
+static PyObject *__pyx_pw_5adios_23write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_write_float(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, float __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("finalize", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_mype = __pyx_optional_args->mype;
-    }
-  }
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_float", 0);
 
-  /* "adios.pyx":357
+  /* "adios.pyx":427
  * 
- * cpdef int finalize(int mype = 0):
- *     return adios_finalize(mype)             # <<<<<<<<<<<<<<
+ * 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_r = adios_finalize(__pyx_v_mype);
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __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_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":356
- *     return adios_close(fd_p)
+  /* "adios.pyx":426
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
- *     return adios_finalize(mype)
+ * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios.write_float", __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_23finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_22finalize[] = "finalize(int mype=0) -> int";
-static PyObject *__pyx_pw_5adios_23finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_mype;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_23write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_22write_float[] = "write_float(int64_t fd_p, str name, float val) -> int";
+static PyObject *__pyx_pw_5adios_23write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  float __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("finalize (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_float (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mype,0};
-    PyObject* values[1] = {0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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;
@@ -4585,66 +5305,69 @@ static PyObject *__pyx_pw_5adios_23finalize(PyObject *__pyx_self, PyObject *__py
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mype);
-          if (value) { values[0] = value; kw_args--; }
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 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("write_float", 1, 3, 3, 1); __PYX_ERR(0, 426, __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)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __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;
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) __PYX_ERR(0, 426, __pyx_L3_error)
       }
-    }
-    if (values[0]) {
-      __pyx_v_mype = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_mype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      __pyx_v_mype = ((int)0);
+      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_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_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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 426, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_22finalize(__pyx_self, __pyx_v_mype);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 426, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_22finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype) {
+static PyObject *__pyx_pf_5adios_22write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, float __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_5adios_finalize __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("finalize", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("write_float", 0);
   __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4652,68 +5375,73 @@ static PyObject *__pyx_pf_5adios_22finalize(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios.pyx":362
- * ## ADIOS No-XML API
- * ## ====================
- * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm)
+/* "adios.pyx":429
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
  */
 
-static PyObject *__pyx_pw_5adios_25init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init_noxml *__pyx_optional_args) {
-  MPI_Comm __pyx_v_comm = __pyx_k__6;
+static PyObject *__pyx_pw_5adios_25write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_write_double(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, double __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("init_noxml", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_comm = __pyx_optional_args->comm;
-    }
-  }
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_double", 0);
 
-  /* "adios.pyx":363
- * ## ====================
- * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):
- *     return adios_init_noxml(comm)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":430
+ * 
+ * cpdef int write_double (int64_t fd_p, str name, double val):
+ *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
+ * 
  * 
- * cpdef int allocate_buffer(int when,
  */
-  __pyx_r = adios_init_noxml(__pyx_v_comm);
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __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_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":362
- * ## ADIOS No-XML API
- * ## ====================
- * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm)
+  /* "adios.pyx":429
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios.write_double", __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_25init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_24init_noxml[] = "init_noxml(MPI_Comm comm=MPI_COMM_WORLD) -> int";
-static PyObject *__pyx_pw_5adios_25init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  MPI_Comm __pyx_v_comm;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_25write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_24write_double[] = "write_double(int64_t fd_p, str name, double val) -> int";
+static PyObject *__pyx_pw_5adios_25write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  double __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("init_noxml (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_double (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
-    PyObject* values[1] = {0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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;
@@ -4721,66 +5449,69 @@ static PyObject *__pyx_pw_5adios_25init_noxml(PyObject *__pyx_self, PyObject *__
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[0] = value; kw_args--; }
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 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("write_double", 1, 3, 3, 1); __PYX_ERR(0, 429, __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)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __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;
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) __PYX_ERR(0, 429, __pyx_L3_error)
       }
-    }
-    if (values[0]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[0]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      __pyx_v_comm = __pyx_k__6;
+      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_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_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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 429, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_24init_noxml(__pyx_self, __pyx_v_comm);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 429, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_24init_noxml(CYTHON_UNUSED PyObject *__pyx_self, MPI_Comm __pyx_v_comm) {
+static PyObject *__pyx_pf_5adios_24write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, double __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_5adios_init_noxml __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("init_noxml", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("write_double", 0);
   __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4788,63 +5519,144 @@ static PyObject *__pyx_pf_5adios_24init_noxml(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "adios.pyx":365
- *     return adios_init_noxml(comm)
+/* "adios.pyx":433
  * 
- * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
- *                           uint64_t buffer_size):
- *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
+ * 
+ * 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)")
  */
 
-static PyObject *__pyx_pw_5adios_27allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v_buffer_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_27read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("allocate_buffer", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  char *__pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  uint64_t __pyx_t_7;
+  __Pyx_RefNannySetupContext("read", 0);
 
-  /* "adios.pyx":367
- * cpdef int allocate_buffer(int when,
- *                           uint64_t buffer_size):
- *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,             # <<<<<<<<<<<<<<
- *                                  buffer_size)
+  /* "adios.pyx":434
  * 
+ * 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_r = adios_allocate_buffer(((ADIOS_BUFFER_ALLOC_WHEN)__pyx_v_when), __pyx_v_buffer_size);
+  #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_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_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_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)
+    }
+  }
+  #endif
+
+  /* "adios.pyx":435
+ * 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_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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_kp_s_Reading);
+  __Pyx_GIVEREF(__pyx_kp_s_Reading);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Reading);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
+  __Pyx_INCREF(__pyx_kp_s_bytes);
+  __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_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
+ *     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_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_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_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_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_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":365
- *     return adios_init_noxml(comm)
+  /* "adios.pyx":433
  * 
- * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
- *                           uint64_t buffer_size):
- *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
+ * 
+ * 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)")
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_WriteUnraisable("adios.read", __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_27allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_26allocate_buffer[] = "allocate_buffer(int when, uint64_t buffer_size) -> int";
-static PyObject *__pyx_pw_5adios_27allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_when;
-  uint64_t __pyx_v_buffer_size;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_27read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_26read[] = "read(int64_t fd_p, str name, ndarray val) -> int";
+static PyObject *__pyx_pw_5adios_27read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  PyArrayObject *__pyx_v_val = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("allocate_buffer (wrapper)", 0);
+  __Pyx_RefNannySetupContext("read (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_when,&__pyx_n_s_buffer_size,0};
-    PyObject* values[2] = {0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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;
@@ -4853,51 +5665,61 @@ static PyObject *__pyx_pw_5adios_27allocate_buffer(PyObject *__pyx_self, PyObjec
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_when)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size)) != 0)) kw_args--;
+        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)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); __PYX_ERR(0, 433, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 433, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+    } 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_when = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_when == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __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, 433, __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("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 433, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_26allocate_buffer(__pyx_self, __pyx_v_when, __pyx_v_buffer_size);
+  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)
+  __pyx_r = __pyx_pf_5adios_26read(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_26allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size) {
+static PyObject *__pyx_pf_5adios_26read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("allocate_buffer", 0);
+  __Pyx_RefNannySetupContext("read", 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_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __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, 433, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4906,7 +5728,7 @@ static PyObject *__pyx_pf_5adios_26allocate_buffer(CYTHON_UNUSED PyObject *__pyx
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4914,65 +5736,36 @@ static PyObject *__pyx_pf_5adios_26allocate_buffer(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "adios.pyx":370
- *                                  buffer_size)
+/* "adios.pyx":438
+ *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
+ * 
+ * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
+ *     return adios_close(fd_p)
  * 
- * cpdef int64_t declare_group(char * name,             # <<<<<<<<<<<<<<
- *                             char * time_index = "",
- *                             int stats = 1):
  */
 
-static PyObject *__pyx_pw_5adios_29declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int64_t __pyx_f_5adios_declare_group(char *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_declare_group *__pyx_optional_args) {
-  char *__pyx_v_time_index = ((char *)__pyx_k__7);
-  int __pyx_v_stats = ((int)1);
-  int64_t __pyx_v_id;
-  int64_t __pyx_r;
+static PyObject *__pyx_pw_5adios_29close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
+static int __pyx_f_5adios_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("declare_group", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_time_index = __pyx_optional_args->time_index;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_stats = __pyx_optional_args->stats;
-      }
-    }
-  }
-
-  /* "adios.pyx":373
- *                             char * time_index = "",
- *                             int stats = 1):
- *     cdef int64_t id = 0             # <<<<<<<<<<<<<<
- *     adios_declare_group (&id,
- *                          name,
- */
-  __pyx_v_id = 0;
-
-  /* "adios.pyx":374
- *                             int stats = 1):
- *     cdef int64_t id = 0
- *     adios_declare_group (&id,             # <<<<<<<<<<<<<<
- *                          name,
- *                          time_index,
- */
-  adios_declare_group((&__pyx_v_id), __pyx_v_name, __pyx_v_time_index, ((ADIOS_FLAG)__pyx_v_stats));
+  __Pyx_RefNannySetupContext("close", 0);
 
-  /* "adios.pyx":378
- *                          time_index,
- *                          <ADIOS_FLAG> stats)
- *     return id             # <<<<<<<<<<<<<<
+  /* "adios.pyx":439
  * 
- * cpdef int define_var(int64_t group_id,
+ * cpdef int close(int64_t fd_p):
+ *     return adios_close(fd_p)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int finalize(int mype = 0):
  */
-  __pyx_r = __pyx_v_id;
+  __pyx_r = adios_close(__pyx_v_fd_p);
   goto __pyx_L0;
 
-  /* "adios.pyx":370
- *                                  buffer_size)
+  /* "adios.pyx":438
+ *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
+ * 
+ * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
+ *     return adios_close(fd_p)
  * 
- * cpdef int64_t declare_group(char * name,             # <<<<<<<<<<<<<<
- *                             char * time_index = "",
- *                             int stats = 1):
  */
 
   /* function exit code */
@@ -4982,111 +5775,45 @@ static int64_t __pyx_f_5adios_declare_group(char *__pyx_v_name, CYTHON_UNUSED in
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_29declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_28declare_group[] = "declare_group(char *name, char *time_index='', int stats=1) -> int64_t";
-static PyObject *__pyx_pw_5adios_29declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_name;
-  char *__pyx_v_time_index;
-  int __pyx_v_stats;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_29close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
+static char __pyx_doc_5adios_28close[] = "close(int64_t fd_p) -> int";
+static PyObject *__pyx_pw_5adios_29close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p) {
+  int64_t __pyx_v_fd_p;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_time_index,&__pyx_n_s_stats,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_name)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stats);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __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;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_time_index = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_time_index) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_time_index = ((char *)__pyx_k__7);
-    }
-    if (values[2]) {
-      __pyx_v_stats = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_stats == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_stats = ((int)1);
-    }
+  __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)
   }
   goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_28declare_group(__pyx_self, __pyx_v_name, __pyx_v_time_index, __pyx_v_stats);
+  __pyx_r = __pyx_pf_5adios_28close(__pyx_self, ((int64_t)__pyx_v_fd_p));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_28declare_group(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, char *__pyx_v_time_index, int __pyx_v_stats) {
+static PyObject *__pyx_pf_5adios_28close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_5adios_declare_group __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("declare_group", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 2;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5094,50 +5821,42 @@ static PyObject *__pyx_pf_5adios_28declare_group(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":380
- *     return id
+/* "adios.pyx":441
+ *     return adios_close(fd_p)
+ * 
+ * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
+ *     return adios_finalize(mype)
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
- *                      char * name,
- *                      char * path,
  */
 
-static PyObject *__pyx_pw_5adios_31define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_define_var *__pyx_optional_args) {
-  char *__pyx_v_dimensions = ((char *)__pyx_k__7);
-  char *__pyx_v_global_dimensions = ((char *)__pyx_k__7);
-  char *__pyx_v_local_offsets = ((char *)__pyx_k__7);
+static PyObject *__pyx_pw_5adios_31finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_finalize *__pyx_optional_args) {
+  int __pyx_v_mype = ((int)0);
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_var", 0);
+  __Pyx_RefNannySetupContext("finalize", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dimensions = __pyx_optional_args->dimensions;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_global_dimensions = __pyx_optional_args->global_dimensions;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_local_offsets = __pyx_optional_args->local_offsets;
-        }
-      }
+      __pyx_v_mype = __pyx_optional_args->mype;
     }
   }
 
-  /* "adios.pyx":387
- *                      char * global_dimensions = "",
- *                      char * local_offsets = ""):
- *     return adios_define_var(group_id,             # <<<<<<<<<<<<<<
- *                             name, path,
- *                             <ADIOS_DATATYPES> atype,
+  /* "adios.pyx":442
+ * 
+ * cpdef int finalize(int mype = 0):
+ *     return adios_finalize(mype)             # <<<<<<<<<<<<<<
+ * 
+ * ## ====================
  */
-  __pyx_r = adios_define_var(__pyx_v_group_id, __pyx_v_name, __pyx_v_path, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_v_dimensions, __pyx_v_global_dimensions, __pyx_v_local_offsets);
+  __pyx_r = adios_finalize(__pyx_v_mype);
   goto __pyx_L0;
 
-  /* "adios.pyx":380
- *     return id
+  /* "adios.pyx":441
+ *     return adios_close(fd_p)
+ * 
+ * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
+ *     return adios_finalize(mype)
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
- *                      char * name,
- *                      char * path,
  */
 
   /* function exit code */
@@ -5147,35 +5866,20 @@ static int __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, char *__pyx_v_nam
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_31define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_30define_var[] = "define_var(int64_t group_id, char *name, char *path, int atype, char *dimensions='', char *global_dimensions='', char *local_offsets='') -> int";
-static PyObject *__pyx_pw_5adios_31define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group_id;
-  char *__pyx_v_name;
-  char *__pyx_v_path;
-  int __pyx_v_atype;
-  char *__pyx_v_dimensions;
-  char *__pyx_v_global_dimensions;
-  char *__pyx_v_local_offsets;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_31finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_30finalize[] = "finalize(int mype=0) -> int";
+static PyObject *__pyx_pw_5adios_31finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_mype;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_var (wrapper)", 0);
+  __Pyx_RefNannySetupContext("finalize (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_dimensions,&__pyx_n_s_global_dimensions,&__pyx_n_s_local_offsets,0};
-    PyObject* values[7] = {0,0,0,0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mype,0};
+    PyObject* values[1] = {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;
@@ -5183,107 +5887,54 @@ static PyObject *__pyx_pw_5adios_31define_var(PyObject *__pyx_self, PyObject *__
       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_name)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  4:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions);
-          if (value) { values[4] = value; kw_args--; }
-        }
-        case  5:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_global_dimensions);
-          if (value) { values[5] = value; kw_args--; }
-        }
-        case  6:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_local_offsets);
-          if (value) { values[6] = value; kw_args--; }
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mype);
+          if (value) { values[0] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) __PYX_ERR(0, 441, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_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);
-        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
         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_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_path = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[4]) {
-      __pyx_v_dimensions = __Pyx_PyObject_AsString(values[4]); if (unlikely((!__pyx_v_dimensions) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_dimensions = ((char *)__pyx_k__7);
-    }
-    if (values[5]) {
-      __pyx_v_global_dimensions = __Pyx_PyObject_AsString(values[5]); if (unlikely((!__pyx_v_global_dimensions) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_global_dimensions = ((char *)__pyx_k__7);
-    }
-    if (values[6]) {
-      __pyx_v_local_offsets = __Pyx_PyObject_AsString(values[6]); if (unlikely((!__pyx_v_local_offsets) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    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)
     } else {
-      __pyx_v_local_offsets = ((char *)__pyx_k__7);
+      __pyx_v_mype = ((int)0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 441, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_30define_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);
+  __pyx_r = __pyx_pf_5adios_30finalize(__pyx_self, __pyx_v_mype);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_30define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_dimensions, char *__pyx_v_global_dimensions, char *__pyx_v_local_offsets) {
+static PyObject *__pyx_pf_5adios_30finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  struct __pyx_opt_args_5adios_define_var __pyx_t_2;
+  struct __pyx_opt_args_5adios_finalize __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_var", 0);
+  __Pyx_RefNannySetupContext("finalize", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 3;
-  __pyx_t_2.dimensions = __pyx_v_dimensions;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -5292,7 +5943,7 @@ static PyObject *__pyx_pf_5adios_30define_var(CYTHON_UNUSED PyObject *__pyx_self
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5300,36 +5951,51 @@ static PyObject *__pyx_pf_5adios_30define_var(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "adios.pyx":394
- *                             local_offsets)
+/* "adios.pyx":448
+ * ## ====================
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             char * name,
- *                             char * path,
+ * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
  */
 
-static PyObject *__pyx_pw_5adios_33define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_define_attribute(int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_value, char *__pyx_v_var, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_33init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init_noxml *__pyx_optional_args) {
+  MPI_Comm __pyx_v_comm = __pyx_k__9;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_RefNannySetupContext("init_noxml", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_comm = __pyx_optional_args->comm;
+    }
+  }
 
-  /* "adios.pyx":400
- *                             char * value,
- *                             char * var):
- *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
- *                                    name,
- *                                    path,
+  /* "adios.pyx":450
+ * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):
+ *     global init_comm
+ *     init_comm = comm             # <<<<<<<<<<<<<<
+ *     return adios_init_noxml(init_comm)
+ * 
+ */
+  __pyx_v_5adios_init_comm = __pyx_v_comm;
+
+  /* "adios.pyx":451
+ *     global init_comm
+ *     init_comm = comm
+ *     return adios_init_noxml(init_comm)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int allocate_buffer(int when,
  */
-  __pyx_r = adios_define_attribute(__pyx_v_group, __pyx_v_name, __pyx_v_path, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_v_value, __pyx_v_var);
+  __pyx_r = adios_init_noxml(__pyx_v_5adios_init_comm);
   goto __pyx_L0;
 
-  /* "adios.pyx":394
- *                             local_offsets)
+  /* "adios.pyx":448
+ * ## ====================
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             char * name,
- *                             char * path,
+ * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
  */
 
   /* function exit code */
@@ -5339,33 +6005,20 @@ static int __pyx_f_5adios_define_attribute(int64_t __pyx_v_group, char *__pyx_v_
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_33define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_32define_attribute[] = "define_attribute(int64_t group, char *name, char *path, int atype, char *value, char *var) -> int";
-static PyObject *__pyx_pw_5adios_33define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  char *__pyx_v_name;
-  char *__pyx_v_path;
-  int __pyx_v_atype;
-  char *__pyx_v_value;
-  char *__pyx_v_var;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_33init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_32init_noxml[] = "init_noxml(MPI_Comm comm=MPI_COMM_WORLD) -> int";
+static PyObject *__pyx_pw_5adios_33init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  MPI_Comm __pyx_v_comm;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
+  __Pyx_RefNannySetupContext("init_noxml (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_comm,0};
+    PyObject* values[1] = {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;
@@ -5373,88 +6026,63 @@ static PyObject *__pyx_pw_5adios_33define_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--;
-        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_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[0] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) __PYX_ERR(0, 448, __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);
+      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;
+      }
+    }
+    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)
+    } else {
+      __pyx_v_comm = __pyx_k__9;
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_path = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_value = __Pyx_PyObject_AsString(values[4]); if (unlikely((!__pyx_v_value) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_var = __Pyx_PyObject_AsString(values[5]); if (unlikely((!__pyx_v_var) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 448, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_32define_attribute(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var);
+  __pyx_r = __pyx_pf_5adios_32init_noxml(__pyx_self, __pyx_v_comm);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_32define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_value, char *__pyx_v_var) {
+static PyObject *__pyx_pf_5adios_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self, MPI_Comm __pyx_v_comm) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  int __pyx_t_1;
+  struct __pyx_opt_args_5adios_init_noxml __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("init_noxml", 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_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 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_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5462,377 +6090,60 @@ static PyObject *__pyx_pf_5adios_32define_attribute(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":407
- *                                    var)
+/* "adios.pyx":453
+ *     return adios_init_noxml(init_comm)
  * 
- * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
- *                                     char * name,
- *                                     char * path,
+ * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
+ *                           uint64_t buffer_size):
+ *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
  */
 
-static PyObject *__pyx_pw_5adios_35define_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, char *__pyx_v_name, char *__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;
+static PyObject *__pyx_pw_5adios_35allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v_buffer_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
   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;
-  ADIOS_DATATYPES __pyx_t_8;
-  Py_ssize_t __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
-
-  /* "adios.pyx":412
- *                                     val):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
- */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "adios.pyx":413
- *     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_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
-
-      /* "adios.pyx":414
- *     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_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __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;
-      goto __pyx_L4;
-    }
-    /*else*/ {
-
-      /* "adios.pyx":416
- *             val_ = val
- *         else:
- *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
- *     else:
- *         val_ = np.array(val)
- */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-      __pyx_t_6 = 0;
-    }
-    __pyx_L4:;
-    goto __pyx_L3;
-  }
-  /*else*/ {
-
-    /* "adios.pyx":418
- *             val_ = np.array(val, copy=True)
- *     else:
- *         val_ = np.array(val)             # <<<<<<<<<<<<<<
- * 
- *     atype = np2adiostype(val_.dtype)
- */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-    } else {
-      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-  }
-  __pyx_L3:;
-
-  /* "adios.pyx":420
- *         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_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __pyx_f_5adios_np2adiostype(((PyArray_Descr *)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __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":424
- *     cdef char * pt1
- *     cdef char ** pt2
- *     if (val_.dtype.char == 'S'):             # <<<<<<<<<<<<<<
- *         if (val_.size == 1):
- *             pt1 = PyString_AsString(val)
- */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (__pyx_t_2) {
-
-    /* "adios.pyx":425
- *     cdef char ** pt2
- *     if (val_.dtype.char == 'S'):
- *         if (val_.size == 1):             # <<<<<<<<<<<<<<
- *             pt1 = PyString_AsString(val)
- *             adios_define_attribute_byvalue (group,
- */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
-
-      /* "adios.pyx":426
- *     if (val_.dtype.char == 'S'):
- *         if (val_.size == 1):
- *             pt1 = PyString_AsString(val)             # <<<<<<<<<<<<<<
- *             adios_define_attribute_byvalue (group,
- *                                             name,
- */
-      __pyx_t_7 = PyString_AsString(__pyx_v_val); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_pt1 = __pyx_t_7;
-
-      /* "adios.pyx":430
- *                                             name,
- *                                             path,
- *                                             DATATYPE.string,             # <<<<<<<<<<<<<<
- *                                             1,
- *                                             <void *> pt1)
- */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_string); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_t_6)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-      /* "adios.pyx":427
- *         if (val_.size == 1):
- *             pt1 = PyString_AsString(val)
- *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
- *                                             name,
- *                                             path,
- */
-      adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_t_8, 1, ((void *)__pyx_v_pt1));
-      goto __pyx_L6;
-    }
-    /*else*/ {
-
-      /* "adios.pyx":434
- *                                             <void *> pt1)
- *         else:
- *             pt2 = to_cstring_array(val)             # <<<<<<<<<<<<<<
- *             adios_define_attribute_byvalue (group,
- *                                             name,
- */
-      __pyx_v_pt2 = __pyx_f_5adios_to_cstring_array(__pyx_v_val);
-
-      /* "adios.pyx":438
- *                                             name,
- *                                             path,
- *                                             DATATYPE.string_array,             # <<<<<<<<<<<<<<
- *                                             len(val),
- *                                             <void *> pt2)
- */
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_string_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_8 = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_t_4)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-      /* "adios.pyx":439
- *                                             path,
- *                                             DATATYPE.string_array,
- *                                             len(val),             # <<<<<<<<<<<<<<
- *                                             <void *> pt2)
- *             free(pt2)
- */
-      __pyx_t_9 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-      /* "adios.pyx":435
- *         else:
- *             pt2 = to_cstring_array(val)
- *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
- *                                             name,
- *                                             path,
- */
-      adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_t_8, __pyx_t_9, ((void *)__pyx_v_pt2));
-
-      /* "adios.pyx":441
- *                                             len(val),
- *                                             <void *> pt2)
- *             free(pt2)             # <<<<<<<<<<<<<<
- *     else:
- *         adios_define_attribute_byvalue (group,
- */
-      free(__pyx_v_pt2);
-    }
-    __pyx_L6:;
-    goto __pyx_L5;
-  }
-  /*else*/ {
-
-    /* "adios.pyx":446
- *                                         name,
- *                                         path,
- *                                         <ADIOS_DATATYPES> atype,             # <<<<<<<<<<<<<<
- *                                         val_.size,
- *                                         <void *> val_.data)
- */
-    __pyx_t_8 = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannySetupContext("allocate_buffer", 0);
 
-    /* "adios.pyx":447
- *                                         path,
- *                                         <ADIOS_DATATYPES> atype,
- *                                         val_.size,             # <<<<<<<<<<<<<<
- *                                         <void *> val_.data)
+  /* "adios.pyx":455
+ * cpdef int allocate_buffer(int when,
+ *                           uint64_t buffer_size):
+ *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,             # <<<<<<<<<<<<<<
+ *                                  buffer_size)
  * 
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-    /* "adios.pyx":443
- *             free(pt2)
- *     else:
- *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
- *                                         name,
- *                                         path,
- */
-    adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, ((ADIOS_DATATYPES)__pyx_t_8), __pyx_t_10, ((void *)__pyx_v_val_->data));
-  }
-  __pyx_L5:;
+  __pyx_r = adios_allocate_buffer(((ADIOS_BUFFER_ALLOC_WHEN)__pyx_v_when), __pyx_v_buffer_size);
+  goto __pyx_L0;
 
-  /* "adios.pyx":407
- *                                    var)
+  /* "adios.pyx":453
+ *     return adios_init_noxml(init_comm)
  * 
- * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
- *                                     char * name,
- *                                     char * path,
+ * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
+ *                           uint64_t buffer_size):
+ *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
  */
 
   /* 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_WriteUnraisable("adios.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
-  __Pyx_XDECREF(__pyx_v_atype);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_35define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_34define_attribute_byvalue[] = "define_attribute_byvalue(int64_t group, char *name, char *path, val) -> int";
-static PyObject *__pyx_pw_5adios_35define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  char *__pyx_v_name;
-  char *__pyx_v_path;
-  PyObject *__pyx_v_val = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_35allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_34allocate_buffer[] = "allocate_buffer(int when, uint64_t buffer_size) -> int";
+static PyObject *__pyx_pw_5adios_35allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_when;
+  uint64_t __pyx_v_buffer_size;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute_byvalue (wrapper)", 0);
+  __Pyx_RefNannySetupContext("allocate_buffer (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_val,0};
-    PyObject* values[4] = {0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_when,&__pyx_n_s_buffer_size,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  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;
@@ -5841,65 +6152,48 @@ static PyObject *__pyx_pw_5adios_35define_attribute_byvalue(PyObject *__pyx_self
       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_when)) != 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_byvalue", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); __PYX_ERR(0, 453, __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_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) __PYX_ERR(0, 453, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+    } 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);
-      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_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_path = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = values[3];
+    __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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 453, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_34define_attribute_byvalue(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val);
+  __pyx_r = __pyx_pf_5adios_34allocate_buffer(__pyx_self, __pyx_v_when, __pyx_v_buffer_size);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_34define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, PyObject *__pyx_v_val) {
+static PyObject *__pyx_pf_5adios_34allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
+  __Pyx_RefNannySetupContext("allocate_buffer", 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_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __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, 453, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5908,7 +6202,7 @@ static PyObject *__pyx_pf_5adios_34define_attribute_byvalue(CYTHON_UNUSED PyObje
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5916,76 +6210,124 @@ static PyObject *__pyx_pf_5adios_34define_attribute_byvalue(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "adios.pyx":450
- *                                         <void *> val_.data)
+/* "adios.pyx":458
+ *                                  buffer_size)
  * 
- * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
- *                          char * method,
- *                          char * parameters = "",
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
+ *                             int stats = 1):
  */
 
-static PyObject *__pyx_pw_5adios_37select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_select_method(int64_t __pyx_v_group, char *__pyx_v_method, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_select_method *__pyx_optional_args) {
-  char *__pyx_v_parameters = ((char *)__pyx_k__7);
-  char *__pyx_v_base_path = ((char *)__pyx_k__7);
-  int __pyx_r;
+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);
+  int64_t __pyx_v_id;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("select_method", 0);
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  __Pyx_RefNannySetupContext("declare_group", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_parameters = __pyx_optional_args->parameters;
+      __pyx_v_time_index = __pyx_optional_args->time_index;
       if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_base_path = __pyx_optional_args->base_path;
+        __pyx_v_stats = __pyx_optional_args->stats;
       }
     }
   }
 
-  /* "adios.pyx":454
- *                          char * parameters = "",
- *                          char * base_path = ""):
- *     return adios_select_method (group,             # <<<<<<<<<<<<<<
- *                                 method,
- *                                 parameters,
+  /* "adios.pyx":461
+ *                             str time_index = "",
+ *                             int stats = 1):
+ *     cdef int64_t id = 0             # <<<<<<<<<<<<<<
+ *     adios_declare_group (&id,
+ *                          s2b(name),
+ */
+  __pyx_v_id = 0;
+
+  /* "adios.pyx":463
+ *     cdef int64_t id = 0
+ *     adios_declare_group (&id,
+ *                          s2b(name),             # <<<<<<<<<<<<<<
+ *                          s2b(time_index),
+ *                          <ADIOS_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_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)
+
+  /* "adios.pyx":464
+ *     adios_declare_group (&id,
+ *                          s2b(name),
+ *                          s2b(time_index),             # <<<<<<<<<<<<<<
+ *                          <ADIOS_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_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)
+
+  /* "adios.pyx":462
+ *                             int stats = 1):
+ *     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));
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios.pyx":466
+ *                          s2b(time_index),
+ *                          <ADIOS_FLAG> stats)
+ *     return id             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var(int64_t group_id,
  */
-  __pyx_r = adios_select_method(__pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
+  __pyx_r = __pyx_v_id;
   goto __pyx_L0;
 
-  /* "adios.pyx":450
- *                                         <void *> val_.data)
+  /* "adios.pyx":458
+ *                                  buffer_size)
  * 
- * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
- *                          char * method,
- *                          char * parameters = "",
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
+ *                             int stats = 1):
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.declare_group", __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_37select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_36select_method[] = "select_method(int64_t group, char *method, char *parameters='', char *base_path='') -> int";
-static PyObject *__pyx_pw_5adios_37select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  char *__pyx_v_method;
-  char *__pyx_v_parameters;
-  char *__pyx_v_base_path;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+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 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;
+  int __pyx_v_stats;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("select_method (wrapper)", 0);
+  __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_method,&__pyx_n_s_parameters,&__pyx_n_s_base_path,0};
-    PyObject* values[4] = {0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_time_index,&__pyx_n_s_stats,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject*)__pyx_kp_s__10);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
-        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);
@@ -5995,81 +6337,73 @@ static PyObject *__pyx_pw_5adios_37select_method(PyObject *__pyx_self, PyObject
       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_name)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         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_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index);
+          if (value) { values[1] = value; kw_args--; }
         }
         case  2:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stats);
           if (value) { values[2] = value; kw_args--; }
         }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_base_path);
-          if (value) { values[3] = value; kw_args--; }
-        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_method") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 458, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         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_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_method = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_method) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_name = ((PyObject*)values[0]);
+    __pyx_v_time_index = ((PyObject*)values[1]);
     if (values[2]) {
-      __pyx_v_parameters = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_parameters) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_parameters = ((char *)__pyx_k__7);
-    }
-    if (values[3]) {
-      __pyx_v_base_path = __Pyx_PyObject_AsString(values[3]); if (unlikely((!__pyx_v_base_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __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)
     } else {
-      __pyx_v_base_path = ((char *)__pyx_k__7);
+      __pyx_v_stats = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 458, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_36select_method(__pyx_self, __pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
+  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)
+  __pyx_r = __pyx_pf_5adios_36declare_group(__pyx_self, __pyx_v_name, __pyx_v_time_index, __pyx_v_stats);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_36select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_method, char *__pyx_v_parameters, char *__pyx_v_base_path) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_5adios_select_method __pyx_t_2;
+  int64_t __pyx_t_1;
+  struct __pyx_opt_args_5adios_declare_group __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("select_method", 0);
+  __Pyx_RefNannySetupContext("declare_group", 0);
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 2;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6078,7 +6412,7 @@ static PyObject *__pyx_pf_5adios_36select_method(CYTHON_UNUSED PyObject *__pyx_s
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -6086,590 +6420,409 @@ static PyObject *__pyx_pf_5adios_36select_method(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":464
- * ## ====================
+/* "adios.pyx":468
+ *     return id
  * 
- * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None
+ * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ *                      str name,
+ *                      str path,
  */
 
-static PyObject *__pyx_pw_5adios_39adios2npdtype(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;
-  PyArray_Descr *__pyx_r = NULL;
+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) {
+  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;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
+  char *__pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  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;
+  __Pyx_RefNannySetupContext("define_var", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_strlen = __pyx_optional_args->strlen;
+      __pyx_v_dimensions = __pyx_optional_args->dimensions;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_global_dimensions = __pyx_optional_args->global_dimensions;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_local_offsets = __pyx_optional_args->local_offsets;
+        }
+      }
     }
   }
 
-  /* "adios.pyx":466
- * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None             # <<<<<<<<<<<<<<
- *     if t == adios_byte:
- *         ntype = np.dtype(np.int8)
+  /* "adios.pyx":476
+ *                      str local_offsets = ""):
+ *     return adios_define_var(group_id,
+ *                             s2b(name),             # <<<<<<<<<<<<<<
+ *                             s2b(path),
+ *                             <ADIOS_DATATYPES> atype,
  */
-  __Pyx_INCREF(Py_None);
-  __pyx_v_ntype = ((PyArray_Descr *)Py_None);
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_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, 476, __pyx_L1_error)
 
-  /* "adios.pyx":493
- *     elif t == adios_double_complex:
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype((np.str_, strlen))
- *     else:
+  /* "adios.pyx":477
+ *     return adios_define_var(group_id,
+ *                             s2b(name),
+ *                             s2b(path),             # <<<<<<<<<<<<<<
+ *                             <ADIOS_DATATYPES> atype,
+ *                             s2b(dimensions),
  */
-  switch (__pyx_v_t) {
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 477, __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)
 
-    /* "adios.pyx":467
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None
- *     if t == adios_byte:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int8)
- *     elif t == adios_short:
+  /* "adios.pyx":479
+ *                             s2b(path),
+ *                             <ADIOS_DATATYPES> atype,
+ *                             s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                             s2b(global_dimensions),
+ *                             s2b(local_offsets))
  */
-    case adios_byte:
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 479, __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)
 
-    /* "adios.pyx":468
- *     cdef np.dtype ntype = None
- *     if t == adios_byte:
- *         ntype = np.dtype(np.int8)             # <<<<<<<<<<<<<<
- *     elif t == adios_short:
- *         ntype = np.dtype(np.int16)
+  /* "adios.pyx":480
+ *                             <ADIOS_DATATYPES> atype,
+ *                             s2b(dimensions),
+ *                             s2b(global_dimensions),             # <<<<<<<<<<<<<<
+ *                             s2b(local_offsets))
+ * 
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __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_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)
 
-    /* "adios.pyx":469
- *     if t == adios_byte:
- *         ntype = np.dtype(np.int8)
- *     elif t == adios_short:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int16)
- *     elif t == adios_integer:
+  /* "adios.pyx":481
+ *                             s2b(dimensions),
+ *                             s2b(global_dimensions),
+ *                             s2b(local_offsets))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_attribute (int64_t group,
  */
-    case adios_short:
+  __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_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)
 
-    /* "adios.pyx":470
- *         ntype = np.dtype(np.int8)
- *     elif t == adios_short:
- *         ntype = np.dtype(np.int16)             # <<<<<<<<<<<<<<
- *     elif t == adios_integer:
- *         ntype = np.dtype(np.int32)
+  /* "adios.pyx":475
+ *                      str global_dimensions = "",
+ *                      str local_offsets = ""):
+ *     return adios_define_var(group_id,             # <<<<<<<<<<<<<<
+ *                             s2b(name),
+ *                             s2b(path),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __pyx_r = adios_define_var(__pyx_v_group_id, __pyx_t_2, __pyx_t_4, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_t_6, __pyx_t_8, __pyx_t_10);
+  __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;
+  goto __pyx_L0;
 
-    /* "adios.pyx":471
- *     elif t == adios_short:
- *         ntype = np.dtype(np.int16)
- *     elif t == adios_integer:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int32)
- *     elif t == adios_long:
+  /* "adios.pyx":468
+ *     return id
+ * 
+ * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ *                      str name,
+ *                      str path,
  */
-    case adios_integer:
 
-    /* "adios.pyx":472
- *         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_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* 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_WriteUnraisable("adios.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":473
- *     elif t == adios_integer:
- *         ntype = np.dtype(np.int32)
- *     elif t == adios_long:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int64)
- *     elif t == adios_unsigned_byte:
- */
-    case adios_long:
+/* 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 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;
+  PyObject *__pyx_v_path = 0;
+  int __pyx_v_atype;
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_global_dimensions = 0;
+  PyObject *__pyx_v_local_offsets = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_dimensions,&__pyx_n_s_global_dimensions,&__pyx_n_s_local_offsets,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+    values[4] = ((PyObject*)__pyx_kp_s__10);
+    values[5] = ((PyObject*)__pyx_kp_s__10);
+    values[6] = ((PyObject*)__pyx_kp_s__10);
+    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_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--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); __PYX_ERR(0, 468, __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)
+        }
+        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)
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_global_dimensions);
+          if (value) { values[5] = value; kw_args--; }
+        }
+        case  6:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_local_offsets);
+          if (value) { values[6] = 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, 468, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_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);
+        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_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_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_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)
+  __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);
 
-    /* "adios.pyx":474
- *         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_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":475
- *     elif t == adios_long:
- *         ntype = np.dtype(np.int64)
- *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint8)
- *     elif t == adios_unsigned_short:
+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;
+  struct __pyx_opt_args_5adios_define_var __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("define_var", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 3;
+  __pyx_t_2.dimensions = __pyx_v_dimensions;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":483
+ *                             s2b(local_offsets))
+ * 
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
  */
-    case adios_unsigned_byte:
 
-    /* "adios.pyx":476
- *         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)
+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) {
+  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":490
+ *                             str var):
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),             # <<<<<<<<<<<<<<
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __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":477
- *     elif t == adios_unsigned_byte:
- *         ntype = np.dtype(np.uint8)
- *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint16)
- *     elif t == adios_unsigned_integer:
+  /* "adios.pyx":491
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),
+ *                                    s2b(path),             # <<<<<<<<<<<<<<
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
  */
-    case adios_unsigned_short:
+  __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)
 
-    /* "adios.pyx":478
- *         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)
+  /* "adios.pyx":493
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),             # <<<<<<<<<<<<<<
+ *                                    s2b(var))
+ * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __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":479
- *     elif t == adios_unsigned_short:
- *         ntype = np.dtype(np.uint16)
- *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint32)
- *     elif t == adios_unsigned_long:
+  /* "adios.pyx":494
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
+ *                                    s2b(var))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_attribute_byvalue (int64_t group,
  */
-    case adios_unsigned_integer:
+  __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":480
- *         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)
+  /* "adios.pyx":489
+ *                             str value,
+ *                             str var):
+ *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
+ *                                    s2b(name),
+ *                                    s2b(path),
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __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":481
- *     elif t == adios_unsigned_integer:
- *         ntype = np.dtype(np.uint32)
- *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint64)
- *     elif t == adios_real:
- */
-    case adios_unsigned_long:
-
-    /* "adios.pyx":482
- *         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_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios.pyx":483
- *     elif t == adios_unsigned_long:
- *         ntype = np.dtype(np.uint64)
- *     elif t == adios_real:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.float32)
- *     elif t == adios_double:
- */
-    case adios_real:
-
-    /* "adios.pyx":484
- *         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_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios.pyx":485
- *     elif t == adios_real:
- *         ntype = np.dtype(np.float32)
- *     elif t == adios_double:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.float64)
- *     elif t == adios_long_double:
- */
-    case adios_double:
-
-    /* "adios.pyx":486
- *         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_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios.pyx":487
- *     elif t == adios_double:
- *         ntype = np.dtype(np.float64)
- *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.float128)
- *     elif t == adios_complex:
- */
-    case adios_long_double:
-
-    /* "adios.pyx":488
- *         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_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios.pyx":489
- *     elif t == adios_long_double:
- *         ntype = np.dtype(np.float128)
- *     elif t == adios_complex:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.complex64)
- *     elif t == adios_double_complex:
- */
-    case adios_complex:
-
-    /* "adios.pyx":490
- *         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_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios.pyx":491
- *     elif t == adios_complex:
- *         ntype = np.dtype(np.complex64)
- *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:
- */
-    case adios_double_complex:
-
-    /* "adios.pyx":492
- *         ntype = np.dtype(np.complex64)
- *     elif t == adios_double_complex:
- *         ntype = np.dtype(np.complex128)             # <<<<<<<<<<<<<<
- *     elif t == adios_string:
- *         ntype = np.dtype((np.str_, strlen))
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios.pyx":493
- *     elif t == adios_double_complex:
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype((np.str_, strlen))
- *     else:
- */
-    case adios_string:
-
-    /* "adios.pyx":494
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:
- *         ntype = np.dtype((np.str_, strlen))             # <<<<<<<<<<<<<<
- *     else:
- *         ntype = None
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_1 = 0;
-    __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
-    __Pyx_GIVEREF(__pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __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;
-    break;
-    default:
-
-    /* "adios.pyx":496
- *         ntype = np.dtype((np.str_, strlen))
- *     else:
- *         ntype = None             # <<<<<<<<<<<<<<
- * 
- *     return ntype
- */
-    __Pyx_INCREF(Py_None);
-    __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)Py_None));
-    break;
-  }
-
-  /* "adios.pyx":498
- *         ntype = None
- * 
- *     return ntype             # <<<<<<<<<<<<<<
- * 
- * cdef printfile(ADIOS_FILE * f):
- */
-  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __Pyx_INCREF(((PyObject *)__pyx_v_ntype));
-  __pyx_r = __pyx_v_ntype;
-  goto __pyx_L0;
-
-  /* "adios.pyx":464
- * ## ====================
- * 
- * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None
+  /* "adios.pyx":483
+ *                             s2b(local_offsets))
+ * 
+ * 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_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_XDECREF((PyObject *)__pyx_v_ntype);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_39adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_38adios2npdtype[] = "adios2npdtype(ADIOS_DATATYPES t, int strlen=1) -> dtype\n strlen apply only to string type ";
-static PyObject *__pyx_pw_5adios_39adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  ADIOS_DATATYPES __pyx_v_t;
-  int __pyx_v_strlen;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+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;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("adios2npdtype (wrapper)", 0);
+  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_strlen,0};
-    PyObject* values[2] = {0,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;
@@ -6678,60 +6831,84 @@ static PyObject *__pyx_pw_5adios_39adios2npdtype(PyObject *__pyx_self, PyObject
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_strlen);
-          if (value) { values[1] = value; kw_args--; }
+        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, 483, __pyx_L3_error)
         }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_t = ((ADIOS_DATATYPES)PyInt_AsLong(values[0])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_strlen = ((int)1);
+        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--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); __PYX_ERR(0, 483, __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)
+      }
+    } 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, 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]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 483, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_38adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
+  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);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_38adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_5adios_adios2npdtype __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  __Pyx_RefNannySetupContext("define_attribute", 0);
   __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_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6740,7 +6917,7 @@ static PyObject *__pyx_pf_5adios_38adios2npdtype(CYTHON_UNUSED PyObject *__pyx_s
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -6748,1685 +6925,1499 @@ static PyObject *__pyx_pf_5adios_38adios2npdtype(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":500
- *     return ntype
+/* "adios.pyx":496
+ *                                    s2b(var))
  * 
- * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
- *     print '%15s : %lu' % ('fh', f.fh)
- *     print '%15s : %d' % ('nvars', f.nvars)
+ * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
+ *                                     str name,
+ *                                     str path,
  */
 
-static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
-  int __pyx_v_i;
-  PyObject *__pyx_r = NULL;
+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;
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printfile", 0);
+  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":501
- * 
- * 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)])
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->fh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_fh);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fh);
-  __Pyx_GIVEREF(__pyx_n_s_fh);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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":502
- * 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)
+    /* "adios.pyx":502
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_nvars);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nvars);
-  __Pyx_GIVEREF(__pyx_n_s_nvars);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __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
- *     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)])
+      /* "adios.pyx":503
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:
+ *             val_ = val             # <<<<<<<<<<<<<<
+ *         else:
+ *             val_ = np.array(val, copy=True)
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_var_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_var_namelist);
-  __Pyx_GIVEREF(__pyx_n_s_var_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      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;
 
-  /* "adios.pyx":504
- *     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)
+      /* "adios.pyx":502
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_nattrs);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nattrs);
-  __Pyx_GIVEREF(__pyx_n_s_nattrs);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L4;
+    }
 
-  /* "adios.pyx":505
- *     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)
+    /* "adios.pyx":505
+ *             val_ = val
+ *         else:
+ *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
+ *     else:
+ *         val_ = np.array(val)
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_attr_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_attr_namelist);
-  __Pyx_GIVEREF(__pyx_n_s_attr_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*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:;
 
-  /* "adios.pyx":506
- *     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)
+    /* "adios.pyx":501
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_current_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_current_step);
-  __Pyx_GIVEREF(__pyx_n_s_current_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L3;
+  }
 
   /* "adios.pyx":507
- *     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_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_last_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_last_step);
-  __Pyx_GIVEREF(__pyx_n_s_last_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":508
- *     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_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_path);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_path);
-  __Pyx_GIVEREF(__pyx_n_s_path);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":509
- *     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_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_endianness);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_endianness);
-  __Pyx_GIVEREF(__pyx_n_s_endianness);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":510
- *     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)
+ *             val_ = np.array(val, copy=True)
+ *     else:
+ *         val_ = np.array(val)             # <<<<<<<<<<<<<<
  * 
+ *     atype = np2adiostype(val_.dtype)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_version);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_version);
-  __Pyx_GIVEREF(__pyx_n_s_version);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*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":511
- *     print '%15s : %d' % ('endianness', f.endianness)
- *     print '%15s : %d' % ('version', f.version)
- *     print '%15s : %lu' % ('file_size', f.file_size)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":509
+ *         val_ = np.array(val)
  * 
- * cdef printvar(ADIOS_VARINFO * v):
- */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->file_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_file_size);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_file_size);
-  __Pyx_GIVEREF(__pyx_n_s_file_size);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":500
- *     return ntype
+ *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
  * 
- * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
- *     print '%15s : %lu' % ('fh', f.fh)
- *     print '%15s : %d' % ('nvars', f.nvars)
+ *     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, 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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_v_atype = __pyx_t_4;
+  __pyx_t_4 = 0;
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.printfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":513
+ *     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_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_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)
+  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_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":513
- *     print '%15s : %lu' % ('file_size', f.file_size)
- * 
- * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
- *     print '%15s : %d' % ('varid', v.varid)
- *     print '%15s : %s' % ('type', adios2npdtype(v.type))
+    /* "adios.pyx":514
+ *     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_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_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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_1) {
 
-static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
-  int __pyx_v_i;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printvar", 0);
+      /* "adios.pyx":515
+ *     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_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_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)
+      __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":514
- * 
- * cdef printvar(ADIOS_VARINFO * v):
- *     print '%15s : %d' % ('varid', v.varid)             # <<<<<<<<<<<<<<
- *     print '%15s : %s' % ('type', adios2npdtype(v.type))
- *     print '%15s : %d' % ('ndim', v.ndim)
+      /* "adios.pyx":516
+ *         if (val_.size == 1):
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)             # <<<<<<<<<<<<<<
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_varid);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_varid);
-  __Pyx_GIVEREF(__pyx_n_s_varid);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_7 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(0, 516, __pyx_L1_error)
+      __pyx_v_pt1 = __pyx_t_7;
 
-  /* "adios.pyx":515
- * 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)])
+      /* "adios.pyx":518
+ *             pt1 = PyBytes_AsString(bstr)
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),             # <<<<<<<<<<<<<<
+ *                                             s2b(path),
+ *                                             DATATYPE.string,
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_v->type, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_type);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_type);
-  __Pyx_GIVEREF(__pyx_n_s_type);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __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)
 
-  /* "adios.pyx":516
- *     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)
+      /* "adios.pyx":519
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),
+ *                                             s2b(path),             # <<<<<<<<<<<<<<
+ *                                             DATATYPE.string,
+ *                                             1,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_ndim);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ndim);
-  __Pyx_GIVEREF(__pyx_n_s_ndim);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 519, __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)
 
-  /* "adios.pyx":517
- *     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)
- * 
+      /* "adios.pyx":520
+ *                                             s2b(name),
+ *                                             s2b(path),
+ *                                             DATATYPE.string,             # <<<<<<<<<<<<<<
+ *                                             1,
+ *                                             <void *> pt1)
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_dims);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_dims);
-  __Pyx_GIVEREF(__pyx_n_s_dims);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":518
- *     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(bytes name):
+      /* "adios.pyx":517
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)
+ *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                             s2b(name),
+ *                                             s2b(path),
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_nsteps);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nsteps);
-  __Pyx_GIVEREF(__pyx_n_s_nsteps);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      adios_define_attribute_byvalue(__pyx_v_group, __pyx_t_7, __pyx_t_8, __pyx_t_9, 1, ((void *)__pyx_v_pt1));
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios.pyx":513
- *     print '%15s : %lu' % ('file_size', f.file_size)
- * 
- * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
- *     print '%15s : %d' % ('varid', v.varid)
- *     print '%15s : %s' % ('type', adios2npdtype(v.type))
+      /* "adios.pyx":514
+ *     cdef char ** pt2
+ *     if (val_.dtype.char in ('S', 'U')):
+ *         if (val_.size == 1):             # <<<<<<<<<<<<<<
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)
  */
+      goto __pyx_L8;
+    }
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.printvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":524
+ *                                             <void *> pt1)
+ *         else:
+ *             pt2 = to_cstring_array(val)             # <<<<<<<<<<<<<<
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),
+ */
+    /*else*/ {
+      __pyx_v_pt2 = __pyx_f_5adios_to_cstring_array(__pyx_v_val);
 
-/* "adios.pyx":520
- *     print '%15s : %d' % ('nsteps', v.nsteps)
- * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):             # <<<<<<<<<<<<<<
- *     if (name == "BP"):
- *         method = READ_METHOD.BP
+      /* "adios.pyx":526
+ *             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_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)
 
-static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_name) {
-  PyObject *__pyx_v_method = NULL;
-  ADIOS_READ_METHOD __pyx_r;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  ADIOS_READ_METHOD __pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("str2adiosreadmethod", 0);
+      /* "adios.pyx":527
+ *             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_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)
 
-  /* "adios.pyx":521
- * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
- *     if (name == "BP"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.BP
- *     elif (name == "BP_AGGREGATE"):
- */
-  __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_BP, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "adios.pyx":522
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
- *     if (name == "BP"):
- *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
- *     elif (name == "BP_AGGREGATE"):
- *         method = READ_METHOD.BP_AGGREGATE
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L3;
-  }
-
-  /* "adios.pyx":523
- *     if (name == "BP"):
- *         method = READ_METHOD.BP
- *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.BP_AGGREGATE
- *     elif (name == "DATASPACES"):
- */
-  __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_BP_AGGREGATE, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-
-    /* "adios.pyx":524
- *         method = READ_METHOD.BP
- *     elif (name == "BP_AGGREGATE"):
- *         method = READ_METHOD.BP_AGGREGATE             # <<<<<<<<<<<<<<
- *     elif (name == "DATASPACES"):
- *         method = READ_METHOD.DATASPACES
+      /* "adios.pyx":528
+ *                                             s2b(name),
+ *                                             s2b(path),
+ *                                             DATATYPE.string_array,             # <<<<<<<<<<<<<<
+ *                                             len(val),
+ *                                             <void *> pt2)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_BP_AGGREGATE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_v_method = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 528, __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":525
- *     elif (name == "BP_AGGREGATE"):
- *         method = READ_METHOD.BP_AGGREGATE
- *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.DATASPACES
- *     elif (name == "DIMES"):
+      /* "adios.pyx":529
+ *                                             s2b(path),
+ *                                             DATATYPE.string_array,
+ *                                             len(val),             # <<<<<<<<<<<<<<
+ *                                             <void *> pt2)
+ *             free(pt2)
  */
-  __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_DATASPACES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+      __pyx_t_10 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 529, __pyx_L1_error)
 
-    /* "adios.pyx":526
- *         method = READ_METHOD.BP_AGGREGATE
- *     elif (name == "DATASPACES"):
- *         method = READ_METHOD.DATASPACES             # <<<<<<<<<<<<<<
- *     elif (name == "DIMES"):
- *         method = READ_METHOD.DIMES
+      /* "adios.pyx":525
+ *         else:
+ *             pt2 = to_cstring_array(val)
+ *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                             s2b(name),
+ *                                             s2b(path),
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DATASPACES); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L3;
-  }
+      adios_define_attribute_byvalue(__pyx_v_group, __pyx_t_8, __pyx_t_7, __pyx_t_9, __pyx_t_10, ((void *)__pyx_v_pt2));
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":527
- *     elif (name == "DATASPACES"):
- *         method = READ_METHOD.DATASPACES
- *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.DIMES
- *     elif (name == "FLEXPATH"):
+      /* "adios.pyx":531
+ *                                             len(val),
+ *                                             <void *> pt2)
+ *             free(pt2)             # <<<<<<<<<<<<<<
+ *     else:
+ *         adios_define_attribute_byvalue (group,
  */
-  __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_DIMES, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+      free(__pyx_v_pt2);
+    }
+    __pyx_L8:;
 
-    /* "adios.pyx":528
- *         method = READ_METHOD.DATASPACES
- *     elif (name == "DIMES"):
- *         method = READ_METHOD.DIMES             # <<<<<<<<<<<<<<
- *     elif (name == "FLEXPATH"):
- *         method = READ_METHOD.FLEXPATH
+    /* "adios.pyx":513
+ *     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_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DIMES); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_v_method = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
+    goto __pyx_L5;
   }
 
-  /* "adios.pyx":529
- *     elif (name == "DIMES"):
- *         method = READ_METHOD.DIMES
- *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.FLEXPATH
- *     elif (name == "ICEE"):
+  /* "adios.pyx":533
+ *             free(pt2)
+ *     else:
+ *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                         s2b(name),
+ *                                         s2b(path),
  */
-  __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_FLEXPATH, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  /*else*/ {
 
-    /* "adios.pyx":530
- *         method = READ_METHOD.DIMES
- *     elif (name == "FLEXPATH"):
- *         method = READ_METHOD.FLEXPATH             # <<<<<<<<<<<<<<
- *     elif (name == "ICEE"):
- *         method = READ_METHOD.ICEE
+    /* "adios.pyx":534
+ *     else:
+ *         adios_define_attribute_byvalue (group,
+ *                                         s2b(name),             # <<<<<<<<<<<<<<
+ *                                         s2b(path),
+ *                                         <ADIOS_DATATYPES> atype,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FLEXPATH); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 534, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L3;
-  }
+    __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L1_error)
 
-  /* "adios.pyx":531
- *     elif (name == "FLEXPATH"):
- *         method = READ_METHOD.FLEXPATH
- *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.ICEE
- *     else:
+    /* "adios.pyx":535
+ *         adios_define_attribute_byvalue (group,
+ *                                         s2b(name),
+ *                                         s2b(path),             # <<<<<<<<<<<<<<
+ *                                         <ADIOS_DATATYPES> atype,
+ *                                         val_.size,
  */
-  __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_ICEE, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+    __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 535, __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)
 
-    /* "adios.pyx":532
- *         method = READ_METHOD.FLEXPATH
- *     elif (name == "ICEE"):
- *         method = READ_METHOD.ICEE             # <<<<<<<<<<<<<<
- *     else:
- *         print '[WARN] Invalid read method name:', name, '. Use default BP method'
+    /* "adios.pyx":536
+ *                                         s2b(name),
+ *                                         s2b(path),
+ *                                         <ADIOS_DATATYPES> atype,             # <<<<<<<<<<<<<<
+ *                                         val_.size,
+ *                                         <void *> val_.data)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ICEE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_v_method = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+    __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 536, __pyx_L1_error)
 
-    /* "adios.pyx":534
- *         method = READ_METHOD.ICEE
- *     else:
- *         print '[WARN] Invalid read method name:', name, '. Use default BP method'             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.BP
+    /* "adios.pyx":537
+ *                                         s2b(path),
+ *                                         <ADIOS_DATATYPES> atype,
+ *                                         val_.size,             # <<<<<<<<<<<<<<
+ *                                         <void *> val_.data)
  * 
  */
-    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __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, 537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_kp_s_WARN_Invalid_read_method_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_s_WARN_Invalid_read_method_name);
-    __Pyx_GIVEREF(__pyx_kp_s_WARN_Invalid_read_method_name);
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __Pyx_INCREF(__pyx_kp_s_Use_default_BP_method);
-    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_s_Use_default_BP_method);
-    __Pyx_GIVEREF(__pyx_kp_s_Use_default_BP_method);
-    if (__Pyx_Print(0, __pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __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, 537, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":535
+    /* "adios.pyx":533
+ *             free(pt2)
  *     else:
- *         print '[WARN] Invalid read method name:', name, '. Use default BP method'
- *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
- * 
- *     return method
+ *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                         s2b(name),
+ *                                         s2b(path),
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
+    adios_define_attribute_byvalue(__pyx_v_group, __pyx_t_7, __pyx_t_8, ((ADIOS_DATATYPES)__pyx_t_9), __pyx_t_11, ((void *)__pyx_v_val_->data));
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
-  __pyx_L3:;
-
-  /* "adios.pyx":537
- *         method = READ_METHOD.BP
- * 
- *     return method             # <<<<<<<<<<<<<<
- * 
- * cpdef np2adiostype(np.dtype nptype):
- */
-  __pyx_t_5 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_t_5;
-  goto __pyx_L0;
+  __pyx_L5:;
 
-  /* "adios.pyx":520
- *     print '%15s : %d' % ('nsteps', v.nsteps)
+  /* "adios.pyx":496
+ *                                    s2b(var))
  * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):             # <<<<<<<<<<<<<<
- *     if (name == "BP"):
- *         method = READ_METHOD.BP
+ * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
+ *                                     str name,
+ *                                     str path,
  */
 
   /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_WriteUnraisable("adios.str2adiosreadmethod", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_WriteUnraisable("adios.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_atype);
+  __Pyx_XDECREF(__pyx_v_bstr);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":539
- *     return method
- * 
- * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
- *     """ Convert Numpy.dtype to Adios Datatype
- *     """
- */
-
-static PyObject *__pyx_pw_5adios_41np2adiostype(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;
+/* 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) {
+  int64_t __pyx_v_group;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_path = 0;
+  PyObject *__pyx_v_val = 0;
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("np2adiostype", 0);
-
-  /* "adios.pyx":543
- *     """
- * 
- *     cdef atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
- * 
- *     if (nptype == np.bool_):
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __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":545
- *     cdef atype = DATATYPE.unknown
- * 
- *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int8):
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios.pyx":546
- * 
- *     if (nptype == np.bool_):
- *         atype = DATATYPE.integer             # <<<<<<<<<<<<<<
- *     elif (nptype == np.int8):
- *         atype = DATATYPE.byte
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_integer); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+  __Pyx_RefNannySetupContext("define_attribute_byvalue (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_val,0};
+    PyObject* values[4] = {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  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_byvalue", 1, 4, 4, 1); __PYX_ERR(0, 496, __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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+      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);
+    }
+    __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_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_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);
 
-  /* "adios.pyx":547
- *     if (nptype == np.bool_):
- *         atype = DATATYPE.integer
- *     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_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  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) {
+  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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-    /* "adios.pyx":548
- *         atype = DATATYPE.integer
- *     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_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":549
- *     elif (nptype == np.int8):
- *         atype = DATATYPE.byte
- *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.short
- *     elif (nptype == np.int32):
+/* "adios.pyx":540
+ *                                         <void *> val_.data)
+ * 
+ * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
+ *                          str method,
+ *                          str parameters = "",
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
 
-    /* "adios.pyx":550
- *         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_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+static PyObject *__pyx_pw_5adios_45select_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);
+  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;
+  __Pyx_RefNannySetupContext("select_method", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_parameters = __pyx_optional_args->parameters;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_base_path = __pyx_optional_args->base_path;
+      }
+    }
   }
 
-  /* "adios.pyx":551
- *     elif (nptype == np.int16):
- *         atype = DATATYPE.short
- *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int64):
+  /* "adios.pyx":545
+ *                          str base_path = ""):
+ *     return adios_select_method (group,
+ *                                 s2b(method),             # <<<<<<<<<<<<<<
+ *                                 s2b(parameters),
+ *                                 s2b(base_path))
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_method, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __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_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios.pyx":552
- *         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_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 545, __pyx_L1_error)
 
-  /* "adios.pyx":553
- *     elif (nptype == np.int32):
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.long
- *     elif (nptype == np.uint8):
+  /* "adios.pyx":546
+ *     return adios_select_method (group,
+ *                                 s2b(method),
+ *                                 s2b(parameters),             # <<<<<<<<<<<<<<
+ *                                 s2b(base_path))
+ * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 546, __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)
 
-    /* "adios.pyx":554
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int64):
- *         atype = DATATYPE.long             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint8):
- *         atype = DATATYPE.unsigned_byte
+  /* "adios.pyx":547
+ *                                 s2b(method),
+ *                                 s2b(parameters),
+ *                                 s2b(base_path))             # <<<<<<<<<<<<<<
+ * 
+ * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+  __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_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)
 
-  /* "adios.pyx":555
- *     elif (nptype == np.int64):
- *         atype = DATATYPE.long
- *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.unsigned_byte
- *     elif (nptype == np.uint16):
+  /* "adios.pyx":544
+ *                          str parameters = "",
+ *                          str base_path = ""):
+ *     return adios_select_method (group,             # <<<<<<<<<<<<<<
+ *                                 s2b(method),
+ *                                 s2b(parameters),
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = adios_select_method(__pyx_v_group, __pyx_t_2, __pyx_t_4, __pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  goto __pyx_L0;
 
-    /* "adios.pyx":556
- *         atype = DATATYPE.long
- *     elif (nptype == np.uint8):
- *         atype = DATATYPE.unsigned_byte             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint16):
- *         atype = DATATYPE.unsigned_short
+  /* "adios.pyx":540
+ *                                         <void *> val_.data)
+ * 
+ * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
+ *                          str method,
+ *                          str parameters = "",
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":557
- *     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_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("adios.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":558
- *         atype = DATATYPE.unsigned_byte
- *     elif (nptype == np.uint16):
- *         atype = DATATYPE.unsigned_short             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint32):
- *         atype = DATATYPE.unsigned_integer
+/* 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) {
+  int64_t __pyx_v_group;
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_parameters = 0;
+  PyObject *__pyx_v_base_path = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("select_method (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_method,&__pyx_n_s_parameters,&__pyx_n_s_base_path,0};
+    PyObject* values[4] = {0,0,0,0};
+    values[2] = ((PyObject*)__pyx_kp_s__10);
+    values[3] = ((PyObject*)__pyx_kp_s__10);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        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_method)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); __PYX_ERR(0, 540, __pyx_L3_error)
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_base_path);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        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);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_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_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);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_5adios_select_method __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("select_method", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 2;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":554
+ * ## ====================
+ * 
+ * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+
+static PyObject *__pyx_pw_5adios_47adios2npdtype(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;
+  PyArray_Descr *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_strlen = __pyx_optional_args->strlen;
+    }
   }
 
-  /* "adios.pyx":559
- *     elif (nptype == np.uint16):
- *         atype = DATATYPE.unsigned_short
- *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.unsigned_integer
- *     elif (nptype == np.uint64):
+  /* "adios.pyx":556
+ * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None             # <<<<<<<<<<<<<<
+ *     if t == adios_byte:
+ *         ntype = np.dtype(np.int8)
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+  __Pyx_INCREF(Py_None);
+  __pyx_v_ntype = ((PyArray_Descr *)Py_None);
 
-    /* "adios.pyx":560
- *         atype = DATATYPE.unsigned_short
- *     elif (nptype == np.uint32):
- *         atype = DATATYPE.unsigned_integer             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint64):
- *         atype = DATATYPE.unsigned_long
+  /* "adios.pyx":557
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
+ *     if t == adios_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:
+ */
+  switch (__pyx_v_t) {
+    case adios_byte:
+
+    /* "adios.pyx":558
+ *     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_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __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_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":561
- *     elif (nptype == np.uint32):
- *         atype = DATATYPE.unsigned_integer
- *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.unsigned_long
- *     elif (nptype == np.float_):
+    /* "adios.pyx":557
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
+ *     if t == adios_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":562
- *         atype = DATATYPE.unsigned_integer
- *     elif (nptype == np.uint64):
- *         atype = DATATYPE.unsigned_long             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float_):
- *         atype = DATATYPE.double
+    /* "adios.pyx":559
+ *     if t == adios_byte:
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:
+ */
+    case adios_short:
+
+    /* "adios.pyx":560
+ *         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_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __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_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":563
- *     elif (nptype == np.uint64):
- *         atype = DATATYPE.unsigned_long
- *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.double
- *     elif (nptype == np.float16):
+    /* "adios.pyx":559
+ *     if t == adios_byte:
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":564
- *         atype = DATATYPE.unsigned_long
- *     elif (nptype == np.float_):
- *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float16):
- *         atype = DATATYPE.real
+    /* "adios.pyx":561
+ *     elif t == adios_short:
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+    case adios_integer:
 
-  /* "adios.pyx":565
- *     elif (nptype == np.float_):
- *         atype = DATATYPE.double
- *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.real
- *     elif (nptype == np.float32):
+    /* "adios.pyx":562
+ *         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_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __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_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_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_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":566
- *         atype = DATATYPE.double
- *     elif (nptype == np.float16):
- *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float32):
- *         atype = DATATYPE.real
+    /* "adios.pyx":561
+ *     elif t == adios_short:
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:
+ */
+    break;
+
+    /* "adios.pyx":563
+ *     elif t == adios_integer:
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:
+ */
+    case adios_long:
+
+    /* "adios.pyx":564
+ *         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_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __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_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":567
- *     elif (nptype == np.float16):
- *         atype = DATATYPE.real
- *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.real
- *     elif (nptype == np.float64):
+    /* "adios.pyx":563
+ *     elif t == adios_integer:
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":568
- *         atype = DATATYPE.real
- *     elif (nptype == np.float32):
- *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float64):
- *         atype = DATATYPE.double
+    /* "adios.pyx":565
+ *     elif t == adios_long:
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    case adios_unsigned_byte:
+
+    /* "adios.pyx":566
+ *         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_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_real); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":569
- *     elif (nptype == np.float32):
- *         atype = DATATYPE.real
- *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.double
- *     elif (nptype == np.complex_):
+    /* "adios.pyx":565
+ *     elif t == adios_long:
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":570
- *         atype = DATATYPE.real
- *     elif (nptype == np.float64):
- *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
- *     elif (nptype == np.complex_):
- *         atype = DATATYPE.double_complex
+    /* "adios.pyx":567
+ *     elif t == adios_unsigned_byte:
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:
+ */
+    case adios_unsigned_short:
+
+    /* "adios.pyx":568
+ *         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_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __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_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":571
- *     elif (nptype == np.float64):
- *         atype = DATATYPE.double
- *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.double_complex
- *     elif (nptype == np.complex64):
+    /* "adios.pyx":567
+ *     elif t == adios_unsigned_byte:
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":572
- *         atype = DATATYPE.double
- *     elif (nptype == np.complex_):
- *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
- *     elif (nptype == np.complex64):
- *         atype = DATATYPE.complex
+    /* "adios.pyx":569
+ *     elif t == adios_unsigned_short:
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:
+ */
+    case adios_unsigned_integer:
+
+    /* "adios.pyx":570
+ *         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_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __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_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":573
- *     elif (nptype == np.complex_):
- *         atype = DATATYPE.double_complex
- *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.complex
- *     elif (nptype == np.complex128):
+    /* "adios.pyx":569
+ *     elif t == adios_unsigned_short:
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":574
- *         atype = DATATYPE.double_complex
- *     elif (nptype == np.complex64):
- *         atype = DATATYPE.complex             # <<<<<<<<<<<<<<
- *     elif (nptype == np.complex128):
- *         atype = DATATYPE.double_complex
+    /* "adios.pyx":571
+ *     elif t == adios_unsigned_integer:
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:
+ */
+    case adios_unsigned_long:
+
+    /* "adios.pyx":572
+ *         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_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __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_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":575
- *     elif (nptype == np.complex64):
- *         atype = DATATYPE.complex
- *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.double_complex
- *     elif (nptype.char == 'S'):
+    /* "adios.pyx":571
+ *     elif t == adios_unsigned_integer:
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":576
- *         atype = DATATYPE.complex
- *     elif (nptype == np.complex128):
- *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
- *     elif (nptype.char == 'S'):
- *         atype = DATATYPE.string
+    /* "adios.pyx":573
+ *     elif t == adios_unsigned_long:
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:
+ */
+    case adios_real:
+
+    /* "adios.pyx":574
+ *         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_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __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_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __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_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;
-    goto __pyx_L3;
-  }
 
-  /* "adios.pyx":577
- *     elif (nptype == np.complex128):
- *         atype = DATATYPE.double_complex
- *     elif (nptype.char == 'S'):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.string
- *     else:
+    /* "adios.pyx":573
+ *     elif t == adios_unsigned_long:
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nptype), __pyx_n_s_char); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    break;
 
-    /* "adios.pyx":578
- *         atype = DATATYPE.double_complex
- *     elif (nptype.char == 'S'):
- *         atype = DATATYPE.string             # <<<<<<<<<<<<<<
- *     else:
- *         atype = DATATYPE.unknown
+    /* "adios.pyx":575
+ *     elif t == adios_real:
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:
+ */
+    case adios_double:
+
+    /* "adios.pyx":576
+ *         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_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __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_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __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_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;
-    goto __pyx_L3;
-  }
-  /*else*/ {
 
-    /* "adios.pyx":580
- *         atype = DATATYPE.string
- *     else:
- *         atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
- * 
- *     return atype
+    /* "adios.pyx":575
+ *     elif t == adios_real:
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:
+ */
+    break;
+
+    /* "adios.pyx":577
+ *     elif t == adios_double:
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:
+ */
+    case adios_long_double:
+
+    /* "adios.pyx":578
+ *         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_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __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_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __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_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;
-  }
-  __pyx_L3:;
 
-  /* "adios.pyx":582
- *         atype = DATATYPE.unknown
- * 
- *     return atype             # <<<<<<<<<<<<<<
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):
+    /* "adios.pyx":577
+ *     elif t == adios_double:
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_atype);
-  __pyx_r = __pyx_v_atype;
-  goto __pyx_L0;
+    break;
 
-  /* "adios.pyx":539
- *     return method
- * 
- * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
- *     """ Convert Numpy.dtype to Adios Datatype
- *     """
+    /* "adios.pyx":579
+ *     elif t == adios_long_double:
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:
  */
+    case adios_complex:
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_atype);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_41np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
-static char __pyx_doc_5adios_40np2adiostype[] = "np2adiostype(dtype nptype)\n Convert Numpy.dtype to Adios Datatype\n    ";
-static PyObject *__pyx_pw_5adios_41np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype) {
-  CYTHON_UNUSED int __pyx_lineno = 0;
-  CYTHON_UNUSED const char *__pyx_filename = NULL;
-  CYTHON_UNUSED int __pyx_clineno = 0;
-  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_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_5adios_40np2adiostype(__pyx_self, ((PyArray_Descr *)__pyx_v_nptype));
+    /* "adios.pyx":580
+ *         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_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_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_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_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;
 
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":579
+ *     elif t == adios_long_double:
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:
+ */
+    break;
 
-static PyObject *__pyx_pf_5adios_40np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    /* "adios.pyx":581
+ *     elif t == adios_complex:
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:
+ */
+    case adios_double_complex:
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":582
+ *         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_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_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_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_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":584
- *     return atype
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
- *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
- * 
+    /* "adios.pyx":581
+ *     elif t == adios_complex:
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:
  */
+    break;
 
-static PyObject *__pyx_pw_5adios_43adiostype2string(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
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("adiostype2string", 0);
-
-  /* "adios.pyx":585
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):
- *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))             # <<<<<<<<<<<<<<
- * 
- * ## ====================
+    /* "adios.pyx":583
+ *     elif t == adios_double_complex:
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:             # <<<<<<<<<<<<<<
+ *         ## Use string_ instead of str_ for py3
+ *         ntype = np.dtype((np.string_, strlen))
  */
-  __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_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    case adios_string:
 
-  /* "adios.pyx":584
- *     return atype
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
- *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
- * 
+    /* "adios.pyx":585
+ *     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_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_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_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_2);
+    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_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_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;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_43adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
-static char __pyx_doc_5adios_42adiostype2string[] = "adiostype2string(ADIOS_DATATYPES type) -> str";
-static PyObject *__pyx_pw_5adios_43adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
-  ADIOS_DATATYPES __pyx_v_type;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("adiostype2string (wrapper)", 0);
-  assert(__pyx_arg_type); {
-    __pyx_v_type = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_arg_type)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_42adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_42adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __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.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":592
- * 
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
- *                     MPI_Comm comm = MPI_COMM_WORLD,
- *                     char * parameters = ""):
+    /* "adios.pyx":583
+ *     elif t == adios_double_complex:
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:             # <<<<<<<<<<<<<<
+ *         ## Use string_ instead of str_ for py3
+ *         ntype = np.dtype((np.string_, strlen))
  */
+    break;
+    default:
 
-static PyObject *__pyx_pw_5adios_45read_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) {
-  char *__pyx_v_method_name = ((char *)__pyx_k_BP);
-  MPI_Comm __pyx_v_comm = __pyx_k__8;
-  char *__pyx_v_parameters = ((char *)__pyx_k__7);
-  PyObject *__pyx_v_method = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  ADIOS_READ_METHOD __pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_init", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_method_name = __pyx_optional_args->method_name;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_comm = __pyx_optional_args->comm;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_parameters = __pyx_optional_args->parameters;
-        }
-      }
-    }
-  }
-
-  /* "adios.pyx":595
- *                     MPI_Comm comm = MPI_COMM_WORLD,
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
- *     return adios_read_init_method (method, comm, parameters)
+    /* "adios.pyx":587
+ *         ntype = np.dtype((np.string_, strlen))
+ *     else:
+ *         ntype = None             # <<<<<<<<<<<<<<
  * 
+ *     return ntype
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_method_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyInt_FromLong(__pyx_f_5adios_str2adiosreadmethod(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_method = __pyx_t_2;
-  __pyx_t_2 = 0;
+    __Pyx_INCREF(Py_None);
+    __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)Py_None));
+    break;
+  }
 
-  /* "adios.pyx":596
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_init_method (method, comm, parameters)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":589
+ *         ntype = None
  * 
+ *     return ntype             # <<<<<<<<<<<<<<
  * 
+ * cdef printfile(ADIOS_FILE * f):
  */
-  __pyx_t_3 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = adios_read_init_method(__pyx_t_3, __pyx_v_comm, __pyx_v_parameters);
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_ntype));
+  __pyx_r = __pyx_v_ntype;
   goto __pyx_L0;
 
-  /* "adios.pyx":592
+  /* "adios.pyx":554
+ * ## ====================
  * 
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
- *                     MPI_Comm comm = MPI_COMM_WORLD,
- *                     char * parameters = ""):
+ * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_WriteUnraisable("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_XDECREF((PyObject *)__pyx_v_ntype);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_45read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_44read_init[] = "read_init(char *method_name='BP', MPI_Comm comm=MPI_COMM_WORLD, char *parameters='') -> int";
-static PyObject *__pyx_pw_5adios_45read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_method_name;
-  MPI_Comm __pyx_v_comm;
-  char *__pyx_v_parameters;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+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) {
+  ADIOS_DATATYPES __pyx_v_t;
+  int __pyx_v_strlen;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read_init (wrapper)", 0);
+  __Pyx_RefNannySetupContext("adios2npdtype (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_name,&__pyx_n_s_comm,&__pyx_n_s_parameters,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_strlen,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  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;
@@ -8435,90 +8426,66 @@ static PyObject *__pyx_pw_5adios_45read_init(PyObject *__pyx_self, PyObject *__p
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
-          if (value) { values[0] = value; kw_args--; }
-        }
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
         case  1:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_strlen);
           if (value) { values[1] = value; kw_args--; }
         }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
-          if (value) { values[2] = value; kw_args--; }
-        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) __PYX_ERR(0, 554, __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);
-        case  0: break;
+        break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    if (values[0]) {
-      __pyx_v_method_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_method_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_name = ((char *)__pyx_k_BP);
-    }
+    __pyx_v_t = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 554, __pyx_L3_error)
     if (values[1]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[1]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_comm = __pyx_k__8;
-    }
-    if (values[2]) {
-      __pyx_v_parameters = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_parameters) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __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)
     } else {
-      __pyx_v_parameters = ((char *)__pyx_k__7);
+      __pyx_v_strlen = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 554, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_44read_init(__pyx_self, __pyx_v_method_name, __pyx_v_comm, __pyx_v_parameters);
+  __pyx_r = __pyx_pf_5adios_46adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_44read_init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name, MPI_Comm __pyx_v_comm, char *__pyx_v_parameters) {
+static PyObject *__pyx_pf_5adios_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_5adios_read_init __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_init", 0);
+  PyObject *__pyx_t_1 = NULL;
+  struct __pyx_opt_args_5adios_adios2npdtype __pyx_t_2;
+  __Pyx_RefNannySetupContext("adios2npdtype", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 3;
-  __pyx_t_2.method_name = __pyx_v_method_name;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -8526,1458 +8493,1736 @@ static PyObject *__pyx_pf_5adios_44read_init(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios.pyx":600
+/* "adios.pyx":591
+ *     return ntype
  * 
- * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):             # <<<<<<<<<<<<<<
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)
+ * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %lu' % ('fh', f.fh))
+ *     print ('%15s : %d' % ('nvars', f.nvars))
  */
 
-static PyObject *__pyx_pw_5adios_47read_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) {
-  char *__pyx_v_method_name = ((char *)__pyx_k_BP);
-  PyObject *__pyx_v_method = 0;
-  int __pyx_r;
+static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  ADIOS_READ_METHOD __pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_finalize", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_method_name = __pyx_optional_args->method_name;
-    }
-  }
+  int __pyx_t_3;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("printfile", 0);
 
-  /* "adios.pyx":601
- * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):
- *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
- *     return adios_read_finalize_method (method)
+  /* "adios.pyx":592
  * 
+ * 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_PyBytes_FromString(__pyx_v_method_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyInt_FromLong(__pyx_f_5adios_str2adiosreadmethod(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_method = __pyx_t_2;
-  __pyx_t_2 = 0;
-
-  /* "adios.pyx":602
- * cpdef int read_finalize(char * method_name = "BP"):
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)             # <<<<<<<<<<<<<<
- * 
- * ## Python class for ADIOS_FILE structure
+  __Pyx_INCREF(__pyx_n_s_fh);
+  __Pyx_GIVEREF(__pyx_n_s_fh);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fh);
+  __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_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_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_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
+ * 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_3 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = adios_read_finalize_method(__pyx_t_3);
-  goto __pyx_L0;
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_nvars);
+  __Pyx_GIVEREF(__pyx_n_s_nvars);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nvars);
+  __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_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_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_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
+ *     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_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_GOTREF(__pyx_t_2);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 594, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_var_namelist);
+  __Pyx_GIVEREF(__pyx_n_s_var_namelist);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_var_namelist);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_nattrs);
+  __Pyx_GIVEREF(__pyx_n_s_nattrs);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nattrs);
+  __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_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_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_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
+ *     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_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_GOTREF(__pyx_t_2);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 596, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_attr_namelist);
+  __Pyx_GIVEREF(__pyx_n_s_attr_namelist);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_attr_namelist);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_current_step);
+  __Pyx_GIVEREF(__pyx_n_s_current_step);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_current_step);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_last_step);
+  __Pyx_GIVEREF(__pyx_n_s_last_step);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_last_step);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_path);
+  __Pyx_GIVEREF(__pyx_n_s_path);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_path);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_endianness);
+  __Pyx_GIVEREF(__pyx_n_s_endianness);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_endianness);
+  __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_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_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_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
+ *     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))
  * 
- * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):             # <<<<<<<<<<<<<<
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_version);
+  __Pyx_GIVEREF(__pyx_n_s_version);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_version);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 602, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_file_size);
+  __Pyx_GIVEREF(__pyx_n_s_file_size);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_file_size);
+  __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_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_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_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
+ *     return ntype
+ * 
+ * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %lu' % ('fh', f.fh))
+ *     print ('%15s : %d' % ('nvars', f.nvars))
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_WriteUnraisable("adios.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_AddTraceback("adios.printfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_47read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_46read_finalize[] = "read_finalize(char *method_name='BP') -> int";
-static PyObject *__pyx_pw_5adios_47read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_method_name;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
+/* "adios.pyx":604
+ *     print ('%15s : %lu' % ('file_size', f.file_size))
+ * 
+ * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %d' % ('varid', v.varid))
+ *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
+ */
+
+static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read_finalize (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_name,0};
-    PyObject* values[1] = {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  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_method_name);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_finalize") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __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;
-      }
-    }
-    if (values[0]) {
-      __pyx_v_method_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_method_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_name = ((char *)__pyx_k_BP);
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_5adios_46read_finalize(__pyx_self, __pyx_v_method_name);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_46read_finalize(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_5adios_read_finalize __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_finalize", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("printvar", 0);
 
-/* "adios.pyx":641
- *     property name:
- *         """ The filename (or stream name) associated with. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+  /* "adios.pyx":605
  * 
+ * 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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_varid);
+  __Pyx_GIVEREF(__pyx_n_s_varid);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_varid);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_4name_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_4name___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_4name___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":642
- *         """ The filename (or stream name) associated with. """
- *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
- * 
- *     property nvars:
+  /* "adios.pyx":606
+ * 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_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
-  goto __pyx_L0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_type);
+  __Pyx_GIVEREF(__pyx_n_s_type);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_type);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":641
- *     property name:
- *         """ The filename (or stream name) associated with. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
- * 
+  /* "adios.pyx":607
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_ndim);
+  __Pyx_GIVEREF(__pyx_n_s_ndim);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ndim);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":646
- *     property nvars:
- *         """ The number of variables. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nvars
+  /* "adios.pyx":608
+ *     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_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_GOTREF(__pyx_t_2);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 608, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_dims);
+  __Pyx_GIVEREF(__pyx_n_s_dims);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_dims);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_5nvars_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_5nvars_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_5nvars___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_5nvars___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":647
- *         """ The number of variables. """
- *         def __get__(self):
- *             return self.nvars             # <<<<<<<<<<<<<<
+  /* "adios.pyx":609
+ *     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))             # <<<<<<<<<<<<<<
  * 
- *     property nattrs:
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_nsteps);
+  __Pyx_GIVEREF(__pyx_n_s_nsteps);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nsteps);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":646
- *     property nvars:
- *         """ The number of variables. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nvars
+  /* "adios.pyx":604
+ *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
+ * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %d' % ('varid', v.varid))
+ *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.nvars.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios.printvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":651
- *     property nattrs:
- *         """ The number of attributes. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nattrs
+/* "adios.pyx":611
+ *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
  */
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_6nattrs_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_6nattrs_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_6nattrs___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
+static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_name) {
+  PyObject *__pyx_v_method = NULL;
+  ADIOS_READ_METHOD __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  ADIOS_READ_METHOD __pyx_t_4;
+  __Pyx_RefNannySetupContext("str2adiosreadmethod", 0);
 
-  /* "adios.pyx":652
- *         """ The number of attributes. """
- *         def __get__(self):
- *             return self.nattrs             # <<<<<<<<<<<<<<
+  /* "adios.pyx":612
  * 
- *     property current_step:
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
+ *     if (name == "BP"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP
+ *     elif (name == "BP_AGGREGATE"):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __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)
+  if (__pyx_t_1) {
 
-  /* "adios.pyx":651
- *     property nattrs:
- *         """ The number of attributes. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nattrs
- * 
+    /* "adios.pyx":613
+ * 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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_method = __pyx_t_3;
+    __pyx_t_3 = 0;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.nattrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":656
- *     property current_step:
- *         """ The current timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.current_step
+    /* "adios.pyx":612
  * 
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
+ *     if (name == "BP"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP
+ *     elif (name == "BP_AGGREGATE"):
  */
+    goto __pyx_L3;
+  }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_12current_step_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_12current_step_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_12current_step___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":657
- *         """ The current timestep index. """
- *         def __get__(self):
- *             return self.current_step             # <<<<<<<<<<<<<<
- * 
- *     property last_step:
+  /* "adios.pyx":614
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
+ *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP_AGGREGATE
+ *     elif (name == "DATASPACES"):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __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)
+  if (__pyx_t_1) {
 
-  /* "adios.pyx":656
- *     property current_step:
- *         """ The current timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.current_step
- * 
+    /* "adios.pyx":615
+ *         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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_v_method = __pyx_t_2;
+    __pyx_t_2 = 0;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.current_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":614
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
+ *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP_AGGREGATE
+ *     elif (name == "DATASPACES"):
+ */
+    goto __pyx_L3;
+  }
 
-/* "adios.pyx":661
- *     property last_step:
- *         """ The last timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.last_step
- * 
+  /* "adios.pyx":616
+ *     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)
+  if (__pyx_t_1) {
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_9last_step_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_9last_step_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_9last_step___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+    /* "adios.pyx":617
+ *         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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_method = __pyx_t_3;
+    __pyx_t_3 = 0;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":616
+ *     elif (name == "BP_AGGREGATE"):
+ *         method = READ_METHOD.BP_AGGREGATE
+ *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.DATASPACES
+ *     elif (name == "DIMES"):
+ */
+    goto __pyx_L3;
+  }
 
-static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  /* "adios.pyx":618
+ *     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)
+  if (__pyx_t_1) {
 
-  /* "adios.pyx":662
- *         """ The last timestep index. """
- *         def __get__(self):
- *             return self.last_step             # <<<<<<<<<<<<<<
- * 
- *     property endianness:
+    /* "adios.pyx":619
+ *         method = READ_METHOD.DATASPACES
+ *     elif (name == "DIMES"):
+ *         method = READ_METHOD.DIMES             # <<<<<<<<<<<<<<
+ *     elif (name == "FLEXPATH"):
+ *         method = READ_METHOD.FLEXPATH
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __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_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":661
- *     property last_step:
- *         """ The last timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.last_step
- * 
+    /* "adios.pyx":618
+ *     elif (name == "DATASPACES"):
+ *         method = READ_METHOD.DATASPACES
+ *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.DIMES
+ *     elif (name == "FLEXPATH"):
  */
+    goto __pyx_L3;
+  }
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.last_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":620
+ *     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)
+  if (__pyx_t_1) {
 
-/* "adios.pyx":666
- *     property endianness:
- *         """ The endianness of the stored data. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.endianness
- * 
+    /* "adios.pyx":621
+ *         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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_method = __pyx_t_3;
+    __pyx_t_3 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_10endianness_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_10endianness_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_10endianness___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+    /* "adios.pyx":620
+ *     elif (name == "DIMES"):
+ *         method = READ_METHOD.DIMES
+ *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.FLEXPATH
+ *     elif (name == "ICEE"):
+ */
+    goto __pyx_L3;
+  }
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":622
+ *     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)
+  if (__pyx_t_1) {
 
-static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+    /* "adios.pyx":623
+ *         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_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_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":667
- *         """ The endianness of the stored data. """
- *         def __get__(self):
- *             return self.endianness             # <<<<<<<<<<<<<<
- * 
- *     property version:
+    /* "adios.pyx":622
+ *     elif (name == "FLEXPATH"):
+ *         method = READ_METHOD.FLEXPATH
+ *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.ICEE
+ *     else:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":666
- *     property endianness:
- *         """ The endianness of the stored data. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.endianness
+  /* "adios.pyx":625
+ *         method = READ_METHOD.ICEE
+ *     else:
+ *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP
  * 
  */
+  /*else*/ {
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 625, __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);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_WARN_Invalid_read_method_name);
+    __Pyx_INCREF(__pyx_v_name);
+    __Pyx_GIVEREF(__pyx_v_name);
+    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_name);
+    __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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.endianness.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":671
- *     property version:
- *         """ The version of Adios. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.version
+    /* "adios.pyx":626
+ *     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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_v_method = __pyx_t_2;
+    __pyx_t_2 = 0;
+  }
+  __pyx_L3:;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_7version_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_7version___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":672
- *         """ The version of Adios. """
- *         def __get__(self):
- *             return self.version             # <<<<<<<<<<<<<<
+  /* "adios.pyx":628
+ *         method = READ_METHOD.BP
+ * 
+ *     return method             # <<<<<<<<<<<<<<
  * 
- *     property file_sizec:
+ * cpdef np2adiostype(np.dtype nptype):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __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_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios.pyx":671
- *     property version:
- *         """ The version of Adios. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.version
+  /* "adios.pyx":611
+ *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
  */
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.str2adiosreadmethod", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = (ADIOS_READ_METHOD) 0;
   __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_XDECREF(__pyx_v_method);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":676
- *     property file_sizec:
- *         """ The size of Adios file. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.file_size
+/* "adios.pyx":630
+ *     return method
  * 
+ * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
+ *     """ Convert Numpy.dtype to Adios Datatype
+ *     """
  */
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_10file_sizec_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_10file_sizec_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_10file_sizec___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_10file_sizec___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_49np2adiostype(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;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("np2adiostype", 0);
 
-  /* "adios.pyx":677
- *         """ The size of Adios file. """
- *         def __get__(self):
- *             return self.file_size             # <<<<<<<<<<<<<<
+  /* "adios.pyx":634
+ *     """
  * 
- *     property is_stream:
+ *     cdef atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
+ * 
+ *     if (nptype == np.bool_):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __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_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":676
- *     property file_sizec:
- *         """ The size of Adios file. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.file_size
+  /* "adios.pyx":636
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.file_sizec.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":681
- *     property is_stream:
- *         """ Indicating reader type; file reader or stream reader """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_stream
+    /* "adios.pyx":637
  * 
+ *     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_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_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;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_9is_stream_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_9is_stream_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_9is_stream___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":682
- *         """ Indicating reader type; file reader or stream reader """
- *         def __get__(self):
- *             return self.is_stream             # <<<<<<<<<<<<<<
+    /* "adios.pyx":636
+ *     cdef atype = DATATYPE.unknown
  * 
- *     def __init__(self, char * fname,
+ *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int8):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":681
- *     property is_stream:
- *         """ Indicating reader type; file reader or stream reader """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_stream
- * 
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.is_stream.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":684
- *             return self.is_stream
- * 
- *     def __init__(self, char * fname,             # <<<<<<<<<<<<<<
- *                  char * method_name = 'BP',
- *                  MPI_Comm comm = MPI_COMM_WORLD,
+  /* "adios.pyx":638
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
 
-/* Python wrapper */
-static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_fname;
-  char *__pyx_v_method_name;
-  MPI_Comm __pyx_v_comm;
-  PyObject *__pyx_v_is_stream = 0;
-  ADIOS_LOCKMODE __pyx_v_lock_mode;
-  float __pyx_v_timeout_sec;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    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};
+    /* "adios.pyx":639
+ *         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_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_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":687
- *                  char * method_name = 'BP',
- *                  MPI_Comm comm = MPI_COMM_WORLD,
- *                  is_stream = False,             # <<<<<<<<<<<<<<
- *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
- *                  float timeout_sec = 0.0):
+    /* "adios.pyx":638
+ *     if (nptype == np.bool_):
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int16):
  */
-    values[3] = ((PyObject *)Py_False);
-    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_fname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_stream);
-          if (value) { values[3] = value; kw_args--; }
-        }
-        case  4:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lock_mode);
-          if (value) { values[4] = value; kw_args--; }
-        }
-        case  5:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
-          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_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __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);
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_fname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_fname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_method_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_method_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_name = ((char *)__pyx_k_BP);
-    }
-    if (values[2]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[2]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_comm = __pyx_k__9;
-    }
-    __pyx_v_is_stream = values[3];
-    if (values[4]) {
-      __pyx_v_lock_mode = ((ADIOS_LOCKMODE)PyInt_AsLong(values[4])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_lock_mode = __pyx_k__10;
-    }
-    if (values[5]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_timeout_sec = ((float)0.0);
-    }
+    goto __pyx_L3;
   }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __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:;
-  __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":684
- *             return self.is_stream
- * 
- *     def __init__(self, char * fname,             # <<<<<<<<<<<<<<
- *                  char * method_name = 'BP',
- *                  MPI_Comm comm = MPI_COMM_WORLD,
+  /* "adios.pyx":640
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_self, char *__pyx_v_fname, char *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec) {
-  PyObject *__pyx_v_method = 0;
-  PyObject *__pyx_v_name = NULL;
-  int __pyx_v_i;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  ADIOS_READ_METHOD __pyx_t_4;
-  int __pyx_t_5;
-  uint64_t __pyx_t_6;
-  int __pyx_t_7;
-  Py_ssize_t __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
+    /* "adios.pyx":641
+ *         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_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_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":690
- *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
- *                  float timeout_sec = 0.0):
- *         self.fp = NULL             # <<<<<<<<<<<<<<
- *         self.var = {}
- *         self.attr = {}
+    /* "adios.pyx":640
+ *     elif (nptype == np.int8):
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.short
+ *     elif (nptype == np.int32):
  */
-  __pyx_v_self->fp = NULL;
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":691
- *                  float timeout_sec = 0.0):
- *         self.fp = NULL
- *         self.var = {}             # <<<<<<<<<<<<<<
- *         self.attr = {}
- *         self.is_stream = is_stream
+  /* "adios.pyx":642
+ *     elif (nptype == np.int16):
+ *         atype = DATATYPE.short
+ *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios.pyx":692
- *         self.fp = NULL
- *         self.var = {}
- *         self.attr = {}             # <<<<<<<<<<<<<<
- *         self.is_stream = is_stream
- *         cdef method = str2adiosreadmethod(method_name)
+    /* "adios.pyx":643
+ *         atype = DATATYPE.short
+ *     elif (nptype == np.int32):
+ *         atype = DATATYPE.integer             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.int64):
+ *         atype = DATATYPE.long
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __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_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":693
- *         self.var = {}
- *         self.attr = {}
- *         self.is_stream = is_stream             # <<<<<<<<<<<<<<
- *         cdef method = str2adiosreadmethod(method_name)
- * 
+    /* "adios.pyx":642
+ *     elif (nptype == np.int16):
+ *         atype = DATATYPE.short
+ *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_self->is_stream = __pyx_t_2;
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":694
- *         self.attr = {}
- *         self.is_stream = is_stream
- *         cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
- * 
- *         if (is_stream):
+  /* "adios.pyx":644
+ *     elif (nptype == np.int32):
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_method_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __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_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyInt_FromLong(__pyx_f_5adios_str2adiosreadmethod(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
+  __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_method = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "adios.pyx":696
- *         cdef method = str2adiosreadmethod(method_name)
- * 
- *         if (is_stream):             # <<<<<<<<<<<<<<
- *             self.fp = adios_read_open(fname, method, comm,
- *                                       lock_mode, timeout_sec)
- */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__pyx_t_2) {
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 644, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-    /* "adios.pyx":697
- * 
- *         if (is_stream):
- *             self.fp = adios_read_open(fname, method, comm,             # <<<<<<<<<<<<<<
- *                                       lock_mode, timeout_sec)
- *         else:
+    /* "adios.pyx":645
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):
+ *         atype = DATATYPE.long             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.uint8):
+ *         atype = DATATYPE.unsigned_byte
  */
-    __pyx_t_4 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __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_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":698
- *         if (is_stream):
- *             self.fp = adios_read_open(fname, method, comm,
- *                                       lock_mode, timeout_sec)             # <<<<<<<<<<<<<<
- *         else:
- *             self.fp = adios_read_open_file(fname, method, comm)
+    /* "adios.pyx":644
+ *     elif (nptype == np.int32):
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):
  */
-    __pyx_v_self->fp = adios_read_open(__pyx_v_fname, __pyx_t_4, __pyx_v_comm, __pyx_v_lock_mode, __pyx_v_timeout_sec);
     goto __pyx_L3;
   }
-  /*else*/ {
 
-    /* "adios.pyx":700
- *                                       lock_mode, timeout_sec)
- *         else:
- *             self.fp = adios_read_open_file(fname, method, comm)             # <<<<<<<<<<<<<<
- * 
- *         assert self.fp != NULL, 'Not an open file'
+  /* "adios.pyx":646
+ *     elif (nptype == np.int64):
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):
  */
-    __pyx_t_4 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_self->fp = adios_read_open_file(__pyx_v_fname, __pyx_t_4, __pyx_v_comm);
-  }
-  __pyx_L3:;
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios.pyx":702
- *             self.fp = adios_read_open_file(fname, method, comm)
- * 
- *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- * 
- *         self.name = fname.split('/')[-1]  ## basename
+    /* "adios.pyx":647
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):
+ *         atype = DATATYPE.unsigned_byte             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.uint16):
+ *         atype = DATATYPE.unsigned_short
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __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_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
+ *     elif (nptype == np.int64):
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):
+ */
+    goto __pyx_L3;
   }
-  #endif
 
-  /* "adios.pyx":704
- *         assert self.fp != NULL, 'Not an open file'
- * 
- *         self.name = fname.split('/')[-1]  ## basename             # <<<<<<<<<<<<<<
- *         self.nvars = self.fp.nvars
- *         self.nattrs = self.fp.nattrs
+  /* "adios.pyx":648
+ *     elif (nptype == np.uint8):
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):
  */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_fname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 648, __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_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
+  __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, -1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __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":705
- * 
- *         self.name = fname.split('/')[-1]  ## basename
- *         self.nvars = self.fp.nvars             # <<<<<<<<<<<<<<
- *         self.nattrs = self.fp.nattrs
- *         self.current_step = self.fp.current_step
- */
-  __pyx_t_5 = __pyx_v_self->fp->nvars;
-  __pyx_v_self->nvars = __pyx_t_5;
-
-  /* "adios.pyx":706
- *         self.name = fname.split('/')[-1]  ## basename
- *         self.nvars = self.fp.nvars
- *         self.nattrs = self.fp.nattrs             # <<<<<<<<<<<<<<
- *         self.current_step = self.fp.current_step
- *         self.last_step = self.fp.last_step
- */
-  __pyx_t_5 = __pyx_v_self->fp->nattrs;
-  __pyx_v_self->nattrs = __pyx_t_5;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 648, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios.pyx":707
- *         self.nvars = self.fp.nvars
- *         self.nattrs = self.fp.nattrs
- *         self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
- *         self.last_step = self.fp.last_step
- *         self.endianness = self.fp.endianness
+    /* "adios.pyx":649
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):
+ *         atype = DATATYPE.unsigned_short             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.uint32):
+ *         atype = DATATYPE.unsigned_integer
  */
-  __pyx_t_5 = __pyx_v_self->fp->current_step;
-  __pyx_v_self->current_step = __pyx_t_5;
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __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_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":708
- *         self.nattrs = self.fp.nattrs
- *         self.current_step = self.fp.current_step
- *         self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
- *         self.endianness = self.fp.endianness
- *         self.version = self.fp.version
+    /* "adios.pyx":648
+ *     elif (nptype == np.uint8):
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):
  */
-  __pyx_t_5 = __pyx_v_self->fp->last_step;
-  __pyx_v_self->last_step = __pyx_t_5;
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":709
- *         self.current_step = self.fp.current_step
- *         self.last_step = self.fp.last_step
- *         self.endianness = self.fp.endianness             # <<<<<<<<<<<<<<
- *         self.version = self.fp.version
- *         self.file_size = self.fp.file_size
+  /* "adios.pyx":650
+ *     elif (nptype == np.uint16):
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):
  */
-  __pyx_t_5 = __pyx_v_self->fp->endianness;
-  __pyx_v_self->endianness = __pyx_t_5;
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios.pyx":710
- *         self.last_step = self.fp.last_step
- *         self.endianness = self.fp.endianness
- *         self.version = self.fp.version             # <<<<<<<<<<<<<<
- *         self.file_size = self.fp.file_size
- * 
+    /* "adios.pyx":651
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):
+ *         atype = DATATYPE.unsigned_integer             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.uint64):
+ *         atype = DATATYPE.unsigned_long
  */
-  __pyx_t_5 = __pyx_v_self->fp->version;
-  __pyx_v_self->version = __pyx_t_5;
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __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_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":711
- *         self.endianness = self.fp.endianness
- *         self.version = self.fp.version
- *         self.file_size = self.fp.file_size             # <<<<<<<<<<<<<<
- * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
+    /* "adios.pyx":650
+ *     elif (nptype == np.uint16):
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):
  */
-  __pyx_t_6 = __pyx_v_self->fp->file_size;
-  __pyx_v_self->file_size = __pyx_t_6;
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":713
- *         self.file_size = self.fp.file_size
- * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
- *             self.var[name] = var(self, name)
- * 
+  /* "adios.pyx":652
+ *     elif (nptype == np.uint32):
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_long
+ *     elif (nptype == np.float_):
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __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_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __pyx_v_self->nvars;
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_5; __pyx_t_7+=1) {
-    __pyx_v_i = __pyx_t_7;
-    __pyx_t_3 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  }
-  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
+  __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  for (;;) {
-    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
-    #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #else
-    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #endif
-    __Pyx_XDECREF_SET(__pyx_v_name, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-    /* "adios.pyx":714
- * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
- *             self.var[name] = var(self, name)             # <<<<<<<<<<<<<<
- * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
+    /* "adios.pyx":653
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):
+ *         atype = DATATYPE.unsigned_long             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.float_):
+ *         atype = DATATYPE.double
  */
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __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_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_var)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_v_name, __pyx_t_9) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
+    __pyx_t_1 = 0;
 
-    /* "adios.pyx":713
- *         self.file_size = self.fp.file_size
- * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
- *             self.var[name] = var(self, name)
- * 
+    /* "adios.pyx":652
+ *     elif (nptype == np.uint32):
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_long
+ *     elif (nptype == np.float_):
  */
+    goto __pyx_L3;
   }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":716
- *             self.var[name] = var(self, name)
- * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
- *             self.attr[name] = attr(self, name)
- * 
- */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = __pyx_v_self->nattrs;
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_5; __pyx_t_7+=1) {
-    __pyx_v_i = __pyx_t_7;
-    __pyx_t_9 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_9))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  }
-  __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_8 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  for (;;) {
-    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_9)) break;
-    #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #else
-    __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #endif
-    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
-    __pyx_t_3 = 0;
+  /* "adios.pyx":654
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
 
-    /* "adios.pyx":717
- * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
- *             self.attr[name] = attr(self, name)             # <<<<<<<<<<<<<<
- * 
- *     def __del__(self):
+    /* "adios.pyx":655
+ *         atype = DATATYPE.unsigned_long
+ *     elif (nptype == np.float_):
+ *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.float16):
+ *         atype = DATATYPE.real
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_attr)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->attr, __pyx_v_name, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_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":716
- *             self.var[name] = var(self, name)
- * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
- *             self.attr[name] = attr(self, name)
- * 
+    /* "adios.pyx":654
+ *     elif (nptype == np.uint64):
+ *         atype = DATATYPE.unsigned_long
+ *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.float16):
  */
+    goto __pyx_L3;
   }
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-  /* "adios.pyx":684
- *             return self.is_stream
- * 
- *     def __init__(self, char * fname,             # <<<<<<<<<<<<<<
- *                  char * method_name = 'BP',
- *                  MPI_Comm comm = MPI_COMM_WORLD,
+  /* "adios.pyx":656
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("adios.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
-  __Pyx_XDECREF(__pyx_v_name);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":719
- *             self.attr[name] = attr(self, name)
- * 
- *     def __del__(self):             # <<<<<<<<<<<<<<
- *         """ Close file on destruction. """
- *         self.close()
+    /* "adios.pyx":657
+ *         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_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_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;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_4file_2__del__[] = "file.__del__(self)\n Close file on destruction. ";
-static PyObject *__pyx_pw_5adios_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_2__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_4file_2__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__del__", 0);
+    /* "adios.pyx":656
+ *     elif (nptype == np.float_):
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float32):
+ */
+    goto __pyx_L3;
+  }
 
-  /* "adios.pyx":721
- *     def __del__(self):
- *         """ Close file on destruction. """
- *         self.close()             # <<<<<<<<<<<<<<
- * 
- *     cpdef close(self):
+  /* "adios.pyx":658
+ *     elif (nptype == np.float16):
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios.pyx":719
- *             self.attr[name] = attr(self, name)
- * 
- *     def __del__(self):             # <<<<<<<<<<<<<<
- *         """ Close file on destruction. """
- *         self.close()
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":723
- *         self.close()
- * 
- *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'
+    /* "adios.pyx":659
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float32):
+ *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.float64):
+ *         atype = DATATYPE.double
  */
-
-static PyObject *__pyx_pw_5adios_4file_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __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_5close)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
+    __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_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":725
- *     cpdef close(self):
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- *         adios_read_close(self.fp)
- *         self.fp = NULL
+    /* "adios.pyx":658
+ *     elif (nptype == np.float16):
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+    goto __pyx_L3;
   }
-  #endif
 
-  /* "adios.pyx":726
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'
- *         adios_read_close(self.fp)             # <<<<<<<<<<<<<<
- *         self.fp = NULL
- * 
+  /* "adios.pyx":660
+ *     elif (nptype == np.float32):
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.complex_):
  */
-  adios_read_close(__pyx_v_self->fp);
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios.pyx":727
- *         assert self.fp != NULL, 'Not an open file'
- *         adios_read_close(self.fp)
- *         self.fp = NULL             # <<<<<<<<<<<<<<
- * 
- *     cpdef printself(self):
+    /* "adios.pyx":661
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):
+ *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
+ *     elif (nptype == np.complex_):
+ *         atype = DATATYPE.double_complex
  */
-  __pyx_v_self->fp = NULL;
-
-  /* "adios.pyx":723
- *         self.close()
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __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_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
+ *     elif (nptype == np.float32):
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.complex_):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":662
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":663
+ *         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_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_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
+ *     elif (nptype == np.float64):
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype == np.complex64):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":664
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":665
+ *         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_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_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
+ *     elif (nptype == np.complex_):
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.complex
+ *     elif (nptype == np.complex128):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":666
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":667
+ *         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_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_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
+ *     elif (nptype == np.complex64):
+ *         atype = DATATYPE.complex
+ *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype.char in ('S', 'U')):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":668
+ *     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_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)
+  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_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
+ *         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_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_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
+ *     elif (nptype == np.complex128):
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.string
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":671
+ *         atype = DATATYPE.string
+ *     else:
+ *         atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
  * 
- *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'
+ *     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_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_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;
+  }
+  __pyx_L3:;
+
+  /* "adios.pyx":673
+ *         atype = DATATYPE.unknown
+ * 
+ *     return atype             # <<<<<<<<<<<<<<
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_atype);
+  __pyx_r = __pyx_v_atype;
+  goto __pyx_L0;
+
+  /* "adios.pyx":630
+ *     return method
+ * 
+ * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
+ *     """ Convert Numpy.dtype to Adios Datatype
+ *     """
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_atype);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_4file_4close[] = "file.close(self)\n Close the open file. ";
-static PyObject *__pyx_pw_5adios_4file_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+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) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("close (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_4close(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+  __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));
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_4close(struct __pyx_obj_5adios_file *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_RefNannySetupContext("np2adiostype", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_4file_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_5adios_np2adiostype(__pyx_v_nptype, 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;
@@ -9986,7 +10231,7 @@ static PyObject *__pyx_pf_5adios_4file_4close(struct __pyx_obj_5adios_file *__py
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -9994,137 +10239,58 @@ static PyObject *__pyx_pf_5adios_4file_4close(struct __pyx_obj_5adios_file *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":729
- *         self.fp = NULL
+/* "adios.pyx":675
+ *     return atype
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
+ *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
  * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_FILE structure. """
- *         assert self.fp != NULL, 'Not an open file'
  */
 
-static PyObject *__pyx_pw_5adios_4file_7printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_51adiostype2string(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
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printself", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __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_7printself)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
+  __Pyx_RefNannySetupContext("adiostype2string", 0);
 
-  /* "adios.pyx":731
- *     cpdef printself(self):
- *         """ Print native ADIOS_FILE structure. """
- *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- *         print '=== AdiosFile ==='
- *         print '%15s : %lu' % ('fp', <unsigned long> self.fp)
+  /* "adios.pyx":676
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):
+ *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))             # <<<<<<<<<<<<<<
+ * 
+ * ## ====================
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
-
-  /* "adios.pyx":732
- *         """ 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)
- */
-  if (__Pyx_PrintOne(0, __pyx_kp_s_AdiosFile) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":733
- *         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_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
-  __Pyx_GIVEREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __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_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 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)
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":734
- *         print '=== AdiosFile ==='
- *         print '%15s : %lu' % ('fp', <unsigned long> self.fp)
- *         printfile(self.fp)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":675
+ *     return atype
  * 
- *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):
- */
-  __pyx_t_1 = __pyx_f_5adios_printfile(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":729
- *         self.fp = NULL
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
+ *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
  * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_FILE structure. """
- *         assert self.fp != NULL, 'Not an open file'
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -10133,29 +10299,36 @@ static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_7printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_4file_6printself[] = "file.printself(self)\n Print native ADIOS_FILE structure. ";
-static PyObject *__pyx_pw_5adios_4file_7printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+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) {
+  ADIOS_DATATYPES __pyx_v_type;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_6printself(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+  __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)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_50adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_6printself(struct __pyx_obj_5adios_file *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_50adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printself", 0);
+  __Pyx_RefNannySetupContext("adiostype2string", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_4file_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_5adios_adiostype2string(__pyx_v_type, 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;
@@ -10164,7 +10337,7 @@ static PyObject *__pyx_pf_5adios_4file_6printself(struct __pyx_obj_5adios_file *
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -10172,287 +10345,113 @@ static PyObject *__pyx_pf_5adios_4file_6printself(struct __pyx_obj_5adios_file *
   return __pyx_r;
 }
 
-/* "adios.pyx":736
- *         printfile(self.fp)
+/* "adios.pyx":683
  * 
- *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
- *         """
- *         Advance a timestep for stream reader.
+ * """ Call adios_read_init_method """
+ * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
+ *                     MPI_Comm comm = MPI_COMM_WORLD,
+ *                     str parameters = ""):
  */
 
-static PyObject *__pyx_pw_5adios_4file_9advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_4file_advance *__pyx_optional_args) {
-  int __pyx_v_last = ((int)0);
-  float __pyx_v_timeout_sec = ((float)0.0);
-  int __pyx_v_val;
-  PyObject *__pyx_v_v = NULL;
-  PyObject *__pyx_r = NULL;
+static PyObject *__pyx_pw_5adios_53read_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;
+  PyObject *__pyx_v_parameters = ((PyObject*)__pyx_kp_s__10);
+  PyObject *__pyx_v_method = 0;
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  Py_ssize_t __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  PyObject *(*__pyx_t_11)(PyObject *);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
+  ADIOS_READ_METHOD __pyx_t_2;
+  char *__pyx_t_3;
+  __Pyx_RefNannySetupContext("read_init", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_last = __pyx_optional_args->last;
+      __pyx_v_method_name = __pyx_optional_args->method_name;
       if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_timeout_sec = __pyx_optional_args->timeout_sec;
-      }
-    }
-  }
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __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_9advance)) {
-      __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_last); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_timeout_sec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
-      __pyx_t_7 = 0;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_6)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_6);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-          __pyx_t_7 = 1;
+        __pyx_v_comm = __pyx_optional_args->comm;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_parameters = __pyx_optional_args->parameters;
         }
       }
-      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      if (__pyx_t_6) {
-        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
-      }
-      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
-      __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __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;
-      __pyx_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
     }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":747
- *             int: 0 if successful, non-zero otherwise.
- *         """
- *         val = adios_advance_step(self.fp, last, timeout_sec)             # <<<<<<<<<<<<<<
- *         if (val >= 0):
- *             self.current_step = self.fp.current_step
- */
-  __pyx_v_val = adios_advance_step(__pyx_v_self->fp, __pyx_v_last, __pyx_v_timeout_sec);
-
-  /* "adios.pyx":748
- *         """
- *         val = adios_advance_step(self.fp, last, timeout_sec)
- *         if (val >= 0):             # <<<<<<<<<<<<<<
- *             self.current_step = self.fp.current_step
- *             self.last_step = self.fp.last_step
- */
-  __pyx_t_9 = ((__pyx_v_val >= 0) != 0);
-  if (__pyx_t_9) {
-
-    /* "adios.pyx":749
- *         val = adios_advance_step(self.fp, last, timeout_sec)
- *         if (val >= 0):
- *             self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
- *             self.last_step = self.fp.last_step
- * 
- */
-    __pyx_t_10 = __pyx_v_self->fp->current_step;
-    __pyx_v_self->current_step = __pyx_t_10;
-
-    /* "adios.pyx":750
- *         if (val >= 0):
- *             self.current_step = self.fp.current_step
- *             self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
- * 
- *             for v in self.var.values():
- */
-    __pyx_t_10 = __pyx_v_self->fp->last_step;
-    __pyx_v_self->last_step = __pyx_t_10;
-
-    /* "adios.pyx":752
- *             self.last_step = self.fp.last_step
- * 
- *             for v in self.var.values():             # <<<<<<<<<<<<<<
- *                 v.advance()
- * 
- */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_self->var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
-      __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_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    for (;;) {
-      if (likely(!__pyx_t_11)) {
-        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_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #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_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #endif
-        }
-      } else {
-        __pyx_t_1 = __pyx_t_11(__pyx_t_2);
-        if (unlikely(!__pyx_t_1)) {
-          PyObject* exc_type = PyErr_Occurred();
-          if (exc_type) {
-            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          }
-          break;
-        }
-        __Pyx_GOTREF(__pyx_t_1);
-      }
-      __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
-      __pyx_t_1 = 0;
-
-      /* "adios.pyx":753
- * 
- *             for v in self.var.values():
- *                 v.advance()             # <<<<<<<<<<<<<<
- * 
- *         return val
+  /* "adios.pyx":687
+ *                     str parameters = ""):
+ *     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_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_advance); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_8 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_8)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_8);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-        }
-      }
-      if (__pyx_t_8) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __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;
+  __pyx_v_5adios_read_init_comm = __pyx_v_comm;
 
-      /* "adios.pyx":752
- *             self.last_step = self.fp.last_step
- * 
- *             for v in self.var.values():             # <<<<<<<<<<<<<<
- *                 v.advance()
+  /* "adios.pyx":688
+ *     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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_v_method = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* "adios.pyx":755
- *                 v.advance()
+  /* "adios.pyx":689
+ *     read_init_comm = comm
+ *     cdef method = str2adiosreadmethod(method_name)
+ *     return adios_read_init_method (method, read_init_comm, s2b(parameters))             # <<<<<<<<<<<<<<
  * 
- *         return val             # <<<<<<<<<<<<<<
  * 
- *     def __getitem__(self, varname):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
+  __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_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_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":736
- *         printfile(self.fp)
+  /* "adios.pyx":683
  * 
- *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
- *         """
- *         Advance a timestep for stream reader.
+ * """ Call adios_read_init_method """
+ * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
+ *                     MPI_Comm comm = MPI_COMM_WORLD,
+ *                     str parameters = ""):
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("adios.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_WriteUnraisable("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_v);
-  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_XDECREF(__pyx_v_method);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_9advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_4file_8advance[] = "file.advance(self, int last=0, float timeout_sec=0.0)\n\n        Advance a timestep for stream reader.\n\n        Args:\n            last (int, optional): last timestep index (default: 0).\n            timeout_sec (float, optional): timeout seconds (default: 0.0).\n\n        Returns:\n            int: 0 if successful, non-zero otherwise.\n        ";
-static PyObject *__pyx_pw_5adios_4file_9advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_last;
-  float __pyx_v_timeout_sec;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+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) {
+  PyObject *__pyx_v_method_name = 0;
+  MPI_Comm __pyx_v_comm;
+  PyObject *__pyx_v_parameters = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
+  __Pyx_RefNannySetupContext("read_init (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_last,&__pyx_n_s_timeout_sec,0};
-    PyObject* values[2] = {0,0};
+    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[2] = ((PyObject*)__pyx_kp_s__10);
     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;
@@ -10462,75 +10461,241 @@ static PyObject *__pyx_pw_5adios_4file_9advance(PyObject *__pyx_v_self, PyObject
       switch (pos_args) {
         case  0:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_last);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
           if (value) { values[0] = value; kw_args--; }
         }
         case  1:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
           if (value) { values[1] = value; kw_args--; }
         }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
+          if (value) { values[2] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) __PYX_ERR(0, 683, __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);
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    if (values[0]) {
-      __pyx_v_last = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_last == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_last = ((int)0);
-    }
+    __pyx_v_method_name = ((PyObject*)values[0]);
     if (values[1]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __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, 684, __pyx_L3_error)
     } else {
-      __pyx_v_timeout_sec = ((float)0.0);
+      __pyx_v_comm = __pyx_k__11;
     }
+    __pyx_v_parameters = ((PyObject*)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("advance", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 683, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_4file_8advance(((struct __pyx_obj_5adios_file *)__pyx_v_self), __pyx_v_last, __pyx_v_timeout_sec);
+  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);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_8advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_5adios_4file_advance __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
+  int __pyx_t_1;
+  struct __pyx_opt_args_5adios_read_init __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("read_init", 0);
   __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2.__pyx_n = 3;
+  __pyx_t_2.method_name = __pyx_v_method_name;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":693
+ * 
+ * """ 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))
+ */
+
+static PyObject *__pyx_pw_5adios_55read_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;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  ADIOS_READ_METHOD __pyx_t_2;
+  __Pyx_RefNannySetupContext("read_finalize", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_method_name = __pyx_optional_args->method_name;
+    }
+  }
+
+  /* "adios.pyx":694
+ * """ 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_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
+  __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
+
+  /* "adios.pyx":695
+ * 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)
+  __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = adios_read_finalize_method(__pyx_t_2);
   goto __pyx_L0;
 
+  /* "adios.pyx":693
+ * 
+ * """ 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))
+ */
+
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_WriteUnraisable("adios.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  PyObject *__pyx_v_method_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read_finalize (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_name,0};
+    PyObject* values[1] = {0};
+    values[0] = ((PyObject*)__pyx_n_s_BP);
+    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_method_name);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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_method_name = ((PyObject*)values[0]);
+  }
+  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_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);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_54read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_5adios_read_finalize __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("read_finalize", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -10538,32 +10703,28 @@ static PyObject *__pyx_pf_5adios_4file_8advance(struct __pyx_obj_5adios_file *__
   return __pyx_r;
 }
 
-/* "adios.pyx":757
- *         return val
- * 
+/* "adios.pyx":699
+ * ## dict for handling '/' prefix
+ * cdef class softdict(dict):
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
- *         """
- *         Return Adios variable.
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
-static char __pyx_doc_5adios_4file_10__getitem__[] = "\n        Return Adios variable.\n\n        Args:\n            varname (str): variable name.\n\n        Raises:\n            KeyError: If no varname exists.\n\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_5adios_4file_10__getitem__;
-#endif
-static PyObject *__pyx_pw_5adios_4file_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+static PyObject *__pyx_pw_5adios_8softdict_1__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_5adios_8softdict_1__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_10__getitem__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+  __pyx_r = __pyx_pf_5adios_8softdict___getitem__(((struct __pyx_obj_5adios_softdict *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_varname) {
+static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_softdict *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_v_key_ = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -10574,15 +10735,12 @@ static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_fil
   PyObject *__pyx_t_5 = NULL;
   PyObject *(*__pyx_t_6)(PyObject *);
   PyObject *__pyx_t_7 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios.pyx":768
- * 
- *         """
+  /* "adios.pyx":700
+ * cdef class softdict(dict):
+ *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
  *             varname = (varname,)
  * 
@@ -10591,56 +10749,70 @@ static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_fil
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":769
- *         """
+    /* "adios.pyx":701
+ *     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_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L3;
+
+    /* "adios.pyx":700
+ * cdef class softdict(dict):
+ *     def __getitem__(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
   }
-  __pyx_L3:;
 
-  /* "adios.pyx":771
+  /* "adios.pyx":703
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 703, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":772
+    /* "adios.pyx":704
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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_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_filename = __pyx_f[0]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 704, __pyx_L1_error)
+
+    /* "adios.pyx":703
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
+ * 
+ */
   }
 
-  /* "adios.pyx":774
+  /* "adios.pyx":706
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -10651,25 +10823,27 @@ static PyObject *__pyx_pf_5adios_4file_10__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_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 706, __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_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __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, 706, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __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, 706, __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_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __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, 706, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __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, 706, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
     } else {
@@ -10678,16 +10852,16 @@ static PyObject *__pyx_pf_5adios_4file_10__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_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 706, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_3);
     }
-    __pyx_v_key_ = __pyx_t_3;
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":775
+    /* "adios.pyx":707
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -10698,118 +10872,164 @@ static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_fil
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":776
+      /* "adios.pyx":708
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
- *             if key_ in self.var.keys():
+ *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+      __PYX_ERR(0, 708, __pyx_L1_error)
 
-    /* "adios.pyx":778
+      /* "adios.pyx":707
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
  *                 raise TypeError("Unhashable type")
  * 
- *             if key_ in self.var.keys():             # <<<<<<<<<<<<<<
- *                 return self.var.get(key_)
- *             elif key_ in self.attr.keys():
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->var); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "adios.pyx":710
+ *                 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_GOTREF(__pyx_t_3);
-    __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_key_, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
+
+      /* "adios.pyx":711
+ * 
+ *             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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios.pyx":710
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
+ */
+    }
+
+    /* "adios.pyx":713
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, key_)
+ * 
+ */
+    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_t_7 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 713, __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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":779
+      /* "adios.pyx":714
+ * 
+ *             if key_ in dict.keys(self):
+ *                 return dict.get(self, key_)             # <<<<<<<<<<<<<<
  * 
- *             if key_ in self.var.keys():
- *                 return self.var.get(key_)             # <<<<<<<<<<<<<<
- *             elif key_ in self.attr.keys():
- *                 return self.attr.get(key_)
+ *             if '/'+key_ in dict.keys(self):
  */
       __Pyx_XDECREF(__pyx_r);
-      if (unlikely(__pyx_v_self->var == Py_None)) {
-        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      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_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->var, __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_r = __pyx_t_3;
-      __pyx_t_3 = 0;
+      __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_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":780
- *             if key_ in self.var.keys():
- *                 return self.var.get(key_)
- *             elif key_ in self.attr.keys():             # <<<<<<<<<<<<<<
- *                 return self.attr.get(key_)
- *             else:
+      /* "adios.pyx":713
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, key_)
+ * 
+ */
+    }
+
+    /* "adios.pyx":716
+ *                 return dict.get(self, key_)
+ * 
+ *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, '/'+key_)
+ * 
  */
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __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_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->attr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_3);
-    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_key_, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __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, 716, __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":781
- *                 return self.var.get(key_)
- *             elif key_ in self.attr.keys():
- *                 return self.attr.get(key_)             # <<<<<<<<<<<<<<
- *             else:
- *                 raise KeyError(key_)
+      /* "adios.pyx":717
+ * 
+ *             if '/'+key_ in dict.keys(self):
+ *                 return dict.get(self, '/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *         raise KeyError(key_)
  */
       __Pyx_XDECREF(__pyx_r);
-      if (unlikely(__pyx_v_self->attr == Py_None)) {
-        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      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_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->attr, __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_3);
-      __pyx_r = __pyx_t_3;
-      __pyx_t_3 = 0;
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
-    }
-    /*else*/ {
 
-      /* "adios.pyx":783
- *                 return self.attr.get(key_)
- *             else:
- *                 raise KeyError(key_)             # <<<<<<<<<<<<<<
+      /* "adios.pyx":716
+ *                 return dict.get(self, key_)
+ * 
+ *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, '/'+key_)
  * 
- *     def __repr__(self):
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_INCREF(__pyx_v_key_);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key_);
-      __Pyx_GIVEREF(__pyx_v_key_);
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "adios.pyx":774
+    /* "adios.pyx":706
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -10819,22 +11039,40 @@ static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_fil
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":757
- *         return val
+  /* "adios.pyx":719
+ *                 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)
+  __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_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)
+
+  /* "adios.pyx":699
+ * ## dict for handling '/' prefix
+ * cdef class softdict(dict):
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
- *         """
- *         Return Adios variable.
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
  */
 
   /* 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_5);
   __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("adios.file.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.softdict.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_key_);
@@ -10844,545 +11082,412 @@ static PyObject *__pyx_pf_5adios_4file_10__getitem__(struct __pyx_obj_5adios_fil
   return __pyx_r;
 }
 
-/* "adios.pyx":785
- *                 raise KeyError(key_)
+/* "adios.pyx":760
+ *     property name:
+ *         """ The filename (or stream name) associated with. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_13__repr__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_5adios_4file_12__repr__[] = " Return string representation. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_5adios_4file_12__repr__;
-#endif
-static PyObject *__pyx_pw_5adios_4file_13__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_4name_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_12__repr__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_4name___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_12__repr__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_4name___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios.pyx":787
- *     def __repr__(self):
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "             # <<<<<<<<<<<<<<
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,
- */
-  __Pyx_XDECREF(__pyx_r);
-
-  /* "adios.pyx":789
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,             # <<<<<<<<<<<<<<
- *                  self.nvars,
- *                  self.var.keys(),
- */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->fp->path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios.pyx":790
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,
- *                  self.nvars,             # <<<<<<<<<<<<<<
- *                  self.var.keys(),
- *                  self.nattrs,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "adios.pyx":791
- *                 (self.fp.path,
- *                  self.nvars,
- *                  self.var.keys(),             # <<<<<<<<<<<<<<
- *                  self.nattrs,
- *                  self.attr.keys(),
- */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->var); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-
-  /* "adios.pyx":792
- *                  self.nvars,
- *                  self.var.keys(),
- *                  self.nattrs,             # <<<<<<<<<<<<<<
- *                  self.attr.keys(),
- *                  self.current_step,
- */
-  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-
-  /* "adios.pyx":793
- *                  self.var.keys(),
- *                  self.nattrs,
- *                  self.attr.keys(),             # <<<<<<<<<<<<<<
- *                  self.current_step,
- *                  self.last_step,
- */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_5 = __Pyx_PyDict_Keys(__pyx_v_self->attr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-
-  /* "adios.pyx":794
- *                  self.nattrs,
- *                  self.attr.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_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-
-  /* "adios.pyx":795
- *                  self.attr.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_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":796
- *                  self.current_step,
- *                  self.last_step,
- *                  self.file_size)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":761
+ *         """ The filename (or stream name) associated with. """
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
  * 
- * cdef class var:
- */
-  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-
-  /* "adios.pyx":789
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,             # <<<<<<<<<<<<<<
- *                  self.nvars,
- *                  self.var.keys(),
- */
-  __pyx_t_9 = PyTuple_New(8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_9);
-  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_5);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_7);
-  PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_t_8);
-  __Pyx_GIVEREF(__pyx_t_8);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 0;
-  __pyx_t_4 = 0;
-  __pyx_t_5 = 0;
-  __pyx_t_6 = 0;
-  __pyx_t_7 = 0;
-  __pyx_t_8 = 0;
-
-  /* "adios.pyx":788
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.fp.path,
- *                  self.nvars,
+ *     property nvars:
  */
-  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_AdiosFile_path_r_nvars_r_var_r_n, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __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;
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios.pyx":785
- *                 raise KeyError(key_)
+  /* "adios.pyx":760
+ *     property name:
+ *         """ The filename (or stream name) associated with. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
  */
 
   /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("adios.file.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":636
- * 
- *     ## Public Memeber
- *     cpdef public dict var             # <<<<<<<<<<<<<<
- *     cpdef public dict attr
+/* "adios.pyx":765
+ *     property nvars:
+ *         """ The number of variables. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nvars
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_3var_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_3var_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_5nvars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_5nvars_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_3var___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_5nvars___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_3var___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_5nvars___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":766
+ *         """ The number of variables. """
+ *         def __get__(self):
+ *             return self.nvars             # <<<<<<<<<<<<<<
+ * 
+ *     property nattrs:
+ */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->var);
-  __pyx_r = __pyx_v_self->var;
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
 
+  /* "adios.pyx":765
+ *     property nvars:
+ *         """ The number of variables. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nvars
+ * 
+ */
+
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.file.nvars.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios.pyx":770
+ *     property nattrs:
+ *         """ The number of attributes. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nattrs
+ * 
+ */
+
 /* Python wrapper */
-static int __pyx_pw_5adios_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
+static PyObject *__pyx_pw_5adios_4file_6nattrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_6nattrs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_3var_2__set__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_6nattrs___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_4file_3var_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
+static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_v_value;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)__pyx_t_1);
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":771
+ *         """ The number of attributes. """
+ *         def __get__(self):
+ *             return self.nattrs             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":770
+ *     property nattrs:
+ *         """ The number of attributes. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nattrs
+ * 
+ */
 
   /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.var.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
+  __Pyx_AddTraceback("adios.file.nattrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* Python wrapper */
-static int __pyx_pw_5adios_4file_3var_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_5adios_4file_3var_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_3var_4__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_4file_3var_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)Py_None);
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":637
- *     ## Public Memeber
- *     cpdef public dict var
- *     cpdef public dict attr             # <<<<<<<<<<<<<<
+/* "adios.pyx":775
+ *     property current_step:
+ *         """ The current timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.current_step
  * 
- *     property name:
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4file_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4file_4attr_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_12current_step_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_12current_step_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_4attr___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_12current_step___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4file_4attr___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":776
+ *         """ The current timestep index. """
+ *         def __get__(self):
+ *             return self.current_step             # <<<<<<<<<<<<<<
+ * 
+ *     property last_step:
+ */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->attr);
-  __pyx_r = __pyx_v_self->attr;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
 
+  /* "adios.pyx":775
+ *     property current_step:
+ *         """ The current timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.current_step
+ * 
+ */
+
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.file.current_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios.pyx":780
+ *     property last_step:
+ *         """ The last timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.last_step
+ * 
+ */
+
 /* Python wrapper */
-static int __pyx_pw_5adios_4file_4attr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_4file_4attr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
+static PyObject *__pyx_pw_5adios_4file_9last_step_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_9last_step_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_4attr_2__set__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_9last_step___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_4file_4attr_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
+static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_v_value;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)__pyx_t_1);
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":781
+ *         """ The last timestep index. """
+ *         def __get__(self):
+ *             return self.last_step             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":780
+ *     property last_step:
+ *         """ The last timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.last_step
+ * 
+ */
 
   /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.file.attr.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
+  __Pyx_AddTraceback("adios.file.last_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* Python wrapper */
-static int __pyx_pw_5adios_4file_4attr_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_5adios_4file_4attr_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4file_4attr_4__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_4file_4attr_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)Py_None);
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":826
- *     property name:
- *         """ The variable name. """
+/* "adios.pyx":785
+ *     property endianness:
+ *         """ The endianness of the stored data. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+ *             return self.endianness
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_4name_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_10endianness_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_10endianness_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_4name___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_10endianness___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_4name___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":827
- *         """ The variable name. """
+  /* "adios.pyx":786
+ *         """ The endianness of the stored data. """
  *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
+ *             return self.endianness             # <<<<<<<<<<<<<<
  * 
- *     property varid:
+ *     property version:
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":826
- *     property name:
- *         """ The variable name. """
+  /* "adios.pyx":785
+ *     property endianness:
+ *         """ The endianness of the stored data. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+ *             return self.endianness
  * 
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.file.endianness.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":831
- *     property varid:
- *         """ Internal variable id. """
+/* "adios.pyx":790
+ *     property version:
+ *         """ The version of Adios. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.varid
+ *             return self.version
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_5varid_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_5varid_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_7version_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_5varid___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_7version___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":832
- *         """ Internal variable id. """
+  /* "adios.pyx":791
+ *         """ The version of Adios. """
  *         def __get__(self):
- *             return self.varid             # <<<<<<<<<<<<<<
+ *             return self.version             # <<<<<<<<<<<<<<
  * 
- *     property dtype:
+ *     property file_size:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":831
- *     property varid:
- *         """ Internal variable id. """
+  /* "adios.pyx":790
+ *     property version:
+ *         """ The version of Adios. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.varid
+ *             return self.version
  * 
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.varid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -11390,115 +11495,59 @@ static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":836
- *     property dtype:
- *         """ Variable type as in numpy.dtype. """
+/* "adios.pyx":795
+ *     property file_size:
+ *         """ The size of Adios file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
+ *             return self.file_size
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_5dtype_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_9file_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_9file_size_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_5dtype___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_9file_size___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_9file_size___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":837
- *         """ Variable type as in numpy.dtype. """
- *         def __get__(self):
- *             return self.dtype             # <<<<<<<<<<<<<<
- * 
- *     property ndim:
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
-  goto __pyx_L0;
-
-  /* "adios.pyx":836
- *     property dtype:
- *         """ Variable type as in numpy.dtype. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
- * 
- */
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":841
- *     property ndim:
- *         """ The number of dimensions of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.ndim
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_4ndim_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_4ndim___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":842
- *         """ The number of dimensions of the variable. """
+  /* "adios.pyx":796
+ *         """ The size of Adios file. """
  *         def __get__(self):
- *             return self.ndim             # <<<<<<<<<<<<<<
+ *             return self.file_size             # <<<<<<<<<<<<<<
  * 
- *     property dims:
+ *     property is_stream:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":841
- *     property ndim:
- *         """ The number of dimensions of the variable. """
+  /* "adios.pyx":795
+ *     property file_size:
+ *         """ The size of Adios file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.ndim
+ *             return self.file_size
  * 
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.file_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -11506,115 +11555,59 @@ static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":846
- *     property dims:
- *         """ The shape of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dims
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_4dims_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_4dims_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_4dims___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":847
- *         """ The shape of the variable. """
- *         def __get__(self):
- *             return self.dims             # <<<<<<<<<<<<<<
- * 
- *     property nsteps:
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->dims);
-  __pyx_r = __pyx_v_self->dims;
-  goto __pyx_L0;
-
-  /* "adios.pyx":846
- *     property dims:
- *         """ The shape of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dims
- * 
- */
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":851
- *     property nsteps:
- *         """ The number of time steps of the variable. """
+/* "adios.pyx":800
+ *     property is_stream:
+ *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nsteps
+ *             return self.is_stream
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_6nsteps_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_6nsteps_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_9is_stream_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_9is_stream_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_6nsteps___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_9is_stream___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":852
- *         """ The number of time steps of the variable. """
+  /* "adios.pyx":801
+ *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):
- *             return self.nsteps             # <<<<<<<<<<<<<<
+ *             return self.is_stream             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, file file, char * name):
+ *     def __init__(self, str fname,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":851
- *     property nsteps:
- *         """ The number of time steps of the variable. """
+  /* "adios.pyx":800
+ *     property is_stream:
+ *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nsteps
+ *             return self.is_stream
  * 
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.nsteps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.is_stream.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -11622,32 +11615,47 @@ static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_va
   return __pyx_r;
 }
 
-/* "adios.pyx":854
- *             return self.nsteps
+/* "adios.pyx":803
+ *             return self.is_stream
  * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.vp = NULL
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  str method_name = "BP",
+ *                  MPI_Comm comm = MPI_COMM_WORLD,
  */
 
 /* Python wrapper */
-static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct __pyx_obj_5adios_file *__pyx_v_file = 0;
-  char *__pyx_v_name;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_fname = 0;
+  PyObject *__pyx_v_method_name = 0;
+  MPI_Comm __pyx_v_comm;
+  PyObject *__pyx_v_is_stream = 0;
+  ADIOS_LOCKMODE __pyx_v_lock_mode;
+  float __pyx_v_timeout_sec;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,0};
-    PyObject* values[2] = {0,0};
+    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);
+
+    /* "adios.pyx":806
+ *                  str method_name = "BP",
+ *                  MPI_Comm comm = MPI_COMM_WORLD,
+ *                  is_stream = False,             # <<<<<<<<<<<<<<
+ *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
+ *                  float timeout_sec = 0.0):
+ */
+    values[3] = ((PyObject *)Py_False);
     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;
@@ -11656,36 +11664,87 @@ static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__py
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_file)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 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("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_stream);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lock_mode);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
+          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_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 803, __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);
+      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);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __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)
+    } else {
+      __pyx_v_comm = __pyx_k__15;
+    }
+    __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)
+    } else {
+      __pyx_v_lock_mode = __pyx_k__16;
+    }
+    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)
+    } else {
+      __pyx_v_timeout_sec = ((float)0.0);
     }
-    __pyx_v_file = ((struct __pyx_obj_5adios_file *)values[0]);
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 803, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_file), __pyx_ptype_5adios_file, 1, "file", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_5adios_3var___init__(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
+  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)
+  __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
+ *             return self.is_stream
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  str method_name = "BP",
+ *                  MPI_Comm comm = MPI_COMM_WORLD,
+ */
 
   /* function exit code */
   goto __pyx_L0;
@@ -11696,222 +11755,425 @@ static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__py
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, char *__pyx_v_name) {
+static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec) {
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_name = NULL;
   int __pyx_v_i;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  int __pyx_t_6;
-  size_t __pyx_t_7;
-  struct __pyx_opt_args_5adios_adios2npdtype __pyx_t_8;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  char const *__pyx_t_3;
+  ADIOS_READ_METHOD __pyx_t_4;
+  char const *__pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  uint64_t __pyx_t_8;
+  int __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":855
- * 
- *     def __init__(self, file file, char * name):
- *         self.file = file             # <<<<<<<<<<<<<<
- *         self.vp = NULL
- * 
- */
-  __Pyx_INCREF(((PyObject *)__pyx_v_file));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
-  __Pyx_GOTREF(__pyx_v_self->file);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
-  __pyx_v_self->file = __pyx_v_file;
+  /* "adios.pyx":809
+ *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
+ *                  float timeout_sec = 0.0):
+ *         self.fp = NULL             # <<<<<<<<<<<<<<
+ *         self.vars = softdict()
+ *         self.attrs = softdict()
+ */
+  __pyx_v_self->fp = NULL;
 
-  /* "adios.pyx":856
- *     def __init__(self, file file, char * name):
- *         self.file = file
- *         self.vp = NULL             # <<<<<<<<<<<<<<
+  /* "adios.pyx":810
+ *                  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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":811
+ *         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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":812
+ *         self.vars = softdict()
+ *         self.attrs = softdict()
+ *         self.is_stream = is_stream             # <<<<<<<<<<<<<<
+ *         cdef method = str2adiosreadmethod(method_name)
  * 
- *         assert self.file.fp != NULL, 'Not an open file'
  */
-  __pyx_v_self->vp = NULL;
+  __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_v_self->is_stream = __pyx_t_2;
 
-  /* "adios.pyx":858
- *         self.vp = NULL
+  /* "adios.pyx":813
+ *         self.attrs = softdict()
+ *         self.is_stream = is_stream
+ *         cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  * 
- *         assert self.file.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- *         self.vp = adios_inq_var(self.file.fp, name)
- *         assert self.vp != NULL, 'Not a valid var'
+ *         if (is_stream):
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  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_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+  __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_GOTREF(__pyx_t_1);
+  __pyx_v_method = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* "adios.pyx":859
+  /* "adios.pyx":815
+ *         cdef method = str2adiosreadmethod(method_name)
  * 
- *         assert self.file.fp != NULL, 'Not an open file'
- *         self.vp = adios_inq_var(self.file.fp, name)             # <<<<<<<<<<<<<<
- *         assert self.vp != NULL, 'Not a valid var'
+ *         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)
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":816
  * 
+ *         if (is_stream):
+ *             self.fp = adios_read_open(s2b(fname), method, comm,             # <<<<<<<<<<<<<<
+ *                                       lock_mode, timeout_sec)
+ *         else:
  */
-  __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_v_name);
+    __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __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)
 
-  /* "adios.pyx":860
- *         assert self.file.fp != NULL, 'Not an open file'
- *         self.vp = adios_inq_var(self.file.fp, name)
- *         assert self.vp != NULL, 'Not a valid var'             # <<<<<<<<<<<<<<
+    /* "adios.pyx":817
+ *         if (is_stream):
+ *             self.fp = adios_read_open(s2b(fname), method, comm,
+ *                                       lock_mode, timeout_sec)             # <<<<<<<<<<<<<<
+ *         else:
+ *             self.fp = adios_read_open_file(s2b(fname), method, comm)
+ */
+    __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
+ *         cdef method = str2adiosreadmethod(method_name)
  * 
- *         self.name = name
+ *         if (is_stream):             # <<<<<<<<<<<<<<
+ *             self.fp = adios_read_open(s2b(fname), method, comm,
+ *                                       lock_mode, timeout_sec)
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":819
+ *                                       lock_mode, timeout_sec)
+ *         else:
+ *             self.fp = adios_read_open_file(s2b(fname), method, comm)             # <<<<<<<<<<<<<<
+ * 
+ *         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_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_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
+ *             self.fp = adios_read_open_file(s2b(fname), method, comm)
+ * 
+ *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
+ * 
+ *         self.name = fname.split('/')[-1]  ## basename
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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)
     }
   }
   #endif
 
-  /* "adios.pyx":862
- *         assert self.vp != NULL, 'Not a valid var'
+  /* "adios.pyx":823
+ *         assert self.fp != NULL, 'Not an open file'
  * 
- *         self.name = name             # <<<<<<<<<<<<<<
- *         self.varid = self.vp.varid
- *         self.ndim = self.vp.ndim
+ *         self.name = fname.split('/')[-1]  ## basename             # <<<<<<<<<<<<<<
+ *         self.nvars = self.fp.nvars
+ *         self.nattrs = self.fp.nattrs
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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_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_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)
   __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":863
+  /* "adios.pyx":824
  * 
- *         self.name = name
- *         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.name = fname.split('/')[-1]  ## basename
+ *         self.nvars = self.fp.nvars             # <<<<<<<<<<<<<<
+ *         self.nattrs = self.fp.nattrs
+ *         self.current_step = self.fp.current_step
  */
-  __pyx_t_2 = __pyx_v_self->vp->varid;
-  __pyx_v_self->varid = __pyx_t_2;
+  __pyx_t_7 = __pyx_v_self->fp->nvars;
+  __pyx_v_self->nvars = __pyx_t_7;
 
-  /* "adios.pyx":864
- *         self.name = name
- *         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
+  /* "adios.pyx":825
+ *         self.name = fname.split('/')[-1]  ## basename
+ *         self.nvars = self.fp.nvars
+ *         self.nattrs = self.fp.nattrs             # <<<<<<<<<<<<<<
+ *         self.current_step = self.fp.current_step
+ *         self.last_step = self.fp.last_step
  */
-  __pyx_t_2 = __pyx_v_self->vp->ndim;
-  __pyx_v_self->ndim = __pyx_t_2;
+  __pyx_t_7 = __pyx_v_self->fp->nattrs;
+  __pyx_v_self->nattrs = __pyx_t_7;
 
-  /* "adios.pyx":865
- *         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
+  /* "adios.pyx":826
+ *         self.nvars = self.fp.nvars
+ *         self.nattrs = self.fp.nattrs
+ *         self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
+ *         self.last_step = self.fp.last_step
+ *         self.endianness = self.fp.endianness
+ */
+  __pyx_t_7 = __pyx_v_self->fp->current_step;
+  __pyx_v_self->current_step = __pyx_t_7;
+
+  /* "adios.pyx":827
+ *         self.nattrs = self.fp.nattrs
+ *         self.current_step = self.fp.current_step
+ *         self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
+ *         self.endianness = self.fp.endianness
+ *         self.version = self.fp.version
+ */
+  __pyx_t_7 = __pyx_v_self->fp->last_step;
+  __pyx_v_self->last_step = __pyx_t_7;
+
+  /* "adios.pyx":828
+ *         self.current_step = self.fp.current_step
+ *         self.last_step = self.fp.last_step
+ *         self.endianness = self.fp.endianness             # <<<<<<<<<<<<<<
+ *         self.version = self.fp.version
+ *         self.file_size = self.fp.file_size
+ */
+  __pyx_t_7 = __pyx_v_self->fp->endianness;
+  __pyx_v_self->endianness = __pyx_t_7;
+
+  /* "adios.pyx":829
+ *         self.last_step = self.fp.last_step
+ *         self.endianness = self.fp.endianness
+ *         self.version = self.fp.version             # <<<<<<<<<<<<<<
+ *         self.file_size = self.fp.file_size
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_v_self->vp->ndim;
-  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
-    __pyx_v_i = __pyx_t_3;
-    __pyx_t_4 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  }
-  __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_GIVEREF(__pyx_t_4);
-  __Pyx_GOTREF(__pyx_v_self->dims);
-  __Pyx_DECREF(__pyx_v_self->dims);
-  __pyx_v_self->dims = ((PyObject*)__pyx_t_4);
-  __pyx_t_4 = 0;
+  __pyx_t_7 = __pyx_v_self->fp->version;
+  __pyx_v_self->version = __pyx_t_7;
 
-  /* "adios.pyx":866
- *         self.ndim = self.vp.ndim
- *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
- *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
+  /* "adios.pyx":830
+ *         self.endianness = self.fp.endianness
+ *         self.version = self.fp.version
+ *         self.file_size = self.fp.file_size             # <<<<<<<<<<<<<<
  * 
- *         if self.vp.type == DATATYPE.string:
+ *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
  */
-  __pyx_t_2 = __pyx_v_self->vp->nsteps;
-  __pyx_v_self->nsteps = __pyx_t_2;
+  __pyx_t_8 = __pyx_v_self->fp->file_size;
+  __pyx_v_self->file_size = __pyx_t_8;
 
-  /* "adios.pyx":868
- *         self.nsteps = self.vp.nsteps
+  /* "adios.pyx":832
+ *         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))
  * 
- *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
- *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
- *         else:
  */
-  __pyx_t_4 = PyInt_FromLong(__pyx_v_self->vp->type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __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_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_6);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 832, __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;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_6) {
+  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)
+    #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_GOTREF(__pyx_t_1);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
+    __pyx_t_1 = 0;
 
-    /* "adios.pyx":869
+    /* "adios.pyx":833
  * 
- *         if self.vp.type == DATATYPE.string:
- *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))             # <<<<<<<<<<<<<<
- *         else:
- *             self.dtype = adios2npdtype(self.vp.type)
+ *         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)]:
  */
-    __pyx_t_7 = strlen(((char *)__pyx_v_self->vp->value)); 
-    __pyx_t_8.__pyx_n = 1;
-    __pyx_t_8.strlen = __pyx_t_7;
-    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_self->vp->type, 0, &__pyx_t_8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __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, 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)
     __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 833, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_INCREF(((PyObject *)__pyx_v_self));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(__pyx_t_1);
-    __Pyx_GOTREF(__pyx_v_self->dtype);
-    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
-    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    goto __pyx_L5;
+    __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_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)
+    __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)
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "adios.pyx":832
+ *         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))
+ * 
+ */
   }
-  /*else*/ {
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "adios.pyx":871
- *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
- *         else:
- *             self.dtype = adios2npdtype(self.vp.type)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":835
+ *             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))
  * 
- *     def __del__(self):
  */
-    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_self->vp->type, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __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_GOTREF(__pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __Pyx_GOTREF(__pyx_v_self->dtype);
-    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
-    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
-    __pyx_t_1 = 0;
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 835, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  __pyx_L5:;
+  __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  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)
+    #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_GOTREF(__pyx_t_6);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
+    __pyx_t_6 = 0;
 
-  /* "adios.pyx":854
- *             return self.nsteps
+    /* "adios.pyx":836
  * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.vp = NULL
+ *         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)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 836, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_INCREF(((PyObject *)__pyx_v_self));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_self));
+    __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_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)
+    __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)
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+    /* "adios.pyx":835
+ *             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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":838
+ *             self.vars[b2s(name)] = var(self, b2s(name))
+ * 
+ *         self.var = self.vars             # <<<<<<<<<<<<<<
+ *         self.attr = self.attrs
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->vars);
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->var);
+  __Pyx_DECREF(__pyx_v_self->var);
+  __pyx_v_self->var = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":839
+ * 
+ *         self.var = self.vars
+ *         self.attr = self.attrs             # <<<<<<<<<<<<<<
+ * 
+ *     def __del__(self):
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->attrs);
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attr);
+  __Pyx_DECREF(__pyx_v_self->attr);
+  __pyx_v_self->attr = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":803
+ *             return self.is_stream
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  str method_name = "BP",
+ *                  MPI_Comm comm = MPI_COMM_WORLD,
  */
 
   /* function exit code */
@@ -11919,63 +12181,230 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("adios.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("adios.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_XDECREF(__pyx_v_name);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":873
- *             self.dtype = adios2npdtype(self.vp.type)
+/* "adios.pyx":841
+ *         self.attr = self.attrs
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         """ Close file on destruction. """
  *         self.close()
- * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_3var_2__del__[] = "var.__del__(self)";
-static PyObject *__pyx_pw_5adios_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_5adios_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_2__del__[] = "file.__del__(self)\n Close file on destruction. ";
+static PyObject *__pyx_pw_5adios_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_2__del__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_2__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_2__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__del__", 0);
 
-  /* "adios.pyx":874
- * 
+  /* "adios.pyx":843
  *     def __del__(self):
+ *         """ Close file on destruction. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
- *     cpdef close(self):
+ *     def __enter__(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_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __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, 843, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":873
- *             self.dtype = adios2npdtype(self.vp.type)
+  /* "adios.pyx":841
+ *         self.attr = self.attrs
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         """ Close file on destruction. """
+ *         self.close()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.file.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":845
+ *         self.close()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         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 PyObject *__pyx_pw_5adios_4file_5__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_4file_4__enter__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_4file_4__enter__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "adios.pyx":847
+ *     def __enter__(self):
+ *         """ Enter for with statemetn """
+ *         return self             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
+  /* "adios.pyx":845
+ *         self.close()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         return self
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":849
+ *         return self
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
  *         self.close()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4file_7__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_4file_6__exit__[] = "file.__exit__(self, exception_type, exception_value, traceback)\n Close file on exit. ";
+static PyObject *__pyx_pw_5adios_4file_7__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;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_type,&__pyx_n_s_exception_value,&__pyx_n_s_traceback,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_exception_type)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } 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_exception_type = values[0];
+    __pyx_v_exception_value = values[1];
+    __pyx_v_traceback = values[2];
+  }
+  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_L3_error:;
+  __Pyx_AddTraceback("adios.file.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_4file_6__exit__(((struct __pyx_obj_5adios_file *)__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_4file_6__exit__(struct __pyx_obj_5adios_file *__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;
+  __Pyx_RefNannySetupContext("__exit__", 0);
+
+  /* "adios.pyx":851
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":849
+ *         return self
  * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
  */
 
   /* function exit code */
@@ -11983,7 +12412,7 @@ static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__py
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -11991,33 +12420,30 @@ static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":876
+/* "adios.pyx":853
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'
  */
 
-static PyObject *__pyx_pw_5adios_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_4file_9close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("close", 0);
   /* Check if called by wrapper */
   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_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __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, 853, __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)) {
+    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_9close)) {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
@@ -12031,10 +12457,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_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 853, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12046,46 +12472,46 @@ 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":878
+  /* "adios.pyx":855
  *     cpdef close(self):
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'             # <<<<<<<<<<<<<<
- *         adios_free_varinfo(self.vp)
- *         self.vp = NULL
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
+ *         adios_read_close(self.fp)
+ *         self.fp = NULL
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_var);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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)
     }
   }
   #endif
 
-  /* "adios.pyx":879
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'
- *         adios_free_varinfo(self.vp)             # <<<<<<<<<<<<<<
- *         self.vp = NULL
+  /* "adios.pyx":856
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'
+ *         adios_read_close(self.fp)             # <<<<<<<<<<<<<<
+ *         self.fp = NULL
  * 
  */
-  adios_free_varinfo(__pyx_v_self->vp);
+  adios_read_close(__pyx_v_self->fp);
 
-  /* "adios.pyx":880
- *         assert self.vp != NULL, 'Not an open var'
- *         adios_free_varinfo(self.vp)
- *         self.vp = NULL             # <<<<<<<<<<<<<<
+  /* "adios.pyx":857
+ *         assert self.fp != NULL, 'Not an open file'
+ *         adios_read_close(self.fp)
+ *         self.fp = NULL             # <<<<<<<<<<<<<<
  * 
- *     cpdef advance(self):
+ *     cpdef printself(self):
  */
-  __pyx_v_self->vp = NULL;
+  __pyx_v_self->fp = NULL;
 
-  /* "adios.pyx":876
+  /* "adios.pyx":853
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'
  */
 
   /* function exit code */
@@ -12096,7 +12522,7 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -12105,29 +12531,26 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_3var_4close[] = "var.close(self)\n Close and free variable information ";
-static PyObject *__pyx_pw_5adios_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_5adios_4file_9close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_8close[] = "file.close(self)\n Close the open file. ";
+static PyObject *__pyx_pw_5adios_4file_9close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_4close(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_8close(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_8close(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -12136,7 +12559,7 @@ static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -12144,35 +12567,30 @@ static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":882
- *         self.vp = NULL
+/* "adios.pyx":859
+ *         self.fp = NULL
  * 
- *     cpdef advance(self):             # <<<<<<<<<<<<<<
- *         """ Update variable information after the stream advanced """
- *         self.vp = adios_inq_var(self.file.fp, self.name)
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_FILE structure. """
+ *         assert self.fp != NULL, 'Not an open file'
  */
 
-static PyObject *__pyx_pw_5adios_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_4file_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  char const *__pyx_t_5;
-  int __pyx_t_6;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
+  __Pyx_RefNannySetupContext("printself", 0);
   /* Check if called by wrapper */
   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_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __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, 859, __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)) {
+    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_11printself)) {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
@@ -12186,10 +12604,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_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12201,48 +12619,80 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":884
- *     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_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_5);
-
-  /* "adios.pyx":885
- *         """ 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
- * 
+  /* "adios.pyx":861
+ *     cpdef printself(self):
+ *         """ Print native ADIOS_FILE structure. """
+ *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
+ *         print ('=== AdiosFile ===')
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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)
     }
   }
   #endif
 
-  /* "adios.pyx":886
- *         self.vp = adios_inq_var(self.file.fp, self.name)
- *         assert self.vp != NULL, 'Not a valid var'
- *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
+  /* "adios.pyx":862
+ *         """ 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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":863
+ *         assert self.fp != NULL, 'Not an open file'
+ *         print ('=== AdiosFile ===')
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))             # <<<<<<<<<<<<<<
+ *         printfile(self.fp)
  * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):
  */
-  __pyx_t_6 = __pyx_v_self->vp->nsteps;
-  __pyx_v_self->nsteps = __pyx_t_6;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_fp);
+  __Pyx_GIVEREF(__pyx_n_s_fp);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":882
- *         self.vp = NULL
+  /* "adios.pyx":864
+ *         print ('=== AdiosFile ===')
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
+ *         printfile(self.fp)             # <<<<<<<<<<<<<<
  * 
- *     cpdef advance(self):             # <<<<<<<<<<<<<<
- *         """ Update variable information after the stream advanced """
- *         self.vp = adios_inq_var(self.file.fp, self.name)
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":859
+ *         self.fp = NULL
+ * 
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_FILE structure. """
+ *         assert self.fp != NULL, 'Not an open file'
  */
 
   /* function exit code */
@@ -12253,7 +12703,7 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -12262,29 +12712,26 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_3var_6advance[] = "var.advance(self)\n Update variable information after the stream advanced ";
-static PyObject *__pyx_pw_5adios_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_5adios_4file_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_10printself[] = "file.printself(self)\n Print native ADIOS_FILE structure. ";
+static PyObject *__pyx_pw_5adios_4file_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_6advance(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_10printself(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_10printself(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
+  __Pyx_RefNannySetupContext("printself", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_3var_advance(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -12293,7 +12740,7 @@ static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__py
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -12301,76 +12748,33 @@ static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":888
- *         self.nsteps = self.vp.nsteps
- * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):             # <<<<<<<<<<<<<<
- *         """ Perform read.
+/* "adios.pyx":866
+ *         printfile(self.fp)
  * 
+ *     cpdef release_step(self):             # <<<<<<<<<<<<<<
+ *         """ Release the current step lock and let the writer code to progress """
+ *         adios_release_step(self.fp)
  */
 
-static PyObject *__pyx_pw_5adios_3var_9read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read *__pyx_optional_args) {
-  PyObject *__pyx_v_offset = ((PyObject*)__pyx_empty_tuple);
-  PyObject *__pyx_v_count = ((PyObject*)__pyx_empty_tuple);
-  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
-  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
-  PyObject *__pyx_v_fill = ((PyObject *)__pyx_int_0);
-  PyObject *__pyx_v_lshape = 0;
-  PyArrayObject *__pyx_v_npshape = 0;
-  PyArrayObject *__pyx_v_npoffset = 0;
-  PyArrayObject *__pyx_v_npcount = 0;
-  PyObject *__pyx_v_shape = NULL;
-  PyArrayObject *__pyx_v_var = 0;
-  ADIOS_SELECTION *__pyx_v_sel;
-  int __pyx_v_i;
+static PyObject *__pyx_pw_5adios_4file_13release_step(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_5adios_4file_release_step(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  Py_ssize_t __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_offset = __pyx_optional_args->offset;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_count = __pyx_optional_args->count;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_from_steps = __pyx_optional_args->from_steps;
-          if (__pyx_optional_args->__pyx_n > 3) {
-            __pyx_v_nsteps = __pyx_optional_args->nsteps;
-            if (__pyx_optional_args->__pyx_n > 4) {
-              __pyx_v_fill = __pyx_optional_args->fill;
-            }
-          }
-        }
-      }
-    }
-  }
-  __Pyx_INCREF(__pyx_v_from_steps);
-  __Pyx_INCREF(__pyx_v_nsteps);
+  __Pyx_RefNannySetupContext("release_step", 0);
   /* Check if called by wrapper */
   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_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __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, 866, __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)) {
+    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_13release_step)) {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
         __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
         if (likely(__pyx_t_4)) {
@@ -12378,32 +12782,15 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
           __Pyx_INCREF(__pyx_t_4);
           __Pyx_INCREF(function);
           __Pyx_DECREF_SET(__pyx_t_3, function);
-          __pyx_t_5 = 1;
         }
       }
-      __pyx_t_6 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
       if (__pyx_t_4) {
-        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
+        __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_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_INCREF(__pyx_v_offset);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_offset);
-      __Pyx_GIVEREF(__pyx_v_offset);
-      __Pyx_INCREF(__pyx_v_count);
-      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_count);
-      __Pyx_GIVEREF(__pyx_v_count);
-      __Pyx_INCREF(__pyx_v_from_steps);
-      PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_from_steps);
-      __Pyx_GIVEREF(__pyx_v_from_steps);
-      __Pyx_INCREF(__pyx_v_nsteps);
-      PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_nsteps);
-      __Pyx_GIVEREF(__pyx_v_nsteps);
-      __Pyx_INCREF(__pyx_v_fill);
-      PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_5, __pyx_v_fill);
-      __Pyx_GIVEREF(__pyx_v_fill);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __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;
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -12413,699 +12800,373 @@ 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":935
- * 
- *         """
- *         if from_steps is None:             # <<<<<<<<<<<<<<
- *             from_steps = 0 ##self.file.current_step
+  /* "adios.pyx":868
+ *     cpdef release_step(self):
+ *         """ Release the current step lock and let the writer code to progress """
+ *         adios_release_step(self.fp)             # <<<<<<<<<<<<<<
  * 
+ *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):
  */
-  __pyx_t_7 = (__pyx_v_from_steps == Py_None);
-  __pyx_t_8 = (__pyx_t_7 != 0);
-  if (__pyx_t_8) {
+  adios_release_step(__pyx_v_self->fp);
 
-    /* "adios.pyx":936
- *         """
- *         if from_steps is None:
- *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
+  /* "adios.pyx":866
+ *         printfile(self.fp)
  * 
- *         if nsteps is None:
+ *     cpdef release_step(self):             # <<<<<<<<<<<<<<
+ *         """ Release the current step lock and let the writer code to progress """
+ *         adios_release_step(self.fp)
  */
-    __Pyx_INCREF(__pyx_int_0);
-    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
 
-  /* "adios.pyx":938
- *             from_steps = 0 ##self.file.current_step
- * 
- *         if nsteps is None:             # <<<<<<<<<<<<<<
- *             nsteps = self.file.last_step - from_steps + 1
- * 
- */
-  __pyx_t_8 = (__pyx_v_nsteps == Py_None);
-  __pyx_t_7 = (__pyx_t_8 != 0);
-  if (__pyx_t_7) {
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.file.release_step", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":939
- * 
- *         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_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L4;
-  }
-  __pyx_L4:;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4file_13release_step(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_12release_step[] = "file.release_step(self)\n Release the current step lock and let the writer code to progress ";
+static PyObject *__pyx_pw_5adios_4file_13release_step(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("release_step (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_12release_step(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
-  /* "adios.pyx":941
- *             nsteps = self.file.last_step - from_steps + 1
- * 
- *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
- *         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))
- */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    __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_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":942
- * 
- *         assert self.dtype is not None, 'Data type is not supported yet'
- *         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))
- * 
- */
-  __pyx_t_8 = ((__pyx_v_self->nsteps > 0) != 0);
-  if (__pyx_t_8) {
-  } else {
-    __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_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+static PyObject *__pyx_pf_5adios_4file_12release_step(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __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) {
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-    /* "adios.pyx":943
- *         assert self.dtype is not None, 'Data type is not supported yet'
- *         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_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_from_steps);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_steps);
-    __Pyx_GIVEREF(__pyx_v_from_steps);
-    __Pyx_INCREF(__pyx_v_nsteps);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_nsteps);
-    __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-
-  /* "adios.pyx":945
- *             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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  }
-  __pyx_v_lshape = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.file.release_step", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":946
- * 
- *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]
- *         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)             # <<<<<<<<<<<<<<
+/* "adios.pyx":870
+ *         adios_release_step(self.fp)
  * 
- *         cdef np.ndarray npoffset
+ *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
+ *         """
+ *         Advance a timestep for stream reader.
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_v_lshape);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_lshape);
-  __Pyx_GIVEREF(__pyx_v_lshape);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_npshape = ((PyArrayObject *)__pyx_t_4);
-  __pyx_t_4 = 0;
 
-  /* "adios.pyx":949
- * 
- *         cdef np.ndarray npoffset
- *         if len(offset) == 0:             # <<<<<<<<<<<<<<
- *             npoffset = npshape.copy()
- *             npoffset.fill(0)
- */
-  if (unlikely(__pyx_v_offset == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+static PyObject *__pyx_pw_5adios_4file_15advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_4file_advance *__pyx_optional_args) {
+  int __pyx_v_last = ((int)0);
+  float __pyx_v_timeout_sec = ((float)0.0);
+  int __pyx_v_val;
+  PyObject *__pyx_v_v = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  Py_ssize_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *(*__pyx_t_11)(PyObject *);
+  __Pyx_RefNannySetupContext("advance", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_last = __pyx_optional_args->last;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_timeout_sec = __pyx_optional_args->timeout_sec;
+      }
+    }
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
-  if (__pyx_t_7) {
-
-    /* "adios.pyx":950
- *         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_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /* Check if called by wrapper */
+  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_GOTREF(__pyx_t_1);
-    __pyx_t_2 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
-      if (likely(__pyx_t_2)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-        __Pyx_INCREF(__pyx_t_2);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_1, function);
+    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_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_GOTREF(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
+      __pyx_t_7 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
+        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+        if (likely(__pyx_t_6)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_6);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_5, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_4);
+      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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
     }
-    if (__pyx_t_2) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_4);
-    __pyx_t_4 = 0;
+  }
 
-    /* "adios.pyx":951
- *         if len(offset) == 0:
- *             npoffset = npshape.copy()
- *             npoffset.fill(0)             # <<<<<<<<<<<<<<
- *         else:
- *             npoffset = np.array(offset, dtype=np.int64)
+  /* "adios.pyx":881
+ *             int: 0 if successful, non-zero otherwise.
+ *         """
+ *         val = adios_advance_step(self.fp, last, timeout_sec)             # <<<<<<<<<<<<<<
+ *         if (val >= 0):
+ *             self.current_step = self.fp.current_step
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npoffset), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L10;
-  }
-  /*else*/ {
+  __pyx_v_val = adios_advance_step(__pyx_v_self->fp, __pyx_v_last, __pyx_v_timeout_sec);
 
-    /* "adios.pyx":953
- *             npoffset.fill(0)
- *         else:
- *             npoffset = np.array(offset, dtype=np.int64)             # <<<<<<<<<<<<<<
- * 
- *         cdef np.ndarray npcount
+  /* "adios.pyx":882
+ *         """
+ *         val = adios_advance_step(self.fp, last, timeout_sec)
+ *         if (val >= 0):             # <<<<<<<<<<<<<<
+ *             self.current_step = self.fp.current_step
+ *             self.last_step = self.fp.last_step
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_v_offset);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_offset);
-    __Pyx_GIVEREF(__pyx_v_offset);
-    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-  }
-  __pyx_L10:;
+  __pyx_t_9 = ((__pyx_v_val >= 0) != 0);
+  if (__pyx_t_9) {
 
-  /* "adios.pyx":956
+    /* "adios.pyx":883
+ *         val = adios_advance_step(self.fp, last, timeout_sec)
+ *         if (val >= 0):
+ *             self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
+ *             self.last_step = self.fp.last_step
  * 
- *         cdef np.ndarray npcount
- *         if len(count) == 0:             # <<<<<<<<<<<<<<
- *             npcount = npshape - npoffset
- *         else:
  */
-  if (unlikely(__pyx_v_count == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
-  if (__pyx_t_7) {
+    __pyx_t_10 = __pyx_v_self->fp->current_step;
+    __pyx_v_self->current_step = __pyx_t_10;
 
-    /* "adios.pyx":957
- *         cdef np.ndarray npcount
- *         if len(count) == 0:
- *             npcount = npshape - npoffset             # <<<<<<<<<<<<<<
- *         else:
- *             npcount = np.array(count, dtype=np.int64)
+    /* "adios.pyx":884
+ *         if (val >= 0):
+ *             self.current_step = self.fp.current_step
+ *             self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
+ * 
+ *             for v in self.vars.values():
  */
-    __pyx_t_6 = PyNumber_Subtract(((PyObject *)__pyx_v_npshape), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-    goto __pyx_L11;
-  }
-  /*else*/ {
+    __pyx_t_10 = __pyx_v_self->fp->last_step;
+    __pyx_v_self->last_step = __pyx_t_10;
 
-    /* "adios.pyx":959
- *             npcount = npshape - npoffset
- *         else:
- *             npcount = np.array(count, dtype=np.int64)             # <<<<<<<<<<<<<<
+    /* "adios.pyx":886
+ *             self.last_step = self.fp.last_step
+ * 
+ *             for v in self.vars.values():             # <<<<<<<<<<<<<<
+ *                 v.advance()
  * 
- *         if npshape.ndim != npoffset.ndim:
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __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, 886, __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_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_INCREF(__pyx_v_count);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_count);
-    __Pyx_GIVEREF(__pyx_v_count);
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_3);
-    __pyx_t_3 = 0;
-  }
-  __pyx_L11:;
-
-  /* "adios.pyx":961
- *             npcount = np.array(count, dtype=np.int64)
- * 
- *         if npshape.ndim != npoffset.ndim:             # <<<<<<<<<<<<<<
- *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))
- * 
- */
-  __pyx_t_7 = ((__pyx_v_npshape->nd != __pyx_v_npoffset->nd) != 0);
-  if (__pyx_t_7) {
-
-    /* "adios.pyx":962
- * 
- *         if npshape.ndim != npoffset.ndim:
- *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))             # <<<<<<<<<<<<<<
- * 
- *         if npshape.ndim != npcount.ndim:
- */
-    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_npoffset->nd); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __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);
+    if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+      __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-
-  /* "adios.pyx":964
- *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))
- * 
- *         if npshape.ndim != npcount.ndim:             # <<<<<<<<<<<<<<
- *             raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))
- * 
- */
-  __pyx_t_7 = ((__pyx_v_npshape->nd != __pyx_v_npcount->nd) != 0);
-  if (__pyx_t_7) {
+    for (;;) {
+      if (likely(!__pyx_t_11)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_1);
+          #endif
+        }
+      } else {
+        __pyx_t_1 = __pyx_t_11(__pyx_t_2);
+        if (unlikely(!__pyx_t_1)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_1);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
+      __pyx_t_1 = 0;
 
-    /* "adios.pyx":965
+      /* "adios.pyx":887
  * 
- *         if npshape.ndim != npcount.ndim:
- *             raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))             # <<<<<<<<<<<<<<
+ *             for v in self.vars.values():
+ *                 v.advance()             # <<<<<<<<<<<<<<
  * 
- *         if (npshape < npcount + npoffset).any():
+ *         return val
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_npcount->nd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
-    __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
+      __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_GOTREF(__pyx_t_5);
+      __pyx_t_8 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
+        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
+        if (likely(__pyx_t_8)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_5, function);
+        }
+      }
+      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_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_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":967
- *             raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))
+      /* "adios.pyx":886
+ *             self.last_step = self.fp.last_step
  * 
- *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
- *             raise IndexError('Requested is larger than the shape.')
+ *             for v in self.vars.values():             # <<<<<<<<<<<<<<
+ *                 v.advance()
  * 
  */
-  __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_npcount), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
     }
-  }
-  if (__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (__pyx_t_7) {
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios.pyx":968
- * 
- *         if (npshape < npcount + npoffset).any():
- *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
- * 
- *         shape = list(npcount)
+    /* "adios.pyx":882
+ *         """
+ *         val = adios_advance_step(self.fp, last, timeout_sec)
+ *         if (val >= 0):             # <<<<<<<<<<<<<<
+ *             self.current_step = self.fp.current_step
+ *             self.last_step = self.fp.last_step
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "adios.pyx":970
- *             raise IndexError('Requested is larger than the shape.')
- * 
- *         shape = list(npcount)             # <<<<<<<<<<<<<<
- *         if (nsteps > 1):
- *             shape.insert(0, nsteps)
- */
-  __pyx_t_3 = PySequence_List(((PyObject *)__pyx_v_npcount)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_shape = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
-
-  /* "adios.pyx":971
- * 
- *         shape = list(npcount)
- *         if (nsteps > 1):             # <<<<<<<<<<<<<<
- *             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_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (__pyx_t_7) {
-
-    /* "adios.pyx":972
- *         shape = list(npcount)
- *         if (nsteps > 1):
- *             shape.insert(0, nsteps)             # <<<<<<<<<<<<<<
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
+  /* "adios.pyx":889
+ *                 v.advance()
  * 
- */
-    __pyx_t_11 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L15;
-  }
-  __pyx_L15:;
-
-  /* "adios.pyx":973
- *         if (nsteps > 1):
- *             shape.insert(0, nsteps)
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
+ *         return val             # <<<<<<<<<<<<<<
  * 
- *         if len(shape) > 0:
+ *     def __getitem__(self, varname):
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_INCREF(__pyx_v_shape);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
-  __Pyx_GIVEREF(__pyx_v_shape);
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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_6); __pyx_t_6 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_var = ((PyArrayObject *)__pyx_t_2);
+  __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":975
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
- * 
- *         if len(shape) > 0:             # <<<<<<<<<<<<<<
- *             var[:] = fill
- * 
- */
-  __pyx_t_5 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((__pyx_t_5 > 0) != 0);
-  if (__pyx_t_7) {
-
-    /* "adios.pyx":976
- * 
- *         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__16, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L16;
-  }
-  __pyx_L16:;
-
-  /* "adios.pyx":979
- * 
- *         cdef ADIOS_SELECTION * sel
- *         sel = adios_selection_boundingbox (self.vp.ndim, <uint64_t *> npoffset.data, <uint64_t *> npcount.data)             # <<<<<<<<<<<<<<
- * 
- *         ##print 'npoffset', npoffset
- */
-  __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":984
- *         ##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.pyx":870
+ *         adios_release_step(self.fp)
  * 
+ *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
+ *         """
+ *         Advance a timestep for stream reader.
  */
-  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __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":985
- * 
- *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
- *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
- * 
- *         ## Try not to return as scalar to be consistent
- */
-  adios_perform_reads(__pyx_v_self->file->fp, 1);
-
-  /* "adios.pyx":992
- *         ##else:
- *         ##    return var
- *         return np.squeeze(var)             # <<<<<<<<<<<<<<
- * 
- *     cpdef printself(self):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_3, function);
-    }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_var)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
-    __Pyx_INCREF(((PyObject *)__pyx_v_var));
-    PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_var));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_var));
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __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_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "adios.pyx":888
- *         self.nsteps = self.vp.nsteps
- * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):             # <<<<<<<<<<<<<<
- *         """ Perform read.
- * 
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("adios.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_lshape);
-  __Pyx_XDECREF((PyObject *)__pyx_v_npshape);
-  __Pyx_XDECREF((PyObject *)__pyx_v_npoffset);
-  __Pyx_XDECREF((PyObject *)__pyx_v_npcount);
-  __Pyx_XDECREF(__pyx_v_shape);
-  __Pyx_XDECREF((PyObject *)__pyx_v_var);
-  __Pyx_XDECREF(__pyx_v_from_steps);
-  __Pyx_XDECREF(__pyx_v_nsteps);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_v);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_9read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_3var_8read[] = "var.read(self, tuple offset=(), tuple count=(), from_steps=None, nsteps=None, fill=0)\n 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            from_steps (int, optional): starting s [...]
-static PyObject *__pyx_pw_5adios_3var_9read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_offset = 0;
-  PyObject *__pyx_v_count = 0;
-  PyObject *__pyx_v_from_steps = 0;
-  PyObject *__pyx_v_nsteps = 0;
-  PyObject *__pyx_v_fill = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_4file_15advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_4file_14advance[] = "file.advance(self, int last=0, float timeout_sec=0.0)\n\n        Advance a timestep for stream reader.\n\n        Args:\n            last (int, optional): last timestep index (default: 0).\n            timeout_sec (float, optional): timeout seconds (default: 0.0).\n\n        Returns:\n            int: 0 if successful, non-zero otherwise.\n        ";
+static PyObject *__pyx_pw_5adios_4file_15advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_last;
+  float __pyx_v_timeout_sec;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_count,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,&__pyx_n_s_fill,0};
-    PyObject* values[5] = {0,0,0,0,0};
-    values[0] = ((PyObject*)__pyx_empty_tuple);
-    values[1] = ((PyObject*)__pyx_empty_tuple);
-    values[2] = ((PyObject *)Py_None);
-    values[3] = ((PyObject *)Py_None);
-    values[4] = ((PyObject *)__pyx_int_0);
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_last,&__pyx_n_s_timeout_sec,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  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;
@@ -13115,88 +13176,63 @@ static PyObject *__pyx_pw_5adios_3var_9read(PyObject *__pyx_v_self, PyObject *__
       switch (pos_args) {
         case  0:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_last);
           if (value) { values[0] = value; kw_args--; }
         }
         case  1:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
           if (value) { values[1] = value; kw_args--; }
         }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
-          if (value) { values[3] = value; kw_args--; }
-        }
-        case  4:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
-          if (value) { values[4] = value; kw_args--; }
-        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) __PYX_ERR(0, 870, __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);
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_offset = ((PyObject*)values[0]);
-    __pyx_v_count = ((PyObject*)values[1]);
-    __pyx_v_from_steps = values[2];
-    __pyx_v_nsteps = values[3];
-    __pyx_v_fill = values[4];
+    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)
+    } 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)
+    } else {
+      __pyx_v_timeout_sec = ((float)0.0);
+    }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("advance", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 870, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.advance", __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_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_5adios_3var_8read(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_offset, __pyx_v_count, __pyx_v_from_steps, __pyx_v_nsteps, __pyx_v_fill);
+  __pyx_r = __pyx_pf_5adios_4file_14advance(((struct __pyx_obj_5adios_file *)__pyx_v_self), __pyx_v_last, __pyx_v_timeout_sec);
 
   /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_3var_8read(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill) {
+static PyObject *__pyx_pf_5adios_4file_14advance(struct __pyx_obj_5adios_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_5adios_3var_read __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
+  struct __pyx_opt_args_5adios_4file_advance __pyx_t_2;
+  __Pyx_RefNannySetupContext("advance", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 5;
-  __pyx_t_2.offset = __pyx_v_offset;
-  __pyx_t_2.count = __pyx_v_count;
-  __pyx_t_2.from_steps = __pyx_v_from_steps;
-  __pyx_t_2.nsteps = __pyx_v_nsteps;
-  __pyx_t_2.fill = __pyx_v_fill;
-  __pyx_t_1 = __pyx_vtabptr_5adios_var->read(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -13205,7 +13241,7 @@ static PyObject *__pyx_pf_5adios_3var_8read(struct __pyx_obj_5adios_var *__pyx_v
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -13213,2415 +13249,1957 @@ static PyObject *__pyx_pf_5adios_3var_8read(struct __pyx_obj_5adios_var *__pyx_v
   return __pyx_r;
 }
 
-/* "adios.pyx":994
- *         return np.squeeze(var)
+/* "adios.pyx":891
+ *         return val
  * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_VARINFO structure. """
- *         assert self.vp != NULL, 'Not an open variable'
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
  */
 
-static PyObject *__pyx_pw_5adios_3var_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch) {
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4file_17__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static char __pyx_doc_5adios_4file_16__getitem__[] = "\n        Return Adios variable, attribute, or group.\n\n        Args:\n            varname (str): variable or attribute name.\n\n        Raises:\n            KeyError: If no name exists.\n\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_5adios_4file_16__getitem__;
+#endif
+static PyObject *__pyx_pw_5adios_4file_17__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_16__getitem__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_1;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printself", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __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_11printself)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios.pyx":996
- *     cpdef printself(self):
- *         """ Print native ADIOS_VARINFO structure. """
- *         assert self.vp != NULL, 'Not an open variable'             # <<<<<<<<<<<<<<
- *         print '=== AdiosVariable ==='
- *         print '%15s : %lu' % ('vp', <unsigned long> self.vp)
+  /* "adios.pyx":902
+ * 
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_variable);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-  /* "adios.pyx":997
- *         """ 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)
+    /* "adios.pyx":903
+ *         """
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)             # <<<<<<<<<<<<<<
+ * 
+ *         if len(varname) > 1:
  */
-  if (__Pyx_PrintOne(0, __pyx_kp_s_AdiosVariable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __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_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* "adios.pyx":998
- *         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)
+    /* "adios.pyx":902
+ * 
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->vp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_vp);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_vp);
-  __Pyx_GIVEREF(__pyx_n_s_vp);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
 
-  /* "adios.pyx":999
- *         print '=== AdiosVariable ==='
- *         print '%15s : %lu' % ('vp', <unsigned long> self.vp)
- *         print '%15s : %lu' % ('fp', <unsigned long> self.file.fp)             # <<<<<<<<<<<<<<
- *         printvar(self.vp)
+  /* "adios.pyx":905
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->file->fp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
-  __Pyx_GIVEREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":1000
- *         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_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":994
- *         return np.squeeze(var)
- * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_VARINFO structure. """
- *         assert self.vp != NULL, 'Not an open variable'
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_3var_10printself[] = "var.printself(self)\n Print native ADIOS_VARINFO structure. ";
-static PyObject *__pyx_pw_5adios_3var_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_10printself(((struct __pyx_obj_5adios_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_3var_10printself(struct __pyx_obj_5adios_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __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.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1002
- *         printvar(self.vp)
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_13__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_13__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_12__repr__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_3var_12__repr__(struct __pyx_obj_5adios_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios.pyx":1003
- * 
- *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \             # <<<<<<<<<<<<<<
- *                (self.varid,
- *                 self.dtype,
- */
-  __Pyx_XDECREF(__pyx_r);
-
-  /* "adios.pyx":1004
- *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,             # <<<<<<<<<<<<<<
- *                 self.dtype,
- *                 self.ndim,
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios.pyx":1006
- *                (self.varid,
- *                 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_filename = __pyx_f[0]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 905, __pyx_L1_error)
+  __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
+  if (__pyx_t_2) {
 
-  /* "adios.pyx":1008
- *                 self.ndim,
- *                 self.dims,
- *                 self.nsteps)             # <<<<<<<<<<<<<<
+    /* "adios.pyx":906
  * 
- *     def __getitem__(self, index):
- */
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-
-  /* "adios.pyx":1004
- *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,             # <<<<<<<<<<<<<<
- *                 self.dtype,
- *                 self.ndim,
- */
-  __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->dtype));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
-  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_v_self->dims);
-  PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_self->dims);
-  __Pyx_GIVEREF(__pyx_v_self->dims);
-  PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 0;
-
-  /* "adios.pyx":1003
+ *         if len(varname) > 1:
+ *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
- *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \             # <<<<<<<<<<<<<<
- *                (self.varid,
- *                 self.dtype,
+ *         for key_ in varname:
  */
-  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVar_varid_r_dtype_r_ndim_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 906, __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_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)
 
-  /* "adios.pyx":1002
- *         printvar(self.vp)
+    /* "adios.pyx":905
+ *             varname = (varname,)
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.var.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1010
- *                 self.nsteps)
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
  * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
  */
+  }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_3var_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
-static PyObject *__pyx_pw_5adios_3var_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_3var_14__getitem__(((struct __pyx_obj_5adios_var *)__pyx_v_self), ((PyObject *)__pyx_v_index));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_5adios_3var_11__getitem___2generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "adios.pyx":1031
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+  /* "adios.pyx":908
+ *             raise KeyError(varname)
  * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
-
-static PyObject *__pyx_pf_5adios_3var_11__getitem___genexpr(PyObject *__pyx_self) {
-  struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("genexpr", 0);
-  __pyx_cur_scope = (struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *)__pyx_tp_new_5adios___pyx_scope_struct_1_genexpr(__pyx_ptype_5adios___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __Pyx_GOTREF(__pyx_cur_scope);
-  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *) __pyx_self;
-  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
-  {
-    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_5adios_3var_11__getitem___2generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_getitem___locals_genexpr); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("adios.var.__getitem__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_5adios_3var_11__getitem___2generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
-  PyObject *(*__pyx_t_4)(PyObject *);
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("None", 0);
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_)) { __Pyx_RaiseClosureNameError("index_"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_)) { __Pyx_RaiseClosureNameError("dims_"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
-    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
-    __pyx_t_4 = NULL;
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
+    __pyx_t_6 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
-    if (likely(!__pyx_t_4)) {
-      if (likely(PyList_CheckExact(__pyx_t_1))) {
-        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
+    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_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __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, 908, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __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, 908, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
-        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __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, 908, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __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, 908, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
     } else {
-      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
-      if (unlikely(!__pyx_t_2)) {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 908, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_2);
-    }
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_x, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_indices); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
-      }
+      __Pyx_GOTREF(__pyx_t_3);
     }
-    if (!__pyx_t_7) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_r = __pyx_t_2;
-    __pyx_t_2 = 0;
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_RefNannyFinishContext();
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_1);
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
-    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Generator_clear((PyObject*)__pyx_generator);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-}
-static PyObject *__pyx_gb_5adios_3var_11__getitem___5generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-/* "adios.pyx":1039
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+    /* "adios.pyx":909
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
  * 
  */
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
 
-static PyObject *__pyx_pf_5adios_3var_11__getitem___3genexpr(PyObject *__pyx_self) {
-  struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("genexpr", 0);
-  __pyx_cur_scope = (struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *)__pyx_tp_new_5adios___pyx_scope_struct_2_genexpr(__pyx_ptype_5adios___pyx_scope_struct_2_genexpr, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __Pyx_GOTREF(__pyx_cur_scope);
-  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *) __pyx_self;
-  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
-  {
-    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_5adios_3var_11__getitem___5generator1, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_getitem___locals_genexpr); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
-  }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("adios.var.__getitem__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_5adios_3var_11__getitem___5generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
-  PyObject *(*__pyx_t_4)(PyObject *);
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("None", 0);
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __pyx_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_)) { __Pyx_RaiseClosureNameError("index_"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dims);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dims);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dims);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
-    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
-    __pyx_t_4 = NULL;
-  } else {
-    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  for (;;) {
-    if (likely(!__pyx_t_4)) {
-      if (likely(PyList_CheckExact(__pyx_t_1))) {
-        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      } else {
-        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      }
-    } else {
-      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
-      if (unlikely(!__pyx_t_2)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_2);
-    }
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_x, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_indices); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
-      }
-    }
-    if (!__pyx_t_7) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_r = __pyx_t_2;
-    __pyx_t_2 = 0;
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_RefNannyFinishContext();
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_1);
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
-    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Generator_clear((PyObject*)__pyx_generator);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-}
-
-/* "adios.pyx":1010
- *                 self.nsteps)
+      /* "adios.pyx":910
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
+ *             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_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)
 
-static PyObject *__pyx_pf_5adios_3var_14__getitem__(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_index) {
-  struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *__pyx_cur_scope;
-  PyObject *__pyx_v_ndim_ = NULL;
-  PyObject *__pyx_v_slice_ = NULL;
-  PyObject *__pyx_v_indices = NULL;
-  PyObject *__pyx_v_z = NULL;
-  PyObject *__pyx_v_from_steps_ = NULL;
-  PyObject *__pyx_v_nsteps_ = NULL;
-  PyObject *__pyx_v_offset_ = NULL;
-  PyObject *__pyx_v_count_ = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  Py_ssize_t __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *(*__pyx_t_6)(PyObject *);
-  int __pyx_t_7;
-  int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  struct __pyx_opt_args_5adios_3var_read __pyx_t_14;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__getitem__", 0);
-  __pyx_cur_scope = (struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)__pyx_tp_new_5adios___pyx_scope_struct____getitem__(__pyx_ptype_5adios___pyx_scope_struct____getitem__, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __Pyx_GOTREF(__pyx_cur_scope);
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+      /* "adios.pyx":909
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    }
 
-  /* "adios.pyx":1011
+    /* "adios.pyx":912
+ *                 raise TypeError("Unhashable type")
  * 
- *     def __getitem__(self, index):
- *         ndim_ = self.ndim             # <<<<<<<<<<<<<<
- *         if (self.nsteps) > 1: ndim_ += 1
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_ndim_ = __pyx_t_1;
-  __pyx_t_1 = 0;
+    __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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
 
-  /* "adios.pyx":1012
- *     def __getitem__(self, index):
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1             # <<<<<<<<<<<<<<
+      /* "adios.pyx":913
+ * 
+ *             if key_.startswith('/'):
+ *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
- *         index_ = __parse_index(index, ndim_)
+ *             if key_ in self.vars.keys():
  */
-  __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_self->nsteps > 1) != 0);
-  if (__pyx_t_2) {
-    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_ndim_, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF_SET(__pyx_v_ndim_, __pyx_t_1);
-    __pyx_t_1 = 0;
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
 
-  /* "adios.pyx":1014
- *         if (self.nsteps) > 1: ndim_ += 1
+      /* "adios.pyx":912
+ *                 raise TypeError("Unhashable type")
  * 
- *         index_ = __parse_index(index, ndim_)             # <<<<<<<<<<<<<<
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):
  */
-  __pyx_t_1 = __pyx_f_5adios___parse_index(__pyx_v_index, __pyx_v_ndim_, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_cur_scope->__pyx_v_index_ = __pyx_t_1;
-  __pyx_t_1 = 0;
+    }
 
-  /* "adios.pyx":1016
- *         index_ = __parse_index(index, ndim_)
+    /* "adios.pyx":915
+ *                 key_ = key_[1:]
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):             # <<<<<<<<<<<<<<
- *             raise IndexError("Too many indices for data")
+ *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get(key_)
  * 
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_ndim_, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
-  } else {
-    __pyx_t_2 = __pyx_t_3;
-    goto __pyx_L5_bool_binop_done;
-  }
-  __pyx_t_1 = __pyx_cur_scope->__pyx_v_index_;
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_v_ndim_, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_2 = __pyx_t_3;
-  __pyx_L5_bool_binop_done:;
-  if (__pyx_t_2) {
+    __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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 915, __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
 
-    /* "adios.pyx":1017
+      /* "adios.pyx":916
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *             if key_ in self.vars.keys():
+ *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
+ *             if key_ in self.attrs.keys():
  */
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
+      __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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 916, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-  /* "adios.pyx":1019
- *             raise IndexError("Too many indices for data")
+      /* "adios.pyx":915
+ *                 key_ = key_[1:]
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):             # <<<<<<<<<<<<<<
- *             raise IndexError("Too many indices for data")
+ *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get(key_)
  * 
  */
-  __pyx_t_5 = PyObject_RichCompare(__pyx_v_ndim_, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (__pyx_t_3) {
-  } else {
-    __pyx_t_2 = __pyx_t_3;
-    goto __pyx_L8_bool_binop_done;
-  }
-  __pyx_t_5 = __pyx_cur_scope->__pyx_v_index_;
-  __Pyx_INCREF(__pyx_t_5);
-  __pyx_t_4 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = ((__pyx_t_4 > 1) != 0);
-  __pyx_t_2 = __pyx_t_3;
-  __pyx_L8_bool_binop_done:;
-  if (__pyx_t_2) {
+    }
 
-    /* "adios.pyx":1020
+    /* "adios.pyx":918
+ *                 return self.vars.get(key_)
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
  * 
- *         for slice_ in index_:
  */
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __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, 918, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
 
-  /* "adios.pyx":1022
- *             raise IndexError("Too many indices for data")
+      /* "adios.pyx":919
+ * 
+ *             if key_ in self.attrs.keys():
+ *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
  * 
- *         for slice_ in index_:             # <<<<<<<<<<<<<<
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
+ *             if '/'+key_ in self.vars.keys():
  */
-  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_index_)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_index_)) {
-    __pyx_t_5 = __pyx_cur_scope->__pyx_v_index_; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
-    __pyx_t_6 = NULL;
-  } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_index_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __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_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      }
-    } else {
-      __pyx_t_1 = __pyx_t_6(__pyx_t_5);
-      if (unlikely(!__pyx_t_1)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_3);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
         }
-        break;
       }
-      __Pyx_GOTREF(__pyx_t_1);
+      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_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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios.pyx":918
+ *                 return self.vars.get(key_)
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
+ */
     }
-    __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_1);
-    __pyx_t_1 = 0;
 
-    /* "adios.pyx":1023
+    /* "adios.pyx":921
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get('/'+key_)
  * 
- *         for slice_ in index_:
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):             # <<<<<<<<<<<<<<
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- *             if isinstance(slice_, str):
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice_, __pyx_n_s_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = PyInt_Check(__pyx_t_1); 
-    __pyx_t_8 = (__pyx_t_7 != 0);
-    if (!__pyx_t_8) {
-    } else {
-      __pyx_t_3 = __pyx_t_8;
-      goto __pyx_L15_bool_binop_done;
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __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_GOTREF(__pyx_t_8);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+      }
     }
-    __pyx_t_8 = PyLong_Check(__pyx_t_1); 
-    __pyx_t_7 = (__pyx_t_8 != 0);
-    __pyx_t_3 = __pyx_t_7;
-    __pyx_L15_bool_binop_done:;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = (__pyx_t_3 != 0);
-    if (__pyx_t_7) {
+    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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_2 = __pyx_t_7;
-      goto __pyx_L13_bool_binop_done;
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error)
     }
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice_, __pyx_n_s_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = PyObject_RichCompare(__pyx_t_1, __pyx_int_1, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_2 = __pyx_t_7;
-    __pyx_L13_bool_binop_done:;
+    __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_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":1024
- *         for slice_ in index_:
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))             # <<<<<<<<<<<<<<
- *             if isinstance(slice_, str):
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))
+      /* "adios.pyx":922
+ * 
+ *             if '/'+key_ in self.vars.keys():
+ *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             if '/'+key_ in self.attrs.keys():
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice_, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Step_size_d_is_not_supported, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+      __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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_r = __pyx_t_3;
+      __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-    /* "adios.pyx":1025
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- *             if isinstance(slice_, str):             # <<<<<<<<<<<<<<
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))
+      /* "adios.pyx":921
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get('/'+key_)
  * 
  */
-    __pyx_t_2 = PyString_Check(__pyx_v_slice_); 
-    __pyx_t_7 = (__pyx_t_2 != 0);
-    if (__pyx_t_7) {
+    }
 
-      /* "adios.pyx":1026
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- *             if isinstance(slice_, str):
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))             # <<<<<<<<<<<<<<
+    /* "adios.pyx":924
+ *                 return self.vars.get('/'+key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
  * 
- *         if (self.nsteps) > 1:
  */
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Name_index_r_is_not_supported, __pyx_v_slice_); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __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_GOTREF(__pyx_t_10);
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_10, function);
+      }
     }
+    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_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_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_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":1022
- *             raise IndexError("Too many indices for data")
+      /* "adios.pyx":925
  * 
- *         for slice_ in index_:             # <<<<<<<<<<<<<<
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
+ *             if '/'+key_ in self.attrs.keys():
+ *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             for name in self.vars.keys():
  */
-  }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __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_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_GOTREF(__pyx_t_10);
+      __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-  /* "adios.pyx":1028
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))
+      /* "adios.pyx":924
+ *                 return self.vars.get('/'+key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
  * 
- *         if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
  */
-  __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_self->nsteps > 1) != 0);
-  if (__pyx_t_7) {
+    }
 
-    /* "adios.pyx":1029
+    /* "adios.pyx":927
+ *                 return self.attrs.get('/'+key_)
  * 
- *         if (self.nsteps) > 1:
- *             dims_ = list(self.dims)             # <<<<<<<<<<<<<<
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
+ *             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_5 = PySequence_List(__pyx_cur_scope->__pyx_v_self->dims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_5);
-    __pyx_cur_scope->__pyx_v_dims_ = ((PyObject*)__pyx_t_5);
-    __pyx_t_5 = 0;
+    __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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+      __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_12(__pyx_t_3);
+        if (unlikely(!__pyx_t_7)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
+      __pyx_t_7 = 0;
 
-    /* "adios.pyx":1030
- *         if (self.nsteps) > 1:
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)             # <<<<<<<<<<<<<<
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
- *             z = zip(*indices)
+      /* "adios.pyx":929
+ *             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_5 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_10 = PyList_Insert(__pyx_cur_scope->__pyx_v_dims_, 0, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __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_GOTREF(__pyx_t_9);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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":1031
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+        /* "adios.pyx":930
+ *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
+ *                 if name.startswith(key_) or name.startswith('/'+key_):
+ *                     return group(self, key_)             # <<<<<<<<<<<<<<
  * 
+ *             for name in self.attrs.keys():
  */
-    __pyx_t_5 = __pyx_pf_5adios_3var_11__getitem___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_indices = ((PyObject*)__pyx_t_1);
-    __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_r);
+        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 930, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+        PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_self));
+        __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_GOTREF(__pyx_t_9);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_r = __pyx_t_9;
+        __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        goto __pyx_L0;
 
-    /* "adios.pyx":1032
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
- *             z = zip(*indices)             # <<<<<<<<<<<<<<
+        /* "adios.pyx":929
+ *             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_)
  * 
- *             from_steps_ = z[0][0]
  */
-    __pyx_t_1 = PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_v_z = __pyx_t_5;
-    __pyx_t_5 = 0;
+      }
 
-    /* "adios.pyx":1034
- *             z = zip(*indices)
+      /* "adios.pyx":927
+ *                 return self.attrs.get('/'+key_)
  * 
- *             from_steps_ = z[0][0]             # <<<<<<<<<<<<<<
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]
+ *             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_5 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_from_steps_ = __pyx_t_1;
-    __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":1035
+    /* "adios.pyx":932
+ *                     return group(self, key_)
  * 
- *             from_steps_ = z[0][0]
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1             # <<<<<<<<<<<<<<
- *             offset_ = z[0][1:]
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
+ *             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_1 = __Pyx_GetItemInt(__pyx_v_z, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Subtract(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = PyNumber_Subtract(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyNumber_Remainder(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_nsteps_ = __pyx_t_1;
-    __pyx_t_1 = 0;
-
-    /* "adios.pyx":1036
- *             from_steps_ = z[0][0]
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]             # <<<<<<<<<<<<<<
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- */
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__19, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_v_offset_ = __pyx_t_5;
-    __pyx_t_5 = 0;
-
-    /* "adios.pyx":1037
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)             # <<<<<<<<<<<<<<
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_subtract); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __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, 932, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__20, 1, 0, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_11);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__21, 1, 0, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = NULL;
-    __pyx_t_4 = 0;
-    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
-      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
-      if (likely(__pyx_t_1)) {
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_7)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
         __Pyx_INCREF(function);
         __Pyx_DECREF_SET(__pyx_t_9, function);
-        __pyx_t_4 = 1;
       }
     }
-    __pyx_t_13 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    if (__pyx_t_1) {
-      PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
-    }
-    PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_4, __pyx_t_11);
-    __Pyx_GIVEREF(__pyx_t_11);
-    PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_4, __pyx_t_12);
-    __Pyx_GIVEREF(__pyx_t_12);
-    __pyx_t_11 = 0;
-    __pyx_t_12 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = PyNumber_Subtract(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyList_GetSlice(__pyx_cur_scope->__pyx_v_dims_, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_13 = PyNumber_Remainder(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
+    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_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_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyNumber_Add(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_t_13 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_count_ = ((PyObject*)__pyx_t_13);
-    __pyx_t_13 = 0;
-    goto __pyx_L18;
-  }
-  /*else*/ {
+    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+      __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_12(__pyx_t_9);
+        if (unlikely(!__pyx_t_3)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
+      __pyx_t_3 = 0;
 
-    /* "adios.pyx":1039
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+      /* "adios.pyx":934
+ *             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_13 = __pyx_pf_5adios_3var_11__getitem___3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_5 = PySequence_Tuple(__pyx_t_13); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_v_indices = ((PyObject*)__pyx_t_5);
-    __pyx_t_5 = 0;
+      __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_GOTREF(__pyx_t_7);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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":1040
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
- *             z = zip(*indices)             # <<<<<<<<<<<<<<
+        /* "adios.pyx":935
+ *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
+ *                 if name.startswith(key_) or name.startswith('/'+key_):
+ *                     return group(self, key_)             # <<<<<<<<<<<<<<
  * 
- *             if len(z) == 0:
+ *         raise KeyError(key_)
  */
-    __pyx_t_5 = PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_z = __pyx_t_13;
-    __pyx_t_13 = 0;
+        __Pyx_XDECREF(__pyx_r);
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 935, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
+        __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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __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;
+        goto __pyx_L0;
 
-    /* "adios.pyx":1042
- *             z = zip(*indices)
+        /* "adios.pyx":934
+ *             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_)
  * 
- *             if len(z) == 0:             # <<<<<<<<<<<<<<
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps
  */
-    __pyx_t_4 = PyObject_Length(__pyx_v_z); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_7 = ((__pyx_t_4 == 0) != 0);
-    if (__pyx_t_7) {
+      }
 
-      /* "adios.pyx":1043
+      /* "adios.pyx":932
+ *                     return group(self, key_)
  * 
- *             if len(z) == 0:
- *                 from_steps_ = 0             # <<<<<<<<<<<<<<
- *                 nsteps_ = self.nsteps
- *                 offset_ = ()
- */
-      __Pyx_INCREF(__pyx_int_0);
-      __pyx_v_from_steps_ = __pyx_int_0;
-
-      /* "adios.pyx":1044
- *             if len(z) == 0:
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps             # <<<<<<<<<<<<<<
- *                 offset_ = ()
- *                 count_ = ()
- */
-      __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_v_nsteps_ = __pyx_t_13;
-      __pyx_t_13 = 0;
-
-      /* "adios.pyx":1045
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps
- *                 offset_ = ()             # <<<<<<<<<<<<<<
- *                 count_ = ()
- *             else:
- */
-      __Pyx_INCREF(__pyx_empty_tuple);
-      __pyx_v_offset_ = __pyx_empty_tuple;
-
-      /* "adios.pyx":1046
- *                 nsteps_ = self.nsteps
- *                 offset_ = ()
- *                 count_ = ()             # <<<<<<<<<<<<<<
- *             else:
- *                 from_steps_ = 0
+ *             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_INCREF(__pyx_empty_tuple);
-      __pyx_v_count_ = __pyx_empty_tuple;
-      goto __pyx_L19;
     }
-    /*else*/ {
-
-      /* "adios.pyx":1048
- *                 count_ = ()
- *             else:
- *                 from_steps_ = 0             # <<<<<<<<<<<<<<
- *                 nsteps_ = self.nsteps
- *                 offset_ = z[0]
- */
-      __Pyx_INCREF(__pyx_int_0);
-      __pyx_v_from_steps_ = __pyx_int_0;
-
-      /* "adios.pyx":1049
- *             else:
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps             # <<<<<<<<<<<<<<
- *                 offset_ = z[0]
- *                 count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)
- */
-      __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_v_nsteps_ = __pyx_t_13;
-      __pyx_t_13 = 0;
-
-      /* "adios.pyx":1050
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps
- *                 offset_ = z[0]             # <<<<<<<<<<<<<<
- *                 count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)
- * 
- */
-      __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_v_offset_ = __pyx_t_13;
-      __pyx_t_13 = 0;
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "adios.pyx":1051
- *                 nsteps_ = self.nsteps
- *                 offset_ = z[0]
- *                 count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)             # <<<<<<<<<<<<<<
+    /* "adios.pyx":908
+ *             raise KeyError(varname)
  * 
- *         ##print "from_steps", from_steps_
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_subtract); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_z, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_11 = NULL;
-      __pyx_t_4 = 0;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
-        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
-        if (likely(__pyx_t_11)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-          __Pyx_INCREF(__pyx_t_11);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_9, function);
-          __pyx_t_4 = 1;
-        }
-      }
-      __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      if (__pyx_t_11) {
-        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL;
-      }
-      PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_12);
-      __pyx_t_5 = 0;
-      __pyx_t_12 = 0;
-      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyNumber_Subtract(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = PyNumber_Remainder(__pyx_t_9, __pyx_cur_scope->__pyx_v_self->dims); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyNumber_Add(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = PySequence_Tuple(__pyx_t_9); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_v_count_ = ((PyObject*)__pyx_t_13);
-      __pyx_t_13 = 0;
-    }
-    __pyx_L19:;
   }
-  __pyx_L18:;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":1058
- *         ##print "count", count_
+  /* "adios.pyx":937
+ *                     return group(self, key_)
+ * 
+ *         raise KeyError(key_)             # <<<<<<<<<<<<<<
+ * 
  * 
- *         return self.read(offset=offset_,             # <<<<<<<<<<<<<<
- *                          count=count_,
- *                          from_steps=from_steps_,
  */
-  __Pyx_XDECREF(__pyx_r);
-  if (!(likely(PyTuple_CheckExact(__pyx_v_offset_))||((__pyx_v_offset_) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_offset_)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":1061
- *                          count=count_,
- *                          from_steps=from_steps_,
- *                          nsteps=nsteps_)             # <<<<<<<<<<<<<<
- * 
- * cdef class attr:
- */
-  __pyx_t_14.__pyx_n = 4;
-  __pyx_t_14.offset = ((PyObject*)__pyx_v_offset_);
-  __pyx_t_14.count = __pyx_v_count_;
-  __pyx_t_14.from_steps = __pyx_v_from_steps_;
-  __pyx_t_14.nsteps = __pyx_v_nsteps_;
-  __pyx_t_13 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->read(__pyx_cur_scope->__pyx_v_self, 0, &__pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_r = __pyx_t_13;
-  __pyx_t_13 = 0;
-  goto __pyx_L0;
+  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)
+  __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_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)
 
-  /* "adios.pyx":1010
- *                 self.nsteps)
+  /* "adios.pyx":891
+ *         return val
  * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
  */
 
   /* 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_8);
   __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_10);
   __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_AddTraceback("adios.var.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_ndim_);
-  __Pyx_XDECREF(__pyx_v_slice_);
-  __Pyx_XDECREF(__pyx_v_indices);
-  __Pyx_XDECREF(__pyx_v_z);
-  __Pyx_XDECREF(__pyx_v_from_steps_);
-  __Pyx_XDECREF(__pyx_v_nsteps_);
-  __Pyx_XDECREF(__pyx_v_offset_);
-  __Pyx_XDECREF(__pyx_v_count_);
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_varname);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1085
- *     property name:
- *         """ The attribute name """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+/* "adios.pyx":940
  * 
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4attr_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4attr_4name_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_19__repr__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_5adios_4file_18__repr__[] = " Return string representation. ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_5adios_4file_18__repr__;
+#endif
+static PyObject *__pyx_pw_5adios_4file_19__repr__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4attr_4name___get__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_18__repr__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1086
- *         """ The attribute name """
- *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
- * 
- *     property dtype:
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios.pyx":942
+ *     def __repr__(self):
+ *         """ 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,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios.pyx":944
+ *         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(),
+ */
+  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_GOTREF(__pyx_t_2);
+    __pyx_t_1 = __pyx_t_2;
+    __pyx_t_2 = 0;
+  } else {
+    __Pyx_INCREF(Py_None);
+    __pyx_t_1 = Py_None;
+  }
+
+  /* "adios.pyx":945
+ *                 "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_GOTREF(__pyx_t_2);
+
+  /* "adios.pyx":946
+ *                 (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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "adios.pyx":947
+ *                  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_GOTREF(__pyx_t_4);
+
+  /* "adios.pyx":948
+ *                  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_GOTREF(__pyx_t_6);
+  __pyx_t_7 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_7)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_7);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "adios.pyx":949
+ *                  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_GOTREF(__pyx_t_6);
+
+  /* "adios.pyx":950
+ *                  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_GOTREF(__pyx_t_7);
+
+  /* "adios.pyx":951
+ *                  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_GOTREF(__pyx_t_8);
+
+  /* "adios.pyx":944
+ *         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_GOTREF(__pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_8);
+  PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_t_8);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_7 = 0;
+  __pyx_t_8 = 0;
+
+  /* "adios.pyx":943
+ *         """ 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_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":1085
- *     property name:
- *         """ The attribute name """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+  /* "adios.pyx":940
  * 
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("adios.file.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1090
- *     property dtype:
- *         """ The attribute type as in numpy.dtype """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
+/* "adios.pyx":954
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4attr_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4attr_5dtype_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_21__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_21__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4attr_5dtype___get__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_20__getattr__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios.pyx":1091
- *         """ The attribute type as in numpy.dtype """
- *         def __get__(self):
- *             return self.dtype             # <<<<<<<<<<<<<<
+  /* "adios.pyx":955
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):
+ *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
  * 
- *     property value:
+ *     ## To support ipython tab completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1090
- *     property dtype:
- *         """ The attribute type as in numpy.dtype """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
+  /* "adios.pyx":954
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
  * 
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.file.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1095
- *     property value:
- *         """ The attribute's value """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.value
+/* "adios.pyx":958
  * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4attr_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4attr_5value_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_23__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_22__dir__[] = "file.__dir__(self)";
+static PyObject *__pyx_pw_5adios_4file_23__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4attr_5value___get__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__dir__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_22__dir__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_v_k0 = NULL;
+  PyObject *__pyx_v_k1 = NULL;
+  PyObject *__pyx_v_k2 = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1096
- *         """ The attribute's value """
- *         def __get__(self):
- *             return self.value             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, file file, char * name):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
-  __pyx_r = ((PyObject *)__pyx_v_self->value);
-  goto __pyx_L0;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios.pyx":1095
- *     property value:
- *         """ The attribute's value """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.value
- * 
+  /* "adios.pyx":959
+ *     ## 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_GOTREF(__pyx_t_1);
+  __pyx_v_k0 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1098
- *             return self.value
- * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.name = name
+  /* "adios.pyx":962
+ *         ## 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
  */
-
-/* Python wrapper */
-static int __pyx_pw_5adios_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct __pyx_obj_5adios_file *__pyx_v_file = 0;
-  char *__pyx_v_name;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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_file)) != 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("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __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_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 962, __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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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);
     }
-    __pyx_v_file = ((struct __pyx_obj_5adios_file *)values[0]);
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_5adios_4attr___init__(((struct __pyx_obj_5adios_attr *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
+  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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k1 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* function exit code */
+  /* "adios.pyx":963
+ *         ## 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_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_GOTREF(__pyx_t_3);
+  __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_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 963, __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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k2 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":964
+ *         k1 = normalize_key(self.vars.keys())
+ *         k2 = normalize_key(self.attrs.keys())
+ *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_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_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
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
+
+  /* function exit code */
   __pyx_L1_error:;
-  __pyx_r = -1;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios.file.__dir__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_k0);
+  __Pyx_XDECREF(__pyx_v_k1);
+  __Pyx_XDECREF(__pyx_v_k2);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, char *__pyx_v_name) {
-  int64_t __pyx_v_p;
-  ADIOS_DATATYPES __pyx_v_atype;
-  int __pyx_v_bytes;
-  PyObject *__pyx_v_strlist = 0;
-  int __pyx_v_len;
-  int __pyx_v_err;
-  int __pyx_v_i;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  char const *__pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  struct __pyx_opt_args_5adios_adios2npdtype __pyx_t_6;
-  size_t __pyx_t_7;
-  int __pyx_t_8;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
-
-  /* "adios.pyx":1099
+/* "adios.pyx":967
  * 
- *     def __init__(self, file file, char * name):
- *         self.file = file             # <<<<<<<<<<<<<<
- *         self.name = name
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
  * 
  */
-  __Pyx_INCREF(((PyObject *)__pyx_v_file));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
-  __Pyx_GOTREF(__pyx_v_self->file);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
-  __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios.pyx":1100
- *     def __init__(self, file file, char * name):
- *         self.file = file
- *         self.name = name             # <<<<<<<<<<<<<<
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4file_25keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_24keys[] = "file.keys(self)";
+static PyObject *__pyx_pw_5adios_4file_25keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_24keys(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("keys", 0);
+
+  /* "adios.pyx":968
+ *     ## Require for dictionary key completion
+ *     def keys(self):
+ *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
  * 
- *         cdef int64_t p
+ *     def is_open(self):
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
-  __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;
+  __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_GOTREF(__pyx_t_3);
+  __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, 968, __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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1108
- *         cdef int len
+  /* "adios.pyx":967
  * 
- *         err = adios_get_attr(self.file.fp, self.name, &atype, &bytes, <void **> &p)             # <<<<<<<<<<<<<<
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
  * 
- *         if err == 0:
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_err = adios_get_attr(__pyx_v_self->file->fp, __pyx_t_2, (&__pyx_v_atype), (&__pyx_v_bytes), ((void **)(&__pyx_v_p)));
 
-  /* "adios.pyx":1110
- *         err = adios_get_attr(self.file.fp, self.name, &atype, &bytes, <void **> &p)
- * 
- *         if err == 0:             # <<<<<<<<<<<<<<
- *             if atype == DATATYPE.string:
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- */
-  __pyx_t_3 = ((__pyx_v_err == 0) != 0);
-  if (__pyx_t_3) {
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.file.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":1111
+/* "adios.pyx":970
+ *         return self.vars.keys() + self.attrs.keys()
  * 
- *         if err == 0:
- *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- *             self.dtype = adios2npdtype(atype, bytes)
+ *     def is_open(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return True if self.fp != NULL else False
  */
-    __pyx_t_1 = PyInt_FromLong(__pyx_v_atype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_3) {
 
-      /* "adios.pyx":1112
- *         if err == 0:
- *             if atype == DATATYPE.string:
- *                 bytes = bytes - 1 ## Remove the NULL terminal             # <<<<<<<<<<<<<<
- *             self.dtype = adios2npdtype(atype, bytes)
- *             if atype == DATATYPE.string_array:
- */
-      __pyx_v_bytes = (__pyx_v_bytes - 1);
-      goto __pyx_L4;
-    }
-    __pyx_L4:;
-
-    /* "adios.pyx":1113
- *             if atype == DATATYPE.string:
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- *             self.dtype = adios2npdtype(atype, bytes)             # <<<<<<<<<<<<<<
- *             if atype == DATATYPE.string_array:
- *                 strlist = list()
- */
-    __pyx_t_6.__pyx_n = 1;
-    __pyx_t_6.strlen = __pyx_v_bytes;
-    __pyx_t_4 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_atype, 0, &__pyx_t_6)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_4);
-    __Pyx_GOTREF(__pyx_v_self->dtype);
-    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
-    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
-    __pyx_t_4 = 0;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4file_27is_open(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_26is_open[] = "file.is_open(self)\n Check whether file is open or closed ";
+static PyObject *__pyx_pw_5adios_4file_27is_open(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_open (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_26is_open(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
-    /* "adios.pyx":1114
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- *             self.dtype = adios2npdtype(atype, bytes)
- *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
- *                 strlist = list()
- *                 len = bytes/sizeof(p)
- */
-    __pyx_t_4 = PyInt_FromLong(__pyx_v_atype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (__pyx_t_3) {
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-      /* "adios.pyx":1115
- *             self.dtype = adios2npdtype(atype, bytes)
- *             if atype == DATATYPE.string_array:
- *                 strlist = list()             # <<<<<<<<<<<<<<
- *                 len = bytes/sizeof(p)
- *                 for i in range(len):
- */
-      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_v_strlist = ((PyObject*)__pyx_t_5);
-      __pyx_t_5 = 0;
+static PyObject *__pyx_pf_5adios_4file_26is_open(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("is_open", 0);
 
-      /* "adios.pyx":1116
- *             if atype == DATATYPE.string_array:
- *                 strlist = list()
- *                 len = bytes/sizeof(p)             # <<<<<<<<<<<<<<
- *                 for i in range(len):
- *                     strlist.append((<char **>p)[i])
+  /* "adios.pyx":972
+ *     def is_open(self):
+ *         """ Check whether file is open or closed """
+ *         return True if self.fp != NULL else False             # <<<<<<<<<<<<<<
+ * 
+ *     ## for py2
  */
-      __pyx_t_7 = (sizeof(__pyx_v_p));
-      if (unlikely(__pyx_t_7 == 0)) {
-        #ifdef WITH_THREAD
-        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
-        #endif
-        PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        #ifdef WITH_THREAD
-        PyGILState_Release(__pyx_gilstate_save);
-        #endif
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      __pyx_v_len = (__pyx_v_bytes / __pyx_t_7);
+  __Pyx_XDECREF(__pyx_r);
+  if (((__pyx_v_self->fp != NULL) != 0)) {
+    __Pyx_INCREF(Py_True);
+    __pyx_t_1 = Py_True;
+  } else {
+    __Pyx_INCREF(Py_False);
+    __pyx_t_1 = Py_False;
+  }
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-      /* "adios.pyx":1117
- *                 strlist = list()
- *                 len = bytes/sizeof(p)
- *                 for i in range(len):             # <<<<<<<<<<<<<<
- *                     strlist.append((<char **>p)[i])
- *                 self.value = np.array(strlist)
+  /* "adios.pyx":970
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ *     def is_open(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return True if self.fp != NULL else False
  */
-      __pyx_t_8 = __pyx_v_len;
-      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
-        __pyx_v_i = __pyx_t_9;
 
-        /* "adios.pyx":1118
- *                 len = 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_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      }
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-      /* "adios.pyx":1119
- *                 for i in range(len):
- *                     strlist.append((<char **>p)[i])
- *                 self.value = np.array(strlist)             # <<<<<<<<<<<<<<
- *                 self.dtype = self.value.dtype
+/* "adios.pyx":975
+ * 
+ *     ## for py2
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.is_open()
  * 
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
-        if (likely(__pyx_t_1)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_1);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
-        }
-      }
-      if (!__pyx_t_1) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_strlist); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-      } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_11);
-        PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
-        __Pyx_INCREF(__pyx_v_strlist);
-        PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_strlist);
-        __Pyx_GIVEREF(__pyx_v_strlist);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __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":1120
- *                     strlist.append((<char **>p)[i])
- *                 self.value = np.array(strlist)
- *                 self.dtype = self.value.dtype             # <<<<<<<<<<<<<<
+/* Python wrapper */
+static int __pyx_pw_5adios_4file_29__nonzero__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_4file_29__nonzero__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_28__nonzero__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_4file_28__nonzero__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("__nonzero__", 0);
+
+  /* "adios.pyx":976
+ *     ## for py2
+ *     def __nonzero__(self):
+ *         return self.is_open()             # <<<<<<<<<<<<<<
  * 
- *             elif self.dtype is None:
+ *     ## for py3
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->value), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __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;
-      goto __pyx_L5;
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
+  }
+  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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_4;
+  goto __pyx_L0;
 
-    /* "adios.pyx":1122
- *                 self.dtype = self.value.dtype
+  /* "adios.pyx":975
+ * 
+ *     ## for py2
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.is_open()
  * 
- *             elif self.dtype is None:             # <<<<<<<<<<<<<<
- *                 print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \
- *                       (self.name, atype, bytes)
  */
-    __pyx_t_3 = (((PyObject *)__pyx_v_self->dtype) == Py_None);
-    __pyx_t_12 = (__pyx_t_3 != 0);
-    if (__pyx_t_12) {
 
-      /* "adios.pyx":1124
- *             elif self.dtype is None:
- *                 print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \
- *                       (self.name, atype, bytes)             # <<<<<<<<<<<<<<
- *             else:
- *                 len = bytes/self.dtype.itemsize
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.file.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":979
+ * 
+ *     ## for py3
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return self.is_open()
  */
-      __pyx_t_5 = PyInt_FromLong(__pyx_v_atype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_bytes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_11);
-      __Pyx_INCREF(__pyx_v_self->name);
-      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_self->name);
-      __Pyx_GIVEREF(__pyx_v_self->name);
-      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_4);
-      __pyx_t_5 = 0;
-      __pyx_t_4 = 0;
 
-      /* "adios.pyx":1123
+/* Python wrapper */
+static int __pyx_pw_5adios_4file_31__bool__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_4file_31__bool__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_30__bool__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_4file_30__bool__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("__bool__", 0);
+
+  /* "adios.pyx":981
+ *     def __bool__(self):
+ *         """ Check whether file is open or closed """
+ *         return self.is_open()             # <<<<<<<<<<<<<<
  * 
- *             elif self.dtype is None:
- *                 print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \             # <<<<<<<<<<<<<<
- *                       (self.name, atype, bytes)
- *             else:
+ *     def dirs(self):
  */
-      __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      if (__Pyx_PrintOne(0, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      goto __pyx_L5;
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
-    /*else*/ {
+  }
+  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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_4;
+  goto __pyx_L0;
 
-      /* "adios.pyx":1126
- *                       (self.name, atype, bytes)
- *             else:
- *                 len = bytes/self.dtype.itemsize             # <<<<<<<<<<<<<<
- *                 if len == 1:
- *                     self.value = np.array(len, dtype=self.dtype)
- */
-      if (unlikely(__pyx_v_self->dtype->elsize == 0)) {
-        #ifdef WITH_THREAD
-        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
-        #endif
-        PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        #ifdef WITH_THREAD
-        PyGILState_Release(__pyx_gilstate_save);
-        #endif
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __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))) {
-        #ifdef WITH_THREAD
-        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
-        #endif
-        PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
-        #ifdef WITH_THREAD
-        PyGILState_Release(__pyx_gilstate_save);
-        #endif
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      __pyx_v_len = __Pyx_div_int(__pyx_v_bytes, __pyx_v_self->dtype->elsize);
-
-      /* "adios.pyx":1127
- *             else:
- *                 len = bytes/self.dtype.itemsize
- *                 if len == 1:             # <<<<<<<<<<<<<<
- *                     self.value = np.array(len, dtype=self.dtype)
- *                 else:
- */
-      __pyx_t_12 = ((__pyx_v_len == 1) != 0);
-      if (__pyx_t_12) {
-
-        /* "adios.pyx":1128
- *                 len = 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_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_11);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
-        __Pyx_GIVEREF(__pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GIVEREF(__pyx_t_1);
-        __Pyx_GOTREF(__pyx_v_self->value);
-        __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
-        __pyx_v_self->value = ((PyArrayObject *)__pyx_t_1);
-        __pyx_t_1 = 0;
-        goto __pyx_L8;
-      }
-      /*else*/ {
-
-        /* "adios.pyx":1130
- *                     self.value = np.array(len, dtype=self.dtype)
- *                 else:
- *                     self.value = np.zeros(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
- *                 self.value.data = <char *> p
- *         else:
- */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __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_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_1);
-        __pyx_t_1 = 0;
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_11);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GIVEREF(__pyx_t_11);
-        __Pyx_GOTREF(__pyx_v_self->value);
-        __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
-        __pyx_v_self->value = ((PyArrayObject *)__pyx_t_11);
-        __pyx_t_11 = 0;
-      }
-      __pyx_L8:;
-
-      /* "adios.pyx":1131
- *                 else:
- *                     self.value = np.zeros(len, dtype=self.dtype)
- *                 self.value.data = <char *> p             # <<<<<<<<<<<<<<
- *         else:
- *             raise KeyError(name)
- */
-      __pyx_v_self->value->data = ((char *)__pyx_v_p);
-    }
-    __pyx_L5:;
-    goto __pyx_L3;
-  }
-  /*else*/ {
-
-    /* "adios.pyx":1133
- *                 self.value.data = <char *> p
- *         else:
- *             raise KeyError(name)             # <<<<<<<<<<<<<<
- * 
- *     def __repr__(self):
- */
-    __pyx_t_11 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_11);
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11);
-    __Pyx_GIVEREF(__pyx_t_11);
-    __pyx_t_11 = 0;
-    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_11);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_Raise(__pyx_t_11, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_L3:;
-
-  /* "adios.pyx":1098
- *             return self.value
- * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.name = name
+  /* "adios.pyx":979
+ * 
+ *     ## for py3
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return self.is_open()
  */
 
   /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_AddTraceback("adios.attr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.file.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_strlist);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1135
- *             raise KeyError(name)
+/* "adios.pyx":983
+ *         return self.is_open()
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
- *                (self.name, self.dtype, self.value)
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_4attr_3__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_4attr_3__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_33dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_4file_32dirs[] = "file.dirs(self)\n Return child dir names ";
+static PyObject *__pyx_pw_5adios_4file_33dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_4attr_2__repr__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("dirs (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_32dirs(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_4attr_2__repr__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_v_s = NULL;
+  PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios.pyx":1136
- * 
- *     def __repr__(self):
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
- *                (self.name, self.dtype, self.value)
- * 
- */
-  __Pyx_XDECREF(__pyx_r);
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  __Pyx_RefNannySetupContext("dirs", 0);
 
-  /* "adios.pyx":1137
- *     def __repr__(self):
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
- *                (self.name, self.dtype, self.value)             # <<<<<<<<<<<<<<
- * 
- * 
+  /* "adios.pyx":985
+ *     def dirs(self):
+ *         """ Return child dir names """
+ *         s = set()             # <<<<<<<<<<<<<<
+ *         for k in self.vars.keys():
+ *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
-  __Pyx_GIVEREF(__pyx_v_self->name);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->dtype));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
-  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->value));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
-
-  /* "adios.pyx":1136
- * 
- *     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_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __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":1135
- *             raise KeyError(name)
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
- *                (self.name, self.dtype, self.value)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.attr.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1143
- * cdef class smartdict(dict):
- *     cdef factory
- *     def __init__(self, factory):             # <<<<<<<<<<<<<<
- *         dict.__init__(self)
- *         self.factory = factory
- */
-
-/* Python wrapper */
-static int __pyx_pw_5adios_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_factory = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factory,0};
-    PyObject* values[1] = {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  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_factory)) != 0)) kw_args--;
-        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_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-    }
-    __pyx_v_factory = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_9smartdict___init__(((struct __pyx_obj_5adios_smartdict *)__pyx_v_self), __pyx_v_factory);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_factory) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
+  __pyx_v_s = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios.pyx":1144
- *     cdef factory
- *     def __init__(self, factory):
- *         dict.__init__(self)             # <<<<<<<<<<<<<<
- *         self.factory = factory
- * 
+  /* "adios.pyx":986
+ *         """ 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 *)((PyObject*)(&PyDict_Type))), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __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, 986, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15633,318 +15211,474 @@ static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict
       __Pyx_DECREF_SET(__pyx_t_2, function);
     }
   }
-  if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
+  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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
   }
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
+    __pyx_t_1 = 0;
 
-  /* "adios.pyx":1145
- *     def __init__(self, factory):
- *         dict.__init__(self)
- *         self.factory = factory             # <<<<<<<<<<<<<<
+    /* "adios.pyx":987
+ *         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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "adios.pyx":988
+ *         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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "adios.pyx":986
+ *         """ 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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":989
+ *             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_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_2);
+        #endif
+      }
+    } else {
+      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "adios.pyx":990
+ *             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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "adios.pyx":991
+ *         for k in self.attrs.keys():
+ *             if k.startswith('/'): k = k[1:]
+ *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
+ *         return list(s-set(['']))
  * 
- *     def __setitem__(self, key, value):
  */
-  __Pyx_INCREF(__pyx_v_factory);
-  __Pyx_GIVEREF(__pyx_v_factory);
-  __Pyx_GOTREF(__pyx_v_self->factory);
-  __Pyx_DECREF(__pyx_v_self->factory);
-  __pyx_v_self->factory = __pyx_v_factory;
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":1143
- * cdef class smartdict(dict):
- *     cdef factory
- *     def __init__(self, factory):             # <<<<<<<<<<<<<<
- *         dict.__init__(self)
- *         self.factory = factory
+    /* "adios.pyx":989
+ *             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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* function exit code */
-  __pyx_r = 0;
+  /* "adios.pyx":992
+ *             if k.startswith('/'): k = k[1:]
+ *             s.add(os.path.dirname(k).split('/')[0])
+ *         return list(s-set(['']))             # <<<<<<<<<<<<<<
+ * 
+ * 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_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)
+  __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_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
+ *         return self.is_open()
+ * 
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
+ */
+
+  /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios.file.dirs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_s);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1147
- *         self.factory = factory
+/* "adios.pyx":753
  * 
- *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
- *         if key in dict.keys(self):
- *             dict.__setitem__(self, key, value)
+ *     ## Public Memeber
+ *     cpdef public softdict vars             # <<<<<<<<<<<<<<
+ *     cpdef public softdict attrs
+ *     cpdef public var
  */
 
 /* Python wrapper */
-static int __pyx_pw_5adios_9smartdict_3__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_9smartdict_3__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
+static PyObject *__pyx_pw_5adios_4file_4vars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_4vars_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_4vars___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_4file_4vars___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_r = ((PyObject *)__pyx_v_self->vars);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_4file_4vars_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_4file_4vars_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_9smartdict_2__setitem__(((struct __pyx_obj_5adios_smartdict *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_4vars_2__set__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
+static int __pyx_pf_5adios_4file_4vars_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  Py_ssize_t __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__setitem__", 0);
-
-  /* "adios.pyx":1148
- * 
- *     def __setitem__(self, key, value):
- *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
- *             dict.__setitem__(self, key, value)
- *         else:
- */
-  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_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_key, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __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":1149
- *     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 *)((PyObject*)(&PyDict_Type))), __pyx_n_s_setitem); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    __pyx_t_6 = 0;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(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);
-        __pyx_t_6 = 1;
-      }
-    }
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    if (__pyx_t_5) {
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
-    }
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __Pyx_INCREF(__pyx_v_key);
-    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_key);
-    __Pyx_GIVEREF(__pyx_v_key);
-    __Pyx_INCREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-  /*else*/ {
-
-    /* "adios.pyx":1151
- *             dict.__setitem__(self, key, value)
- *         else:
- *             self.factory(key, value)             # <<<<<<<<<<<<<<
- * 
- * cdef class writer:
- */
-    __Pyx_INCREF(__pyx_v_self->factory);
-    __pyx_t_4 = __pyx_v_self->factory; __pyx_t_7 = NULL;
-    __pyx_t_6 = 0;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-        __pyx_t_6 = 1;
-      }
-    }
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    if (__pyx_t_7) {
-      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-    }
-    __Pyx_INCREF(__pyx_v_key);
-    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_key);
-    __Pyx_GIVEREF(__pyx_v_key);
-    __Pyx_INCREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __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;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-  __pyx_L3:;
-
-  /* "adios.pyx":1147
- *         self.factory = factory
- * 
- *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
- *         if key in dict.keys(self):
- *             dict.__setitem__(self, key, value)
- */
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
 
   /* function exit code */
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("adios.smartdict.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.file.vars.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1182
- *     property fname:
- *         """ The filename to write. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.fname
- * 
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_5fname_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_5fname_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
+static int __pyx_pw_5adios_4file_4vars_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_4file_4vars_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_5fname___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_4vars_4__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
+static int __pyx_pf_5adios_4file_4vars_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1183
- *         """ The filename to write. """
- *         def __get__(self):
- *             return self.fname             # <<<<<<<<<<<<<<
- * 
- *     property gname:
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->fname);
-  __pyx_r = __pyx_v_self->fname;
-  goto __pyx_L0;
-
-  /* "adios.pyx":1182
- *     property fname:
- *         """ The filename to write. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.fname
- * 
- */
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)Py_None);
 
   /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
+  __pyx_r = 0;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1187
- *     property gname:
- *         """ The groupname associated with the file. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.gname
- * 
+/* "adios.pyx":754
+ *     ## Public Memeber
+ *     cpdef public softdict vars
+ *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
+ *     cpdef public var
+ *     cpdef public attr
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_5gname_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_5gname_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_5attrs_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_5gname___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_5attrs___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_5attrs___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1188
- *         """ The groupname associated with the file. """
- *         def __get__(self):
- *             return self.gname             # <<<<<<<<<<<<<<
- * 
- *     property is_noxml:
- */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->gname);
-  __pyx_r = __pyx_v_self->gname;
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_r = ((PyObject *)__pyx_v_self->attrs);
   goto __pyx_L0;
 
-  /* "adios.pyx":1187
- *     property gname:
- *         """ The groupname associated with the file. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.gname
- * 
- */
-
   /* function exit code */
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -15952,168 +15686,104 @@ static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_
   return __pyx_r;
 }
 
-/* "adios.pyx":1192
- *     property is_noxml:
- *         """ Boolean to indicate using No-XML or not. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_noxml
- * 
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_8is_noxml_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_8is_noxml_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
+static int __pyx_pw_5adios_4file_5attrs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_4file_5attrs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_8is_noxml___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_5attrs_2__set__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
+static int __pyx_pf_5adios_4file_5attrs_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1193
- *         """ Boolean to indicate using No-XML or not. """
- *         def __get__(self):
- *             return self.is_noxml             # <<<<<<<<<<<<<<
- * 
- *     property var:
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "adios.pyx":1192
- *     property is_noxml:
- *         """ Boolean to indicate using No-XML or not. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_noxml
- * 
- */
 
   /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.writer.is_noxml.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_AddTraceback("adios.file.attrs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1197
- *     property var:
- *         """ Dictionary of variables to write. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.var
- * 
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_3var_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_3var_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
+static int __pyx_pw_5adios_4file_5attrs_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_4file_5attrs_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_3var___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_5attrs_4__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_3var___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
+static int __pyx_pf_5adios_4file_5attrs_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1198
- *         """ Dictionary of variables to write. """
- *         def __get__(self):
- *             return self.var             # <<<<<<<<<<<<<<
- * 
- *     property attr:
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->var);
-  __pyx_r = __pyx_v_self->var;
-  goto __pyx_L0;
-
-  /* "adios.pyx":1197
- *     property var:
- *         """ Dictionary of variables to write. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.var
- * 
- */
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None);
 
   /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
+  __pyx_r = 0;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1202
- *     property attr:
- *         """ Dictionary of attributes to write. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.attr
+/* "adios.pyx":755
+ *     cpdef public softdict vars
+ *     cpdef public softdict attrs
+ *     cpdef public var             # <<<<<<<<<<<<<<
+ *     cpdef public attr
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_4attr_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_4file_3var_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_3var_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_4attr___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_4file_3var___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_4attr___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_4file_3var___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1203
- *         """ Dictionary of attributes to write. """
- *         def __get__(self):
- *             return self.attr             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self,char * fname,
- */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->attr);
-  __pyx_r = __pyx_v_self->attr;
+  __Pyx_INCREF(__pyx_v_self->var);
+  __pyx_r = __pyx_v_self->var;
   goto __pyx_L0;
 
-  /* "adios.pyx":1202
- *     property attr:
- *         """ Dictionary of attributes to write. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.attr
- * 
- */
-
   /* function exit code */
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -16121,682 +15791,318 @@ static PyObject *__pyx_pf_5adios_6writer_4attr___get__(struct __pyx_obj_5adios_w
   return __pyx_r;
 }
 
-/* "adios.pyx":1205
- *             return self.attr
- * 
- *     def __init__(self,char * fname,             # <<<<<<<<<<<<<<
- *                  bint is_noxml = True,
- *                  MPI_Comm comm = MPI_COMM_WORLD):
- */
-
 /* Python wrapper */
-static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_fname;
-  int __pyx_v_is_noxml;
-  MPI_Comm __pyx_v_comm;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static int __pyx_pw_5adios_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fname,&__pyx_n_s_is_noxml,&__pyx_n_s_comm,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_fname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_noxml);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __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;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_fname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_fname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_is_noxml = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_is_noxml == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_3var_2__set__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
-      /* "adios.pyx":1206
- * 
- *     def __init__(self,char * fname,
- *                  bint is_noxml = True,             # <<<<<<<<<<<<<<
- *                  MPI_Comm comm = MPI_COMM_WORLD):
- *         self.fname = fname
- */
-      __pyx_v_is_noxml = ((int)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_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_comm = __pyx_k__22;
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.writer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  /* function exit code */
   __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_6writer___init__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_fname, __pyx_v_is_noxml, __pyx_v_comm);
+  return __pyx_r;
+}
 
-  /* "adios.pyx":1205
- *             return self.attr
- * 
- *     def __init__(self,char * fname,             # <<<<<<<<<<<<<<
- *                  bint is_noxml = True,
- *                  MPI_Comm comm = MPI_COMM_WORLD):
- */
+static int __pyx_pf_5adios_4file_3var_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->var);
+  __Pyx_DECREF(__pyx_v_self->var);
+  __pyx_v_self->var = __pyx_v_value;
 
   /* function exit code */
+  __pyx_r = 0;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_fname, int __pyx_v_is_noxml, MPI_Comm __pyx_v_comm) {
+/* Python wrapper */
+static int __pyx_pw_5adios_4file_3var_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_4file_3var_5__del__(PyObject *__pyx_v_self) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
-
-  /* "adios.pyx":1208
- *                  bint is_noxml = True,
- *                  MPI_Comm comm = MPI_COMM_WORLD):
- *         self.fname = fname             # <<<<<<<<<<<<<<
- *         self.method = <bytes>""
- *         self.method_params = <bytes>""
- */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_fname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->fname);
-  __Pyx_DECREF(__pyx_v_self->fname);
-  __pyx_v_self->fname = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1209
- *                  MPI_Comm comm = MPI_COMM_WORLD):
- *         self.fname = fname
- *         self.method = <bytes>""             # <<<<<<<<<<<<<<
- *         self.method_params = <bytes>""
- *         self.is_noxml = is_noxml
- */
-  __pyx_t_1 = __pyx_kp_s__7;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->method);
-  __Pyx_DECREF(__pyx_v_self->method);
-  __pyx_v_self->method = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1210
- *         self.fname = fname
- *         self.method = <bytes>""
- *         self.method_params = <bytes>""             # <<<<<<<<<<<<<<
- *         self.is_noxml = is_noxml
- *         self.comm = comm
- */
-  __pyx_t_1 = __pyx_kp_s__7;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->method_params);
-  __Pyx_DECREF(__pyx_v_self->method_params);
-  __pyx_v_self->method_params = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1211
- *         self.method = <bytes>""
- *         self.method_params = <bytes>""
- *         self.is_noxml = is_noxml             # <<<<<<<<<<<<<<
- *         self.comm = comm
- *         self.var = dict()
- */
-  __pyx_v_self->is_noxml = __pyx_v_is_noxml;
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_3var_4__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
-  /* "adios.pyx":1212
- *         self.method_params = <bytes>""
- *         self.is_noxml = is_noxml
- *         self.comm = comm             # <<<<<<<<<<<<<<
- *         self.var = dict()
- *         self.attr = dict()
- */
-  __pyx_v_self->comm = __pyx_v_comm;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":1213
- *         self.is_noxml = is_noxml
- *         self.comm = comm
- *         self.var = dict()             # <<<<<<<<<<<<<<
- *         self.attr = dict()
- * 
- */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+static int __pyx_pf_5adios_4file_3var_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->var);
   __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1214
- *         self.comm = comm
- *         self.var = dict()
- *         self.attr = dict()             # <<<<<<<<<<<<<<
- * 
- *     ##def __var_factory__(self, name, value):
- */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1205
- *             return self.attr
- * 
- *     def __init__(self,char * fname,             # <<<<<<<<<<<<<<
- *                  bint is_noxml = True,
- *                  MPI_Comm comm = MPI_COMM_WORLD):
- */
+  __pyx_v_self->var = Py_None;
 
   /* function exit code */
   __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.writer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1222
- *     ##    print "attr_factory:", name, value
+/* "adios.pyx":756
+ *     cpdef public softdict attrs
+ *     cpdef public var
+ *     cpdef public attr             # <<<<<<<<<<<<<<
  * 
- *     def declare_group(self, char * gname,             # <<<<<<<<<<<<<<
- *                       char * method = "POSIX1",
- *                       char * method_params = ""):
+ *     property name:
  */
 
 /* 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, char *gname, char *method='POSIX1', char *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) {
-  char *__pyx_v_gname;
-  char *__pyx_v_method;
-  char *__pyx_v_method_params;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_4file_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4file_4attr_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_gname,&__pyx_n_s_method,&__pyx_n_s_method_params,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_gname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_params);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __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;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_gname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_gname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_method = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_method) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method = ((char *)__pyx_k_POSIX1);
-    }
-    if (values[2]) {
-      __pyx_v_method_params = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_method_params) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_params = ((char *)__pyx_k__7);
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __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:;
-  __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);
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_4attr___get__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_gname, char *__pyx_v_method, char *__pyx_v_method_params) {
+static PyObject *__pyx_pf_5adios_4file_4attr___get__(struct __pyx_obj_5adios_file *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_5adios_declare_group __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  char *__pyx_t_5;
-  struct __pyx_opt_args_5adios_select_method __pyx_t_6;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("declare_group", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->attr);
+  __pyx_r = __pyx_v_self->attr;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1238
- * 
- *         """
- *         self.gid = declare_group(gname, "", 1)             # <<<<<<<<<<<<<<
- *         self.gname = gname
- *         self.method = method
- */
-  __pyx_t_2.__pyx_n = 2;
-  __pyx_t_2.time_index = __pyx_k__7;
-  __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;
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":1239
- *         """
- *         self.gid = declare_group(gname, "", 1)
- *         self.gname = gname             # <<<<<<<<<<<<<<
- *         self.method = method
- *         self.method_params = method_params
- */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_gname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  __Pyx_GOTREF(__pyx_v_self->gname);
-  __Pyx_DECREF(__pyx_v_self->gname);
-  __pyx_v_self->gname = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+/* Python wrapper */
+static int __pyx_pw_5adios_4file_4attr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_4file_4attr_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_4file_4attr_2__set__(((struct __pyx_obj_5adios_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
-  /* "adios.pyx":1240
- *         self.gid = declare_group(gname, "", 1)
- *         self.gname = gname
- *         self.method = method             # <<<<<<<<<<<<<<
- *         self.method_params = method_params
- *         select_method(self.gid, self.method, self.method_params, "")
- */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_method); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  __Pyx_GOTREF(__pyx_v_self->method);
-  __Pyx_DECREF(__pyx_v_self->method);
-  __pyx_v_self->method = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":1241
- *         self.gname = gname
- *         self.method = method
- *         self.method_params = method_params             # <<<<<<<<<<<<<<
- *         select_method(self.gid, self.method, self.method_params, "")
+static int __pyx_pf_5adios_4file_4attr_2__set__(struct __pyx_obj_5adios_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->attr);
+  __Pyx_DECREF(__pyx_v_self->attr);
+  __pyx_v_self->attr = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_4file_4attr_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_4file_4attr_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4file_4attr_4__del__(((struct __pyx_obj_5adios_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_4file_4attr_4__del__(struct __pyx_obj_5adios_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->attr);
+  __Pyx_DECREF(__pyx_v_self->attr);
+  __pyx_v_self->attr = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1001
+ * 
+ *     property start:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.start
  * 
  */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_method_params); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  __Pyx_GOTREF(__pyx_v_self->method_params);
-  __Pyx_DECREF(__pyx_v_self->method_params);
-  __pyx_v_self->method_params = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
 
-  /* "adios.pyx":1242
- *         self.method = method
- *         self.method_params = method_params
- *         select_method(self.gid, self.method, self.method_params, "")             # <<<<<<<<<<<<<<
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_9blockinfo_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_9blockinfo_5start_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_9blockinfo_5start___get__(((struct __pyx_obj_5adios_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_9blockinfo_5start___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1002
+ *     property start:
+ *         def __get__(self):
+ *             return self.start             # <<<<<<<<<<<<<<
  * 
- *     def define_var(self, char * varname,
+ *     property count:
  */
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_self->method); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->method_params); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6.__pyx_n = 2;
-  __pyx_t_6.parameters = __pyx_t_5;
-  __pyx_t_6.base_path = __pyx_k__7;
-  __pyx_f_5adios_select_method(__pyx_v_self->gid, __pyx_t_4, 0, &__pyx_t_6); 
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->start);
+  __pyx_r = __pyx_v_self->start;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1222
- *     ##    print "attr_factory:", name, value
+  /* "adios.pyx":1001
+ * 
+ *     property start:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.start
  * 
- *     def declare_group(self, char * gname,             # <<<<<<<<<<<<<<
- *                       char * method = "POSIX1",
- *                       char * 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_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":1244
- *         select_method(self.gid, self.method, self.method_params, "")
+/* "adios.pyx":1005
+ * 
+ *     property count:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.count
  * 
- *     def define_var(self, char * varname,             # <<<<<<<<<<<<<<
- *                    ldim = tuple(),
- *                    gdim = tuple(),
  */
 
 /* 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, char *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) {
-  char *__pyx_v_varname;
-  PyObject *__pyx_v_ldim = 0;
-  PyObject *__pyx_v_gdim = 0;
-  PyObject *__pyx_v_offset = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_9blockinfo_5count_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_9blockinfo_5count_1__get__(PyObject *__pyx_v_self) {
   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__23;
-    values[2] = __pyx_k__24;
-    values[3] = __pyx_k__25;
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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_varname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ldim);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gdim);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
-          if (value) { values[3] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_varname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_varname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_ldim = values[1];
-    __pyx_v_gdim = values[2];
-    __pyx_v_offset = values[3];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __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:;
-  __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);
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_9blockinfo_5count___get__(((struct __pyx_obj_5adios_blockinfo *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset) {
+static PyObject *__pyx_pf_5adios_9blockinfo_5count___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_var", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1264
- * 
- *         """
- *         self.var[varname] = varinfo(varname, ldim, gdim, offset)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1006
+ *     property count:
+ *         def __get__(self):
+ *             return self.count             # <<<<<<<<<<<<<<
  * 
- *     def define_attr(self, char * attrname):
+ *     property process_id:
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_varname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_ldim);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ldim);
-  __Pyx_GIVEREF(__pyx_v_ldim);
-  __Pyx_INCREF(__pyx_v_gdim);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_gdim);
-  __Pyx_GIVEREF(__pyx_v_gdim);
-  __Pyx_INCREF(__pyx_v_offset);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_offset);
-  __Pyx_GIVEREF(__pyx_v_offset);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_varinfo)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_varname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_t_2, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->count);
+  __pyx_r = __pyx_v_self->count;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1244
- *         select_method(self.gid, self.method, self.method_params, "")
+  /* "adios.pyx":1005
+ * 
+ *     property count:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.count
  * 
- *     def define_var(self, char * varname,             # <<<<<<<<<<<<<<
- *                    ldim = tuple(),
- *                    gdim = tuple(),
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.writer.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1266
- *         self.var[varname] = varinfo(varname, ldim, gdim, offset)
+/* "adios.pyx":1009
+ * 
+ *     property process_id:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.process_id
  * 
- *     def define_attr(self, char * attrname):             # <<<<<<<<<<<<<<
- *         """
- *         Define attribute in the file.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_7define_attr(PyObject *__pyx_v_self, PyObject *__pyx_arg_attrname); /*proto*/
-static char __pyx_doc_5adios_6writer_6define_attr[] = "writer.define_attr(self, char *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_arg_attrname) {
-  char *__pyx_v_attrname;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_9blockinfo_10process_id_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_9blockinfo_10process_id_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attr (wrapper)", 0);
-  assert(__pyx_arg_attrname); {
-    __pyx_v_attrname = __Pyx_PyObject_AsString(__pyx_arg_attrname); if (unlikely((!__pyx_v_attrname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.writer.define_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_6writer_6define_attr(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((char *)__pyx_v_attrname));
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_9blockinfo_10process_id___get__(((struct __pyx_obj_5adios_blockinfo *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_attrname) {
+static PyObject *__pyx_pf_5adios_9blockinfo_10process_id___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attr", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1274
- *         """
- * 
- *         self.attr[attrname] = attrinfo(attrname, is_static=True)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1010
+ *     property process_id:
+ *         def __get__(self):
+ *             return self.process_id             # <<<<<<<<<<<<<<
  * 
- *     def define_dynamic_attr(self, char * attrname,
+ *     property time_index:
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_is_static, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_attrinfo)), __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attr, __pyx_t_1, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1266
- *         self.var[varname] = varinfo(varname, ldim, gdim, offset)
+  /* "adios.pyx":1009
+ * 
+ *     property process_id:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.process_id
  * 
- *     def define_attr(self, char * attrname):             # <<<<<<<<<<<<<<
- *         """
- *         Define attribute in the file.
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.writer.define_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.blockinfo.process_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -16804,34 +16110,92 @@ static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_wr
   return __pyx_r;
 }
 
-/* "adios.pyx":1276
- *         self.attr[attrname] = attrinfo(attrname, is_static=True)
+/* "adios.pyx":1013
+ * 
+ *     property time_index:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.time_index
  * 
- *     def define_dynamic_attr(self, char * attrname,             # <<<<<<<<<<<<<<
- *                             char * varname,
- *                             dtype):
  */
 
 /* 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, char *attrname, char *varname, dtype)";
-static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_attrname;
-  char *__pyx_v_varname;
-  PyObject *__pyx_v_dtype = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_9blockinfo_10time_index_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_9blockinfo_10time_index_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_dynamic_attr (wrapper)", 0);
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_9blockinfo_10time_index___get__(((struct __pyx_obj_5adios_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_9blockinfo_10time_index___get__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1014
+ *     property time_index:
+ *         def __get__(self):
+ *             return self.time_index             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1013
+ * 
+ *     property time_index:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.time_index
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.blockinfo.time_index.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1016
+ *             return self.time_index
+ * 
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
+ *         self.start = start
+ *         self.count = count
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_9blockinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_9blockinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_start = 0;
+  PyObject *__pyx_v_count = 0;
+  int __pyx_v_process_id;
+  int __pyx_v_time_index;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_attrname,&__pyx_n_s_varname,&__pyx_n_s_dtype,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_count,&__pyx_n_s_process_id,&__pyx_n_s_time_index,0};
+    PyObject* values[4] = {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  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);
@@ -16841,396 +16205,345 @@ static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_attrname)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_start)) != 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--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 1016, __pyx_L3_error)
         }
         case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
+        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)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 1016, __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_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1016, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       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);
     }
-    __pyx_v_attrname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_attrname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_varname = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_varname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_dtype = values[2];
+    __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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1016, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.writer.define_dynamic_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.blockinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
-  return NULL;
+  return -1;
   __pyx_L4_argument_unpacking_done:;
-  __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_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)
+  __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, char *__pyx_v_attrname, char *__pyx_v_varname, PyObject *__pyx_v_dtype) {
-  PyObject *__pyx_r = NULL;
+static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, int __pyx_v_process_id, int __pyx_v_time_index) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_dynamic_attr", 0);
+  __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1279
- *                             char * varname,
- *                             dtype):
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)             # <<<<<<<<<<<<<<
- *     def __setitem__(self, name, val):
- *         if self.var.has_key(name):
+  /* "adios.pyx":1017
+ * 
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
+ *         self.start = start             # <<<<<<<<<<<<<<
+ *         self.count = count
+ *         self.process_id = process_id
+ */
+  __Pyx_INCREF(__pyx_v_start);
+  __Pyx_GIVEREF(__pyx_v_start);
+  __Pyx_GOTREF(__pyx_v_self->start);
+  __Pyx_DECREF(__pyx_v_self->start);
+  __pyx_v_self->start = __pyx_v_start;
+
+  /* "adios.pyx":1018
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
+ *         self.start = start
+ *         self.count = count             # <<<<<<<<<<<<<<
+ *         self.process_id = process_id
+ *         self.time_index = time_index
+ */
+  __Pyx_INCREF(__pyx_v_count);
+  __Pyx_GIVEREF(__pyx_v_count);
+  __Pyx_GOTREF(__pyx_v_self->count);
+  __Pyx_DECREF(__pyx_v_self->count);
+  __pyx_v_self->count = __pyx_v_count;
+
+  /* "adios.pyx":1019
+ *         self.start = start
+ *         self.count = count
+ *         self.process_id = process_id             # <<<<<<<<<<<<<<
+ *         self.time_index = time_index
+ * 
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_varname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_v_dtype);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_dtype);
-  __Pyx_GIVEREF(__pyx_v_dtype);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_attrinfo)), __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __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;
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attr, __pyx_t_2, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_self->process_id = __pyx_v_process_id;
 
-  /* "adios.pyx":1276
- *         self.attr[attrname] = attrinfo(attrname, is_static=True)
+  /* "adios.pyx":1020
+ *         self.count = count
+ *         self.process_id = process_id
+ *         self.time_index = time_index             # <<<<<<<<<<<<<<
  * 
- *     def define_dynamic_attr(self, char * attrname,             # <<<<<<<<<<<<<<
- *                             char * varname,
- *                             dtype):
+ *     def __repr__(self):
+ */
+  __pyx_v_self->time_index = __pyx_v_time_index;
+
+  /* "adios.pyx":1016
+ *             return self.time_index
+ * 
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
+ *         self.start = start
+ *         self.count = count
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.writer.define_dynamic_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
+  __pyx_r = 0;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1280
- *                             dtype):
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
- *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             self.var[name].value = val
+/* "adios.pyx":1022
+ *         self.time_index = time_index
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,
  */
 
 /* 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) {
-  int __pyx_r;
+static PyObject *__pyx_pw_5adios_9blockinfo_3__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_9blockinfo_3__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
   __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_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_9blockinfo_2__repr__(((struct __pyx_obj_5adios_blockinfo *)__pyx_v_self));
 
   /* 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) {
-  int __pyx_r;
+static PyObject *__pyx_pf_5adios_9blockinfo_2__repr__(struct __pyx_obj_5adios_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1281
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
- *     def __setitem__(self, name, val):
- *         if self.var.has_key(name):             # <<<<<<<<<<<<<<
- *             self.var[name].value = val
- *         elif self.attr.has_key(name):
+  /* "adios.pyx":1023
+ * 
+ *     def __repr__(self):
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.process_id,
+ *                 self.time_index,
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __Pyx_XDECREF(__pyx_r);
 
-    /* "adios.pyx":1282
- *     def __setitem__(self, name, val):
- *         if self.var.has_key(name):
- *             self.var[name].value = val             # <<<<<<<<<<<<<<
- *         elif self.attr.has_key(name):
- *             self.attr[name].value = val
+  /* "adios.pyx":1024
+ *     def __repr__(self):
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,             # <<<<<<<<<<<<<<
+ *                 self.time_index,
+ *                 self.start,
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_value, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
+  __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_GOTREF(__pyx_t_1);
 
-  /* "adios.pyx":1283
- *         if self.var.has_key(name):
- *             self.var[name].value = val
- *         elif self.attr.has_key(name):             # <<<<<<<<<<<<<<
- *             self.attr[name].value = val
- *         else:
+  /* "adios.pyx":1025
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,
+ *                 self.time_index,             # <<<<<<<<<<<<<<
+ *                 self.start,
+ *                 self.count)
  */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+  __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_GOTREF(__pyx_t_2);
 
-    /* "adios.pyx":1284
- *             self.var[name].value = val
- *         elif self.attr.has_key(name):
- *             self.attr[name].value = val             # <<<<<<<<<<<<<<
- *         else:
- *             self.var[name] = val
+  /* "adios.pyx":1024
+ *     def __repr__(self):
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,             # <<<<<<<<<<<<<<
+ *                 self.time_index,
+ *                 self.start,
  */
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_value, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1024, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->start);
+  __Pyx_GIVEREF(__pyx_v_self->start);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->start);
+  __Pyx_INCREF(__pyx_v_self->count);
+  __Pyx_GIVEREF(__pyx_v_self->count);
+  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->count);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
 
-    /* "adios.pyx":1286
- *             self.attr[name].value = val
- *         else:
- *             self.var[name] = val             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1023
  * 
- *     def __getitem__(self, name):
+ *     def __repr__(self):
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.process_id,
+ *                 self.time_index,
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_v_name, __pyx_v_val) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_L3:;
+  __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_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":1280
- *                             dtype):
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
- *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             self.var[name].value = val
+  /* "adios.pyx":1022
+ *         self.time_index = time_index
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,
  */
 
   /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.writer.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
+  __Pyx_AddTraceback("adios.blockinfo.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1288
- *             self.var[name] = val
+/* "adios.pyx":1059
+ *     property name:
+ *         """ The variable name. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
  * 
- *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             return self.var[name].value
  */
 
 /* 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_3var_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_4name_1__get__(PyObject *__pyx_v_self) {
   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_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_4name___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
   /* 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_3var_4name___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1289
+  /* "adios.pyx":1060
+ *         """ The variable name. """
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
  * 
- *     def __getitem__(self, name):
- *         if self.var.has_key(name):             # <<<<<<<<<<<<<<
- *             return self.var[name].value
- *         elif self.attr.has_key(name):
+ *     property varid:
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
+  goto __pyx_L0;
 
-    /* "adios.pyx":1290
- *     def __getitem__(self, name):
- *         if self.var.has_key(name):
- *             return self.var[name].value             # <<<<<<<<<<<<<<
- *         elif self.attr.has_key(name):
- *             return self.attr[name].value
+  /* "adios.pyx":1059
+ *     property name:
+ *         """ The variable name. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
  */
-    __Pyx_XDECREF(__pyx_r);
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L0;
-  }
 
-  /* "adios.pyx":1291
- *         if self.var.has_key(name):
- *             return self.var[name].value
- *         elif self.attr.has_key(name):             # <<<<<<<<<<<<<<
- *             return self.attr[name].value
- *         else:
- */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":1292
- *             return self.var[name].value
- *         elif self.attr.has_key(name):
- *             return self.attr[name].value             # <<<<<<<<<<<<<<
- *         else:
- *             raise KeyError(name)
+/* "adios.pyx":1064
+ *     property varid:
+ *         """ Internal variable id. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.varid
+ * 
  */
-    __Pyx_XDECREF(__pyx_r);
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-  }
-  /*else*/ {
 
-    /* "adios.pyx":1294
- *             return self.attr[name].value
- *         else:
- *             raise KeyError(name)             # <<<<<<<<<<<<<<
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_5varid_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_5varid_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_5varid___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1065
+ *         """ Internal variable id. """
+ *         def __get__(self):
+ *             return self.varid             # <<<<<<<<<<<<<<
  * 
- *     def close(self):
+ *     property dtype:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1288
- *             self.var[name] = val
+  /* "adios.pyx":1064
+ *     property varid:
+ *         """ Internal variable id. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.varid
  * 
- *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             return self.var[name].value
  */
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios.writer.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.var.varid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -17238,1277 +16551,794 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
   return __pyx_r;
 }
 
-/* "adios.pyx":1296
- *             raise KeyError(name)
+/* "adios.pyx":1069
+ *     property dtype:
+ *         """ Variable type as in numpy.dtype. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
  * 
- *     def close(self):             # <<<<<<<<<<<<<<
- *         """
- *         Write variables and attributes to a file and close the writer.
  */
 
 /* 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_3var_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_5dtype_1__get__(PyObject *__pyx_v_self) {
   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_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_5dtype___get__(((struct __pyx_obj_5adios_var *)__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) {
-  int64_t __pyx_v_fd;
-  PyObject *__pyx_v_extra_var = NULL;
-  PyObject *__pyx_v_extra_attr = NULL;
-  PyObject *__pyx_v_key = NULL;
-  PyObject *__pyx_v_val = NULL;
-  PyObject *__pyx_v_n = NULL;
-  PyObject *__pyx_v_groupsize = NULL;
-  PyObject *__pyx_v_var = NULL;
+static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  char *__pyx_t_1;
-  char *__pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  Py_ssize_t __pyx_t_5;
-  int __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *(*__pyx_t_15)(PyObject *);
-  uint64_t __pyx_t_16;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1300
- *         Write variables and attributes to a file and close the writer.
- *         """
- *         fd = open(self.gname, self.fname, "w")             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1070
+ *         """ Variable type as in numpy.dtype. """
+ *         def __get__(self):
+ *             return self.dtype             # <<<<<<<<<<<<<<
  * 
- *         extra_var = dict()
+ *     property ndim:
  */
-  __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_self->gname); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->fname); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_fd = __pyx_f_5adios_open(__pyx_t_1, __pyx_t_2, __pyx_k_w, 0, NULL);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
+  goto __pyx_L0;
 
-  /* "adios.pyx":1302
- *         fd = open(self.gname, self.fname, "w")
- * 
- *         extra_var = dict()             # <<<<<<<<<<<<<<
- *         extra_attr = dict()
+  /* "adios.pyx":1069
+ *     property dtype:
+ *         """ Variable type as in numpy.dtype. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
  * 
  */
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_extra_var = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
 
-  /* "adios.pyx":1303
- * 
- *         extra_var = dict()
- *         extra_attr = dict()             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1074
+ *     property ndim:
+ *         """ The number of dimensions of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.ndim
  * 
- *         for key, val in self.var.iteritems():
  */
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_extra_attr = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
 
-  /* "adios.pyx":1305
- *         extra_attr = dict()
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_4ndim_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_4ndim___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1075
+ *         """ The number of dimensions of the variable. """
+ *         def __get__(self):
+ *             return self.ndim             # <<<<<<<<<<<<<<
  * 
- *         for key, val in self.var.iteritems():             # <<<<<<<<<<<<<<
- *             if not isinstance(val, varinfo):
- *                 n = np.array(val)
+ *     property dims:
  */
-  __pyx_t_4 = 0;
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_self->var, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_7;
-  __pyx_t_7 = 0;
-  while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_5, &__pyx_t_4, &__pyx_t_7, &__pyx_t_8, NULL, __pyx_t_6);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
-    __pyx_t_7 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
-    __pyx_t_8 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-    /* "adios.pyx":1306
+  /* "adios.pyx":1074
+ *     property ndim:
+ *         """ The number of dimensions of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.ndim
  * 
- *         for key, val in self.var.iteritems():
- *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
- *                 n = np.array(val)
- *                 extra_var[key] = varinfo(key, n.shape)
  */
-    __pyx_t_10 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_5adios_varinfo)); 
-    __pyx_t_11 = ((!(__pyx_t_10 != 0)) != 0);
-    if (__pyx_t_11) {
 
-      /* "adios.pyx":1307
- *         for key, val in self.var.iteritems():
- *             if not isinstance(val, varinfo):
- *                 n = np.array(val)             # <<<<<<<<<<<<<<
- *                 extra_var[key] = varinfo(key, n.shape)
- *                 extra_var[key].value = val
- */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
-        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12);
-        if (likely(__pyx_t_7)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-          __Pyx_INCREF(__pyx_t_7);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_12, function);
-        }
-      }
-      if (!__pyx_t_7) {
-        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_val); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-      } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-        __Pyx_INCREF(__pyx_v_val);
-        PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_val);
-        __Pyx_GIVEREF(__pyx_v_val);
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_8);
-      __pyx_t_8 = 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.var.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-      /* "adios.pyx":1308
- *             if not isinstance(val, varinfo):
- *                 n = np.array(val)
- *                 extra_var[key] = varinfo(key, n.shape)             # <<<<<<<<<<<<<<
- *                 extra_var[key].value = val
- *             else:
+/* "adios.pyx":1079
+ *     property dims:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
+ * 
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_INCREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
-      __Pyx_GIVEREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_8);
-      __Pyx_GIVEREF(__pyx_t_8);
-      __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_varinfo)), __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_var, __pyx_v_key, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "adios.pyx":1309
- *                 n = np.array(val)
- *                 extra_var[key] = varinfo(key, n.shape)
- *                 extra_var[key].value = val             # <<<<<<<<<<<<<<
- *             else:
- *                 if self.is_noxml: val.define(self.gid)
- */
-      __pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_extra_var, __pyx_v_key); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_8);
-      if (__Pyx_PyObject_SetAttrStr(__pyx_t_8, __pyx_n_s_value, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L5;
-    }
-    /*else*/ {
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_4dims_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_4dims_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_4dims___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
-      /* "adios.pyx":1311
- *                 extra_var[key].value = val
- *             else:
- *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1080
+ *         """ The shape of the variable. """
+ *         def __get__(self):
+ *             return self.dims             # <<<<<<<<<<<<<<
  * 
- *         for key, val in extra_var.iteritems():
+ *     property shape:
  */
-      __pyx_t_11 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_11) {
-        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_13 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_13);
-        __pyx_t_7 = NULL;
-        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
-          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12);
-          if (likely(__pyx_t_7)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-            __Pyx_INCREF(__pyx_t_7);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_12, function);
-          }
-        }
-        if (!__pyx_t_7) {
-          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_GOTREF(__pyx_t_8);
-        } else {
-          __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_14);
-          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-          PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_13);
-          __Pyx_GIVEREF(__pyx_t_13);
-          __pyx_t_13 = 0;
-          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_8);
-          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        goto __pyx_L6;
-      }
-      __pyx_L6:;
-    }
-    __pyx_L5:;
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->dims);
+  __pyx_r = __pyx_v_self->dims;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1313
- *                 if self.is_noxml: val.define(self.gid)
+  /* "adios.pyx":1079
+ *     property dims:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
  * 
- *         for key, val in extra_var.iteritems():             # <<<<<<<<<<<<<<
- *             if self.is_noxml: val.define(self.gid)
- *             self.var[key] = val
  */
-  __pyx_t_5 = 0;
-  __pyx_t_8 = __Pyx_dict_iterator(__pyx_v_extra_var, 1, __pyx_n_s_iteritems, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_8;
-  __pyx_t_8 = 0;
-  while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_4, &__pyx_t_5, &__pyx_t_8, &__pyx_t_12, NULL, __pyx_t_6);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_8);
-    __pyx_t_8 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_12);
-    __pyx_t_12 = 0;
 
-    /* "adios.pyx":1314
- * 
- *         for key, val in extra_var.iteritems():
- *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
- *             self.var[key] = val
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1084
+ *     property shape:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
  * 
  */
-    __pyx_t_11 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_11) {
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_14 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_14);
-      __pyx_t_13 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
-        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8);
-        if (likely(__pyx_t_13)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
-          __Pyx_INCREF(__pyx_t_13);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_8, function);
-        }
-      }
-      if (!__pyx_t_13) {
-        __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-        __Pyx_GOTREF(__pyx_t_12);
-      } else {
-        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_7);
-        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL;
-        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_14);
-        __Pyx_GIVEREF(__pyx_t_14);
-        __pyx_t_14 = 0;
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      goto __pyx_L9;
-    }
-    __pyx_L9:;
 
-    /* "adios.pyx":1315
- *         for key, val in extra_var.iteritems():
- *             if self.is_noxml: val.define(self.gid)
- *             self.var[key] = val             # <<<<<<<<<<<<<<
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_5shape_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_5shape___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_5shape___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1085
+ *         """ The shape of the variable. """
+ *         def __get__(self):
+ *             return self.dims             # <<<<<<<<<<<<<<
  * 
- *         for key, val in self.attr.iteritems():
+ *     property size:
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_v_key, __pyx_v_val) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->dims);
+  __pyx_r = __pyx_v_self->dims;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1317
- *             self.var[key] = val
+  /* "adios.pyx":1084
+ *     property shape:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
  * 
- *         for key, val in self.attr.iteritems():             # <<<<<<<<<<<<<<
- *             if not isinstance(val, attrinfo):
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
  */
-  __pyx_t_4 = 0;
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_12 = __Pyx_dict_iterator(__pyx_v_self->attr, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_12;
-  __pyx_t_12 = 0;
-  while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_5, &__pyx_t_4, &__pyx_t_12, &__pyx_t_8, NULL, __pyx_t_6);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_12);
-    __pyx_t_12 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
-    __pyx_t_8 = 0;
 
-    /* "adios.pyx":1318
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1089
+ *     property size:
+ *         """ The number of elements in the array. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return np.prod(self.dims)
  * 
- *         for key, val in self.attr.iteritems():
- *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
- *             else:
  */
-    __pyx_t_11 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_5adios_attrinfo)); 
-    __pyx_t_10 = ((!(__pyx_t_11 != 0)) != 0);
-    if (__pyx_t_10) {
 
-      /* "adios.pyx":1319
- *         for key, val in self.attr.iteritems():
- *             if not isinstance(val, attrinfo):
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
- *             else:
- *                 if self.is_noxml: val.define(self.gid)
- */
-      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_12 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
-        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
-        if (likely(__pyx_t_12)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-          __Pyx_INCREF(__pyx_t_12);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_7, function);
-        }
-      }
-      if (!__pyx_t_12) {
-        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_val); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-      } else {
-        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_14);
-        PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
-        __Pyx_INCREF(__pyx_v_val);
-        PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_v_val);
-        __Pyx_GIVEREF(__pyx_v_val);
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_INCREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
-      __Pyx_GIVEREF(__pyx_v_key);
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_7);
-      __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_attrinfo)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_attr, __pyx_v_key, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      goto __pyx_L12;
-    }
-    /*else*/ {
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_4size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_4size___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
-      /* "adios.pyx":1321
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
- *             else:
- *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1090
+ *         """ The number of elements in the array. """
+ *         def __get__(self):
+ *             return np.prod(self.dims)             # <<<<<<<<<<<<<<
  * 
- *         for key, val in extra_attr.iteritems():
+ *     property nsteps:
  */
-      __pyx_t_10 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_10) {
-        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_14 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_12 = NULL;
-        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
-          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8);
-          if (likely(__pyx_t_12)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
-            __Pyx_INCREF(__pyx_t_12);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_8, function);
-          }
-        }
-        if (!__pyx_t_12) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __Pyx_GOTREF(__pyx_t_7);
-        } else {
-          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_13);
-          PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
-          PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_14);
-          __Pyx_GIVEREF(__pyx_t_14);
-          __pyx_t_14 = 0;
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        goto __pyx_L13;
-      }
-      __pyx_L13:;
+  __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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
     }
-    __pyx_L12:;
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1323
- *                 if self.is_noxml: val.define(self.gid)
- * 
- *         for key, val in extra_attr.iteritems():             # <<<<<<<<<<<<<<
- *             if self.is_noxml: val.define(self.gid)
+  /* "adios.pyx":1089
+ *     property size:
+ *         """ The number of elements in the array. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return np.prod(self.dims)
  * 
  */
-  __pyx_t_5 = 0;
-  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_extra_attr, 1, __pyx_n_s_iteritems, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_7;
-  __pyx_t_7 = 0;
-  while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_4, &__pyx_t_5, &__pyx_t_7, &__pyx_t_8, NULL, __pyx_t_6);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
-    __pyx_t_7 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
-    __pyx_t_8 = 0;
-
-    /* "adios.pyx":1324
- * 
- *         for key, val in extra_attr.iteritems():
- *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
- * 
- *         groupsize = 0
- */
-    __pyx_t_10 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_10) {
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_13 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_t_14 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
-        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
-        if (likely(__pyx_t_14)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-          __Pyx_INCREF(__pyx_t_14);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_7, function);
-        }
-      }
-      if (!__pyx_t_14) {
-        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_GOTREF(__pyx_t_8);
-      } else {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = NULL;
-        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_13);
-        __Pyx_GIVEREF(__pyx_t_13);
-        __pyx_t_13 = 0;
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L16;
-    }
-    __pyx_L16:;
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "adios.pyx":1326
- *             if self.is_noxml: val.define(self.gid)
- * 
- *         groupsize = 0             # <<<<<<<<<<<<<<
- *         for var in self.var.values():
- *             groupsize = groupsize + var.bytes()
- */
-  __Pyx_INCREF(__pyx_int_0);
-  __pyx_v_groupsize = __pyx_int_0;
-
-  /* "adios.pyx":1327
- * 
- *         groupsize = 0
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
- *             groupsize = groupsize + var.bytes()
- * 
- */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_3 = __Pyx_PyDict_Values(__pyx_v_self->var); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
-    __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_4 = 0;
-    __pyx_t_15 = NULL;
-  } else {
-    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_15 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  for (;;) {
-    if (likely(!__pyx_t_15)) {
-      if (likely(PyList_CheckExact(__pyx_t_8))) {
-        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_8)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      }
-    } else {
-      __pyx_t_3 = __pyx_t_15(__pyx_t_8);
-      if (unlikely(!__pyx_t_3)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_3);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_3);
-    __pyx_t_3 = 0;
-
-    /* "adios.pyx":1328
- *         groupsize = 0
- *         for var in self.var.values():
- *             groupsize = groupsize + var.bytes()             # <<<<<<<<<<<<<<
- * 
- *         set_group_size(fd, groupsize)
- */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_bytes_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_12 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
-      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
-      if (likely(__pyx_t_12)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-        __Pyx_INCREF(__pyx_t_12);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_7, function);
-      }
-    }
-    if (__pyx_t_12) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = PyNumber_Add(__pyx_v_groupsize, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF_SET(__pyx_v_groupsize, __pyx_t_7);
-    __pyx_t_7 = 0;
 
-    /* "adios.pyx":1327
- * 
- *         groupsize = 0
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
- *             groupsize = groupsize + var.bytes()
- * 
- */
-  }
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.var.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":1330
- *             groupsize = groupsize + var.bytes()
- * 
- *         set_group_size(fd, groupsize)             # <<<<<<<<<<<<<<
+/* "adios.pyx":1094
+ *     property nsteps:
+ *         """ The number of time steps of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nsteps
  * 
- *         for var in self.var.values():
  */
-  __pyx_t_16 = __Pyx_PyInt_As_uint64_t(__pyx_v_groupsize); if (unlikely((__pyx_t_16 == (uint64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_f_5adios_set_group_size(__pyx_v_fd, __pyx_t_16, 0);
 
-  /* "adios.pyx":1332
- *         set_group_size(fd, groupsize)
- * 
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
- *             var.write(fd)
- * 
- */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_8 = __Pyx_PyDict_Values(__pyx_v_self->var); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
-    __pyx_t_7 = __pyx_t_8; __Pyx_INCREF(__pyx_t_7); __pyx_t_4 = 0;
-    __pyx_t_15 = NULL;
-  } else {
-    __pyx_t_4 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  for (;;) {
-    if (likely(!__pyx_t_15)) {
-      if (likely(PyList_CheckExact(__pyx_t_7))) {
-        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_7)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_8); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_8); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      }
-    } else {
-      __pyx_t_8 = __pyx_t_15(__pyx_t_7);
-      if (unlikely(!__pyx_t_8)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_8);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_8);
-    __pyx_t_8 = 0;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_6nsteps_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_6nsteps_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_6nsteps___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
-    /* "adios.pyx":1333
- * 
- *         for var in self.var.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_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_12);
-    __pyx_t_13 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_13)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_13);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    if (!__pyx_t_13) {
-      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_8);
-    } else {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_14);
-      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL;
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_12);
-      __pyx_t_12 = 0;
-      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":1332
- *         set_group_size(fd, groupsize)
- * 
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
- *             var.write(fd)
- * 
- */
-  }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1335
- *             var.write(fd)
- * 
- *         close(fd)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1095
+ *         """ The number of time steps of the variable. """
+ *         def __get__(self):
+ *             return self.nsteps             # <<<<<<<<<<<<<<
  * 
- *     def __repr__(self):
+ *     property attrs:
  */
-  __pyx_f_5adios_close(__pyx_v_fd, 0);
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1296
- *             raise KeyError(name)
+  /* "adios.pyx":1094
+ *     property nsteps:
+ *         """ The number of time steps of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nsteps
  * 
- *     def close(self):             # <<<<<<<<<<<<<<
- *         """
- *         Write variables and attributes to a file and close the writer.
  */
 
   /* 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_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
-  __Pyx_AddTraceback("adios.writer.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.var.nsteps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_extra_var);
-  __Pyx_XDECREF(__pyx_v_extra_attr);
-  __Pyx_XDECREF(__pyx_v_key);
-  __Pyx_XDECREF(__pyx_v_val);
-  __Pyx_XDECREF(__pyx_v_n);
-  __Pyx_XDECREF(__pyx_v_groupsize);
-  __Pyx_XDECREF(__pyx_v_var);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1337
- *         close(fd)
+/* "adios.pyx":1099
+ *     property attrs:
+ *         """ Attributes associated with the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.attrs
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
  */
 
 /* 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_3var_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_5attrs_1__get__(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_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_5attrs___get__(((struct __pyx_obj_5adios_var *)__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_3var_5attrs___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1338
+  /* "adios.pyx":1100
+ *         """ Attributes associated with the variable. """
+ *         def __get__(self):
+ *             return self.attrs             # <<<<<<<<<<<<<<
  * 
- *     def __repr__(self):
- *         return ("AdiosWriter (fname=%r, gname=%r, "             # <<<<<<<<<<<<<<
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
- *                 (self.fname,
+ *     property blockinfo:
  */
   __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_r = ((PyObject *)__pyx_v_self->attrs);
+  goto __pyx_L0;
 
-  /* "adios.pyx":1344
- *                  self.method,
- *                  self.method_params,
- *                  self.var.keys(),             # <<<<<<<<<<<<<<
- *                  self.attr.keys())
+  /* "adios.pyx":1099
+ *     property attrs:
+ *         """ Attributes associated with the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.attrs
  * 
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios.pyx":1345
- *                  self.method_params,
- *                  self.var.keys(),
- *                  self.attr.keys())             # <<<<<<<<<<<<<<
- * 
- * cdef class attrinfo:
- */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "adios.pyx":1340
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
- *                 (self.fname,             # <<<<<<<<<<<<<<
- *                  self.gname,
- *                  self.method,
- */
-  __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_INCREF(__pyx_v_self->fname);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->fname);
-  __Pyx_GIVEREF(__pyx_v_self->fname);
-  __Pyx_INCREF(__pyx_v_self->gname);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->gname);
-  __Pyx_GIVEREF(__pyx_v_self->gname);
-  __Pyx_INCREF(__pyx_v_self->method);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->method);
-  __Pyx_GIVEREF(__pyx_v_self->method);
-  __Pyx_INCREF(__pyx_v_self->method_params);
-  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->method_params);
-  __Pyx_GIVEREF(__pyx_v_self->method_params);
-  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-
-  /* "adios.pyx":1339
- *     def __repr__(self):
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%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_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __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":1337
- *         close(fd)
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
- */
 
   /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.writer.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1354
- * 
- *     property name:
+/* "adios.pyx":1104
+ *     property blockinfo:
+ *         """ Block information. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
- * 
+ *             if self.blockinfo is None:
+ *                 ll = list()
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_8attrinfo_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_8attrinfo_4name_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_3var_9blockinfo_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_9blockinfo_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_8attrinfo_4name___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_3var_9blockinfo___get__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_8attrinfo_4name___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_v_ll = NULL;
+  PyObject *__pyx_v_k = NULL;
+  int __pyx_v_t;
+  PyObject *__pyx_v_l = NULL;
+  CYTHON_UNUSED int __pyx_v_i;
+  PyObject *__pyx_v_start = NULL;
+  PyObject *__pyx_v_count = NULL;
+  PyObject *__pyx_v_process_id = NULL;
+  PyObject *__pyx_v_time_index = NULL;
+  struct __pyx_obj_5adios_blockinfo *__pyx_v_binfo = NULL;
+  int __pyx_v_d;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  Py_ssize_t __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1355
- *     property name:
+  /* "adios.pyx":1105
+ *         """ Block information. """
  *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
- * 
- *     property is_static:
+ *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
+ *                 ll = list()
+ *                 k = 0
  */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
-  goto __pyx_L0;
+  __pyx_t_1 = (__pyx_v_self->blockinfo == ((PyObject*)Py_None));
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
 
-  /* "adios.pyx":1354
- * 
- *     property name:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
- * 
+    /* "adios.pyx":1106
+ *         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_GOTREF(__pyx_t_3);
+    __pyx_v_ll = ((PyObject*)__pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":1107
+ *             if self.blockinfo is None:
+ *                 ll = list()
+ *                 k = 0             # <<<<<<<<<<<<<<
+ *                 for t in range(self.vp.nsteps):
+ *                     l = list()
+ */
+    __Pyx_INCREF(__pyx_int_0);
+    __pyx_v_k = __pyx_int_0;
 
-/* "adios.pyx":1358
- * 
- *     property is_static:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_static
- * 
+    /* "adios.pyx":1108
+ *                 ll = list()
+ *                 k = 0
+ *                 for t in range(self.vp.nsteps):             # <<<<<<<<<<<<<<
+ *                     l = list()
+ *                     if self.vp.nblocks[t] == 0:
  */
+    __pyx_t_4 = __pyx_v_self->vp->nsteps;
+    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+      __pyx_v_t = __pyx_t_5;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_8attrinfo_9is_static_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_8attrinfo_9is_static_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_8attrinfo_9is_static___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+      /* "adios.pyx":1109
+ *                 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_GOTREF(__pyx_t_3);
+      __Pyx_XDECREF_SET(__pyx_v_l, ((PyObject*)__pyx_t_3));
+      __pyx_t_3 = 0;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios.pyx":1110
+ *                 for t in range(self.vp.nsteps):
+ *                     l = list()
+ *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
+ *                         l.append(None)
+ *                     for i in range(self.vp.nblocks[t]):
+ */
+      __pyx_t_2 = (((__pyx_v_self->vp->nblocks[__pyx_v_t]) == 0) != 0);
+      if (__pyx_t_2) {
 
-static PyObject *__pyx_pf_5adios_8attrinfo_9is_static___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+        /* "adios.pyx":1111
+ *                     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)
 
-  /* "adios.pyx":1359
- *     property is_static:
- *         def __get__(self):
- *             return self.is_static             # <<<<<<<<<<<<<<
- * 
- *     property dtype:
+        /* "adios.pyx":1110
+ *                 for t in range(self.vp.nsteps):
+ *                     l = list()
+ *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
+ *                         l.append(None)
+ *                     for i in range(self.vp.nblocks[t]):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+      }
 
-  /* "adios.pyx":1358
- * 
- *     property is_static:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_static
- * 
+      /* "adios.pyx":1112
+ *                     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)])
+ *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
+ */
+      __pyx_t_7 = (__pyx_v_self->vp->nblocks[__pyx_v_t]);
+      for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+        __pyx_v_i = __pyx_t_8;
+
+        /* "adios.pyx":1113
+ *                         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_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_GOTREF(__pyx_t_12);
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 1113, __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_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
+ *                     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_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_GOTREF(__pyx_t_3);
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1114, __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_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;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.attrinfo.is_static.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+        /* "adios.pyx":1115
+ *                         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_GOTREF(__pyx_t_3);
+        __Pyx_XDECREF_SET(__pyx_v_process_id, __pyx_t_3);
+        __pyx_t_3 = 0;
 
-/* "adios.pyx":1362
- * 
- *     property dtype:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
- * 
+        /* "adios.pyx":1116
+ *                         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_GOTREF(__pyx_t_3);
+        __Pyx_XDECREF_SET(__pyx_v_time_index, __pyx_t_3);
+        __pyx_t_3 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_8attrinfo_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_8attrinfo_5dtype_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_8attrinfo_5dtype___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+        /* "adios.pyx":1117
+ *                         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_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(__pyx_v_start);
+        __Pyx_GIVEREF(__pyx_v_start);
+        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_start);
+        __Pyx_INCREF(__pyx_v_count);
+        __Pyx_GIVEREF(__pyx_v_count);
+        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_count);
+        __Pyx_INCREF(__pyx_v_process_id);
+        __Pyx_GIVEREF(__pyx_v_process_id);
+        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_process_id);
+        __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_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;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+        /* "adios.pyx":1118
+ *                         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)
+
+        /* "adios.pyx":1119
+ *                         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_GOTREF(__pyx_t_12);
+        __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_12);
+        __pyx_t_12 = 0;
+      }
 
-static PyObject *__pyx_pf_5adios_8attrinfo_5dtype___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+      /* "adios.pyx":1120
+ *                         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)
+    }
 
-  /* "adios.pyx":1363
- *     property dtype:
+    /* "adios.pyx":1121
+ *                         k += 1
+ *                     ll.append(l)
+ *                 self.blockinfo = ll             # <<<<<<<<<<<<<<
+ *             return (self.blockinfo)
+ * 
+ */
+    __Pyx_INCREF(__pyx_v_ll);
+    __Pyx_GIVEREF(__pyx_v_ll);
+    __Pyx_GOTREF(__pyx_v_self->blockinfo);
+    __Pyx_DECREF(__pyx_v_self->blockinfo);
+    __pyx_v_self->blockinfo = __pyx_v_ll;
+
+    /* "adios.pyx":1105
+ *         """ Block information. """
  *         def __get__(self):
- *             return self.dtype             # <<<<<<<<<<<<<<
+ *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
+ *                 ll = list()
+ *                 k = 0
+ */
+  }
+
+  /* "adios.pyx":1122
+ *                     ll.append(l)
+ *                 self.blockinfo = ll
+ *             return (self.blockinfo)             # <<<<<<<<<<<<<<
  * 
- *     property value:
+ *     def __init__(self, file file, str name):
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->dtype);
-  __pyx_r = __pyx_v_self->dtype;
+  __Pyx_INCREF(__pyx_v_self->blockinfo);
+  __pyx_r = __pyx_v_self->blockinfo;
   goto __pyx_L0;
 
-  /* "adios.pyx":1362
- * 
- *     property dtype:
+  /* "adios.pyx":1104
+ *     property blockinfo:
+ *         """ Block information. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
- * 
+ *             if self.blockinfo is None:
+ *                 ll = list()
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("adios.var.blockinfo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_ll);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XDECREF(__pyx_v_l);
+  __Pyx_XDECREF(__pyx_v_start);
+  __Pyx_XDECREF(__pyx_v_count);
+  __Pyx_XDECREF(__pyx_v_process_id);
+  __Pyx_XDECREF(__pyx_v_time_index);
+  __Pyx_XDECREF((PyObject *)__pyx_v_binfo);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1366
- * 
- *     property value:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.value
+/* "adios.pyx":1124
+ *             return (self.blockinfo)
  * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.vp = NULL
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_8attrinfo_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_8attrinfo_5value_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_8attrinfo_5value___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios.pyx":1367
- *     property value:
- *         def __get__(self):
- *             return self.value             # <<<<<<<<<<<<<<
- * 
- *         def __set__(self, value):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->value);
-  __pyx_r = __pyx_v_self->value;
-  goto __pyx_L0;
-
-  /* "adios.pyx":1366
- * 
- *     property value:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.value
- * 
- */
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1369
- *             return self.value
- * 
- *         def __set__(self, value):             # <<<<<<<<<<<<<<
- *             self.value = value
- * 
- */
-
-/* Python wrapper */
-static int __pyx_pw_5adios_8attrinfo_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_8attrinfo_5value_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_8attrinfo_5value_2__set__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__", 0);
-
-  /* "adios.pyx":1370
- * 
- *         def __set__(self, value):
- *             self.value = value             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, char * name,
- */
-  __Pyx_INCREF(__pyx_v_value);
-  __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->value);
-  __Pyx_DECREF(__pyx_v_self->value);
-  __pyx_v_self->value = __pyx_v_value;
-
-  /* "adios.pyx":1369
- *             return self.value
- * 
- *         def __set__(self, value):             # <<<<<<<<<<<<<<
- *             self.value = value
- * 
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1372
- *             self.value = value
- * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
- *                  value = None,
- *                  dtype = None,
- */
-
-/* Python wrapper */
-static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_name;
-  PyObject *__pyx_v_value = 0;
-  PyObject *__pyx_v_dtype = 0;
-  int __pyx_v_is_static;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
+static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_5adios_file *__pyx_v_file = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    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":1373
- * 
- *     def __init__(self, char * name,
- *                  value = None,             # <<<<<<<<<<<<<<
- *                  dtype = None,
- *                  bint is_static = True):
- */
-    values[1] = ((PyObject *)Py_None);
-
-    /* "adios.pyx":1374
- *     def __init__(self, char * name,
- *                  value = None,
- *                  dtype = None,             # <<<<<<<<<<<<<<
- *                  bint is_static = True):
- *         self.name = name
- */
-    values[2] = ((PyObject *)Py_None);
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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  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;
@@ -18517,554 +17347,530 @@ static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_file)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_static);
-          if (value) { values[3] = value; kw_args--; }
+        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)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1124, __pyx_L3_error)
       }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __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_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-
-      /* "adios.pyx":1375
- *                  value = None,
- *                  dtype = None,
- *                  bint is_static = True):             # <<<<<<<<<<<<<<
- *         self.name = name
- *         self.value = value
- */
-      __pyx_v_is_static = ((int)1);
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
+    __pyx_v_file = ((struct __pyx_obj_5adios_file *)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1124, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.attrinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  __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":1372
- *             self.value = value
- * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
- *                  value = None,
- *                  dtype = None,
- */
+  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)
+  __pyx_r = __pyx_pf_5adios_3var___init__(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, char *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_dtype, int __pyx_v_is_static) {
+static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, PyObject *__pyx_v_name) {
+  int __pyx_v_i;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  char const *__pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  size_t __pyx_t_8;
+  struct __pyx_opt_args_5adios_adios2npdtype __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  PyObject *(*__pyx_t_11)(PyObject *);
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  Py_ssize_t __pyx_t_15;
+  PyObject *__pyx_t_16 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_INCREF(__pyx_v_name);
 
-  /* "adios.pyx":1376
- *                  dtype = None,
- *                  bint is_static = True):
- *         self.name = name             # <<<<<<<<<<<<<<
- *         self.value = value
- *         self.dtype = dtype
+  /* "adios.pyx":1125
+ * 
+ *     def __init__(self, file file, str name):
+ *         self.file = file             # <<<<<<<<<<<<<<
+ *         self.vp = NULL
+ * 
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __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;
+  __Pyx_INCREF(((PyObject *)__pyx_v_file));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
+  __Pyx_GOTREF(__pyx_v_self->file);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
+  __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios.pyx":1377
- *                  bint is_static = True):
- *         self.name = name
- *         self.value = value             # <<<<<<<<<<<<<<
- *         self.dtype = dtype
- *         self.is_static = is_static
+  /* "adios.pyx":1126
+ *     def __init__(self, file file, str name):
+ *         self.file = file
+ *         self.vp = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         assert self.file.fp != NULL, 'Not an open file'
  */
-  __Pyx_INCREF(__pyx_v_value);
-  __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->value);
-  __Pyx_DECREF(__pyx_v_self->value);
-  __pyx_v_self->value = __pyx_v_value;
+  __pyx_v_self->vp = NULL;
 
-  /* "adios.pyx":1378
- *         self.name = name
- *         self.value = value
- *         self.dtype = dtype             # <<<<<<<<<<<<<<
- *         self.is_static = is_static
+  /* "adios.pyx":1128
+ *         self.vp = NULL
  * 
+ *         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_INCREF(__pyx_v_dtype);
-  __Pyx_GIVEREF(__pyx_v_dtype);
-  __Pyx_GOTREF(__pyx_v_self->dtype);
-  __Pyx_DECREF(__pyx_v_self->dtype);
-  __pyx_v_self->dtype = __pyx_v_dtype;
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
 
-  /* "adios.pyx":1379
- *         self.value = value
- *         self.dtype = dtype
- *         self.is_static = is_static             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1129
+ * 
+ *         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'
  * 
- *     def define(self, int64_t gid):
  */
-  __pyx_v_self->is_static = __pyx_v_is_static;
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __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_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":1372
- *             self.value = value
+  /* "adios.pyx":1130
+ *         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'             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
- *                  value = None,
- *                  dtype = None,
+ *         ## Further populate vp.blockinfo
  */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
 
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.attrinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1381
- *         self.is_static = is_static
+  /* "adios.pyx":1133
  * 
- *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
- *         if self.is_static:
- *             if self.value is None:
+ *         ## Further populate vp.blockinfo
+ *         adios_inq_var_blockinfo(self.file.fp, self.vp)             # <<<<<<<<<<<<<<
+ * 
+ *         self.name = name
  */
+  adios_inq_var_blockinfo(__pyx_v_self->file->fp, __pyx_v_self->vp);
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_8attrinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid); /*proto*/
-static char __pyx_doc_5adios_8attrinfo_2define[] = "attrinfo.define(self, int64_t gid)";
-static PyObject *__pyx_pw_5adios_8attrinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid) {
-  int64_t __pyx_v_gid;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.attrinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_8attrinfo_2define(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self), ((int64_t)__pyx_v_gid));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, int64_t __pyx_v_gid) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define", 0);
-
-  /* "adios.pyx":1382
+  /* "adios.pyx":1135
+ *         adios_inq_var_blockinfo(self.file.fp, self.vp)
  * 
- *     def define(self, int64_t gid):
- *         if self.is_static:             # <<<<<<<<<<<<<<
- *             if self.value is None:
- *                 raise TypeError("Value is none")
+ *         self.name = name             # <<<<<<<<<<<<<<
+ *         self.varid = self.vp.varid
+ *         self.ndim = self.vp.ndim
  */
-  __pyx_t_1 = (__pyx_v_self->is_static != 0);
-  if (__pyx_t_1) {
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
+  __Pyx_GOTREF(__pyx_v_self->name);
+  __Pyx_DECREF(__pyx_v_self->name);
+  __pyx_v_self->name = __pyx_v_name;
 
-    /* "adios.pyx":1383
- *     def define(self, int64_t gid):
- *         if self.is_static:
- *             if self.value is None:             # <<<<<<<<<<<<<<
- *                 raise TypeError("Value is none")
+  /* "adios.pyx":1136
  * 
+ *         self.name = name
+ *         self.varid = self.vp.varid             # <<<<<<<<<<<<<<
+ *         self.ndim = self.vp.ndim
+ *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
  */
-    __pyx_t_1 = (__pyx_v_self->value == Py_None);
-    __pyx_t_2 = (__pyx_t_1 != 0);
-    if (__pyx_t_2) {
+  __pyx_t_3 = __pyx_v_self->vp->varid;
+  __pyx_v_self->varid = __pyx_t_3;
 
-      /* "adios.pyx":1384
- *         if self.is_static:
- *             if self.value is None:
- *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
- * 
- *             define_attribute_byvalue(gid, self.name, "", self.value)
+  /* "adios.pyx":1137
+ *         self.name = name
+ *         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_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1384; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+  __pyx_t_3 = __pyx_v_self->vp->ndim;
+  __pyx_v_self->ndim = __pyx_t_3;
 
-    /* "adios.pyx":1386
- *                 raise TypeError("Value is none")
+  /* "adios.pyx":1138
+ *         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
  * 
- *             define_attribute_byvalue(gid, self.name, "", self.value)             # <<<<<<<<<<<<<<
- *         else:
- *             ##atype = np2adiostype(np.dtype(self.dtype))
  */
-    __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __pyx_v_self->value;
-    __Pyx_INCREF(__pyx_t_3);
-    __pyx_f_5adios_define_attribute_byvalue(__pyx_v_gid, __pyx_t_4, __pyx_k__7, __pyx_t_3, 0);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L3;
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1138, __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_GOTREF(__pyx_t_5);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1138, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
-  /*else*/ {
+  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1138, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_5);
+  __Pyx_GOTREF(__pyx_v_self->dims);
+  __Pyx_DECREF(__pyx_v_self->dims);
+  __pyx_v_self->dims = ((PyObject*)__pyx_t_5);
+  __pyx_t_5 = 0;
 
-    /* "adios.pyx":1391
- *             ##define_attribute(gid, self.name, "",
- *             ##                 atype, "", str(self.value))
- *             raise NotImplementedError             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1139
+ *         self.ndim = self.vp.ndim
+ *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
+ *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
  * 
- *     def __repr__(self):
+ *         if self.vp.type == DATATYPE.string:
  */
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_L3:;
+  __pyx_t_3 = __pyx_v_self->vp->nsteps;
+  __pyx_v_self->nsteps = __pyx_t_3;
 
-  /* "adios.pyx":1381
- *         self.is_static = is_static
+  /* "adios.pyx":1141
+ *         self.nsteps = self.vp.nsteps
  * 
- *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
- *         if self.is_static:
- *             if self.value is None:
+ *         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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_7) {
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.attrinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1393
- *             raise NotImplementedError
+    /* "adios.pyx":1142
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
- *                 (self.name,
+ *         if self.vp.type == DATATYPE.string:
+ *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))             # <<<<<<<<<<<<<<
+ *         else:
+ *             self.dtype = adios2npdtype(self.vp.type)
  */
+    __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_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->dtype);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
+    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
+    __pyx_t_1 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_8attrinfo_5__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_8attrinfo_5__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_8attrinfo_4__repr__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios.pyx":1394
+    /* "adios.pyx":1141
+ *         self.nsteps = self.vp.nsteps
  * 
- *     def __repr__(self):
- *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.name,
- *                  self.is_static,
+ *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
+ *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
+ *         else:
  */
-  __Pyx_XDECREF(__pyx_r);
+    goto __pyx_L5;
+  }
 
-  /* "adios.pyx":1396
- *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
- *                 (self.name,
- *                  self.is_static,             # <<<<<<<<<<<<<<
- *                  self.value,
- *                  self.dtype)
+  /* "adios.pyx":1144
+ *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
+ *         else:
+ *             self.dtype = adios2npdtype(self.vp.type)             # <<<<<<<<<<<<<<
+ * 
+ *         self.attrs = softdict()
  */
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  /*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_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->dtype);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
+    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
+    __pyx_t_1 = 0;
+  }
+  __pyx_L5:;
 
-  /* "adios.pyx":1395
- *     def __repr__(self):
- *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
- *                 (self.name,             # <<<<<<<<<<<<<<
- *                  self.is_static,
- *                  self.value,
+  /* "adios.pyx":1146
+ *             self.dtype = adios2npdtype(self.vp.type)
+ * 
+ *         self.attrs = softdict()             # <<<<<<<<<<<<<<
+ *         for name in self.file.attrs.keys():
+ *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->name);
-  __Pyx_GIVEREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+  __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_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_self->value);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->value);
-  __Pyx_GIVEREF(__pyx_v_self->value);
-  __Pyx_INCREF(__pyx_v_self->dtype);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->dtype);
-  __Pyx_GIVEREF(__pyx_v_self->dtype);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1394
+  /* "adios.pyx":1147
  * 
- *     def __repr__(self):
- *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.name,
- *                  self.is_static,
+ *         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_1 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __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, 1147, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  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_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_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;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_11)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_11(__pyx_t_6);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        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)
+    __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
+    __pyx_t_1 = 0;
 
-  /* "adios.pyx":1393
- *             raise NotImplementedError
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
- *                 (self.name,
+    /* "adios.pyx":1148
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
  */
+    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_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if ((__pyx_t_7 != 0)) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.attrinfo.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1407
- *     cdef public value
- * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
- *                  ldim = tuple(),
- *                  gdim = tuple(),
+      /* "adios.pyx":1149
+ *         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]
  */
-
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_name;
-  PyObject *__pyx_v_ldim = 0;
-  PyObject *__pyx_v_gdim = 0;
-  PyObject *__pyx_v_offset = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 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,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[1] = __pyx_k__27;
-    values[2] = __pyx_k__28;
-    values[3] = __pyx_k__29;
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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_name)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ldim);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gdim);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
-          if (value) { values[3] = value; kw_args--; }
+      __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_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_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_GOTREF(__pyx_t_13);
+      __pyx_t_14 = NULL;
+      __pyx_t_15 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
+        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12);
+        if (likely(__pyx_t_14)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+          __Pyx_INCREF(__pyx_t_14);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_12, function);
+          __pyx_t_15 = 1;
         }
       }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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);
-        break;
-        default: goto __pyx_L5_argtuple_error;
+      __pyx_t_16 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1149, __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;
       }
-    }
-    __pyx_v_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_ldim = values[1];
-    __pyx_v_gdim = values[2];
-    __pyx_v_offset = values[3];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __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:;
-  __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);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      __Pyx_GIVEREF(__pyx_t_13);
+      PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_15, __pyx_t_13);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, char *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
+      /* "adios.pyx":1148
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    }
 
-  /* "adios.pyx":1411
- *                  gdim = tuple(),
- *                  offset = tuple()):
- *         self.name = name             # <<<<<<<<<<<<<<
- *         self.ldim = ldim
- *         self.gdim = gdim
+    /* "adios.pyx":1150
+ *             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 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __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;
+    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_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if ((__pyx_t_7 != 0)) {
 
-  /* "adios.pyx":1412
- *                  offset = tuple()):
- *         self.name = name
- *         self.ldim = ldim             # <<<<<<<<<<<<<<
- *         self.gdim = gdim
- *         self.offset = offset
+      /* "adios.pyx":1151
+ *                 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_INCREF(__pyx_v_ldim);
-  __Pyx_GIVEREF(__pyx_v_ldim);
-  __Pyx_GOTREF(__pyx_v_self->ldim);
-  __Pyx_DECREF(__pyx_v_self->ldim);
-  __pyx_v_self->ldim = __pyx_v_ldim;
+      __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_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_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_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_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+      __pyx_t_16 = NULL;
+      __pyx_t_15 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
+        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_12);
+        if (likely(__pyx_t_16)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+          __Pyx_INCREF(__pyx_t_16);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_12, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_13);
+      PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_15, __pyx_t_13);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":1413
- *         self.name = name
- *         self.ldim = ldim
- *         self.gdim = gdim             # <<<<<<<<<<<<<<
- *         self.offset = offset
+      /* "adios.pyx":1150
+ *             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_INCREF(__pyx_v_gdim);
-  __Pyx_GIVEREF(__pyx_v_gdim);
-  __Pyx_GOTREF(__pyx_v_self->gdim);
-  __Pyx_DECREF(__pyx_v_self->gdim);
-  __pyx_v_self->gdim = __pyx_v_gdim;
+    }
 
-  /* "adios.pyx":1414
- *         self.ldim = ldim
- *         self.gdim = gdim
- *         self.offset = offset             # <<<<<<<<<<<<<<
+    /* "adios.pyx":1147
  * 
- *     def define(self, int64_t gid):
+ *         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_INCREF(__pyx_v_offset);
-  __Pyx_GIVEREF(__pyx_v_offset);
-  __Pyx_GOTREF(__pyx_v_self->offset);
-  __Pyx_DECREF(__pyx_v_self->offset);
-  __pyx_v_self->offset = __pyx_v_offset;
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios.pyx":1407
- *     cdef public value
+  /* "adios.pyx":1124
+ *             return (self.blockinfo)
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
- *                  ldim = tuple(),
- *                  gdim = tuple(),
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.vp = NULL
  */
 
   /* function exit code */
@@ -19072,1299 +17878,978 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.varinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_XDECREF(__pyx_t_16);
+  __Pyx_AddTraceback("adios.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_name);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1416
- *         self.offset = offset
+/* "adios.pyx":1153
+ *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
+ * 
+ *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         self.close()
  * 
- *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
- *         if self.value is None:
- *             raise TypeError("Value is none")
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid); /*proto*/
-static char __pyx_doc_5adios_7varinfo_2define[] = "varinfo.define(self, int64_t gid)";
-static PyObject *__pyx_pw_5adios_7varinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid) {
-  int64_t __pyx_v_gid;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_3var_2__del__[] = "var.__del__(self)";
+static PyObject *__pyx_pw_5adios_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 1416; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.varinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_7varinfo_2define(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((int64_t)__pyx_v_gid));
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_2__del__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinfo *__pyx_v_self, int64_t __pyx_v_gid) {
-  PyObject *__pyx_v_ldim_ = NULL;
-  PyObject *__pyx_v_gdim_ = NULL;
-  PyObject *__pyx_v_offset_ = NULL;
-  PyObject *__pyx_v_val_ = NULL;
-  PyObject *__pyx_v_atype = NULL;
+static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  char *__pyx_t_8;
-  int __pyx_t_9;
-  char *__pyx_t_10;
-  char *__pyx_t_11;
-  char *__pyx_t_12;
-  struct __pyx_opt_args_5adios_define_var __pyx_t_13;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define", 0);
-
-  /* "adios.pyx":1417
- * 
- *     def define(self, int64_t gid):
- *         if self.value is None:             # <<<<<<<<<<<<<<
- *             raise TypeError("Value is none")
- * 
- */
-  __pyx_t_1 = (__pyx_v_self->value == Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__del__", 0);
 
-    /* "adios.pyx":1418
- *     def define(self, int64_t gid):
- *         if self.value is None:
- *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1154
  * 
- *         ldim_ = self.ldim
- */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-
-  /* "adios.pyx":1420
- *             raise TypeError("Value is none")
+ *     def __del__(self):
+ *         self.close()             # <<<<<<<<<<<<<<
  * 
- *         ldim_ = self.ldim             # <<<<<<<<<<<<<<
- *         if isinstance(self.ldim, (tuple, list)):
- *             ldim_ = tuple(self.ldim)
+ *     cpdef close(self):
  */
-  __pyx_t_3 = __pyx_v_self->ldim;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_v_ldim_ = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1421
+  /* "adios.pyx":1153
+ *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  * 
- *         ldim_ = self.ldim
- *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
- *             ldim_ = tuple(self.ldim)
+ *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         self.close()
  * 
  */
-  __pyx_t_3 = __pyx_v_self->ldim;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_Check(__pyx_t_3); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = (__pyx_t_1 != 0);
-  if (!__pyx_t_4) {
-  } else {
-    __pyx_t_2 = __pyx_t_4;
-    goto __pyx_L5_bool_binop_done;
-  }
-  __pyx_t_3 = __pyx_v_self->ldim;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_4 = PyList_Check(__pyx_t_3); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = (__pyx_t_4 != 0);
-  __pyx_t_2 = __pyx_t_1;
-  __pyx_L5_bool_binop_done:;
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
 
-    /* "adios.pyx":1422
- *         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_filename = __pyx_f[0]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF_SET(__pyx_v_ldim_, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L4;
-  }
-  __pyx_L4:;
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.var.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios.pyx":1424
- *             ldim_ = tuple(self.ldim)
+/* "adios.pyx":1156
+ *         self.close()
  * 
- *         gdim_ = self.gdim             # <<<<<<<<<<<<<<
- *         if isinstance(self.gdim, (tuple, list)):
- *             gdim_ = tuple(self.gdim)
+ *     cpdef close(self):             # <<<<<<<<<<<<<<
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'
  */
-  __pyx_t_3 = __pyx_v_self->gdim;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_v_gdim_ = __pyx_t_3;
-  __pyx_t_3 = 0;
 
-  /* "adios.pyx":1425
- * 
- *         gdim_ = self.gdim
- *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
- *             gdim_ = tuple(self.gdim)
- * 
- */
-  __pyx_t_3 = __pyx_v_self->gdim;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_2 = PyTuple_Check(__pyx_t_3); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = (__pyx_t_2 != 0);
-  if (!__pyx_t_4) {
-  } else {
-    __pyx_t_1 = __pyx_t_4;
-    goto __pyx_L8_bool_binop_done;
+static PyObject *__pyx_pw_5adios_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("close", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 1156, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  __pyx_t_3 = __pyx_v_self->gdim;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_4 = PyList_Check(__pyx_t_3); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_2 = (__pyx_t_4 != 0);
-  __pyx_t_1 = __pyx_t_2;
-  __pyx_L8_bool_binop_done:;
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
 
-    /* "adios.pyx":1426
- *         gdim_ = self.gdim
- *         if isinstance(self.gdim, (tuple, list)):
- *             gdim_ = tuple(self.gdim)             # <<<<<<<<<<<<<<
- * 
- *         offset_ = self.offset
+  /* "adios.pyx":1158
+ *     cpdef close(self):
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'             # <<<<<<<<<<<<<<
+ *         adios_free_varinfo(self.vp)
+ *         self.vp = NULL
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->gdim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF_SET(__pyx_v_gdim_, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L7;
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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_L7:;
+  #endif
 
-  /* "adios.pyx":1428
- *             gdim_ = tuple(self.gdim)
+  /* "adios.pyx":1159
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'
+ *         adios_free_varinfo(self.vp)             # <<<<<<<<<<<<<<
+ *         self.vp = NULL
  * 
- *         offset_ = self.offset             # <<<<<<<<<<<<<<
- *         if isinstance(self.offset, (tuple, list)):
- *             offset_ = tuple(self.offset)
  */
-  __pyx_t_3 = __pyx_v_self->offset;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_v_offset_ = __pyx_t_3;
-  __pyx_t_3 = 0;
+  adios_free_varinfo(__pyx_v_self->vp);
 
-  /* "adios.pyx":1429
- * 
- *         offset_ = self.offset
- *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
- *             offset_ = tuple(self.offset)
+  /* "adios.pyx":1160
+ *         assert self.vp != NULL, 'Not an open var'
+ *         adios_free_varinfo(self.vp)
+ *         self.vp = NULL             # <<<<<<<<<<<<<<
  * 
+ *     cpdef advance(self):
  */
-  __pyx_t_3 = __pyx_v_self->offset;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_Check(__pyx_t_3); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = (__pyx_t_1 != 0);
-  if (!__pyx_t_4) {
-  } else {
-    __pyx_t_2 = __pyx_t_4;
-    goto __pyx_L11_bool_binop_done;
-  }
-  __pyx_t_3 = __pyx_v_self->offset;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_4 = PyList_Check(__pyx_t_3); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = (__pyx_t_4 != 0);
-  __pyx_t_2 = __pyx_t_1;
-  __pyx_L11_bool_binop_done:;
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+  __pyx_v_self->vp = NULL;
 
-    /* "adios.pyx":1430
- *         offset_ = self.offset
- *         if isinstance(self.offset, (tuple, list)):
- *             offset_ = tuple(self.offset)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1156
+ *         self.close()
  * 
- *         val_ = self.value
- */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF_SET(__pyx_v_offset_, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L10;
-  }
-  __pyx_L10:;
-
-  /* "adios.pyx":1432
- *             offset_ = tuple(self.offset)
- * 
- *         val_ = self.value             # <<<<<<<<<<<<<<
- *         if not isinstance(self.value, (np.ndarray)):
- *             val_ = np.array(self.value)
- */
-  __pyx_t_3 = __pyx_v_self->value;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_v_val_ = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "adios.pyx":1433
- * 
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
- *             val_ = np.array(self.value)
- * 
- */
-  __pyx_t_3 = __pyx_v_self->value;
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_t_3, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-  if (__pyx_t_2) {
-
-    /* "adios.pyx":1434
- *         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_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
-      }
-    }
-    if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-    } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_INCREF(__pyx_v_self->value);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->value);
-      __Pyx_GIVEREF(__pyx_v_self->value);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L13;
-  }
-  __pyx_L13:;
-
-  /* "adios.pyx":1436
- *             val_ = np.array(self.value)
- * 
- *         atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
- */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = __pyx_f_5adios_np2adiostype(((PyArray_Descr *)__pyx_t_3), 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __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":1438
- *         atype = np2adiostype(val_.dtype)
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
- *                    str(ldim_).replace(' ', '').strip('(,)'),
- *                    str(gdim_).replace(' ', '').strip('(,)'),
- */
-  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_atype); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":1439
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
- *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
- *                    str(gdim_).replace(' ', '').strip('(,)'),
- *                    str(offset_).replace(' ', '').strip('(,)'))
- */
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_INCREF(__pyx_v_ldim_);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ldim_);
-  __Pyx_GIVEREF(__pyx_v_ldim_);
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":1440
- *         define_var(gid, self.name, "", atype,
- *                    str(ldim_).replace(' ', '').strip('(,)'),
- *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
- *                    str(offset_).replace(' ', '').strip('(,)'))
- * 
- */
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_INCREF(__pyx_v_gdim_);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_gdim_);
-  __Pyx_GIVEREF(__pyx_v_gdim_);
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":1441
- *                    str(ldim_).replace(' ', '').strip('(,)'),
- *                    str(gdim_).replace(' ', '').strip('(,)'),
- *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
- * 
- *     def bytes(self):
- */
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_INCREF(__pyx_v_offset_);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_offset_);
-  __Pyx_GIVEREF(__pyx_v_offset_);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":1438
- *         atype = np2adiostype(val_.dtype)
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
- *                    str(ldim_).replace(' ', '').strip('(,)'),
- *                    str(gdim_).replace(' ', '').strip('(,)'),
- */
-  __pyx_t_13.__pyx_n = 3;
-  __pyx_t_13.dimensions = __pyx_t_10;
-  __pyx_t_13.global_dimensions = __pyx_t_11;
-  __pyx_t_13.local_offsets = __pyx_t_12;
-  __pyx_f_5adios_define_var(__pyx_v_gid, __pyx_t_8, __pyx_k__7, __pyx_t_9, 0, &__pyx_t_13); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "adios.pyx":1416
- *         self.offset = offset
- * 
- *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
- *         if self.value is None:
- *             raise TypeError("Value is none")
+ *     cpdef close(self):             # <<<<<<<<<<<<<<
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'
  */
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("adios.varinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_ldim_);
-  __Pyx_XDECREF(__pyx_v_gdim_);
-  __Pyx_XDECREF(__pyx_v_offset_);
-  __Pyx_XDECREF(__pyx_v_val_);
-  __Pyx_XDECREF(__pyx_v_atype);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1443
- *                    str(offset_).replace(' ', '').strip('(,)'))
- * 
- *     def bytes(self):             # <<<<<<<<<<<<<<
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_5bytes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_7varinfo_4bytes[] = "varinfo.bytes(self)";
-static PyObject *__pyx_pw_5adios_7varinfo_5bytes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_5adios_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_3var_4close[] = "var.close(self)\n Close and free variable information ";
+static PyObject *__pyx_pw_5adios_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("bytes (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_4bytes(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("close (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_4close(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  PyObject *__pyx_v_val_ = NULL;
+static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("bytes", 0);
-
-  /* "adios.pyx":1444
- * 
- *     def bytes(self):
- *         val_ = self.value             # <<<<<<<<<<<<<<
- *         if not isinstance(self.value, (np.ndarray)):
- *             val_ = np.array(self.value)
- */
-  __pyx_t_1 = __pyx_v_self->value;
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_v_val_ = __pyx_t_1;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":1445
- *     def bytes(self):
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
- *             val_ = np.array(self.value)
- * 
- */
-  __pyx_t_1 = __pyx_v_self->value;
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
-  if (__pyx_t_3) {
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":1446
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):
- *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
+/* "adios.pyx":1162
+ *         self.vp = NULL
  * 
- *         return val_.size * val_.itemsize
+ *     cpdef advance(self):             # <<<<<<<<<<<<<<
+ *         """ Update variable information after the stream advanced """
+ *         self.vp = adios_inq_var(self.file.fp, self.name)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __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_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
-      __Pyx_INCREF(__pyx_v_self->value);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
-      __Pyx_GIVEREF(__pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+static PyObject *__pyx_pw_5adios_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  char const *__pyx_t_5;
+  int __pyx_t_6;
+  __Pyx_RefNannySetupContext("advance", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 1162, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
     }
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
-    __pyx_t_1 = 0;
-    goto __pyx_L3;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  __pyx_L3:;
 
-  /* "adios.pyx":1448
- *             val_ = np.array(self.value)
+  /* "adios.pyx":1164
+ *     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_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_5);
+
+  /* "adios.pyx":1165
+ *         """ 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
  * 
- *         return val_.size * val_.itemsize             # <<<<<<<<<<<<<<
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios.pyx":1166
+ *         self.vp = adios_inq_var(self.file.fp, self.name)
+ *         assert self.vp != NULL, 'Not a valid var'
+ *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
  * 
- *     def write(self, int64_t fd):
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __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;
-  __pyx_r = __pyx_t_6;
-  __pyx_t_6 = 0;
-  goto __pyx_L0;
+  __pyx_t_6 = __pyx_v_self->vp->nsteps;
+  __pyx_v_self->nsteps = __pyx_t_6;
 
-  /* "adios.pyx":1443
- *                    str(offset_).replace(' ', '').strip('(,)'))
+  /* "adios.pyx":1162
+ *         self.vp = NULL
  * 
- *     def bytes(self):             # <<<<<<<<<<<<<<
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):
+ *     cpdef advance(self):             # <<<<<<<<<<<<<<
+ *         """ Update variable information after the stream advanced """
+ *         self.vp = adios_inq_var(self.file.fp, self.name)
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("adios.varinfo.bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_AddTraceback("adios.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_val_);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1450
- *         return val_.size * val_.itemsize
- * 
- *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_7write(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd); /*proto*/
-static char __pyx_doc_5adios_7varinfo_6write[] = "varinfo.write(self, int64_t fd)";
-static PyObject *__pyx_pw_5adios_7varinfo_7write(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd) {
-  int64_t __pyx_v_fd;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_5adios_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_3var_6advance[] = "var.advance(self)\n Update variable information after the stream advanced ";
+static PyObject *__pyx_pw_5adios_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 1450; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.varinfo.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_7varinfo_6write(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((int64_t)__pyx_v_fd));
+  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_6advance(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo *__pyx_v_self, int64_t __pyx_v_fd) {
-  PyObject *__pyx_v_val_ = NULL;
+static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  char *__pyx_t_7;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write", 0);
-
-  /* "adios.pyx":1451
- * 
- *     def write(self, int64_t fd):
- *         val_ = self.value             # <<<<<<<<<<<<<<
- *         if not isinstance(self.value, (np.ndarray)):
- *             val_ = np.array(self.value)
- */
-  __pyx_t_1 = __pyx_v_self->value;
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_v_val_ = __pyx_t_1;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
-
-  /* "adios.pyx":1452
- *     def write(self, int64_t fd):
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
- *             val_ = np.array(self.value)
- * 
- */
-  __pyx_t_1 = __pyx_v_self->value;
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
-  if (__pyx_t_3) {
-
-    /* "adios.pyx":1453
- *         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_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __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_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-    } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
-      __Pyx_INCREF(__pyx_v_self->value);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
-      __Pyx_GIVEREF(__pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
-    __pyx_t_1 = 0;
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
-
-  /* "adios.pyx":1455
- *             val_ = np.array(self.value)
- * 
- *         write(fd, self.name, val_)             # <<<<<<<<<<<<<<
- * 
- *     def __repr__(self):
- */
-  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_f_5adios_write(__pyx_v_fd, __pyx_t_7, __pyx_v_val_, 0, NULL);
-
-  /* "adios.pyx":1450
- *         return val_.size * val_.itemsize
- * 
- *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
- *         val_ = self.value
- *         if not isinstance(self.value, (np.ndarray)):
- */
+  goto __pyx_L0;
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("adios.varinfo.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_val_);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1457
- *         write(fd, self.name, val_)
+/* "adios.pyx":1168
+ *         self.nsteps = self.vp.nsteps
+ * 
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform points read.
  * 
- *     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)
  */
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_9__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_7varinfo_9__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_8__repr__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_3var_9read_points(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_points *__pyx_optional_args) {
+  PyObject *__pyx_v_points = ((PyObject*)__pyx_empty_tuple);
+  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
+  Py_ssize_t __pyx_v_plen;
+  uint64_t __pyx_v_ndim;
+  uint64_t __pyx_v_npoints;
+  PyArrayObject *__pyx_v_nppoints = 0;
+  PyArrayObject *__pyx_v_var = 0;
+  ADIOS_SELECTION *__pyx_v_sel;
+  PyObject *__pyx_v_x = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios.pyx":1458
- * 
- *     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)
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  Py_ssize_t __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  __Pyx_RefNannySetupContext("read_points", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_points = __pyx_optional_args->points;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_from_steps = __pyx_optional_args->from_steps;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_nsteps = __pyx_optional_args->nsteps;
+        }
+      }
+    }
+  }
+  __Pyx_INCREF(__pyx_v_points);
+  __Pyx_INCREF(__pyx_v_from_steps);
+  __Pyx_INCREF(__pyx_v_nsteps);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      __pyx_t_5 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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);
+          __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_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;
+      }
+      __Pyx_INCREF(__pyx_v_points);
+      __Pyx_GIVEREF(__pyx_v_points);
+      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_points);
+      __Pyx_INCREF(__pyx_v_from_steps);
+      __Pyx_GIVEREF(__pyx_v_from_steps);
+      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_from_steps);
+      __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "adios.pyx":1184
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
  * 
  */
-  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_7 = (__pyx_v_from_steps == Py_None);
+  __pyx_t_8 = (__pyx_t_7 != 0);
+  if (__pyx_t_8) {
 
-  /* "adios.pyx":1459
- *     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)             # <<<<<<<<<<<<<<
+    /* "adios.pyx":1185
+ *         """
+ *         if from_steps is None:
+ *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
  * 
- * ## ====================
+ *         if nsteps is None:
  */
-  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
-  __Pyx_GIVEREF(__pyx_v_self->name);
-  __Pyx_INCREF(__pyx_v_self->ldim);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->ldim);
-  __Pyx_GIVEREF(__pyx_v_self->ldim);
-  __Pyx_INCREF(__pyx_v_self->gdim);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->gdim);
-  __Pyx_GIVEREF(__pyx_v_self->gdim);
-  __Pyx_INCREF(__pyx_v_self->offset);
-  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->offset);
-  __Pyx_GIVEREF(__pyx_v_self->offset);
-  __Pyx_INCREF(__pyx_v_self->value);
-  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->value);
-  __Pyx_GIVEREF(__pyx_v_self->value);
+    __Pyx_INCREF(__pyx_int_0);
+    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-  /* "adios.pyx":1458
+    /* "adios.pyx":1184
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
  * 
- *     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)
+ */
+  }
+
+  /* "adios.pyx":1187
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __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;
+  __pyx_t_8 = (__pyx_v_nsteps == Py_None);
+  __pyx_t_7 = (__pyx_t_8 != 0);
+  if (__pyx_t_7) {
 
-  /* "adios.pyx":1457
- *         write(fd, self.name, val_)
+    /* "adios.pyx":1188
  * 
- *     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)
+ *         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_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_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_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;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios.varinfo.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":1187
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ */
+  }
 
-/* "adios.pyx":1402
- * cdef class varinfo:
- *     cdef bytes name
- *     cdef public ldim             # <<<<<<<<<<<<<<
- *     cdef public gdim
- *     cdef public offset
+  /* "adios.pyx":1190
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
+ * 
+ *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!Py_OptimizeFlag)) {
+    __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)
+    }
+  }
+  #endif
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_4ldim_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_7varinfo_4ldim_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_4ldim___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+  /* "adios.pyx":1192
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
+ */
+  __pyx_t_8 = ((__pyx_v_self->nsteps > 0) != 0);
+  if (__pyx_t_8) {
+  } else {
+    __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_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_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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_7 = __pyx_t_8;
+  __pyx_L6_bool_binop_done:;
+  if (__pyx_t_7) {
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":1193
+ * 
+ *         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_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_from_steps);
+    __Pyx_GIVEREF(__pyx_v_from_steps);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_steps);
+    __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_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_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_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)
 
-static PyObject *__pyx_pf_5adios_7varinfo_4ldim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->ldim);
-  __pyx_r = __pyx_v_self->ldim;
-  goto __pyx_L0;
+    /* "adios.pyx":1192
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
+ */
+  }
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":1195
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
+ * 
+ *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
+ *             points = (points,)
+ * 
+ */
+  __pyx_t_7 = PyTuple_Check(__pyx_v_points); 
+  __pyx_t_8 = ((!(__pyx_t_7 != 0)) != 0);
+  if (__pyx_t_8) {
 
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_4ldim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_7varinfo_4ldim_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_4ldim_2__set__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+    /* "adios.pyx":1196
+ * 
+ *         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_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_DECREF_SET(__pyx_v_points, ((PyObject*)__pyx_t_2));
+    __pyx_t_2 = 0;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":1195
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
+ * 
+ *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
+ *             points = (points,)
+ * 
+ */
+  }
 
-static int __pyx_pf_5adios_7varinfo_4ldim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__", 0);
-  __Pyx_INCREF(__pyx_v_value);
-  __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->ldim);
-  __Pyx_DECREF(__pyx_v_self->ldim);
-  __pyx_v_self->ldim = __pyx_v_value;
+  /* "adios.pyx":1198
+ *             points = (points,)
+ * 
+ *         if len(points) > 1:             # <<<<<<<<<<<<<<
+ *             plen = len(points[0])
+ *             if not all([len(x) == plen for x in points]):
+ */
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1198, __pyx_L1_error)
+  __pyx_t_8 = ((__pyx_t_5 > 1) != 0);
+  if (__pyx_t_8) {
 
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":1199
+ * 
+ *         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,))
+ */
+    if (unlikely(__pyx_v_points == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __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, 1199, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_plen = __pyx_t_5;
 
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_4ldim_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_5adios_7varinfo_4ldim_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_4ldim_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+    /* "adios.pyx":1200
+ *         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_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_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)
+      #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_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_GOTREF(__pyx_t_1);
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1200, __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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_7 = ((!__pyx_t_8) != 0);
+    if (__pyx_t_7) {
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios.pyx":1201
+ *             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_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_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_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_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)
 
-static int __pyx_pf_5adios_7varinfo_4ldim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->ldim);
-  __Pyx_DECREF(__pyx_v_self->ldim);
-  __pyx_v_self->ldim = Py_None;
+      /* "adios.pyx":1200
+ *         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,))
+ * 
+ */
+    }
 
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios.pyx":1198
+ *             points = (points,)
+ * 
+ *         if len(points) > 1:             # <<<<<<<<<<<<<<
+ *             plen = len(points[0])
+ *             if not all([len(x) == plen for x in points]):
+ */
+  }
 
-/* "adios.pyx":1403
- *     cdef bytes name
- *     cdef public ldim
- *     cdef public gdim             # <<<<<<<<<<<<<<
- *     cdef public offset
- *     cdef public value
+  /* "adios.pyx":1203
+ *                 raise IndexError('All points must have the same length %r' % (points,))
+ * 
+ *         cpdef uint64_t ndim = self.ndim             # <<<<<<<<<<<<<<
+ *         cpdef uint64_t npoints = len(points)
+ *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
  */
+  __pyx_t_10 = __pyx_v_self->ndim;
+  __pyx_v_ndim = __pyx_t_10;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_4gdim_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_7varinfo_4gdim_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_4gdim___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+  /* "adios.pyx":1204
+ * 
+ *         cpdef uint64_t ndim = self.ndim
+ *         cpdef uint64_t npoints = len(points)             # <<<<<<<<<<<<<<
+ *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
+ * 
+ */
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1204, __pyx_L1_error)
+  __pyx_v_npoints = __pyx_t_5;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":1207
+ *         ##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_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_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_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_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_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_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)
+  __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)
+  __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)
+  __pyx_v_nppoints = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-static PyObject *__pyx_pf_5adios_7varinfo_4gdim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->gdim);
-  __pyx_r = __pyx_v_self->gdim;
-  goto __pyx_L0;
+  /* "adios.pyx":1211
+ *         ##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_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_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_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_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_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_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_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)
+  __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)
+  __pyx_v_var = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":1216
+ * 
+ *         cdef ADIOS_SELECTION * sel
+ *         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)
+ */
+  __pyx_v_sel = adios_selection_points(__pyx_v_ndim, __pyx_v_npoints, ((uint64_t *)__pyx_v_nppoints->data));
 
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_4gdim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_7varinfo_4gdim_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_4gdim_2__set__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  /* "adios.pyx":1218
+ *         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)
+  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));
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":1219
+ * 
+ *         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)
+ * 
+ */
+  adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-static int __pyx_pf_5adios_7varinfo_4gdim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__", 0);
-  __Pyx_INCREF(__pyx_v_value);
-  __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->gdim);
-  __Pyx_DECREF(__pyx_v_self->gdim);
-  __pyx_v_self->gdim = __pyx_v_value;
+  /* "adios.pyx":1220
+ *         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)             # <<<<<<<<<<<<<<
+ * 
+ *         return var
+ */
+  adios_selection_delete(__pyx_v_sel);
 
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios.pyx":1222
+ *         adios_selection_delete(sel)
+ * 
+ *         return var             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_var));
+  __pyx_r = ((PyObject *)__pyx_v_var);
+  goto __pyx_L0;
 
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_4gdim_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_5adios_7varinfo_4gdim_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_4gdim_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+  /* "adios.pyx":1168
+ *         self.nsteps = self.vp.nsteps
+ * 
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform points read.
+ * 
+ */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_nppoints);
+  __Pyx_XDECREF((PyObject *)__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_x);
+  __Pyx_XDECREF(__pyx_v_points);
+  __Pyx_XDECREF(__pyx_v_from_steps);
+  __Pyx_XDECREF(__pyx_v_nsteps);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_7varinfo_4gdim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  int __pyx_r;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_9read_points(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_3var_8read_points[] = "var.read_points(self, tuple points=(), from_steps=None, nsteps=None)\n Perform points read.\n\n        Read data from an ADIOS BP file based on the given list of point index.\n\n        Args:\n            points (tuple of int, optional): points index defined by ((o1,o2,...,oN),...) (default: ())\n            from_steps (int, optional): starting step index (default: None)\n            nsteps (int, optional): number of time dimensions (de [...]
+static PyObject *__pyx_pw_5adios_3var_9read_points(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_points = 0;
+  PyObject *__pyx_v_from_steps = 0;
+  PyObject *__pyx_v_nsteps = 0;
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->gdim);
-  __Pyx_DECREF(__pyx_v_self->gdim);
-  __pyx_v_self->gdim = Py_None;
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1404
- *     cdef public ldim
- *     cdef public gdim
- *     cdef public offset             # <<<<<<<<<<<<<<
- *     cdef public value
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_6offset_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_7varinfo_6offset_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_6offset___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_7varinfo_6offset___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->offset);
-  __pyx_r = __pyx_v_self->offset;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_6offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_7varinfo_6offset_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_6offset_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_6offset_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__", 0);
-  __Pyx_INCREF(__pyx_v_value);
-  __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->offset);
-  __Pyx_DECREF(__pyx_v_self->offset);
-  __pyx_v_self->offset = __pyx_v_value;
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_6offset_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_5adios_7varinfo_6offset_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_6offset_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_7varinfo_6offset_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->offset);
-  __Pyx_DECREF(__pyx_v_self->offset);
-  __pyx_v_self->offset = Py_None;
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1405
- *     cdef public gdim
- *     cdef public offset
- *     cdef public value             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, char * name,
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_7varinfo_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_7varinfo_5value_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_5value___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_7varinfo_5value___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->value);
-  __pyx_r = __pyx_v_self->value;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_5adios_7varinfo_5value_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_5value_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_5value_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__", 0);
-  __Pyx_INCREF(__pyx_v_value);
-  __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->value);
-  __Pyx_DECREF(__pyx_v_self->value);
-  __pyx_v_self->value = __pyx_v_value;
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static int __pyx_pw_5adios_7varinfo_5value_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_5adios_7varinfo_5value_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_7varinfo_5value_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5adios_7varinfo_5value_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->value);
-  __Pyx_DECREF(__pyx_v_self->value);
-  __pyx_v_self->value = Py_None;
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios.pyx":1465
- * ## ====================
- * 
- * def readvar(fname, varname):             # <<<<<<<<<<<<<<
- *     """ Retrieve a variable value from an Adios file.
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_49readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_48readvar[] = "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_49readvar = {"readvar", (PyCFunction)__pyx_pw_5adios_49readvar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_48readvar};
-static PyObject *__pyx_pw_5adios_49readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_fname = 0;
-  PyObject *__pyx_v_varname = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("readvar (wrapper)", 0);
+  __Pyx_RefNannySetupContext("read_points (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fname,&__pyx_n_s_varname,0};
-    PyObject* values[2] = {0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,0};
+    PyObject* values[3] = {0,0,0};
+    values[0] = ((PyObject*)__pyx_empty_tuple);
+    values[1] = ((PyObject *)Py_None);
+    values[2] = ((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  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;
@@ -20373,3927 +18858,17515 @@ static PyObject *__pyx_pw_5adios_49readvar(PyObject *__pyx_self, PyObject *__pyx
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_points);
+          if (value) { values[0] = value; kw_args--; }
+        }
         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_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
+          if (value) { values[2] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_points") < 0)) __PYX_ERR(0, 1168, __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);
+      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);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
     }
-    __pyx_v_fname = values[0];
-    __pyx_v_varname = values[1];
+    __pyx_v_points = ((PyObject*)values[0]);
+    __pyx_v_from_steps = values[1];
+    __pyx_v_nsteps = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("read_points", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1168, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_48readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyTuple_Type), 1, "points", 1))) __PYX_ERR(0, 1168, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_48readvar(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;
+static PyObject *__pyx_pf_5adios_3var_8read_points(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("readvar", 0);
-
-  /* "adios.pyx":1475
- *         NumPy ndarray: variable value
- *     """
- *     f = file(fname, comm=MPI_COMM_SELF)             # <<<<<<<<<<<<<<
- *     if not f.var.has_key(varname):
- *         print "No valid variable"
- */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_fname);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
-  __Pyx_GIVEREF(__pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_int(MPI_COMM_SELF); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_file)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __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":1476
- *     """
- *     f = file(fname, comm=MPI_COMM_SELF)
- *     if not f.var.has_key(varname):             # <<<<<<<<<<<<<<
- *         print "No valid variable"
- *         return
- */
-  if (unlikely(__pyx_v_f->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_4 = PyDict_Contains(__pyx_v_f->var, __pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0);
-  if (__pyx_t_5) {
-
-    /* "adios.pyx":1477
- *     f = file(fname, comm=MPI_COMM_SELF)
- *     if not f.var.has_key(varname):
- *         print "No valid variable"             # <<<<<<<<<<<<<<
- *         return
- * 
- */
-    if (__Pyx_PrintOne(0, __pyx_kp_s_No_valid_variable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "adios.pyx":1478
- *     if not f.var.has_key(varname):
- *         print "No valid variable"
- *         return             # <<<<<<<<<<<<<<
- * 
- *     v = f.var[varname]
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-    goto __pyx_L0;
-  }
-
-  /* "adios.pyx":1480
- *         return
- * 
- *     v = f.var[varname]             # <<<<<<<<<<<<<<
- *     return v.read(from_steps=0, nsteps=v.nsteps)
- * 
- */
-  if (unlikely(__pyx_v_f->var == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_f->var, __pyx_v_varname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_v = __pyx_t_3;
-  __pyx_t_3 = 0;
-
-  /* "adios.pyx":1481
- * 
- *     v = f.var[varname]
- *     return v.read(from_steps=0, nsteps=v.nsteps)             # <<<<<<<<<<<<<<
- * 
- * def bpls(fname):
- */
+  struct __pyx_opt_args_5adios_3var_read_points __pyx_t_2;
+  __Pyx_RefNannySetupContext("read_points", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_read); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_steps, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2.__pyx_n = 3;
+  __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_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1465
- * ## ====================
- * 
- * def readvar(fname, varname):             # <<<<<<<<<<<<<<
- *     """ Retrieve a variable value from an Adios file.
- * 
- */
-
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios.readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_f);
-  __Pyx_XDECREF(__pyx_v_v);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1483
- *     return v.read(from_steps=0, nsteps=v.nsteps)
+/* "adios.pyx":1224
+ *         return var
  * 
- * def bpls(fname):             # <<<<<<<<<<<<<<
- *     """ Return meta data of an Adios file as a Python dictionary object.
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform block read.
  * 
  */
 
-/* Python wrapper */
-static PyObject *__pyx_pw_5adios_51bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname); /*proto*/
-static char __pyx_doc_5adios_50bpls[] = "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_51bpls = {"bpls", (PyCFunction)__pyx_pw_5adios_51bpls, METH_O, __pyx_doc_5adios_50bpls};
-static PyObject *__pyx_pw_5adios_51bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("bpls (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_50bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_5adios_50bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname) {
-  struct __pyx_obj_5adios_file *__pyx_v_f = NULL;
-  PyObject *__pyx_v_k = NULL;
+static PyObject *__pyx_pw_5adios_3var_11read_writeblock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_v_rank, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_writeblock *__pyx_optional_args) {
+  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_shape = NULL;
+  PyArrayObject *__pyx_v_var = 0;
+  ADIOS_SELECTION *__pyx_v_sel;
+  int __pyx_v_i;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  Py_ssize_t __pyx_t_5;
-  int __pyx_t_6;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("bpls", 0);
-
-  /* "adios.pyx":1492
- *         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_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_fname);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
-  __Pyx_GIVEREF(__pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_int(MPI_COMM_SELF); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5adios_file)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __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;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  __Pyx_RefNannySetupContext("read_writeblock", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_from_steps = __pyx_optional_args->from_steps;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_nsteps = __pyx_optional_args->nsteps;
+      }
+    }
+  }
+  __Pyx_INCREF(__pyx_v_from_steps);
+  __Pyx_INCREF(__pyx_v_nsteps);
+  /* Check if called by wrapper */
+  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_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_GOTREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+      __pyx_t_6 = 0;
+      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);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
+      __Pyx_INCREF(__pyx_v_from_steps);
+      __Pyx_GIVEREF(__pyx_v_from_steps);
+      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_from_steps);
+      __Pyx_INCREF(__pyx_v_nsteps);
+      __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
 
-  /* "adios.pyx":1493
- *     """
- *     f = file(fname, comm=MPI_COMM_SELF)
- *     return {'nvars': f.nvars,             # <<<<<<<<<<<<<<
- *             'nattrs': f.nattrs,
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
+  /* "adios.pyx":1240
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
+ * 
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nvars, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_8 = (__pyx_v_from_steps == Py_None);
+  __pyx_t_9 = (__pyx_t_8 != 0);
+  if (__pyx_t_9) {
 
-  /* "adios.pyx":1494
- *     f = file(fname, comm=MPI_COMM_SELF)
- *     return {'nvars': f.nvars,
- *             'nattrs': f.nattrs,             # <<<<<<<<<<<<<<
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+    /* "adios.pyx":1241
+ *         """
+ *         if from_steps is None:
+ *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
+ * 
+ *         if nsteps is None:
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nattrs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_INCREF(__pyx_int_0);
+    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-  /* "adios.pyx":1495
- *     return {'nvars': f.nvars,
- *             'nattrs': f.nattrs,
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),             # <<<<<<<<<<<<<<
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
- *             'time_steps': (f.current_step, f.last_step),
+    /* "adios.pyx":1240
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
+ * 
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = 0;
-  if (unlikely(__pyx_v_f->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_f->var, 1, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_1);
-  __pyx_t_1 = __pyx_t_7;
-  __pyx_t_7 = 0;
-  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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1496
- *             'nattrs': f.nattrs,
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),             # <<<<<<<<<<<<<<
- *             'time_steps': (f.current_step, f.last_step),
- *             'file_size': f.file_size}
+  /* "adios.pyx":1243
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = 0;
-  if (unlikely(__pyx_v_f->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_f->attr, 1, __pyx_n_s_iterkeys, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_2);
-  __pyx_t_2 = __pyx_t_7;
-  __pyx_t_7 = 0;
-  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_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_9 = (__pyx_v_nsteps == Py_None);
+  __pyx_t_8 = (__pyx_t_9 != 0);
+  if (__pyx_t_8) {
 
-  /* "adios.pyx":1497
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
- *             'time_steps': (f.current_step, f.last_step),             # <<<<<<<<<<<<<<
- *             'file_size': f.file_size}
+    /* "adios.pyx":1244
+ * 
+ *         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_2 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-
-  /* "adios.pyx":1498
- *             'attrs': tuple([ k for k in f.attr.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_filename = __pyx_f[0]; __pyx_lineno = 1498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_file_size, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
+    __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_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_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_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":1483
- *     return v.read(from_steps=0, nsteps=v.nsteps)
+    /* "adios.pyx":1243
+ *             from_steps = 0 ##self.file.current_step
  * 
- * def bpls(fname):             # <<<<<<<<<<<<<<
- *     """ Return meta data of an Adios file as a Python dictionary object.
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
  */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("adios.bpls", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_f);
-  __Pyx_XDECREF(__pyx_v_k);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
- *         # experimental exception made for __getbuffer__ and __releasebuffer__
- *         # -- the details of this may change.
- *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
- *             # This implementation of getbuffer is geared towards Cython
- *             # requirements, and does not yet fullfill the PEP.
- */
-
-/* Python wrapper */
-static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
-static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
-  int __pyx_v_copy_shape;
-  int __pyx_v_i;
-  int __pyx_v_ndim;
-  int __pyx_v_endian_detector;
-  int __pyx_v_little_endian;
-  int __pyx_v_t;
-  char *__pyx_v_f;
-  PyArray_Descr *__pyx_v_descr = 0;
-  int __pyx_v_offset;
-  int __pyx_v_hasfields;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  char *__pyx_t_7;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__getbuffer__", 0);
-  if (__pyx_v_info != NULL) {
-    __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
-    __Pyx_GIVEREF(__pyx_v_info->obj);
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":203
- *             # of flags
+  /* "adios.pyx":1246
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
- *             if info == NULL: return             # <<<<<<<<<<<<<<
+ *         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)
  * 
- *             cdef int copy_shape, i, ndim
  */
-  __pyx_t_1 = ((__pyx_v_info == NULL) != 0);
-  if (__pyx_t_1) {
-    __pyx_r = 0;
-    goto __pyx_L0;
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!Py_OptimizeFlag)) {
+    __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)
+    }
   }
+  #endif
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":206
+  /* "adios.pyx":1247
  * 
- *             cdef int copy_shape, i, ndim
- *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
- *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
+ *         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)             # <<<<<<<<<<<<<<
  * 
+ *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  */
-  __pyx_v_endian_detector = 1;
+  #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_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_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)
+    }
+  }
+  #endif
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":207
- *             cdef int copy_shape, i, ndim
- *             cdef int endian_detector = 1
- *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1249
+ *         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):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
- *             ndim = PyArray_NDIM(self)
  */
-  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
+  __pyx_t_9 = ((__pyx_v_self->nsteps > 0) != 0);
+  if (__pyx_t_9) {
+  } else {
+    __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_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_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_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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_8 = __pyx_t_9;
+  __pyx_L6_bool_binop_done:;
+  if (__pyx_t_8) {
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":209
- *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
+    /* "adios.pyx":1250
  * 
- *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
+ *         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 sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  */
-  __pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1250, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_v_from_steps);
+    __Pyx_GIVEREF(__pyx_v_from_steps);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_from_steps);
+    __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_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_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_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)
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211
- *             ndim = PyArray_NDIM(self)
+    /* "adios.pyx":1249
+ *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)
  * 
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
- *                 copy_shape = 1
- *             else:
- */
-  __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
-  if (__pyx_t_1) {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":212
+ *         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 sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 copy_shape = 1             # <<<<<<<<<<<<<<
- *             else:
- *                 copy_shape = 0
  */
-    __pyx_v_copy_shape = 1;
-    goto __pyx_L4;
   }
-  /*else*/ {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214
- *                 copy_shape = 1
- *             else:
- *                 copy_shape = 0             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1252
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
+ *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]             # <<<<<<<<<<<<<<
+ *         if (nsteps>1):
+ *             shape.insert(0, nsteps)
  */
-    __pyx_v_copy_shape = 0;
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1252, __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_GOTREF(__pyx_t_4);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 1252, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
-  __pyx_L4:;
+  __pyx_v_shape = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
- *                 copy_shape = 0
+  /* "adios.pyx":1253
  * 
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
- *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
- *                 raise ValueError(u"ndarray is not C contiguous")
+ *         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_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L6_bool_binop_done;
-  }
+  __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_8) {
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":217
- * 
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
- *                 raise ValueError(u"ndarray is not C contiguous")
+    /* "adios.pyx":1254
+ *         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_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
-  __pyx_t_1 = __pyx_t_2;
-  __pyx_L6_bool_binop_done:;
-  if (__pyx_t_1) {
+    __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)
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
- *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
+    /* "adios.pyx":1253
  * 
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
+ *         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_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
- *                 raise ValueError(u"ndarray is not C contiguous")
+  /* "adios.pyx":1255
+ *         if (nsteps>1):
+ *             shape.insert(0, nsteps)
+ *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
- *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
- *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L9_bool_binop_done;
-  }
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __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_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_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_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)
+  __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)
+  __pyx_v_var = ((PyArrayObject *)__pyx_t_7);
+  __pyx_t_7 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":221
+  /* "adios.pyx":1258
  * 
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
- *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ *         cdef ADIOS_SELECTION * sel
+ *         sel = adios_selection_writeblock (rank)             # <<<<<<<<<<<<<<
  * 
+ *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  */
-  __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
-  __pyx_t_1 = __pyx_t_2;
-  __pyx_L9_bool_binop_done:;
-  if (__pyx_t_1) {
+  __pyx_v_sel = adios_selection_writeblock(__pyx_v_rank);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
- *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1260
+ *         sel = adios_selection_writeblock (rank)
  * 
- *             info.buf = PyArray_DATA(self)
+ *         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_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __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, 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)
+  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));
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":224
- *                 raise ValueError(u"ndarray is not Fortran contiguous")
+  /* "adios.pyx":1261
  * 
- *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
- *             info.ndim = ndim
- *             if copy_shape:
+ *         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)
+ *         return var
  */
-  __pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
+  adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+  /* "adios.pyx":1262
+ *         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)             # <<<<<<<<<<<<<<
+ *         return var
  * 
- *             info.buf = PyArray_DATA(self)
- *             info.ndim = ndim             # <<<<<<<<<<<<<<
- *             if copy_shape:
- *                 # Allocate new buffer for strides and shape info.
- */
-  __pyx_v_info->ndim = __pyx_v_ndim;
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226
- *             info.buf = PyArray_DATA(self)
- *             info.ndim = ndim
- *             if copy_shape:             # <<<<<<<<<<<<<<
- *                 # Allocate new buffer for strides and shape info.
- *                 # This is allocated as one block, strides first.
  */
-  __pyx_t_1 = (__pyx_v_copy_shape != 0);
-  if (__pyx_t_1) {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
- *                 # Allocate new buffer for strides and shape info.
- *                 # This is allocated as one block, strides first.
- *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)             # <<<<<<<<<<<<<<
- *                 info.shape = info.strides + ndim
- *                 for i in range(ndim):
- */
-    __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2)));
+  adios_selection_delete(__pyx_v_sel);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":230
- *                 # This is allocated as one block, strides first.
- *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
- *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
- *                 for i in range(ndim):
- *                     info.strides[i] = PyArray_STRIDES(self)[i]
+  /* "adios.pyx":1263
+ *         adios_perform_reads(self.file.fp, 1)
+ *         adios_selection_delete(sel)
+ *         return var             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
  */
-    __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_var));
+  __pyx_r = ((PyObject *)__pyx_v_var);
+  goto __pyx_L0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
- *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
- *                 info.shape = info.strides + ndim
- *                 for i in range(ndim):             # <<<<<<<<<<<<<<
- *                     info.strides[i] = PyArray_STRIDES(self)[i]
- *                     info.shape[i] = PyArray_DIMS(self)[i]
+  /* "adios.pyx":1224
+ *         return var
+ * 
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform block read.
+ * 
  */
-    __pyx_t_4 = __pyx_v_ndim;
-    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
-      __pyx_v_i = __pyx_t_5;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
- *                 info.shape = info.strides + ndim
- *                 for i in range(ndim):
- *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
- *                     info.shape[i] = PyArray_DIMS(self)[i]
- *             else:
- */
-      (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_from_steps);
+  __Pyx_XDECREF(__pyx_v_nsteps);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
- *                 for i in range(ndim):
- *                     info.strides[i] = PyArray_STRIDES(self)[i]
- *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
- *             else:
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- */
-      (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_11read_writeblock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_3var_10read_writeblock[] = "var.read_writeblock(self, int rank, from_steps=None, nsteps=None)\n Perform block read.\n\n        Read data from an ADIOS BP file based on the rank id.\n\n        Args:\n            rank (int): rank id\n            from_steps (int, optional): starting step index (default: None)\n            nsteps (int, optional): number of time dimensions (default: None)\n\n        Returns:\n            NumPy 1-D ndarray\n\n        Raises:\n      [...]
+static PyObject *__pyx_pw_5adios_3var_11read_writeblock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_rank;
+  PyObject *__pyx_v_from_steps = 0;
+  PyObject *__pyx_v_nsteps = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read_writeblock (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject *)Py_None);
+    values[2] = ((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  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_rank)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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;
+        default: goto __pyx_L5_argtuple_error;
+      }
     }
-    goto __pyx_L11;
-  }
-  /*else*/ {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
- *                     info.shape[i] = PyArray_DIMS(self)[i]
- *             else:
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- *             info.suboffsets = NULL
- */
-    __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
- *             else:
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
- *             info.suboffsets = NULL
- *             info.itemsize = PyArray_ITEMSIZE(self)
- */
-    __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self));
+    __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_from_steps = values[1];
+    __pyx_v_nsteps = values[2];
   }
-  __pyx_L11:;
+  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_L3_error:;
+  __Pyx_AddTraceback("adios.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_3var_10read_writeblock(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_rank, __pyx_v_from_steps, __pyx_v_nsteps);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
- *             info.itemsize = PyArray_ITEMSIZE(self)
- *             info.readonly = not PyArray_ISWRITEABLE(self)
- */
-  __pyx_v_info->suboffsets = NULL;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":238
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- *             info.suboffsets = NULL
- *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
- *             info.readonly = not PyArray_ISWRITEABLE(self)
- * 
- */
-  __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
+static PyObject *__pyx_pf_5adios_3var_10read_writeblock(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_v_rank, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  struct __pyx_opt_args_5adios_3var_read_writeblock __pyx_t_2;
+  __Pyx_RefNannySetupContext("read_writeblock", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239
- *             info.suboffsets = NULL
- *             info.itemsize = PyArray_ITEMSIZE(self)
- *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
- * 
- *             cdef int t
- */
-  __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+/* "adios.pyx":1265
+ *         return var
  * 
- *             cdef int t
- *             cdef char* f = NULL             # <<<<<<<<<<<<<<
- *             cdef dtype descr = self.descr
- *             cdef list stack
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
  */
-  __pyx_v_f = NULL;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
- *             cdef int t
- *             cdef char* f = NULL
- *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
- *             cdef list stack
- *             cdef int offset
- */
-  __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
-  __Pyx_INCREF(__pyx_t_3);
-  __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
-  __pyx_t_3 = 0;
+static PyObject *__pyx_pw_5adios_3var_13read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read *__pyx_optional_args) {
+  PyObject *__pyx_v_offset = ((PyObject*)__pyx_empty_tuple);
+  PyObject *__pyx_v_count = ((PyObject*)__pyx_empty_tuple);
+  PyObject *__pyx_v_scalar = ((PyObject*)__pyx_empty_tuple);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
- *             cdef int offset
- * 
- *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1266
  * 
- *             if not hasfields and not copy_shape:
- */
-  __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
- *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
+ *         """ Perform read.
  * 
- *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
- *                 # do not call releasebuffer
- *                 info.obj = None
- */
-  __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0);
-  if (__pyx_t_2) {
-  } else {
-    __pyx_t_1 = __pyx_t_2;
-    goto __pyx_L15_bool_binop_done;
-  }
-  __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0);
-  __pyx_t_1 = __pyx_t_2;
-  __pyx_L15_bool_binop_done:;
-  if (__pyx_t_1) {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":251
- *             if not hasfields and not copy_shape:
- *                 # do not call releasebuffer
- *                 info.obj = None             # <<<<<<<<<<<<<<
- *             else:
- *                 # need to call releasebuffer
  */
-    __Pyx_INCREF(Py_None);
-    __Pyx_GIVEREF(Py_None);
-    __Pyx_GOTREF(__pyx_v_info->obj);
-    __Pyx_DECREF(__pyx_v_info->obj);
-    __pyx_v_info->obj = Py_None;
-    goto __pyx_L14;
+  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_fill = ((PyObject *)__pyx_int_0);
+  PyObject *__pyx_v_step_scalar = ((PyObject *)Py_True);
+  PyObject *__pyx_v_lshape = 0;
+  PyArrayObject *__pyx_v_npshape = 0;
+  PyArrayObject *__pyx_v_npoffset = 0;
+  PyArrayObject *__pyx_v_npcount = 0;
+  PyObject *__pyx_v_shape = NULL;
+  PyArrayObject *__pyx_v_var = 0;
+  ADIOS_SELECTION *__pyx_v_sel;
+  int __pyx_v_i;
+  PyObject *__pyx_v_x = NULL;
+  PyObject *__pyx_v_y = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *(*__pyx_t_14)(PyObject *);
+  int __pyx_t_15;
+  int __pyx_t_16;
+  __Pyx_RefNannySetupContext("read", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_offset = __pyx_optional_args->offset;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_count = __pyx_optional_args->count;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_scalar = __pyx_optional_args->scalar;
+          if (__pyx_optional_args->__pyx_n > 3) {
+            __pyx_v_from_steps = __pyx_optional_args->from_steps;
+            if (__pyx_optional_args->__pyx_n > 4) {
+              __pyx_v_nsteps = __pyx_optional_args->nsteps;
+              if (__pyx_optional_args->__pyx_n > 5) {
+                __pyx_v_fill = __pyx_optional_args->fill;
+                if (__pyx_optional_args->__pyx_n > 6) {
+                  __pyx_v_step_scalar = __pyx_optional_args->step_scalar;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
   }
-  /*else*/ {
+  __Pyx_INCREF(__pyx_v_scalar);
+  __Pyx_INCREF(__pyx_v_from_steps);
+  __Pyx_INCREF(__pyx_v_nsteps);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
- *             else:
- *                 # need to call releasebuffer
- *                 info.obj = self             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1265
+ *         return var
  * 
- *             if not hasfields:
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
  */
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __Pyx_GOTREF(__pyx_v_info->obj);
-    __Pyx_DECREF(__pyx_v_info->obj);
-    __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      __pyx_t_5 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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);
+          __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_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;
+      }
+      __Pyx_INCREF(__pyx_v_offset);
+      __Pyx_GIVEREF(__pyx_v_offset);
+      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_offset);
+      __Pyx_INCREF(__pyx_v_count);
+      __Pyx_GIVEREF(__pyx_v_count);
+      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_count);
+      __Pyx_INCREF(__pyx_v_scalar);
+      __Pyx_GIVEREF(__pyx_v_scalar);
+      PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_scalar);
+      __Pyx_INCREF(__pyx_v_from_steps);
+      __Pyx_GIVEREF(__pyx_v_from_steps);
+      PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_from_steps);
+      __Pyx_INCREF(__pyx_v_nsteps);
+      __Pyx_GIVEREF(__pyx_v_nsteps);
+      PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_5, __pyx_v_nsteps);
+      __Pyx_INCREF(__pyx_v_fill);
+      __Pyx_GIVEREF(__pyx_v_fill);
+      PyTuple_SET_ITEM(__pyx_t_6, 5+__pyx_t_5, __pyx_v_fill);
+      __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  __pyx_L14:;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":256
- *                 info.obj = self
+  /* "adios.pyx":1315
+ * 
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
  * 
- *             if not hasfields:             # <<<<<<<<<<<<<<
- *                 t = descr.type_num
- *                 if ((descr.byteorder == c'>' and little_endian) or
  */
-  __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0);
-  if (__pyx_t_1) {
+  __pyx_t_7 = (__pyx_v_from_steps == Py_None);
+  __pyx_t_8 = (__pyx_t_7 != 0);
+  if (__pyx_t_8) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+    /* "adios.pyx":1316
+ *         """
+ *         if from_steps is None:
+ *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
  * 
- *             if not hasfields:
- *                 t = descr.type_num             # <<<<<<<<<<<<<<
- *                 if ((descr.byteorder == c'>' and little_endian) or
- *                     (descr.byteorder == c'<' and not little_endian)):
+ *         if nsteps is None:
  */
-    __pyx_t_4 = __pyx_v_descr->type_num;
-    __pyx_v_t = __pyx_t_4;
+    __Pyx_INCREF(__pyx_int_0);
+    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":258
- *             if not hasfields:
- *                 t = descr.type_num
- *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
- *                     (descr.byteorder == c'<' and not little_endian)):
- *                     raise ValueError(u"Non-native byte order not supported")
+    /* "adios.pyx":1315
+ * 
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
+ * 
  */
-    __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0);
-    if (!__pyx_t_2) {
-      goto __pyx_L20_next_or;
-    } else {
-    }
-    __pyx_t_2 = (__pyx_v_little_endian != 0);
-    if (!__pyx_t_2) {
-    } else {
-      __pyx_t_1 = __pyx_t_2;
-      goto __pyx_L19_bool_binop_done;
-    }
-    __pyx_L20_next_or:;
+  }
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
- *                 t = descr.type_num
- *                 if ((descr.byteorder == c'>' and little_endian) or
- *                     (descr.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
- *                     raise ValueError(u"Non-native byte order not supported")
- *                 if   t == NPY_BYTE:        f = "b"
+  /* "adios.pyx":1318
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
  */
-    __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0);
-    if (__pyx_t_2) {
-    } else {
-      __pyx_t_1 = __pyx_t_2;
-      goto __pyx_L19_bool_binop_done;
-    }
-    __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0);
-    __pyx_t_1 = __pyx_t_2;
-    __pyx_L19_bool_binop_done:;
-    if (__pyx_t_1) {
+  __pyx_t_8 = (__pyx_v_nsteps == Py_None);
+  __pyx_t_7 = (__pyx_t_8 != 0);
+  if (__pyx_t_7) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
- *                 if ((descr.byteorder == c'>' and little_endian) or
- *                     (descr.byteorder == c'<' and not little_endian)):
- *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
- *                 if   t == NPY_BYTE:        f = "b"
- *                 elif t == NPY_UBYTE:       f = "B"
+    /* "adios.pyx":1319
+ * 
+ *         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_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+    __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_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_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_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;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
- *                 else:
- *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+    /* "adios.pyx":1318
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
  */
-    switch (__pyx_v_t) {
+  }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
- *                     (descr.byteorder == c'<' and not little_endian)):
- *                     raise ValueError(u"Non-native byte order not supported")
- *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_UBYTE:       f = "B"
- *                 elif t == NPY_SHORT:       f = "h"
+  /* "adios.pyx":1321
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
+ * 
+ *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  */
-      case NPY_BYTE:
-      __pyx_v_f = __pyx_k_b;
-      break;
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!Py_OptimizeFlag)) {
+    __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)
+    }
+  }
+  #endif
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
- *                     raise ValueError(u"Non-native byte order not supported")
- *                 if   t == NPY_BYTE:        f = "b"
- *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_SHORT:       f = "h"
- *                 elif t == NPY_USHORT:      f = "H"
+  /* "adios.pyx":1323
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
  */
-      case NPY_UBYTE:
-      __pyx_v_f = __pyx_k_B;
-      break;
+  __pyx_t_8 = ((__pyx_v_self->nsteps > 0) != 0);
+  if (__pyx_t_8) {
+  } else {
+    __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_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_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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_7 = __pyx_t_8;
+  __pyx_L6_bool_binop_done:;
+  if (__pyx_t_7) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
- *                 if   t == NPY_BYTE:        f = "b"
- *                 elif t == NPY_UBYTE:       f = "B"
- *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_USHORT:      f = "H"
- *                 elif t == NPY_INT:         f = "i"
+    /* "adios.pyx":1324
+ * 
+ *         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)]
  */
-      case NPY_SHORT:
-      __pyx_v_f = __pyx_k_h;
-      break;
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1324, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_from_steps);
+    __Pyx_GIVEREF(__pyx_v_from_steps);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_steps);
+    __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_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_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_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)
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
- *                 elif t == NPY_UBYTE:       f = "B"
- *                 elif t == NPY_SHORT:       f = "h"
- *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_INT:         f = "i"
- *                 elif t == NPY_UINT:        f = "I"
+    /* "adios.pyx":1323
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
  */
-      case NPY_USHORT:
-      __pyx_v_f = __pyx_k_H;
-      break;
+  }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
- *                 elif t == NPY_SHORT:       f = "h"
- *                 elif t == NPY_USHORT:      f = "H"
- *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_UINT:        f = "I"
- *                 elif t == NPY_LONG:        f = "l"
+  /* "adios.pyx":1326
+ *             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)
+ * 
  */
-      case NPY_INT:
-      __pyx_v_f = __pyx_k_i;
-      break;
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __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_GOTREF(__pyx_t_3);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1326, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_lshape = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
- *                 elif t == NPY_USHORT:      f = "H"
- *                 elif t == NPY_INT:         f = "i"
- *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_LONG:        f = "l"
- *                 elif t == NPY_ULONG:       f = "L"
+  /* "adios.pyx":1327
+ * 
+ *         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
  */
-      case NPY_UINT:
-      __pyx_v_f = __pyx_k_I;
-      break;
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __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_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_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_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_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_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)
+  __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_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)
+  __pyx_v_npshape = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
- *                 elif t == NPY_INT:         f = "i"
- *                 elif t == NPY_UINT:        f = "I"
- *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_ULONG:       f = "L"
- *                 elif t == NPY_LONGLONG:    f = "q"
+  /* "adios.pyx":1330
+ * 
+ *         cdef np.ndarray npoffset
+ *         if len(offset) == 0:             # <<<<<<<<<<<<<<
+ *             npoffset = npshape.copy()
+ *             npoffset.fill(0)
  */
-      case NPY_LONG:
-      __pyx_v_f = __pyx_k_l;
-      break;
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1330, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
+  if (__pyx_t_7) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
- *                 elif t == NPY_UINT:        f = "I"
- *                 elif t == NPY_LONG:        f = "l"
- *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_LONGLONG:    f = "q"
- *                 elif t == NPY_ULONGLONG:   f = "Q"
+    /* "adios.pyx":1331
+ *         cdef np.ndarray npoffset
+ *         if len(offset) == 0:
+ *             npoffset = npshape.copy()             # <<<<<<<<<<<<<<
+ *             npoffset.fill(0)
+ *         else:
  */
-      case NPY_ULONG:
-      __pyx_v_f = __pyx_k_L;
-      break;
+    __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_GOTREF(__pyx_t_1);
+    __pyx_t_2 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+      }
+    }
+    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_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_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)
+    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_4);
+    __pyx_t_4 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
- *                 elif t == NPY_LONG:        f = "l"
- *                 elif t == NPY_ULONG:       f = "L"
- *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- *                 elif t == NPY_FLOAT:       f = "f"
+    /* "adios.pyx":1332
+ *         if len(offset) == 0:
+ *             npoffset = npshape.copy()
+ *             npoffset.fill(0)             # <<<<<<<<<<<<<<
+ *         else:
+ *             npoffset = np.array(offset, dtype=np.int64)
  */
-      case NPY_LONGLONG:
-      __pyx_v_f = __pyx_k_q;
-      break;
+    __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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
- *                 elif t == NPY_ULONG:       f = "L"
- *                 elif t == NPY_LONGLONG:    f = "q"
- *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_FLOAT:       f = "f"
- *                 elif t == NPY_DOUBLE:      f = "d"
+    /* "adios.pyx":1330
+ * 
+ *         cdef np.ndarray npoffset
+ *         if len(offset) == 0:             # <<<<<<<<<<<<<<
+ *             npoffset = npshape.copy()
+ *             npoffset.fill(0)
  */
-      case NPY_ULONGLONG:
-      __pyx_v_f = __pyx_k_Q;
-      break;
+    goto __pyx_L10;
+  }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
- *                 elif t == NPY_LONGLONG:    f = "q"
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_DOUBLE:      f = "d"
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
+  /* "adios.pyx":1334
+ *             npoffset.fill(0)
+ *         else:
+ *             npoffset = np.array(offset, dtype=np.int64)             # <<<<<<<<<<<<<<
+ * 
+ *         cdef np.ndarray npcount
  */
-      case NPY_FLOAT:
-      __pyx_v_f = __pyx_k_f;
-      break;
+  /*else*/ {
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __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_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_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_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_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_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)
+    __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_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)
+    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
+  }
+  __pyx_L10:;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- *                 elif t == NPY_FLOAT:       f = "f"
- *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- *                 elif t == NPY_CFLOAT:      f = "Zf"
+  /* "adios.pyx":1337
+ * 
+ *         cdef np.ndarray npcount
+ *         if len(count) == 0:             # <<<<<<<<<<<<<<
+ *             npcount = npshape - npoffset
+ *         else:
  */
-      case NPY_DOUBLE:
-      __pyx_v_f = __pyx_k_d;
-      break;
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
+  if (__pyx_t_7) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
- *                 elif t == NPY_FLOAT:       f = "f"
- *                 elif t == NPY_DOUBLE:      f = "d"
- *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
+    /* "adios.pyx":1338
+ *         cdef np.ndarray npcount
+ *         if len(count) == 0:
+ *             npcount = npshape - npoffset             # <<<<<<<<<<<<<<
+ *         else:
+ *             npcount = np.array(count, dtype=np.int64)
  */
-      case NPY_LONGDOUBLE:
-      __pyx_v_f = __pyx_k_g;
-      break;
+    __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_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)
+    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
- *                 elif t == NPY_DOUBLE:      f = "d"
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
+    /* "adios.pyx":1337
+ * 
+ *         cdef np.ndarray npcount
+ *         if len(count) == 0:             # <<<<<<<<<<<<<<
+ *             npcount = npshape - npoffset
+ *         else:
  */
-      case NPY_CFLOAT:
-      __pyx_v_f = __pyx_k_Zf;
-      break;
+    goto __pyx_L11;
+  }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- *                 elif t == NPY_OBJECT:      f = "O"
- */
-      case NPY_CDOUBLE:
-      __pyx_v_f = __pyx_k_Zd;
-      break;
-
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_OBJECT:      f = "O"
- *                 else:
- */
-      case NPY_CLONGDOUBLE:
-      __pyx_v_f = __pyx_k_Zg;
-      break;
-
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
- *                 else:
- *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
- */
-      case NPY_OBJECT:
-      __pyx_v_f = __pyx_k_O;
-      break;
-      default:
-
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
- *                 elif t == NPY_OBJECT:      f = "O"
- *                 else:
- *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
- *                 info.format = f
- *                 return
- */
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
-      __Pyx_GIVEREF(__pyx_t_6);
-      __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      break;
-    }
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
- *                 else:
- *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
- *                 info.format = f             # <<<<<<<<<<<<<<
- *                 return
- *             else:
- */
-    __pyx_v_info->format = __pyx_v_f;
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":281
- *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
- *                 info.format = f
- *                 return             # <<<<<<<<<<<<<<
- *             else:
- *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
+  /* "adios.pyx":1340
+ *             npcount = npshape - npoffset
+ *         else:
+ *             npcount = np.array(count, dtype=np.int64)             # <<<<<<<<<<<<<<
+ * 
+ *         if len(scalar) == 0:
  */
-    __pyx_r = 0;
-    goto __pyx_L0;
-  }
   /*else*/ {
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1340, __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_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_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_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_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_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)
+    __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_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)
+    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+  __pyx_L11:;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
- *                 return
- *             else:
- *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
- *                 info.format[0] = c'^' # Native data types, manual alignment
- *                 offset = 0
+  /* "adios.pyx":1342
+ *             npcount = np.array(count, dtype=np.int64)
+ * 
+ *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
+ *             scalar = tuple((False,) * len(npshape))
+ * 
  */
-    __pyx_v_info->format = ((char *)malloc(255));
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1342, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
+  if (__pyx_t_7) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
- *             else:
- *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
- *                 info.format[0] = c'^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
- *                 offset = 0
- *                 f = _util_dtypestring(descr, info.format + 1,
+    /* "adios.pyx":1343
+ * 
+ *         if len(scalar) == 0:
+ *             scalar = tuple((False,) * len(npshape))             # <<<<<<<<<<<<<<
+ * 
+ *         if len(npshape) != len(npoffset):
  */
-    (__pyx_v_info->format[0]) = '^';
+    __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_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_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;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":285
- *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
- *                 info.format[0] = c'^' # Native data types, manual alignment
- *                 offset = 0             # <<<<<<<<<<<<<<
- *                 f = _util_dtypestring(descr, info.format + 1,
- *                                       info.format + _buffer_format_string_len,
+    /* "adios.pyx":1342
+ *             npcount = np.array(count, dtype=np.int64)
+ * 
+ *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
+ *             scalar = tuple((False,) * len(npshape))
+ * 
  */
-    __pyx_v_offset = 0;
+  }
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
- *                 info.format[0] = c'^' # Native data types, manual alignment
- *                 offset = 0
- *                 f = _util_dtypestring(descr, info.format + 1,             # <<<<<<<<<<<<<<
- *                                       info.format + _buffer_format_string_len,
- *                                       &offset)
+  /* "adios.pyx":1345
+ *             scalar = tuple((False,) * len(npshape))
+ * 
+ *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
+ * 
  */
-    __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_f = __pyx_t_7;
+  __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_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
+  if (__pyx_t_7) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
- *                                       info.format + _buffer_format_string_len,
- *                                       &offset)
- *                 f[0] = c'\0' # Terminate format string             # <<<<<<<<<<<<<<
+    /* "adios.pyx":1346
  * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *         if len(npshape) != len(npoffset):
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))             # <<<<<<<<<<<<<<
+ * 
+ *         if len(npshape) != len(npcount):
  */
-    (__pyx_v_f[0]) = '\x00';
-  }
+    __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_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_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_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_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)
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
- *         # experimental exception made for __getbuffer__ and __releasebuffer__
- *         # -- the details of this may change.
- *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
- *             # This implementation of getbuffer is geared towards Cython
- *             # requirements, and does not yet fullfill the PEP.
+    /* "adios.pyx":1345
+ *             scalar = tuple((False,) * len(npshape))
+ * 
+ *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
+ * 
  */
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) {
-    __Pyx_GOTREF(__pyx_v_info->obj);
-    __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL;
-  }
-  goto __pyx_L2;
-  __pyx_L0:;
-  if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) {
-    __Pyx_GOTREF(Py_None);
-    __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL;
   }
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_descr);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
- *                 f[0] = c'\0' # Terminate format string
+  /* "adios.pyx":1348
+ *             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))
  * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)
  */
+  __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_7 = ((__pyx_t_11 != __pyx_t_5) != 0);
+  if (__pyx_t_7) {
 
-/* Python wrapper */
-static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
-static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
-  __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("__releasebuffer__", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+    /* "adios.pyx":1349
  * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *         if len(npshape) != len(npcount):
+ *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))             # <<<<<<<<<<<<<<
+ * 
+ *         if len(npshape) != len(scalar):
  */
-  __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
-  if (__pyx_t_1) {
+    __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_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_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_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_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)
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 stdlib.free(info.strides)
+    /* "adios.pyx":1348
+ *             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))
+ * 
  */
-    free(__pyx_v_info->format);
-    goto __pyx_L3;
   }
-  __pyx_L3:;
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
- *                 stdlib.free(info.strides)
- *                 # info.shape was stored after info.strides in the same block
- */
-  __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
-  if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
- *                 # info.shape was stored after info.strides in the same block
+  /* "adios.pyx":1351
+ *             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))
  * 
  */
-    free(__pyx_v_info->strides);
-    goto __pyx_L4;
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1351, __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_L4:;
+  __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1351, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
+  if (__pyx_t_7) {
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
- *                 f[0] = c'\0' # Terminate format string
+    /* "adios.pyx":1352
  * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)
+ *         if len(npshape) != len(scalar):
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))             # <<<<<<<<<<<<<<
+ * 
+ *         if (npshape < npcount + npoffset).any():
  */
+    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_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_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_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_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_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)
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
- * ctypedef npy_cdouble     complex_t
+    /* "adios.pyx":1351
+ *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
- * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(1, <void*>a)
+ *         if len(npshape) != len(scalar):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  */
+  }
 
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":772
+  /* "adios.pyx":1354
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
- * cdef inline object PyArray_MultiIterNew1(a):
- *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
+ *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
+ *             raise IndexError('Requested is larger than the shape.')
  * 
- * cdef inline object PyArray_MultiIterNew2(a, b):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  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_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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (__pyx_t_7) {
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
- * ctypedef npy_cdouble     complex_t
+    /* "adios.pyx":1355
  * 
- * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(1, <void*>a)
+ *         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_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)
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774
- *     return PyArray_MultiIterNew(1, <void*>a)
+    /* "adios.pyx":1354
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
- * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
+ *             raise IndexError('Requested is larger than the shape.')
  * 
  */
+  }
 
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
- * 
- * cdef inline object PyArray_MultiIterNew2(a, b):
- *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1357
+ *             raise IndexError('Requested is larger than the shape.')
  * 
- * cdef inline object PyArray_MultiIterNew3(a, b, c):
+ *         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_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1357, __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_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __Pyx_INCREF(((PyObject *)__pyx_v_npcount));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_npcount));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_npcount));
+  __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_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_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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_12)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_6);
+        #endif
+      }
+    } else {
+      __pyx_t_6 = __pyx_t_12(__pyx_t_1);
+      if (unlikely(!__pyx_t_6)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_6);
+    }
+    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
+      PyObject* sequence = __pyx_t_6;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      Py_ssize_t size = Py_SIZE(sequence);
+      #else
+      Py_ssize_t size = PySequence_Size(sequence);
+      #endif
+      if (unlikely(size != 2)) {
+        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+        __PYX_ERR(0, 1357, __pyx_L1_error)
+      }
+      #if CYTHON_COMPILING_IN_CPYTHON
+      if (likely(PyTuple_CheckExact(sequence))) {
+        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
+      } else {
+        __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
+      }
+      __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_GOTREF(__pyx_t_2);
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1357, __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_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
+      index = 0; __pyx_t_2 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_2)) goto __pyx_L19_unpacking_failed;
+      __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)
+      __pyx_t_14 = NULL;
+      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+      goto __pyx_L20_unpacking_done;
+      __pyx_L19_unpacking_failed:;
+      __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_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_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)
+    }
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_shape = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774
- *     return PyArray_MultiIterNew(1, <void*>a)
- * 
- * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+  /* "adios.pyx":1358
  * 
+ *         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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!__pyx_t_7) {
+  } else {
+    __pyx_t_8 = __pyx_t_7;
+    goto __pyx_L23_bool_binop_done;
+  }
+  __pyx_t_7 = ((__pyx_v_self->nsteps > 1) != 0);
+  if (__pyx_t_7) {
+  } else {
+    __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_15 = ((!__pyx_t_7) != 0);
+  __pyx_t_8 = __pyx_t_15;
+  __pyx_L23_bool_binop_done:;
+  if (__pyx_t_8) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
- *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
- * 
- * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+    /* "adios.pyx":1359
+ *         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)
 
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+    /* "adios.pyx":1358
  * 
- * cdef inline object PyArray_MultiIterNew3(a, b, c):
- *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
+ *         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)
+ */
+  }
+
+  /* "adios.pyx":1360
+ *         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)             # <<<<<<<<<<<<<<
  * 
- * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
+ *         if len(shape) > 0:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1360, __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_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __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_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_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)
+  __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)
+  __pyx_v_var = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
- *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+  /* "adios.pyx":1362
+ *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
- * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ *         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_8 = ((__pyx_t_11 > 0) != 0);
+  if (__pyx_t_8) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780
- *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+    /* "adios.pyx":1363
  * 
- * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ *         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)
 
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+    /* "adios.pyx":1362
+ *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
- * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
- *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
+ *         if len(shape) > 0:             # <<<<<<<<<<<<<<
+ *             var[:] = fill
  * 
- * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780
- *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+  /* "adios.pyx":1366
  * 
- * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ *         cdef ADIOS_SELECTION * sel
+ *         sel = adios_selection_boundingbox (self.vp.ndim, <uint64_t *> npoffset.data, <uint64_t *> npcount.data)             # <<<<<<<<<<<<<<
+ * 
+ *         ##print 'npoffset', npoffset
+ */
+  __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
+ *         ##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)
+  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_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)
+ * 
+ */
+  adios_perform_reads(__pyx_v_self->file->fp, 1);
+
+  /* "adios.pyx":1373
+ *         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)             # <<<<<<<<<<<<<<
+ * 
+ *         if (var.ndim == 0):
+ */
+  adios_selection_delete(__pyx_v_sel);
+
+  /* "adios.pyx":1375
+ *         adios_selection_delete(sel)
+ * 
+ *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(var)
+ *         else:
+ */
+  __pyx_t_8 = ((__pyx_v_var->nd == 0) != 0);
+  if (__pyx_t_8) {
+
+    /* "adios.pyx":1376
+ * 
+ *         if (var.ndim == 0):
+ *             return np.asscalar(var)             # <<<<<<<<<<<<<<
+ *         else:
+ *             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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+
+    /* "adios.pyx":1375
+ *         adios_selection_delete(sel)
+ * 
+ *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(var)
+ *         else:
+ */
+  }
+
+  /* "adios.pyx":1378
+ *             return np.asscalar(var)
+ *         else:
+ *             return var             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef printself(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_var));
+    __pyx_r = ((PyObject *)__pyx_v_var);
+    goto __pyx_L0;
+  }
+
+  /* "adios.pyx":1265
+ *         return var
  * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_lshape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_npshape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_npoffset);
+  __Pyx_XDECREF((PyObject *)__pyx_v_npcount);
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_x);
+  __Pyx_XDECREF(__pyx_v_y);
+  __Pyx_XDECREF(__pyx_v_scalar);
+  __Pyx_XDECREF(__pyx_v_from_steps);
+  __Pyx_XDECREF(__pyx_v_nsteps);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
- *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_13read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_3var_12read[] = "var.read(self, tuple offset=(), tuple count=(), tuple scalar=(), from_steps=None, nsteps=None, fill=0, step_scalar=True)\n 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            sc [...]
+static PyObject *__pyx_pw_5adios_3var_13read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_offset = 0;
+  PyObject *__pyx_v_count = 0;
+  PyObject *__pyx_v_scalar = 0;
+  PyObject *__pyx_v_from_steps = 0;
+  PyObject *__pyx_v_nsteps = 0;
+  PyObject *__pyx_v_fill = 0;
+  PyObject *__pyx_v_step_scalar = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_count,&__pyx_n_s_scalar,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,&__pyx_n_s_fill,&__pyx_n_s_step_scalar,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+    values[0] = ((PyObject*)__pyx_empty_tuple);
+    values[1] = ((PyObject*)__pyx_empty_tuple);
+    values[2] = ((PyObject*)__pyx_empty_tuple);
+
+    /* "adios.pyx":1266
  * 
- * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
+ *         """ Perform read.
+ * 
+ */
+    values[3] = ((PyObject *)Py_None);
+    values[4] = ((PyObject *)Py_None);
+    values[5] = ((PyObject *)__pyx_int_0);
+    values[6] = ((PyObject *)Py_True);
+    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 (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scalar);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
+          if (value) { values[5] = value; kw_args--; }
+        }
+        case  6:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_step_scalar);
+          if (value) { values[6] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_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;
+      }
+    }
+    __pyx_v_offset = ((PyObject*)values[0]);
+    __pyx_v_count = ((PyObject*)values[1]);
+    __pyx_v_scalar = ((PyObject*)values[2]);
+    __pyx_v_from_steps = values[3];
+    __pyx_v_nsteps = values[4];
+    __pyx_v_fill = values[5];
+    __pyx_v_step_scalar = values[6];
+  }
+  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_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)
+  __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
+ *         return var
  * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
  */
 
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_12read(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_scalar, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill, PyObject *__pyx_v_step_scalar) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
- * 
- * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
- *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
- * 
- * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
- */
+  struct __pyx_opt_args_5adios_3var_read __pyx_t_2;
+  __Pyx_RefNannySetupContext("read", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2.__pyx_n = 7;
+  __pyx_t_2.offset = __pyx_v_offset;
+  __pyx_t_2.count = __pyx_v_count;
+  __pyx_t_2.scalar = __pyx_v_scalar;
+  __pyx_t_2.from_steps = __pyx_v_from_steps;
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
- *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
- * 
- * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
- *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
- * 
- */
-
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
+  __Pyx_AddTraceback("adios.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":786
- *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+/* "adios.pyx":1380
+ *             return var
  * 
- * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
- *     # Recursive utility function used in __getbuffer__ to get format
- *     # string. The new location in the format string is returned.
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_VARINFO structure. """
+ *         assert self.vp != NULL, 'Not an open variable'
  */
 
-static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
-  PyArray_Descr *__pyx_v_child = 0;
-  int __pyx_v_endian_detector;
-  int __pyx_v_little_endian;
-  PyObject *__pyx_v_fields = 0;
-  PyObject *__pyx_v_childname = NULL;
-  PyObject *__pyx_v_new_offset = NULL;
-  PyObject *__pyx_v_t = NULL;
-  char *__pyx_r;
+static PyObject *__pyx_pw_5adios_3var_15printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  Py_ssize_t __pyx_t_2;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  int __pyx_t_6;
-  int __pyx_t_7;
-  long __pyx_t_8;
-  char *__pyx_t_9;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("_util_dtypestring", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":793
- *     cdef int delta_offset
- *     cdef tuple i
- *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
- *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
- *     cdef tuple fields
- */
-  __pyx_v_endian_detector = 1;
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
- *     cdef tuple i
- *     cdef int endian_detector = 1
- *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
- *     cdef tuple fields
- * 
- */
-  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":797
- *     cdef tuple fields
- * 
- *     for childname in descr.names:             # <<<<<<<<<<<<<<
- *         fields = descr.fields[childname]
- *         child, new_offset = fields
- */
-  if (unlikely(__pyx_v_descr->names == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannySetupContext("printself", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 1380, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
-  for (;;) {
-    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
-    #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #else
-    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #endif
-    __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
-    __pyx_t_3 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798
- * 
- *     for childname in descr.names:
- *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
- *         child, new_offset = fields
- * 
+  /* "adios.pyx":1382
+ *     cpdef printself(self):
+ *         """ Print native ADIOS_VARINFO structure. """
+ *         assert self.vp != NULL, 'Not an open variable'             # <<<<<<<<<<<<<<
+ *         print ('=== AdiosVariable ===')
+ *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  */
-    if (unlikely(__pyx_v_descr->fields == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
-    __pyx_t_3 = 0;
+  }
+  #endif
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799
- *     for childname in descr.names:
- *         fields = descr.fields[childname]
- *         child, new_offset = fields             # <<<<<<<<<<<<<<
- * 
- *         if (end - f) - <int>(new_offset - offset[0]) < 15:
+  /* "adios.pyx":1383
+ *         """ 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))
  */
-    if (likely(__pyx_v_fields != Py_None)) {
-      PyObject* sequence = __pyx_v_fields;
-      #if CYTHON_COMPILING_IN_CPYTHON
-      Py_ssize_t size = Py_SIZE(sequence);
-      #else
-      Py_ssize_t size = PySequence_Size(sequence);
-      #endif
-      if (unlikely(size != 2)) {
-        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
-        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
-      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_4);
-      #else
-      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      #endif
-    } else {
-      __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
-    __pyx_t_3 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
-    __pyx_t_4 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
- *         child, new_offset = fields
- * 
- *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
- *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
- * 
+  /* "adios.pyx":1384
+ *         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_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
-    if (__pyx_t_6) {
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_vp);
+  __Pyx_GIVEREF(__pyx_n_s_vp);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_vp);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
- * 
- *         if (end - f) - <int>(new_offset - offset[0]) < 15:
- *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1385
+ *         print ('=== AdiosVariable ===')
+ *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))             # <<<<<<<<<<<<<<
+ *         printvar(self.vp)
  * 
- *         if ((child.byteorder == c'>' and little_endian) or
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __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, 1385, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_fp);
+  __Pyx_GIVEREF(__pyx_n_s_fp);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":804
- *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+  /* "adios.pyx":1386
+ *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
+ *         printvar(self.vp)             # <<<<<<<<<<<<<<
  * 
- *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
- *             (child.byteorder == c'<' and not little_endian)):
- *             raise ValueError(u"Non-native byte order not supported")
+ *     def __repr__(self):
  */
-    __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0);
-    if (!__pyx_t_7) {
-      goto __pyx_L8_next_or;
-    } else {
-    }
-    __pyx_t_7 = (__pyx_v_little_endian != 0);
-    if (!__pyx_t_7) {
-    } else {
-      __pyx_t_6 = __pyx_t_7;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_L8_next_or:;
+  __pyx_t_1 = __pyx_f_5adios_printvar(__pyx_v_self->vp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+  /* "adios.pyx":1380
+ *             return var
  * 
- *         if ((child.byteorder == c'>' and little_endian) or
- *             (child.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
- *             raise ValueError(u"Non-native byte order not supported")
- *             # One could encode it in the format string and have Cython
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_VARINFO structure. """
+ *         assert self.vp != NULL, 'Not an open variable'
  */
-    __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0);
-    if (__pyx_t_7) {
-    } else {
-      __pyx_t_6 = __pyx_t_7;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0);
-    __pyx_t_6 = __pyx_t_7;
-    __pyx_L7_bool_binop_done:;
-    if (__pyx_t_6) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
- *         if ((child.byteorder == c'>' and little_endian) or
- *             (child.byteorder == c'<' and not little_endian)):
- *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
- *             # One could encode it in the format string and have Cython
- *             # complain instead, BUT: < and > in format strings also imply
- */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":816
- * 
- *         # Output padding bytes
- *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
- *             f[0] = 120 # "x"; pad byte
- *             f += 1
- */
-    while (1) {
-      __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!__pyx_t_6) break;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_15printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_3var_14printself[] = "var.printself(self)\n Print native ADIOS_VARINFO structure. ";
+static PyObject *__pyx_pw_5adios_3var_15printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_14printself(((struct __pyx_obj_5adios_var *)__pyx_v_self));
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":817
- *         # Output padding bytes
- *         while offset[0] < new_offset:
- *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
- *             f += 1
- *             offset[0] += 1
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_14printself(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_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.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1388
+ *         printvar(self.vp)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
+ *                (self.varid,
  */
-      (__pyx_v_f[0]) = 120;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818
- *         while offset[0] < new_offset:
- *             f[0] = 120 # "x"; pad byte
- *             f += 1             # <<<<<<<<<<<<<<
- *             offset[0] += 1
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_17__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_17__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_16__repr__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios.pyx":1389
  * 
+ *     def __repr__(self):
+ *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.varid,
+ *                 self.name,
  */
-      __pyx_v_f = (__pyx_v_f + 1);
+  __Pyx_XDECREF(__pyx_r);
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":819
- *             f[0] = 120 # "x"; pad byte
- *             f += 1
- *             offset[0] += 1             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1390
+ *     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_GOTREF(__pyx_t_1);
+
+  /* "adios.pyx":1393
+ *                 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_GOTREF(__pyx_t_2);
+
+  /* "adios.pyx":1395
+ *                 self.ndim,
+ *                 self.dims,
+ *                 self.nsteps,             # <<<<<<<<<<<<<<
+ *                 self.attrs.keys())
  * 
- *         offset[0] += child.itemsize
  */
-      __pyx_t_8 = 0;
-      (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "adios.pyx":1396
+ *                 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_GOTREF(__pyx_t_5);
+  __pyx_t_6 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
     }
+  }
+  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_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_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":821
- *             offset[0] += 1
+  /* "adios.pyx":1390
+ *     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_GOTREF(__pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_self->name);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
+  PyTuple_SET_ITEM(__pyx_t_5, 2, ((PyObject *)__pyx_v_self->dtype));
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->dims);
+  __Pyx_GIVEREF(__pyx_v_self->dims);
+  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_self->dims);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_t_4);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+
+  /* "adios.pyx":1389
  * 
- *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
+ *     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_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
+ *         printvar(self.vp)
  * 
- *         if not PyDataType_HASFIELDS(child):
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
+ *                (self.varid,
  */
-    __pyx_t_8 = 0;
-    (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823
- *         offset[0] += child.itemsize
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios.var.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1398
+ *                 self.attrs.keys())
  * 
- *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
- *             t = child.type_num
- *             if end - f < 5:
+ *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
  */
-    __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
-    if (__pyx_t_6) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_19_readattr(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static char __pyx_doc_5adios_3var_18_readattr[] = "var._readattr(self, varname)";
+static PyObject *__pyx_pw_5adios_3var_19_readattr(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_readattr (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_18_readattr(((struct __pyx_obj_5adios_var *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("_readattr", 0);
+  __Pyx_INCREF(__pyx_v_varname);
+
+  /* "adios.pyx":1399
+ * 
+ *     def _readattr(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
  * 
- *         if not PyDataType_HASFIELDS(child):
- *             t = child.type_num             # <<<<<<<<<<<<<<
- *             if end - f < 5:
- *                 raise RuntimeError(u"Format string allocated too short.")
  */
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
-      __pyx_t_4 = 0;
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
- *         if not PyDataType_HASFIELDS(child):
- *             t = child.type_num
- *             if end - f < 5:             # <<<<<<<<<<<<<<
- *                 raise RuntimeError(u"Format string allocated too short.")
+    /* "adios.pyx":1400
+ *     def _readattr(self, varname):
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
+ *         if len(varname) > 1:
  */
-      __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
-      if (__pyx_t_6) {
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1400, __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_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-        /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
- *             t = child.type_num
- *             if end - f < 5:
- *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
+    /* "adios.pyx":1399
+ * 
+ *     def _readattr(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
  * 
- *             # Until ticket #99 is fixed, use integers to avoid warnings
  */
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
+  }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+  /* "adios.pyx":1402
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
  * 
- *             # Until ticket #99 is fixed, use integers to avoid warnings
- *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
- *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
- *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 98;
-        goto __pyx_L15;
-      }
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1402, __pyx_L1_error)
+  __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
+  if (__pyx_t_2) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":830
- *             # Until ticket #99 is fixed, use integers to avoid warnings
- *             if   t == NPY_BYTE:        f[0] =  98 #"b"
- *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
- *             elif t == NPY_SHORT:       f[0] = 104 #"h"
- *             elif t == NPY_USHORT:      f[0] =  72 #"H"
+    /* "adios.pyx":1403
+ * 
+ *         if len(varname) > 1:
+ *             raise KeyError(varname)             # <<<<<<<<<<<<<<
+ * 
+ *         for key_ in varname:
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 66;
-        goto __pyx_L15;
-      }
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __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_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)
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
- *             if   t == NPY_BYTE:        f[0] =  98 #"b"
- *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
- *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
- *             elif t == NPY_USHORT:      f[0] =  72 #"H"
- *             elif t == NPY_INT:         f[0] = 105 #"i"
+    /* "adios.pyx":1402
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
+ * 
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 104;
-        goto __pyx_L15;
-      }
+  }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
- *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
- *             elif t == NPY_SHORT:       f[0] = 104 #"h"
- *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
- *             elif t == NPY_INT:         f[0] = 105 #"i"
- *             elif t == NPY_UINT:        f[0] =  73 #"I"
+  /* "adios.pyx":1405
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 72;
-        goto __pyx_L15;
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
+        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)
+        }
+        break;
       }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
- *             elif t == NPY_SHORT:       f[0] = 104 #"h"
- *             elif t == NPY_USHORT:      f[0] =  72 #"H"
- *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
- *             elif t == NPY_UINT:        f[0] =  73 #"I"
- *             elif t == NPY_LONG:        f[0] = 108 #"l"
+    /* "adios.pyx":1406
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 105;
-        goto __pyx_L15;
-      }
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
- *             elif t == NPY_USHORT:      f[0] =  72 #"H"
- *             elif t == NPY_INT:         f[0] = 105 #"i"
- *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
- *             elif t == NPY_LONG:        f[0] = 108 #"l"
- *             elif t == NPY_ULONG:       f[0] = 76  #"L"
+      /* "adios.pyx":1407
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
+ * 
+ *             if key_.startswith('/'):
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 73;
-        goto __pyx_L15;
-      }
+      __PYX_ERR(0, 1407, __pyx_L1_error)
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":835
- *             elif t == NPY_INT:         f[0] = 105 #"i"
- *             elif t == NPY_UINT:        f[0] =  73 #"I"
- *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
- *             elif t == NPY_ULONG:       f[0] = 76  #"L"
- *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
+      /* "adios.pyx":1406
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 108;
-        goto __pyx_L15;
-      }
+    }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":836
- *             elif t == NPY_UINT:        f[0] =  73 #"I"
- *             elif t == NPY_LONG:        f[0] = 108 #"l"
- *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
- *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
+    /* "adios.pyx":1409
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 76;
-        goto __pyx_L15;
-      }
+    __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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
- *             elif t == NPY_LONG:        f[0] = 108 #"l"
- *             elif t == NPY_ULONG:       f[0] = 76  #"L"
- *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
- *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
+      /* "adios.pyx":1410
+ * 
+ *             if key_.startswith('/'):
+ *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
+ * 
+ *             if key_ in self.attrs.keys():
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 113;
-        goto __pyx_L15;
-      }
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
- *             elif t == NPY_ULONG:       f[0] = 76  #"L"
- *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
- *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
- *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
+      /* "adios.pyx":1409
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 81;
-        goto __pyx_L15;
-      }
+    }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
- *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
- *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
+    /* "adios.pyx":1412
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 102;
-        goto __pyx_L15;
+    __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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
- *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
- *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
- *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
+      /* "adios.pyx":1413
+ * 
+ *             if key_ in self.attrs.keys():
+ *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             if '/'+key_ in self.attrs.keys():
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 100;
-        goto __pyx_L15;
+      __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1413, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
- *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
- *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
- *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
- *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
+      /* "adios.pyx":1412
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 103;
-        goto __pyx_L15;
-      }
+    }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
- *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
- *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
- *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
+    /* "adios.pyx":1415
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
+ * 
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 90;
-        (__pyx_v_f[1]) = 102;
-        __pyx_v_f = (__pyx_v_f + 1);
-        goto __pyx_L15;
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1415, __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_GOTREF(__pyx_t_9);
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
       }
+    }
+    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_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_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_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) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
- *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
- *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
- *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
- *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
+      /* "adios.pyx":1416
+ * 
+ *             if '/'+key_ in self.attrs.keys():
+ *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             for name in self.attrs.keys():
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 90;
-        (__pyx_v_f[1]) = 100;
-        __pyx_v_f = (__pyx_v_f + 1);
-        goto __pyx_L15;
+      __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_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_GOTREF(__pyx_t_9);
+      __pyx_t_8 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_8)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_r = __pyx_t_3;
+      __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
- *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
- *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
- *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
- *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
- *             else:
+      /* "adios.pyx":1415
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
+ * 
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 90;
-        (__pyx_v_f[1]) = 103;
-        __pyx_v_f = (__pyx_v_f + 1);
-        goto __pyx_L15;
-      }
+    }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
- *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
- *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
- *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
- *             else:
- *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+    /* "adios.pyx":1418
+ *                 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_4 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __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, 1418, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_10 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
+      if (likely(__pyx_t_10)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+        __Pyx_INCREF(__pyx_t_10);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_7, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+      __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_12(__pyx_t_7);
+        if (unlikely(!__pyx_t_3)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "adios.pyx":1420
+ *             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_GOTREF(__pyx_t_10);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+        }
+      }
+      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_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_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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 79;
-        goto __pyx_L15;
+      if (!__pyx_t_2) {
+      } else {
+        __pyx_t_1 = __pyx_t_2;
+        goto __pyx_L14_bool_binop_done;
       }
-      /*else*/ {
+      __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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+        }
+      }
+      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_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_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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_1 = __pyx_t_2;
+      __pyx_L14_bool_binop_done:;
+      if (__pyx_t_1) {
 
-        /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
- *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
- *             else:
- *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
- *             f += 1
- *         else:
+        /* "adios.pyx":1421
+ *                 #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_)             # <<<<<<<<<<<<<<
+ * 
+ *     def _readvar(self, args):
  */
-        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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_GOTREF(__pyx_t_3);
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
-        __Pyx_GIVEREF(__pyx_t_3);
-        __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1421, __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_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->file));
+        __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_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      __pyx_L15:;
+        __pyx_r = __pyx_t_10;
+        __pyx_t_10 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
- *             else:
- *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
- *             f += 1             # <<<<<<<<<<<<<<
- *         else:
- *             # Cython ignores struct boundary information ("T{...}"),
+        /* "adios.pyx":1420
+ *             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_v_f = (__pyx_v_f + 1);
-      goto __pyx_L13;
-    }
-    /*else*/ {
+      }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
- *             # Cython ignores struct boundary information ("T{...}"),
- *             # so don't output it
- *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
- *     return f
+      /* "adios.pyx":1418
+ *                 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_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_f = __pyx_t_9;
     }
-    __pyx_L13:;
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":797
- *     cdef tuple fields
+    /* "adios.pyx":1405
+ *             raise KeyError(varname)
  * 
- *     for childname in descr.names:             # <<<<<<<<<<<<<<
- *         fields = descr.fields[childname]
- *         child, new_offset = fields
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
   }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
- *             # so don't output it
- *             f = _util_dtypestring(child, f, end, offset)
- *     return f             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_r = __pyx_v_f;
-  goto __pyx_L0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":786
- *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+  /* "adios.pyx":1398
+ *                 self.attrs.keys())
  * 
- * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
- *     # Recursive utility function used in __getbuffer__ to get format
- *     # string. The new location in the format string is returned.
+ *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios.var._readattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_child);
-  __Pyx_XDECREF(__pyx_v_fields);
-  __Pyx_XDECREF(__pyx_v_childname);
-  __Pyx_XDECREF(__pyx_v_new_offset);
-  __Pyx_XDECREF(__pyx_v_t);
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_varname);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969
- * 
+/* "adios.pyx":1423
+ *                     return group(self.file, self.name + '/' + key_)
  * 
- * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
- *      cdef PyObject* baseptr
- *      if base is None:
+ *     def _readvar(self, args):             # <<<<<<<<<<<<<<
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:
  */
 
-static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
-  PyObject *__pyx_v_baseptr;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_21_readvar(PyObject *__pyx_v_self, PyObject *__pyx_v_args); /*proto*/
+static char __pyx_doc_5adios_3var_20_readvar[] = "var._readvar(self, args)";
+static PyObject *__pyx_pw_5adios_3var_21_readvar(PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  __Pyx_RefNannySetupContext("set_array_base", 0);
+  __Pyx_RefNannySetupContext("_readvar (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_20_readvar(((struct __pyx_obj_5adios_var *)__pyx_v_self), ((PyObject *)__pyx_v_args));
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":971
- * cdef inline void set_array_base(ndarray arr, object base):
- *      cdef PyObject* baseptr
- *      if base is None:             # <<<<<<<<<<<<<<
- *          baseptr = NULL
- *      else:
- */
-  __pyx_t_1 = (__pyx_v_base == Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":972
- *      cdef PyObject* baseptr
- *      if base is None:
- *          baseptr = NULL             # <<<<<<<<<<<<<<
- *      else:
- *          Py_INCREF(base) # important to do this before decref below!
- */
-    __pyx_v_baseptr = NULL;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_v_shape = NULL;
+  PyObject *__pyx_v_asel = NULL;
+  PyObject *__pyx_v_var = NULL;
+  PyObject *__pyx_v_idx = NULL;
+  PyObject *__pyx_v_obj = NULL;
+  PyObject *__pyx_v_v = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  struct __pyx_opt_args_5adios_3var_read __pyx_t_9;
+  PyObject *(*__pyx_t_10)(PyObject *);
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("_readvar", 0);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":974
- *          baseptr = NULL
- *      else:
- *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
- *          baseptr = <PyObject*>base
- *      Py_XDECREF(arr.base)
+  /* "adios.pyx":1424
+ * 
+ *     def _readvar(self, args):
+ *         shape = list(self.dims)             # <<<<<<<<<<<<<<
+ *         if self.nsteps > 1:
+ *             shape.insert(0, self.nsteps)
  */
-    Py_INCREF(__pyx_v_base);
+  __pyx_t_1 = PySequence_List(__pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_shape = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":975
- *      else:
- *          Py_INCREF(base) # important to do this before decref below!
- *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
- *      Py_XDECREF(arr.base)
- *      arr.base = baseptr
+  /* "adios.pyx":1425
+ *     def _readvar(self, args):
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
+ *             shape.insert(0, self.nsteps)
+ *         asel = sel.select(shape, args)
  */
-    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
-  }
-  __pyx_L3:;
+  __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
+  if (__pyx_t_2) {
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
- *          Py_INCREF(base) # important to do this before decref below!
- *          baseptr = <PyObject*>base
- *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
- *      arr.base = baseptr
+    /* "adios.pyx":1426
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:
+ *             shape.insert(0, self.nsteps)             # <<<<<<<<<<<<<<
+ *         asel = sel.select(shape, args)
  * 
  */
-  Py_XDECREF(__pyx_v_arr->base);
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1426, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *          baseptr = <PyObject*>base
- *      Py_XDECREF(arr.base)
- *      arr.base = baseptr             # <<<<<<<<<<<<<<
+    /* "adios.pyx":1425
+ *     def _readvar(self, args):
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
+ *             shape.insert(0, self.nsteps)
+ *         asel = sel.select(shape, args)
+ */
+  }
+
+  /* "adios.pyx":1427
+ *         if self.nsteps > 1:
+ *             shape.insert(0, self.nsteps)
+ *         asel = sel.select(shape, args)             # <<<<<<<<<<<<<<
  * 
- * cdef inline object get_array_base(ndarray arr):
+ *         if isinstance(asel, sel.SimpleSelection):
  */
-  __pyx_v_arr->base = __pyx_v_baseptr;
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  __pyx_t_6 = 0;
+  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);
+      __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_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;
+  }
+  __Pyx_INCREF(__pyx_v_shape);
+  __Pyx_GIVEREF(__pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_shape);
+  __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_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;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969
+  /* "adios.pyx":1429
+ *         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_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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_8 = (__pyx_t_2 != 0);
+  if (__pyx_t_8) {
+
+    /* "adios.pyx":1430
  * 
- * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
- *      cdef PyObject* baseptr
- *      if base is None:
+ *         if isinstance(asel, sel.SimpleSelection):
+ *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                 return self.read(offset=asel.sel[0][1:],
+ *                                  count=asel.sel[1][1:],
  */
+    __pyx_t_8 = ((__pyx_v_self->nsteps > 1) != 0);
+    if (__pyx_t_8) {
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
+      /* "adios.pyx":1431
+ *         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_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_GOTREF(__pyx_t_5);
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1431, __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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- *      arr.base = baseptr
- * 
- * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
- *     if arr.base is NULL:
- *         return None
+      /* "adios.pyx":1432
+ *             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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("get_array_base", 0);
+      /* "adios.pyx":1433
+ *                 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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * 
- * cdef inline object get_array_base(ndarray arr):
- *     if arr.base is NULL:             # <<<<<<<<<<<<<<
- *         return None
- *     else:
+      /* "adios.pyx":1434
+ *                                  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_1 = ((__pyx_v_arr->base == NULL) != 0);
-  if (__pyx_t_1) {
+      __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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":981
- * cdef inline object get_array_base(ndarray arr):
- *     if arr.base is NULL:
- *         return None             # <<<<<<<<<<<<<<
- *     else:
- *         return <object>arr.base
+      /* "adios.pyx":1435
+ *                                  scalar=asel.sel[3][1:],
+ *                                  from_steps=asel.sel[0][0],
+ *                                  nsteps=asel.sel[1][0],             # <<<<<<<<<<<<<<
+ *                                  step_scalar=asel.sel[3][0])
+ *             else:
  */
-    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(Py_None);
-    __pyx_r = Py_None;
-    goto __pyx_L0;
-  }
-  /*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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- *         return None
- *     else:
- *         return <object>arr.base             # <<<<<<<<<<<<<<
+      /* "adios.pyx":1436
+ *                                  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_XDECREF(__pyx_r);
-    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
-    __pyx_r = ((PyObject *)__pyx_v_arr->base);
-    goto __pyx_L0;
-  }
+      __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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- *      arr.base = baseptr
+      /* "adios.pyx":1431
+ *         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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      goto __pyx_L0;
+
+      /* "adios.pyx":1430
  * 
- * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
- *     if arr.base is NULL:
- *         return None
+ *         if isinstance(asel, sel.SimpleSelection):
+ *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                 return self.read(offset=asel.sel[0][1:],
+ *                                  count=asel.sel[1][1:],
  */
+    }
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static struct __pyx_vtabstruct_5adios_file __pyx_vtable_5adios_file;
+    /* "adios.pyx":1438
+ *                                  step_scalar=asel.sel[3][0])
+ *             else:
+ *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
+ *                                  count=asel.sel[1],
+ *                                  scalar=asel.sel[3],
+ */
+    /*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_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_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)
 
-static PyObject *__pyx_tp_new_5adios_file(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_5adios_file *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_file *)o);
-  p->__pyx_vtab = __pyx_vtabptr_5adios_file;
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
+      /* "adios.pyx":1439
+ *             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_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_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)
 
-static void __pyx_tp_dealloc_5adios_file(PyObject *o) {
-  struct __pyx_obj_5adios_file *p = (struct __pyx_obj_5adios_file *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->var);
-  Py_CLEAR(p->attr);
-  (*Py_TYPE(o)->tp_free)(o);
-}
+      /* "adios.pyx":1440
+ *                 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_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_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)
 
-static int __pyx_tp_traverse_5adios_file(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_file *p = (struct __pyx_obj_5adios_file *)o;
-  if (p->var) {
-    e = (*v)(p->var, a); if (e) return e;
-  }
-  if (p->attr) {
-    e = (*v)(p->attr, a); if (e) return e;
+      /* "adios.pyx":1438
+ *                                  step_scalar=asel.sel[3][0])
+ *             else:
+ *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
+ *                                  count=asel.sel[1],
+ *                                  scalar=asel.sel[3],
+ */
+      __pyx_t_9.__pyx_n = 5;
+      __pyx_t_9.offset = ((PyObject*)__pyx_t_1);
+      __pyx_t_9.count = ((PyObject*)__pyx_t_5);
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      goto __pyx_L0;
+    }
+
+    /* "adios.pyx":1429
+ *         asel = sel.select(shape, args)
+ * 
+ *         if isinstance(asel, sel.SimpleSelection):             # <<<<<<<<<<<<<<
+ *             if (self.nsteps) > 1:
+ *                 return self.read(offset=asel.sel[0][1:],
+ */
   }
-  return 0;
-}
 
-static int __pyx_tp_clear_5adios_file(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_file *p = (struct __pyx_obj_5adios_file *)o;
-  tmp = ((PyObject*)p->var);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->attr);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_5adios_file(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
-}
-
-static PyObject *__pyx_getprop_5adios_4file_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_4name_1__get__(o);
-}
+  /* "adios.pyx":1444
+ *                                  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_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_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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_2 = (__pyx_t_8 != 0);
+  if (__pyx_t_2) {
 
-static PyObject *__pyx_getprop_5adios_4file_nvars(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_5nvars_1__get__(o);
-}
+    /* "adios.pyx":1445
+ * 
+ *         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_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_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_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_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;
 
-static PyObject *__pyx_getprop_5adios_4file_nattrs(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_6nattrs_1__get__(o);
-}
+    /* "adios.pyx":1446
+ *         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_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_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)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-static PyObject *__pyx_getprop_5adios_4file_current_step(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_12current_step_1__get__(o);
-}
+    /* "adios.pyx":1447
+ *             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_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_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)
+    __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;
 
-static PyObject *__pyx_getprop_5adios_4file_last_step(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_9last_step_1__get__(o);
-}
+    /* "adios.pyx":1448
+ *             shape[asel.morder[0]] = 0
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
+ *                 if (self.nsteps) > 1:
+ *                     v = self.read(offset=obj[0][1:],
+ */
+    __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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_10)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_10(__pyx_t_4);
+        if (unlikely(!__pyx_t_7)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_7);
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_5);
+      __pyx_t_5 = __pyx_t_7;
+      __pyx_t_7 = 0;
 
-static PyObject *__pyx_getprop_5adios_4file_endianness(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_10endianness_1__get__(o);
-}
+      /* "adios.pyx":1449
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):
+ *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                     v = self.read(offset=obj[0][1:],
+ *                                   count=obj[1][1:],
+ */
+      __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
+      if (__pyx_t_2) {
 
-static PyObject *__pyx_getprop_5adios_4file_version(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_7version_1__get__(o);
-}
+        /* "adios.pyx":1450
+ *             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_GOTREF(__pyx_t_7);
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __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_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_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)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-static PyObject *__pyx_getprop_5adios_4file_file_sizec(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_10file_sizec_1__get__(o);
-}
+        /* "adios.pyx":1451
+ *                 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_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_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)
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-static PyObject *__pyx_getprop_5adios_4file_is_stream(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_9is_stream_1__get__(o);
-}
+        /* "adios.pyx":1452
+ *                     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_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_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)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-static PyObject *__pyx_getprop_5adios_4file_var(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_3var_1__get__(o);
-}
+        /* "adios.pyx":1453
+ *                                   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_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_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)
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-static int __pyx_setprop_5adios_4file_var(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_4file_3var_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_5adios_4file_3var_5__del__(o);
-  }
-}
+        /* "adios.pyx":1454
+ *                                   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_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_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)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-static PyObject *__pyx_getprop_5adios_4file_attr(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4file_4attr_1__get__(o);
-}
+        /* "adios.pyx":1455
+ *                                   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_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_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)
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-static int __pyx_setprop_5adios_4file_attr(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_4file_4attr_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_5adios_4file_4attr_5__del__(o);
-  }
-}
+        /* "adios.pyx":1450
+ *             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_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;
 
-static PyMethodDef __pyx_methods_5adios_file[] = {
-  {"__del__", (PyCFunction)__pyx_pw_5adios_4file_3__del__, METH_NOARGS, __pyx_doc_5adios_4file_2__del__},
-  {"close", (PyCFunction)__pyx_pw_5adios_4file_5close, METH_NOARGS, __pyx_doc_5adios_4file_4close},
-  {"printself", (PyCFunction)__pyx_pw_5adios_4file_7printself, METH_NOARGS, __pyx_doc_5adios_4file_6printself},
-  {"advance", (PyCFunction)__pyx_pw_5adios_4file_9advance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_4file_8advance},
-  {0, 0, 0, 0}
-};
+        /* "adios.pyx":1449
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):
+ *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                     v = self.read(offset=obj[0][1:],
+ *                                   count=obj[1][1:],
+ */
+        goto __pyx_L8;
+      }
 
-static struct PyGetSetDef __pyx_getsets_5adios_file[] = {
-  {(char *)"name", __pyx_getprop_5adios_4file_name, 0, __pyx_k_The_filename_or_stream_name_ass, 0},
-  {(char *)"nvars", __pyx_getprop_5adios_4file_nvars, 0, __pyx_k_The_number_of_variables, 0},
-  {(char *)"nattrs", __pyx_getprop_5adios_4file_nattrs, 0, __pyx_k_The_number_of_attributes, 0},
-  {(char *)"current_step", __pyx_getprop_5adios_4file_current_step, 0, __pyx_k_The_current_timestep_index, 0},
-  {(char *)"last_step", __pyx_getprop_5adios_4file_last_step, 0, __pyx_k_The_last_timestep_index, 0},
-  {(char *)"endianness", __pyx_getprop_5adios_4file_endianness, 0, __pyx_k_The_endianness_of_the_stored_da, 0},
-  {(char *)"version", __pyx_getprop_5adios_4file_version, 0, __pyx_k_The_version_of_Adios, 0},
-  {(char *)"file_sizec", __pyx_getprop_5adios_4file_file_sizec, 0, __pyx_k_The_size_of_Adios_file, 0},
-  {(char *)"is_stream", __pyx_getprop_5adios_4file_is_stream, 0, __pyx_k_Indicating_reader_type_file_rea, 0},
-  {(char *)"var", __pyx_getprop_5adios_4file_var, __pyx_setprop_5adios_4file_var, __pyx_k_var_dict, 0},
-  {(char *)"attr", __pyx_getprop_5adios_4file_attr, __pyx_setprop_5adios_4file_attr, __pyx_k_attr_dict, 0},
-  {0, 0, 0, 0, 0}
-};
+      /* "adios.pyx":1457
+ *                                   step_scalar=obj[3][0])
+ *                 else:
+ *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
+ *                                   count=obj[1],
+ *                                   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_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)
 
-static PySequenceMethods __pyx_tp_as_sequence_file = {
-  0, /*sq_length*/
-  0, /*sq_concat*/
-  0, /*sq_repeat*/
-  __pyx_sq_item_5adios_file, /*sq_item*/
-  0, /*sq_slice*/
-  0, /*sq_ass_item*/
-  0, /*sq_ass_slice*/
-  0, /*sq_contains*/
-  0, /*sq_inplace_concat*/
-  0, /*sq_inplace_repeat*/
-};
+        /* "adios.pyx":1458
+ *                 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_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)
 
-static PyMappingMethods __pyx_tp_as_mapping_file = {
-  0, /*mp_length*/
-  __pyx_pw_5adios_4file_11__getitem__, /*mp_subscript*/
-  0, /*mp_ass_subscript*/
-};
+        /* "adios.pyx":1459
+ *                     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_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)
 
-static PyTypeObject __pyx_type_5adios_file = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.file", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_file), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_file, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_5adios_4file_13__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  &__pyx_tp_as_sequence_file, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_file, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "file(char *fname, char *method_name='BP', MPI_Comm comm=MPI_COMM_WORLD, is_stream=False, ADIOS_LOCKMODE lock_mode=ADIOS_LOCKMODE_ALL, float timeout_sec=0.0)\n\n    file class for Adios file read and write.\n\n    Args:\n        fname (str): filename.\n        method_name (str, optional): Adios read method (default: 'BP').\n        comm (MPI_Comm, optional): MPI_comm for parallel read/write (default: MPI_COMM_WORLD).\n        is_stream (bool, optional): Set True if use stream reader (d [...]
-  __pyx_tp_traverse_5adios_file, /*tp_traverse*/
-  __pyx_tp_clear_5adios_file, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_file, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_5adios_file, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_4file_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_file, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-static struct __pyx_vtabstruct_5adios_var __pyx_vtable_5adios_var;
+        /* "adios.pyx":1457
+ *                                   step_scalar=obj[3][0])
+ *                 else:
+ *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
+ *                                   count=obj[1],
+ *                                   scalar=obj[3],
+ */
+        __pyx_t_9.__pyx_n = 5;
+        __pyx_t_9.offset = ((PyObject*)__pyx_t_11);
+        __pyx_t_9.count = ((PyObject*)__pyx_t_1);
+        __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_GOTREF(__pyx_t_12);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_12);
+        __pyx_t_12 = 0;
+      }
+      __pyx_L8:;
 
-static PyObject *__pyx_tp_new_5adios_var(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_5adios_var *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_var *)o);
-  p->__pyx_vtab = __pyx_vtabptr_5adios_var;
-  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
+      /* "adios.pyx":1463
+ *                                   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_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_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_GOTREF(__pyx_t_12);
+      __Pyx_INCREF(__pyx_v_var);
+      __Pyx_GIVEREF(__pyx_v_var);
+      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_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_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_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_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_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)
+      __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_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __Pyx_DECREF_SET(__pyx_v_var, __pyx_t_13);
+      __pyx_t_13 = 0;
 
-static void __pyx_tp_dealloc_5adios_var(PyObject *o) {
-  struct __pyx_obj_5adios_var *p = (struct __pyx_obj_5adios_var *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->file);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->dtype);
-  Py_CLEAR(p->dims);
-  (*Py_TYPE(o)->tp_free)(o);
-}
+      /* "adios.pyx":1448
+ *             shape[asel.morder[0]] = 0
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
+ *                 if (self.nsteps) > 1:
+ *                     v = self.read(offset=obj[0][1:],
+ */
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-static int __pyx_tp_traverse_5adios_var(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_var *p = (struct __pyx_obj_5adios_var *)o;
-  if (p->file) {
-    e = (*v)(((PyObject*)p->file), a); if (e) return e;
-  }
-  if (p->dtype) {
-    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
-  }
-  if (p->dims) {
-    e = (*v)(p->dims, a); if (e) return e;
-  }
-  return 0;
-}
+    /* "adios.pyx":1465
+ *                 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_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_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_GOTREF(__pyx_t_4);
+    __pyx_t_12 = NULL;
+    __pyx_t_6 = 0;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_13))) {
+      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+      if (likely(__pyx_t_12)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+        __Pyx_INCREF(__pyx_t_12);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_13, function);
+        __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_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;
+    }
+    __Pyx_INCREF(__pyx_v_var);
+    __Pyx_GIVEREF(__pyx_v_var);
+    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_v_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_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;
 
-static int __pyx_tp_clear_5adios_var(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_var *p = (struct __pyx_obj_5adios_var *)o;
-  tmp = ((PyObject*)p->file);
-  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->dtype);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->dims);
-  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_5adios_var(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
-}
+    /* "adios.pyx":1467
+ *             var = np.reshape(var, asel.mshape)
+ * 
+ *             return var             # <<<<<<<<<<<<<<
+ * 
+ *         else:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_var);
+    __pyx_r = __pyx_v_var;
+    goto __pyx_L0;
 
-static PyObject *__pyx_getprop_5adios_3var_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_3var_4name_1__get__(o);
-}
+    /* "adios.pyx":1444
+ *                                  nsteps=1)
+ * 
+ *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
+ *             shape = list(asel.sel[0][1])
+ *             shape[asel.morder[0]] = 0
+ */
+  }
 
-static PyObject *__pyx_getprop_5adios_3var_varid(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_3var_5varid_1__get__(o);
-}
+  /* "adios.pyx":1470
+ * 
+ *         else:
+ *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
+ * 
+ *     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_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)
+  }
 
-static PyObject *__pyx_getprop_5adios_3var_dtype(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_3var_5dtype_1__get__(o);
-}
+  /* "adios.pyx":1423
+ *                     return group(self.file, self.name + '/' + key_)
+ * 
+ *     def _readvar(self, args):             # <<<<<<<<<<<<<<
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:
+ */
 
-static PyObject *__pyx_getprop_5adios_3var_ndim(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_3var_4ndim_1__get__(o);
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios.var._readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XDECREF(__pyx_v_asel);
+  __Pyx_XDECREF(__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_idx);
+  __Pyx_XDECREF(__pyx_v_obj);
+  __Pyx_XDECREF(__pyx_v_v);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyObject *__pyx_getprop_5adios_3var_dims(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_3var_4dims_1__get__(o);
-}
+/* "adios.pyx":1472
+ *             raise NotImplementedError("Not implemented yet")
+ * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         if isinstance(args, str):
+ *             return self._readattr(args)
+ */
 
-static PyObject *__pyx_getprop_5adios_3var_nsteps(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_3var_6nsteps_1__get__(o);
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_22__getitem__(((struct __pyx_obj_5adios_var *)__pyx_v_self), ((PyObject *)__pyx_v_args));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyMethodDef __pyx_methods_5adios_var[] = {
-  {"__del__", (PyCFunction)__pyx_pw_5adios_3var_3__del__, METH_NOARGS, __pyx_doc_5adios_3var_2__del__},
-  {"close", (PyCFunction)__pyx_pw_5adios_3var_5close, METH_NOARGS, __pyx_doc_5adios_3var_4close},
-  {"advance", (PyCFunction)__pyx_pw_5adios_3var_7advance, METH_NOARGS, __pyx_doc_5adios_3var_6advance},
-  {"read", (PyCFunction)__pyx_pw_5adios_3var_9read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_3var_8read},
-  {"printself", (PyCFunction)__pyx_pw_5adios_3var_11printself, METH_NOARGS, __pyx_doc_5adios_3var_10printself},
-  {0, 0, 0, 0}
-};
+static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_r = NULL;
+  __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("__getitem__", 0);
 
-static struct PyGetSetDef __pyx_getsets_5adios_var[] = {
-  {(char *)"name", __pyx_getprop_5adios_3var_name, 0, __pyx_k_The_variable_name, 0},
-  {(char *)"varid", __pyx_getprop_5adios_3var_varid, 0, __pyx_k_Internal_variable_id, 0},
-  {(char *)"dtype", __pyx_getprop_5adios_3var_dtype, 0, __pyx_k_Variable_type_as_in_numpy_dtype, 0},
-  {(char *)"ndim", __pyx_getprop_5adios_3var_ndim, 0, __pyx_k_The_number_of_dimensions_of_the, 0},
-  {(char *)"dims", __pyx_getprop_5adios_3var_dims, 0, __pyx_k_The_shape_of_the_variable, 0},
-  {(char *)"nsteps", __pyx_getprop_5adios_3var_nsteps, 0, __pyx_k_The_number_of_time_steps_of_the, 0},
-  {0, 0, 0, 0, 0}
-};
+  /* "adios.pyx":1473
+ * 
+ *     def __getitem__(self, args):
+ *         if isinstance(args, str):             # <<<<<<<<<<<<<<
+ *             return self._readattr(args)
+ *         else:
+ */
+  __pyx_t_1 = PyString_Check(__pyx_v_args); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
 
-static PySequenceMethods __pyx_tp_as_sequence_var = {
-  0, /*sq_length*/
-  0, /*sq_concat*/
-  0, /*sq_repeat*/
-  __pyx_sq_item_5adios_var, /*sq_item*/
-  0, /*sq_slice*/
-  0, /*sq_ass_item*/
-  0, /*sq_ass_slice*/
-  0, /*sq_contains*/
-  0, /*sq_inplace_concat*/
-  0, /*sq_inplace_repeat*/
-};
+    /* "adios.pyx":1474
+ *     def __getitem__(self, args):
+ *         if isinstance(args, str):
+ *             return self._readattr(args)             # <<<<<<<<<<<<<<
+ *         else:
+ *             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_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1474, __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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
 
-static PyMappingMethods __pyx_tp_as_mapping_var = {
-  0, /*mp_length*/
-  __pyx_pw_5adios_3var_15__getitem__, /*mp_subscript*/
-  0, /*mp_ass_subscript*/
-};
+    /* "adios.pyx":1473
+ * 
+ *     def __getitem__(self, args):
+ *         if isinstance(args, str):             # <<<<<<<<<<<<<<
+ *             return self._readattr(args)
+ *         else:
+ */
+  }
 
-static PyTypeObject __pyx_type_5adios_var = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.var", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_var), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_var, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_5adios_3var_13__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  &__pyx_tp_as_sequence_var, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_var, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "var(file file, char *name)\n\n    Adios variable class.\n\n    Unlike attributes whose values are populated on initialization,\n    variable's values will be returned by explicitly calling read() or\n    array access interface ([]).  \n\n    Args:\n        file (file): Associated file class\n        name (str): variable name\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
-  __pyx_tp_traverse_5adios_var, /*tp_traverse*/
-  __pyx_tp_clear_5adios_var, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_var, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_5adios_var, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_3var_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_var, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static PyObject *__pyx_tp_new_5adios_attr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_5adios_attr *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  /* "adios.pyx":1476
+ *             return self._readattr(args)
+ *         else:
+ *             return self._readvar(args)             # <<<<<<<<<<<<<<
+ * 
+ *     ## For access var/attr/group as an attribute
+ */
+  /*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_GOTREF(__pyx_t_4);
+    __pyx_t_6 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
   }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_attr *)o);
-  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
-  return o;
+
+  /* "adios.pyx":1472
+ *             raise NotImplementedError("Not implemented yet")
+ * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         if isinstance(args, str):
+ *             return self._readattr(args)
+ */
+
+  /* function exit code */
+  __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.var.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static void __pyx_tp_dealloc_5adios_attr(PyObject *o) {
-  struct __pyx_obj_5adios_attr *p = (struct __pyx_obj_5adios_attr *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->file);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->dtype);
-  Py_CLEAR(p->value);
-  (*Py_TYPE(o)->tp_free)(o);
+/* "adios.pyx":1479
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_25__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_5adios_3var_25__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_24__getattr__(((struct __pyx_obj_5adios_var *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static int __pyx_tp_traverse_5adios_attr(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_attr *p = (struct __pyx_obj_5adios_attr *)o;
-  if (p->file) {
-    e = (*v)(((PyObject*)p->file), a); if (e) return e;
-  }
-  if (p->dtype) {
-    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
+static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__getattr__", 0);
+
+  /* "adios.pyx":1480
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):
+ *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
   }
-  if (p->value) {
-    e = (*v)(((PyObject*)p->value), a); if (e) return e;
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
-  return 0;
-}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-static int __pyx_tp_clear_5adios_attr(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_attr *p = (struct __pyx_obj_5adios_attr *)o;
-  tmp = ((PyObject*)p->file);
-  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->dtype);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->value);
-  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
+  /* "adios.pyx":1479
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
+ * 
+ */
 
-static PyObject *__pyx_getprop_5adios_4attr_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4attr_4name_1__get__(o);
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.var.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyObject *__pyx_getprop_5adios_4attr_dtype(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4attr_5dtype_1__get__(o);
-}
+/* "adios.pyx":1483
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
 
-static PyObject *__pyx_getprop_5adios_4attr_value(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_4attr_5value_1__get__(o);
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_27__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_3var_26__dir__[] = "var.__dir__(self)";
+static PyObject *__pyx_pw_5adios_3var_27__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dir__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_26__dir__(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyMethodDef __pyx_methods_5adios_attr[] = {
-  {0, 0, 0, 0}
-};
+static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_v_k0 = NULL;
+  PyObject *__pyx_v_k2 = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__dir__", 0);
 
-static struct PyGetSetDef __pyx_getsets_5adios_attr[] = {
-  {(char *)"name", __pyx_getprop_5adios_4attr_name, 0, __pyx_k_The_attribute_name, 0},
-  {(char *)"dtype", __pyx_getprop_5adios_4attr_dtype, 0, __pyx_k_The_attribute_type_as_in_numpy, 0},
-  {(char *)"value", __pyx_getprop_5adios_4attr_value, 0, __pyx_k_The_attribute_s_value, 0},
-  {0, 0, 0, 0, 0}
-};
+  /* "adios.pyx":1484
+ *     ## 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_GOTREF(__pyx_t_1);
+  __pyx_v_k0 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-static PyTypeObject __pyx_type_5adios_attr = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.attr", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_attr), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_attr, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_5adios_4attr_3__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "attr(file file, char *name)\n\n    Adios attribute class.\n    \n    Attribute values are loaded on initialization.\n\n    Args:\n        attr_name (str): attribute name\n\n    Raises:\n        KeyError: If no attribute name exists.\n\n    Note:\n        Users do not need to create this class manually.        \n    ", /*tp_doc*/
-  __pyx_tp_traverse_5adios_attr, /*tp_traverse*/
-  __pyx_tp_clear_5adios_attr, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_attr, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_5adios_attr, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_4attr_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_attr, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+  /* "adios.pyx":1487
+ *         ## 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_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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1487, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k2 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-static PyObject *__pyx_tp_new_5adios_smartdict(PyTypeObject *t, PyObject *a, PyObject *k) {
-  struct __pyx_obj_5adios_smartdict *p;
-  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_smartdict *)o);
-  p->factory = Py_None; Py_INCREF(Py_None);
-  return o;
-}
+  /* "adios.pyx":1488
+ *         ## E.g., f['/attr1'] == f.attr1
+ *         k2 = normalize_key(self.attrs.keys())
+ *         return k0 + k2             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-static void __pyx_tp_dealloc_5adios_smartdict(PyObject *o) {
-  struct __pyx_obj_5adios_smartdict *p = (struct __pyx_obj_5adios_smartdict *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->factory);
-  PyObject_GC_Track(o);
-  (&PyDict_Type)->tp_dealloc(o);
-}
+  /* "adios.pyx":1483
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
 
-static int __pyx_tp_traverse_5adios_smartdict(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_smartdict *p = (struct __pyx_obj_5adios_smartdict *)o;
-  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
-  if (p->factory) {
-    e = (*v)(p->factory, a); if (e) return e;
-  }
-  return 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios.var.__dir__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_k0);
+  __Pyx_XDECREF(__pyx_v_k2);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static int __pyx_tp_clear_5adios_smartdict(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_smartdict *p = (struct __pyx_obj_5adios_smartdict *)o;
-  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
-  tmp = ((PyObject*)p->factory);
-  p->factory = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
+/* "adios.pyx":1491
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.attrs.keys()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_3var_29keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_3var_28keys[] = "var.keys(self)";
+static PyObject *__pyx_pw_5adios_3var_29keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_3var_28keys(((struct __pyx_obj_5adios_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static int __pyx_mp_ass_subscript_5adios_smartdict(PyObject *o, PyObject *i, PyObject *v) {
-  if (v) {
-    return __pyx_pw_5adios_9smartdict_3__setitem__(o, i, v);
+static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("keys", 0);
+
+  /* "adios.pyx":1492
+ *     ## Require for dictionary key completion
+ *     def keys(self):
+ *         return self.attrs.keys()             # <<<<<<<<<<<<<<
+ * 
+ * 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
   }
-  else {
-    if ((&PyDict_Type)->tp_as_mapping && (&PyDict_Type)->tp_as_mapping->mp_ass_subscript)
-      return (&PyDict_Type)->tp_as_mapping->mp_ass_subscript(o, i, v);
-    PyErr_Format(PyExc_NotImplementedError,
-      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
-    return -1;
+  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_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_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":1491
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.attrs.keys()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.var.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyMethodDef __pyx_methods_5adios_smartdict[] = {
-  {0, 0, 0, 0}
-};
+/* "adios.pyx":1516
+ *     property name:
+ *         """ The attribute name """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
 
-static PyMappingMethods __pyx_tp_as_mapping_smartdict = {
-  0, /*mp_length*/
-  0, /*mp_subscript*/
-  __pyx_mp_ass_subscript_5adios_smartdict, /*mp_ass_subscript*/
-};
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4attr_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4attr_4name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4attr_4name___get__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
 
-static PyTypeObject __pyx_type_5adios_smartdict = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.smartdict", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_smartdict), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_smartdict, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_smartdict, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "smartdict(factory)", /*tp_doc*/
-  __pyx_tp_traverse_5adios_smartdict, /*tp_traverse*/
-  __pyx_tp_clear_5adios_smartdict, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_smartdict, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_9smartdict_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_smartdict, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-static PyObject *__pyx_tp_new_5adios_writer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_5adios_writer *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_writer *)o);
-  p->fname = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->gname = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->method = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->method_params = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
+static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-static void __pyx_tp_dealloc_5adios_writer(PyObject *o) {
-  struct __pyx_obj_5adios_writer *p = (struct __pyx_obj_5adios_writer *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->fname);
-  Py_CLEAR(p->gname);
-  Py_CLEAR(p->method);
-  Py_CLEAR(p->method_params);
-  Py_CLEAR(p->var);
-  Py_CLEAR(p->attr);
-  (*Py_TYPE(o)->tp_free)(o);
-}
+  /* "adios.pyx":1517
+ *         """ The attribute name """
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
+ * 
+ *     property dtype:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
+  goto __pyx_L0;
 
-static int __pyx_tp_traverse_5adios_writer(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_writer *p = (struct __pyx_obj_5adios_writer *)o;
-  if (p->var) {
-    e = (*v)(p->var, a); if (e) return e;
-  }
-  if (p->attr) {
-    e = (*v)(p->attr, a); if (e) return e;
-  }
-  return 0;
-}
+  /* "adios.pyx":1516
+ *     property name:
+ *         """ The attribute name """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
 
-static int __pyx_tp_clear_5adios_writer(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_writer *p = (struct __pyx_obj_5adios_writer *)o;
-  tmp = ((PyObject*)p->var);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->attr);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_5adios_writer(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-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);
-  }
-  else {
-    PyErr_Format(PyExc_NotImplementedError,
-      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
-    return -1;
-  }
-}
+/* "adios.pyx":1521
+ *     property dtype:
+ *         """ The attribute type as in numpy.dtype """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
+ * 
+ */
 
-static PyObject *__pyx_getprop_5adios_6writer_fname(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_6writer_5fname_1__get__(o);
-}
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4attr_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4attr_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4attr_5dtype___get__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
 
-static PyObject *__pyx_getprop_5adios_6writer_gname(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_6writer_5gname_1__get__(o);
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyObject *__pyx_getprop_5adios_6writer_is_noxml(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_6writer_8is_noxml_1__get__(o);
-}
+static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-static PyObject *__pyx_getprop_5adios_6writer_var(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_6writer_3var_1__get__(o);
-}
+  /* "adios.pyx":1522
+ *         """ The attribute type as in numpy.dtype """
+ *         def __get__(self):
+ *             return self.dtype             # <<<<<<<<<<<<<<
+ * 
+ *     property value:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
+  goto __pyx_L0;
+
+  /* "adios.pyx":1521
+ *     property dtype:
+ *         """ The attribute type as in numpy.dtype """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
+ * 
+ */
 
-static PyObject *__pyx_getprop_5adios_6writer_attr(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_6writer_4attr_1__get__(o);
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-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},
-  {0, 0, 0, 0}
-};
+/* "adios.pyx":1526
+ *     property value:
+ *         """ The attribute's value """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if (self.value.ndim == 0):
+ *                 return np.asscalar(self.value)
+ */
 
-static struct PyGetSetDef __pyx_getsets_5adios_writer[] = {
-  {(char *)"fname", __pyx_getprop_5adios_6writer_fname, 0, __pyx_k_The_filename_to_write, 0},
-  {(char *)"gname", __pyx_getprop_5adios_6writer_gname, 0, __pyx_k_The_groupname_associated_with_t, 0},
-  {(char *)"is_noxml", __pyx_getprop_5adios_6writer_is_noxml, 0, __pyx_k_Boolean_to_indicate_using_No_XM, 0},
-  {(char *)"var", __pyx_getprop_5adios_6writer_var, 0, __pyx_k_Dictionary_of_variables_to_writ, 0},
-  {(char *)"attr", __pyx_getprop_5adios_6writer_attr, 0, __pyx_k_Dictionary_of_attributes_to_wri, 0},
-  {0, 0, 0, 0, 0}
-};
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4attr_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4attr_5value_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4attr_5value___get__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
 
-static PySequenceMethods __pyx_tp_as_sequence_writer = {
-  0, /*sq_length*/
-  0, /*sq_concat*/
-  0, /*sq_repeat*/
-  __pyx_sq_item_5adios_writer, /*sq_item*/
-  0, /*sq_slice*/
-  0, /*sq_ass_item*/
-  0, /*sq_ass_slice*/
-  0, /*sq_contains*/
-  0, /*sq_inplace_concat*/
-  0, /*sq_inplace_repeat*/
-};
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-static PyMappingMethods __pyx_tp_as_mapping_writer = {
-  0, /*mp_length*/
-  __pyx_pw_5adios_6writer_13__getitem__, /*mp_subscript*/
-  __pyx_mp_ass_subscript_5adios_writer, /*mp_ass_subscript*/
-};
+static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-static PyTypeObject __pyx_type_5adios_writer = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.writer", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_writer), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_writer, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_5adios_6writer_17__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  &__pyx_tp_as_sequence_writer, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_writer, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "writer(char *fname, bool is_noxml=True, MPI_Comm comm=MPI_COMM_WORLD)\n\n    writer class for Adios write.\n\n    Args:\n        fname (str): filename.\n        is_noxml (bool, optional): Set True if use noxml APIs (default: True).\n        comm (MPI_Comm, optional): MPI_comm for parallel read/write (default: MPI_COMM_WORLD).\n\n    Example:\n    \n    >>> import adios as ad\n    >>> f = ad.writer('adiosfile.bp')\n    \n    ", /*tp_doc*/
-  __pyx_tp_traverse_5adios_writer, /*tp_traverse*/
-  __pyx_tp_clear_5adios_writer, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_writer, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_5adios_writer, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_6writer_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_writer, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+  /* "adios.pyx":1527
+ *         """ The attribute's value """
+ *         def __get__(self):
+ *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
+ *                 return np.asscalar(self.value)
+ *             else:
+ */
+  __pyx_t_1 = ((__pyx_v_self->value->nd == 0) != 0);
+  if (__pyx_t_1) {
 
-static PyObject *__pyx_tp_new_5adios_attrinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_5adios_attrinfo *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+    /* "adios.pyx":1528
+ *         def __get__(self):
+ *             if (self.value.ndim == 0):
+ *                 return np.asscalar(self.value)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 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_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_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "adios.pyx":1527
+ *         """ The attribute's value """
+ *         def __get__(self):
+ *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
+ *                 return np.asscalar(self.value)
+ *             else:
+ */
   }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_attrinfo *)o);
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->dtype = Py_None; Py_INCREF(Py_None);
-  p->value = Py_None; Py_INCREF(Py_None);
-  return o;
-}
 
-static void __pyx_tp_dealloc_5adios_attrinfo(PyObject *o) {
-  struct __pyx_obj_5adios_attrinfo *p = (struct __pyx_obj_5adios_attrinfo *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  /* "adios.pyx":1530
+ *                 return np.asscalar(self.value)
+ *             else:
+ *                 return self.value             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, file file, str name):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
+    __pyx_r = ((PyObject *)__pyx_v_self->value);
+    goto __pyx_L0;
   }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->dtype);
-  Py_CLEAR(p->value);
-  (*Py_TYPE(o)->tp_free)(o);
+
+  /* "adios.pyx":1526
+ *     property value:
+ *         """ The attribute's value """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if (self.value.ndim == 0):
+ *                 return np.asscalar(self.value)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios.attr.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static int __pyx_tp_traverse_5adios_attrinfo(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_attrinfo *p = (struct __pyx_obj_5adios_attrinfo *)o;
-  if (p->dtype) {
-    e = (*v)(p->dtype, a); if (e) return e;
-  }
-  if (p->value) {
-    e = (*v)(p->value, a); if (e) return e;
+/* "adios.pyx":1532
+ *                 return self.value
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_5adios_file *__pyx_v_file = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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_file)) != 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("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1532, __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)
+      }
+    } 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_file = ((struct __pyx_obj_5adios_file *)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
   }
-  return 0;
-}
+  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_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)
+  __pyx_r = __pyx_pf_5adios_4attr___init__(((struct __pyx_obj_5adios_attr *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
-static int __pyx_tp_clear_5adios_attrinfo(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_attrinfo *p = (struct __pyx_obj_5adios_attrinfo *)o;
-  tmp = ((PyObject*)p->dtype);
-  p->dtype = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->value);
-  p->value = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyObject *__pyx_getprop_5adios_8attrinfo_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_8attrinfo_4name_1__get__(o);
-}
+static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, PyObject *__pyx_v_name) {
+  int64_t __pyx_v_p;
+  ADIOS_DATATYPES __pyx_v_atype;
+  int __pyx_v_bytes;
+  PyObject *__pyx_v_strlist = 0;
+  int __pyx_v_len;
+  int __pyx_v_err;
+  int __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  char const *__pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  struct __pyx_opt_args_5adios_adios2npdtype __pyx_t_6;
+  size_t __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  __Pyx_RefNannySetupContext("__init__", 0);
 
-static PyObject *__pyx_getprop_5adios_8attrinfo_is_static(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_8attrinfo_9is_static_1__get__(o);
-}
+  /* "adios.pyx":1533
+ * 
+ *     def __init__(self, file file, str name):
+ *         self.file = file             # <<<<<<<<<<<<<<
+ *         self.name = name
+ * 
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_v_file));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
+  __Pyx_GOTREF(__pyx_v_self->file);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
+  __pyx_v_self->file = __pyx_v_file;
 
-static PyObject *__pyx_getprop_5adios_8attrinfo_dtype(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_8attrinfo_5dtype_1__get__(o);
-}
+  /* "adios.pyx":1534
+ *     def __init__(self, file file, str name):
+ *         self.file = file
+ *         self.name = name             # <<<<<<<<<<<<<<
+ * 
+ *         cdef int64_t p
+ */
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
+  __Pyx_GOTREF(__pyx_v_self->name);
+  __Pyx_DECREF(__pyx_v_self->name);
+  __pyx_v_self->name = __pyx_v_name;
 
-static PyObject *__pyx_getprop_5adios_8attrinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_8attrinfo_5value_1__get__(o);
-}
+  /* "adios.pyx":1542
+ *         cdef int len
+ * 
+ *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)             # <<<<<<<<<<<<<<
+ * 
+ *         if err == 0:
+ */
+  __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_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_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;
 
-static int __pyx_setprop_5adios_8attrinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_8attrinfo_5value_3__set__(o, v);
-  }
-  else {
-    PyErr_SetString(PyExc_NotImplementedError, "__del__");
-    return -1;
-  }
-}
+  /* "adios.pyx":1544
+ *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
+ * 
+ *         if err == 0:             # <<<<<<<<<<<<<<
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ */
+  __pyx_t_4 = ((__pyx_v_err == 0) != 0);
+  if (__pyx_t_4) {
 
-static PyMethodDef __pyx_methods_5adios_attrinfo[] = {
-  {"define", (PyCFunction)__pyx_pw_5adios_8attrinfo_3define, METH_O, __pyx_doc_5adios_8attrinfo_2define},
-  {0, 0, 0, 0}
-};
+    /* "adios.pyx":1545
+ * 
+ *         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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (__pyx_t_4) {
 
-static struct PyGetSetDef __pyx_getsets_5adios_attrinfo[] = {
-  {(char *)"name", __pyx_getprop_5adios_8attrinfo_name, 0, 0, 0},
-  {(char *)"is_static", __pyx_getprop_5adios_8attrinfo_is_static, 0, 0, 0},
-  {(char *)"dtype", __pyx_getprop_5adios_8attrinfo_dtype, 0, 0, 0},
-  {(char *)"value", __pyx_getprop_5adios_8attrinfo_value, __pyx_setprop_5adios_8attrinfo_value, 0, 0},
-  {0, 0, 0, 0, 0}
-};
+      /* "adios.pyx":1546
+ *         if err == 0:
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal             # <<<<<<<<<<<<<<
+ *             self.dtype = adios2npdtype(atype, bytes)
+ *             if atype == DATATYPE.string_array:
+ */
+      __pyx_v_bytes = (__pyx_v_bytes - 1);
 
-static PyTypeObject __pyx_type_5adios_attrinfo = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.attrinfo", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_attrinfo), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_attrinfo, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_5adios_8attrinfo_5__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "attrinfo(char *name, value=None, dtype=None, bool is_static=True)", /*tp_doc*/
-  __pyx_tp_traverse_5adios_attrinfo, /*tp_traverse*/
-  __pyx_tp_clear_5adios_attrinfo, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_attrinfo, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_5adios_attrinfo, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_8attrinfo_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_attrinfo, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+      /* "adios.pyx":1545
+ * 
+ *         if err == 0:
+ *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)
+ */
+    }
 
-static PyObject *__pyx_tp_new_5adios_varinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_5adios_varinfo *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_5adios_varinfo *)o);
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->ldim = Py_None; Py_INCREF(Py_None);
-  p->gdim = Py_None; Py_INCREF(Py_None);
-  p->offset = Py_None; Py_INCREF(Py_None);
-  p->value = Py_None; Py_INCREF(Py_None);
-  return o;
-}
+    /* "adios.pyx":1547
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)             # <<<<<<<<<<<<<<
+ *             if atype == DATATYPE.string_array:
+ *                 strlist = list()
+ */
+    __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_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->dtype);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
+    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
+    __pyx_t_1 = 0;
 
-static void __pyx_tp_dealloc_5adios_varinfo(PyObject *o) {
-  struct __pyx_obj_5adios_varinfo *p = (struct __pyx_obj_5adios_varinfo *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->ldim);
-  Py_CLEAR(p->gdim);
-  Py_CLEAR(p->offset);
-  Py_CLEAR(p->value);
-  (*Py_TYPE(o)->tp_free)(o);
-}
+    /* "adios.pyx":1548
+ *                 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_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_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_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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (__pyx_t_4) {
 
-static int __pyx_tp_traverse_5adios_varinfo(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios_varinfo *p = (struct __pyx_obj_5adios_varinfo *)o;
-  if (p->ldim) {
-    e = (*v)(p->ldim, a); if (e) return e;
-  }
-  if (p->gdim) {
-    e = (*v)(p->gdim, a); if (e) return e;
-  }
-  if (p->offset) {
-    e = (*v)(p->offset, a); if (e) return e;
-  }
-  if (p->value) {
-    e = (*v)(p->value, a); if (e) return e;
-  }
-  return 0;
-}
+      /* "adios.pyx":1549
+ *             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_GOTREF(__pyx_t_5);
+      __pyx_v_strlist = ((PyObject*)__pyx_t_5);
+      __pyx_t_5 = 0;
 
-static int __pyx_tp_clear_5adios_varinfo(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios_varinfo *p = (struct __pyx_obj_5adios_varinfo *)o;
-  tmp = ((PyObject*)p->ldim);
-  p->ldim = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->gdim);
-  p->gdim = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->offset);
-  p->offset = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->value);
-  p->value = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
+      /* "adios.pyx":1550
+ *             if atype == DATATYPE.string_array:
+ *                 strlist = list()
+ *                 len = <int>(bytes/sizeof(p))             # <<<<<<<<<<<<<<
+ *                 for i in range(len):
+ *                     strlist.append((<char **>p)[i])
+ */
+      __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_v_len = ((int)(__pyx_v_bytes / __pyx_t_7));
 
-static PyObject *__pyx_getprop_5adios_7varinfo_ldim(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_7varinfo_4ldim_1__get__(o);
-}
+      /* "adios.pyx":1551
+ *                 strlist = list()
+ *                 len = <int>(bytes/sizeof(p))
+ *                 for i in range(len):             # <<<<<<<<<<<<<<
+ *                     strlist.append((<char **>p)[i])
+ *                 self.value = np.array(strlist)
+ */
+      __pyx_t_8 = __pyx_v_len;
+      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
+        __pyx_v_i = __pyx_t_9;
 
-static int __pyx_setprop_5adios_7varinfo_ldim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_7varinfo_4ldim_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_5adios_7varinfo_4ldim_5__del__(o);
-  }
-}
+        /* "adios.pyx":1552
+ *                 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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
 
-static PyObject *__pyx_getprop_5adios_7varinfo_gdim(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_7varinfo_4gdim_1__get__(o);
-}
+      /* "adios.pyx":1553
+ *                 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_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_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
+        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+        if (likely(__pyx_t_2)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_1, function);
+        }
+      }
+      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_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_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_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)
+      __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;
 
-static int __pyx_setprop_5adios_7varinfo_gdim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_7varinfo_4gdim_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_5adios_7varinfo_4gdim_5__del__(o);
-  }
-}
+      /* "adios.pyx":1554
+ *                     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_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)
+      __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;
 
-static PyObject *__pyx_getprop_5adios_7varinfo_offset(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_7varinfo_6offset_1__get__(o);
-}
+      /* "adios.pyx":1548
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)
+ *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
+ *                 strlist = list()
+ *                 len = <int>(bytes/sizeof(p))
+ */
+      goto __pyx_L5;
+    }
 
-static int __pyx_setprop_5adios_7varinfo_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_7varinfo_6offset_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_5adios_7varinfo_6offset_5__del__(o);
-  }
-}
+    /* "adios.pyx":1556
+ *                 self.dtype = self.value.dtype
+ * 
+ *             elif self.dtype is None:             # <<<<<<<<<<<<<<
+ *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
+ *                       (self.name, atype, bytes))
+ */
+    __pyx_t_4 = (((PyObject *)__pyx_v_self->dtype) == Py_None);
+    __pyx_t_12 = (__pyx_t_4 != 0);
+    if (__pyx_t_12) {
 
-static PyObject *__pyx_getprop_5adios_7varinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_5adios_7varinfo_5value_1__get__(o);
-}
+      /* "adios.pyx":1558
+ *             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_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_GOTREF(__pyx_t_1);
+      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1558, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_INCREF(__pyx_v_self->name);
+      __Pyx_GIVEREF(__pyx_v_self->name);
+      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_self->name);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_1);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = 0;
 
-static int __pyx_setprop_5adios_7varinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_5adios_7varinfo_5value_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_5adios_7varinfo_5value_5__del__(o);
-  }
-}
+      /* "adios.pyx":1557
+ * 
+ *             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_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_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_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-static PyMethodDef __pyx_methods_5adios_varinfo[] = {
-  {"define", (PyCFunction)__pyx_pw_5adios_7varinfo_3define, METH_O, __pyx_doc_5adios_7varinfo_2define},
-  {"bytes", (PyCFunction)__pyx_pw_5adios_7varinfo_5bytes, METH_NOARGS, __pyx_doc_5adios_7varinfo_4bytes},
-  {"write", (PyCFunction)__pyx_pw_5adios_7varinfo_7write, METH_O, __pyx_doc_5adios_7varinfo_6write},
-  {0, 0, 0, 0}
-};
+      /* "adios.pyx":1556
+ *                 self.dtype = self.value.dtype
+ * 
+ *             elif self.dtype is None:             # <<<<<<<<<<<<<<
+ *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
+ *                       (self.name, atype, bytes))
+ */
+      goto __pyx_L5;
+    }
 
-static struct PyGetSetDef __pyx_getsets_5adios_varinfo[] = {
-  {(char *)"ldim", __pyx_getprop_5adios_7varinfo_ldim, __pyx_setprop_5adios_7varinfo_ldim, __pyx_k_ldim_object, 0},
-  {(char *)"gdim", __pyx_getprop_5adios_7varinfo_gdim, __pyx_setprop_5adios_7varinfo_gdim, __pyx_k_gdim_object, 0},
-  {(char *)"offset", __pyx_getprop_5adios_7varinfo_offset, __pyx_setprop_5adios_7varinfo_offset, __pyx_k_offset_object, 0},
-  {(char *)"value", __pyx_getprop_5adios_7varinfo_value, __pyx_setprop_5adios_7varinfo_value, __pyx_k_value_object, 0},
-  {0, 0, 0, 0, 0}
-};
+    /* "adios.pyx":1560
+ *                       (self.name, atype, bytes))
+ *             else:
+ *                 len = <int>(bytes/self.dtype.itemsize)             # <<<<<<<<<<<<<<
+ *                 if len == 1:
+ *                     self.value = np.array(len, dtype=self.dtype)
+ */
+    /*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)
+      }
+      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_v_len = ((int)__Pyx_div_int(__pyx_v_bytes, __pyx_v_self->dtype->elsize));
 
-static PyTypeObject __pyx_type_5adios_varinfo = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.varinfo", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios_varinfo), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios_varinfo, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_5adios_7varinfo_9__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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(char *name, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>)", /*tp_doc*/
-  __pyx_tp_traverse_5adios_varinfo, /*tp_traverse*/
-  __pyx_tp_clear_5adios_varinfo, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_5adios_varinfo, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_5adios_varinfo, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_5adios_7varinfo_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios_varinfo, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+      /* "adios.pyx":1561
+ *             else:
+ *                 len = <int>(bytes/self.dtype.itemsize)
+ *                 if len == 1:             # <<<<<<<<<<<<<<
+ *                     self.value = np.array(len, dtype=self.dtype)
+ *                 else:
+ */
+      __pyx_t_12 = ((__pyx_v_len == 1) != 0);
+      if (__pyx_t_12) {
 
-static struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *__pyx_freelist_5adios___pyx_scope_struct____getitem__[8];
-static int __pyx_freecount_5adios___pyx_scope_struct____getitem__ = 0;
+        /* "adios.pyx":1562
+ *                 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_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_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_GOTREF(__pyx_t_1);
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1562, __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_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)
+        __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)
+        __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;
 
-static PyObject *__pyx_tp_new_5adios___pyx_scope_struct____getitem__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_5adios___pyx_scope_struct____getitem__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_5adios___pyx_scope_struct____getitem__)))) {
-    o = (PyObject*)__pyx_freelist_5adios___pyx_scope_struct____getitem__[--__pyx_freecount_5adios___pyx_scope_struct____getitem__];
-    memset(o, 0, sizeof(struct __pyx_obj_5adios___pyx_scope_struct____getitem__));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
-}
+        /* "adios.pyx":1561
+ *             else:
+ *                 len = <int>(bytes/self.dtype.itemsize)
+ *                 if len == 1:             # <<<<<<<<<<<<<<
+ *                     self.value = np.array(len, dtype=self.dtype)
+ *                 else:
+ */
+        goto __pyx_L8;
+      }
 
-static void __pyx_tp_dealloc_5adios___pyx_scope_struct____getitem__(PyObject *o) {
-  struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *p = (struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_dims_);
-  Py_CLEAR(p->__pyx_v_index_);
-  Py_CLEAR(p->__pyx_v_self);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_5adios___pyx_scope_struct____getitem__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_5adios___pyx_scope_struct____getitem__)))) {
-    __pyx_freelist_5adios___pyx_scope_struct____getitem__[__pyx_freecount_5adios___pyx_scope_struct____getitem__++] = ((struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
+      /* "adios.pyx":1564
+ *                     self.value = np.array(len, dtype=self.dtype)
+ *                 else:
+ *                     self.value = np.zeros(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
+ *                 self.value.data = <char *> p
+ *         else:
+ */
+      /*else*/ {
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __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_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_GOTREF(__pyx_t_2);
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1564, __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_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)
+        __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)
+        __Pyx_GIVEREF(__pyx_t_11);
+        __Pyx_GOTREF(__pyx_v_self->value);
+        __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
+        __pyx_v_self->value = ((PyArrayObject *)__pyx_t_11);
+        __pyx_t_11 = 0;
+      }
+      __pyx_L8:;
 
-static int __pyx_tp_traverse_5adios___pyx_scope_struct____getitem__(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *p = (struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)o;
-  if (p->__pyx_v_dims_) {
-    e = (*v)(p->__pyx_v_dims_, a); if (e) return e;
-  }
-  if (p->__pyx_v_index_) {
-    e = (*v)(p->__pyx_v_index_, a); if (e) return e;
+      /* "adios.pyx":1565
+ *                 else:
+ *                     self.value = np.zeros(len, dtype=self.dtype)
+ *                 self.value.data = <char *> p             # <<<<<<<<<<<<<<
+ *         else:
+ *             raise KeyError(name)
+ */
+      __pyx_v_self->value->data = ((char *)__pyx_v_p);
+    }
+    __pyx_L5:;
+
+    /* "adios.pyx":1544
+ *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
+ * 
+ *         if err == 0:             # <<<<<<<<<<<<<<
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ */
+    goto __pyx_L3;
   }
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
+
+  /* "adios.pyx":1567
+ *                 self.value.data = <char *> p
+ *         else:
+ *             raise KeyError(name)             # <<<<<<<<<<<<<<
+ * 
+ *     def __getitem__(self, args):
+ */
+  /*else*/ {
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1567, __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_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)
   }
-  return 0;
-}
+  __pyx_L3:;
 
-static int __pyx_tp_clear_5adios___pyx_scope_struct____getitem__(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *p = (struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)o;
-  tmp = ((PyObject*)p->__pyx_v_dims_);
-  p->__pyx_v_dims_ = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_index_);
-  p->__pyx_v_index_ = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_self);
-  p->__pyx_v_self = ((struct __pyx_obj_5adios_var *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
+  /* "adios.pyx":1532
+ *                 return self.value
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("adios.attr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_strlist);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyTypeObject __pyx_type_5adios___pyx_scope_struct____getitem__ = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.__pyx_scope_struct____getitem__", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios___pyx_scope_struct____getitem__), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios___pyx_scope_struct____getitem__, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_5adios___pyx_scope_struct____getitem__, /*tp_traverse*/
-  __pyx_tp_clear_5adios___pyx_scope_struct____getitem__, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios___pyx_scope_struct____getitem__, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+/* "adios.pyx":1569
+ *             raise KeyError(name)
+ * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         val = self.value[args]
+ *         if (val.ndim == 0):
+ */
 
-static struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *__pyx_freelist_5adios___pyx_scope_struct_1_genexpr[8];
-static int __pyx_freecount_5adios___pyx_scope_struct_1_genexpr = 0;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4attr_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args); /*proto*/
+static PyObject *__pyx_pw_5adios_4attr_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4attr_2__getitem__(((struct __pyx_obj_5adios_attr *)__pyx_v_self), ((PyObject *)__pyx_v_args));
 
-static PyObject *__pyx_tp_new_5adios___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_5adios___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr)))) {
-    o = (PyObject*)__pyx_freelist_5adios___pyx_scope_struct_1_genexpr[--__pyx_freecount_5adios___pyx_scope_struct_1_genexpr];
-    memset(o, 0, sizeof(struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static void __pyx_tp_dealloc_5adios___pyx_scope_struct_1_genexpr(PyObject *o) {
-  struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_outer_scope);
-  Py_CLEAR(p->__pyx_v_x);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_5adios___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr)))) {
-    __pyx_freelist_5adios___pyx_scope_struct_1_genexpr[__pyx_freecount_5adios___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
+static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_v_val = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
 
-static int __pyx_tp_traverse_5adios___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *)o;
-  if (p->__pyx_outer_scope) {
-    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
-  }
-  if (p->__pyx_v_x) {
-    e = (*v)(p->__pyx_v_x, a); if (e) return e;
+  /* "adios.pyx":1570
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_v_val = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1571
+ *     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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":1572
+ *         val = self.value[args]
+ *         if (val.ndim == 0):
+ *             return np.asscalar(val)             # <<<<<<<<<<<<<<
+ *         else:
+ *             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_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_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "adios.pyx":1571
+ *     def __getitem__(self, args):
+ *         val = self.value[args]
+ *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(val)
+ *         else:
+ */
   }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+
+  /* "adios.pyx":1574
+ *             return np.asscalar(val)
+ *         else:
+ *             return val             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_val);
+    __pyx_r = __pyx_v_val;
+    goto __pyx_L0;
   }
-  return 0;
-}
 
-static int __pyx_tp_clear_5adios___pyx_scope_struct_1_genexpr(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr *)o;
-  tmp = ((PyObject*)p->__pyx_outer_scope);
-  p->__pyx_outer_scope = ((struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_x);
-  p->__pyx_v_x = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_t_0);
-  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
+  /* "adios.pyx":1569
+ *             raise KeyError(name)
+ * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         val = self.value[args]
+ *         if (val.ndim == 0):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios.attr.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_val);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyTypeObject __pyx_type_5adios___pyx_scope_struct_1_genexpr = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.__pyx_scope_struct_1_genexpr", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_5adios___pyx_scope_struct_1_genexpr, /*tp_traverse*/
-  __pyx_tp_clear_5adios___pyx_scope_struct_1_genexpr, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  0, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  0, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_5adios___pyx_scope_struct_1_genexpr, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
+/* "adios.pyx":1576
+ *             return val
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
+ *                (self.name, self.dtype, self.value)
+ */
 
-static struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *__pyx_freelist_5adios___pyx_scope_struct_2_genexpr[8];
-static int __pyx_freecount_5adios___pyx_scope_struct_2_genexpr = 0;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_4attr_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_4attr_5__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_4attr_4__repr__(((struct __pyx_obj_5adios_attr *)__pyx_v_self));
 
-static PyObject *__pyx_tp_new_5adios___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_5adios___pyx_scope_struct_2_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr)))) {
-    o = (PyObject*)__pyx_freelist_5adios___pyx_scope_struct_2_genexpr[--__pyx_freecount_5adios___pyx_scope_struct_2_genexpr];
-    memset(o, 0, sizeof(struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
-    o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
-  }
-  return o;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static void __pyx_tp_dealloc_5adios___pyx_scope_struct_2_genexpr(PyObject *o) {
-  struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_outer_scope);
-  Py_CLEAR(p->__pyx_v_x);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_5adios___pyx_scope_struct_2_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr)))) {
-    __pyx_freelist_5adios___pyx_scope_struct_2_genexpr[__pyx_freecount_5adios___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
-  }
-}
+static PyObject *__pyx_pf_5adios_4attr_4__repr__(struct __pyx_obj_5adios_attr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
 
-static int __pyx_tp_traverse_5adios___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *)o;
-  if (p->__pyx_outer_scope) {
-    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
-  }
-  if (p->__pyx_v_x) {
-    e = (*v)(p->__pyx_v_x, a); if (e) return e;
-  }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
-  }
-  return 0;
-}
+  /* "adios.pyx":1577
+ * 
+ *     def __repr__(self):
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.name, self.dtype, self.value)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
 
-static int __pyx_tp_clear_5adios___pyx_scope_struct_2_genexpr(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr *)o;
-  tmp = ((PyObject*)p->__pyx_outer_scope);
-  p->__pyx_outer_scope = ((struct __pyx_obj_5adios___pyx_scope_struct____getitem__ *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_x);
-  p->__pyx_v_x = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_t_0);
-  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
+  /* "adios.pyx":1578
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->dtype));
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
+  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->value));
 
-static PyTypeObject __pyx_type_5adios___pyx_scope_struct_2_genexpr = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios.__pyx_scope_struct_2_genexpr", /*tp_name*/
-  sizeof(struct __pyx_obj_5adios___pyx_scope_struct_2_genexpr), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_5adios___pyx_scope_struct_2_genexpr, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
+  /* "adios.pyx":1577
+ * 
+ *     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_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
+ *             return val
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
+ *                (self.name, self.dtype, self.value)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios.attr.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1594
+ *     cpdef public softdict attrs
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name.rstrip('/')
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_5group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_5group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_5adios_file *__pyx_v_file = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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_file)) != 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("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1594, __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)
+      }
+    } 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_file = ((struct __pyx_obj_5adios_file *)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
+  }
+  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_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)
+  __pyx_r = __pyx_pf_5adios_5group___init__(((struct __pyx_obj_5adios_group *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_v_self, struct __pyx_obj_5adios_file *__pyx_v_file, PyObject *__pyx_v_name) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  Py_ssize_t __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_INCREF(__pyx_v_name);
+
+  /* "adios.pyx":1595
+ * 
+ *     def __init__(self, file file, str name):
+ *         self.file = file             # <<<<<<<<<<<<<<
+ *         self.name = name.rstrip('/')
+ * 
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_v_file));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
+  __Pyx_GOTREF(__pyx_v_self->file);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
+  __pyx_v_self->file = __pyx_v_file;
+
+  /* "adios.pyx":1596
+ *     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_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_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)
+  __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
+ *         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_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "adios.pyx":1599
+ * 
+ *         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_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_2);
+        #endif
+      }
+    } else {
+      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        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)
+        }
+        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)
+    __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_2));
+    __pyx_t_2 = 0;
+
+    /* "adios.pyx":1600
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    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_t_2 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1600, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios.pyx":1601
+ *         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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_8);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "adios.pyx":1600
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    }
+
+    /* "adios.pyx":1602
+ *             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]
+ * 
+ */
+    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_t_2 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios.pyx":1603
+ *                 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_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_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_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_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_11 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_8);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "adios.pyx":1602
+ *             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]
+ * 
+ */
+    }
+
+    /* "adios.pyx":1599
+ * 
+ *         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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":1605
+ *                 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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1606
+ * 
+ *         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_GOTREF(__pyx_t_3);
+  __pyx_t_2 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  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_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)
+        #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_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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_5(__pyx_t_3);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        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)
+    __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
+    __pyx_t_1 = 0;
+
+    /* "adios.pyx":1607
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    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_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios.pyx":1608
+ *         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_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_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_GOTREF(__pyx_t_9);
+      __pyx_t_8 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_8)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_9);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+      /* "adios.pyx":1607
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    }
+
+    /* "adios.pyx":1609
+ *             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]
+ * 
+ */
+    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_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios.pyx":1610
+ *                 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_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_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_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_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_11 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_t_9);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "adios.pyx":1609
+ *             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]
+ * 
+ */
+    }
+
+    /* "adios.pyx":1606
+ * 
+ *         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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios.pyx":1594
+ *     cpdef public softdict attrs
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name.rstrip('/')
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("adios.group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1612
+ *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
+ * 
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static char __pyx_doc_5adios_5group_2__getitem__[] = "\n        Return Adios variable, attribute, or group.\n\n        Args:\n            varname (str): variable or attribute name.\n\n        Raises:\n            KeyError: If no name exists.\n\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_5adios_5group_2__getitem__;
+#endif
+static PyObject *__pyx_pw_5adios_5group_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_2__getitem__(((struct __pyx_obj_5adios_group *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_INCREF(__pyx_v_varname);
+
+  /* "adios.pyx":1623
+ * 
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":1624
+ *         """
+ *         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_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_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":1623
+ * 
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  }
+
+  /* "adios.pyx":1626
+ *             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_2 = ((__pyx_t_4 > 1) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":1627
+ * 
+ *         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_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_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)
+
+    /* "adios.pyx":1626
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
+ * 
+ */
+  }
+
+  /* "adios.pyx":1629
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":1630
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios.pyx":1631
+ *         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_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)
+
+      /* "adios.pyx":1630
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    }
+
+    /* "adios.pyx":1633
+ *                 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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
+
+      /* "adios.pyx":1634
+ * 
+ *             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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios.pyx":1633
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
+ */
+    }
+
+    /* "adios.pyx":1636
+ *                 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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
+
+      /* "adios.pyx":1637
+ * 
+ *             if key_ in self.vars.keys():
+ *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios.pyx":1636
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get(key_)
+ * 
+ */
+    }
+
+    /* "adios.pyx":1639
+ *                 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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
+
+      /* "adios.pyx":1640
+ * 
+ *             if key_ in self.attrs.keys():
+ *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_GOTREF(__pyx_t_3);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios.pyx":1639
+ *                 return self.vars.get(key_)
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
+ */
+    }
+
+    /* "adios.pyx":1642
+ *                 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_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_GOTREF(__pyx_t_8);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+      }
+    }
+    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_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_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_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
+ * 
+ *             if '/'+key_ in self.vars.keys():
+ *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_r = __pyx_t_3;
+      __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios.pyx":1642
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get('/'+key_)
+ * 
+ */
+    }
+
+    /* "adios.pyx":1645
+ *                 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_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_GOTREF(__pyx_t_10);
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_10, function);
+      }
+    }
+    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_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_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_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
+ * 
+ *             if '/'+key_ in self.attrs.keys():
+ *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_GOTREF(__pyx_t_10);
+      __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1646, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios.pyx":1645
+ *                 return self.vars.get('/'+key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
+ * 
+ */
+    }
+
+    /* "adios.pyx":1648
+ *                 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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+      __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_12(__pyx_t_3);
+        if (unlikely(!__pyx_t_7)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios.pyx":1650
+ *             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_GOTREF(__pyx_t_9);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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
+ *                 #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_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_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_GOTREF(__pyx_t_7);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
+        PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_self->file));
+        __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_GOTREF(__pyx_t_9);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_r = __pyx_t_9;
+        __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        goto __pyx_L0;
+
+        /* "adios.pyx":1650
+ *             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_)
+ * 
+ */
+      }
+
+      /* "adios.pyx":1648
+ *                 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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "adios.pyx":1653
+ *                     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_GOTREF(__pyx_t_9);
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+      __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_12(__pyx_t_9);
+        if (unlikely(!__pyx_t_3)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "adios.pyx":1655
+ *             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_GOTREF(__pyx_t_7);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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
+ *                 #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_)             # <<<<<<<<<<<<<<
+ * 
+ *         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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->file));
+        __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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __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;
+        goto __pyx_L0;
+
+        /* "adios.pyx":1655
+ *             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_)
+ * 
+ */
+      }
+
+      /* "adios.pyx":1653
+ *                     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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "adios.pyx":1629
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios.pyx":1658
+ *                     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)
+  __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_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)
+
+  /* "adios.pyx":1612
+ *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
+ * 
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios.group.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_varname);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1660
+ *         raise KeyError(key_)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_5adios_5group_4__repr__[] = " Return string representation. ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_5adios_5group_4__repr__;
+#endif
+static PyObject *__pyx_pw_5adios_5group_5__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_4__repr__(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios.pyx":1662
+ *     def __repr__(self):
+ *         """ Return string representation. """
+ *         return ("AdiosGroup (vars=%r, attrs=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.vars.keys(),
+ *                  self.attrs.keys())
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios.pyx":1663
+ *         """ 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":1664
+ *         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_GOTREF(__pyx_t_3);
+  __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, 1664, __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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios.pyx":1663
+ *         """ 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_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+
+  /* "adios.pyx":1662
+ *     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_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
+ *         raise KeyError(key_)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.group.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1667
+ * 
+ *     ## To support ipython tab completion
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_7__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_5adios_5group_7__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_6__getattr__(((struct __pyx_obj_5adios_group *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__getattr__", 0);
+
+  /* "adios.pyx":1668
+ *     ## To support ipython tab completion
+ *     def __getattr__(self, varname):
+ *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1667
+ * 
+ *     ## To support ipython tab completion
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.group.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1670
+ *         return self.__getitem__(varname)
+ * 
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         k1 = normalize_key(self.vars.keys())
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_9__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_5group_8__dir__[] = "group.__dir__(self)";
+static PyObject *__pyx_pw_5adios_5group_9__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dir__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_8__dir__(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  PyObject *__pyx_v_k0 = NULL;
+  PyObject *__pyx_v_k1 = NULL;
+  PyObject *__pyx_v_k2 = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__dir__", 0);
+
+  /* "adios.pyx":1671
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_v_k0 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1672
+ *     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_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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k1 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1673
+ *         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_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_GOTREF(__pyx_t_3);
+  __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_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1673, __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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k2 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1674
+ *         k1 = normalize_key(self.vars.keys())
+ *         k2 = normalize_key(self.attrs.keys())
+ *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_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_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
+ *         return self.__getitem__(varname)
+ * 
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         k1 = normalize_key(self.vars.keys())
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios.group.__dir__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_k0);
+  __Pyx_XDECREF(__pyx_v_k1);
+  __Pyx_XDECREF(__pyx_v_k2);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1677
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_11keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_5group_10keys[] = "group.keys(self)";
+static PyObject *__pyx_pw_5adios_5group_11keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_10keys(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("keys", 0);
+
+  /* "adios.pyx":1678
+ *     ## Require for dictionary key completion
+ *     def keys(self):
+ *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_3);
+  __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, 1678, __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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1677
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.group.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1680
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_13dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_5group_12dirs[] = "group.dirs(self)\n Return child dir names ";
+static PyObject *__pyx_pw_5adios_5group_13dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("dirs (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_12dirs(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  PyObject *__pyx_v_s = NULL;
+  PyObject *__pyx_v_k = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  __Pyx_RefNannySetupContext("dirs", 0);
+
+  /* "adios.pyx":1682
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_v_s = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1683
+ *         """ 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "adios.pyx":1684
+ *         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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "adios.pyx":1685
+ *         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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "adios.pyx":1683
+ *         """ 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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":1686
+ *             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_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_2);
+        #endif
+      }
+    } else {
+      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "adios.pyx":1687
+ *             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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "adios.pyx":1688
+ *         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_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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "adios.pyx":1686
+ *             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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":1689
+ *             if k.startswith('/'): k = k[1:]
+ *             s.add(os.path.dirname(k).split('/')[0])
+ *         return list(s-set(['']))             # <<<<<<<<<<<<<<
+ * 
+ * ## 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_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)
+  __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_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
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios.group.dirs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_s);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1591
+ * 
+ *     ## Public Memeber
+ *     cpdef public softdict vars             # <<<<<<<<<<<<<<
+ *     cpdef public softdict attrs
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_4vars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_5group_4vars_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_4vars___get__(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_4vars___get__(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_r = ((PyObject *)__pyx_v_self->vars);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_5group_4vars_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_5group_4vars_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_5group_4vars_2__set__(((struct __pyx_obj_5adios_group *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_5group_4vars_2__set__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.group.vars.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_5group_4vars_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_5group_4vars_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_4vars_4__del__(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_5group_4vars_4__del__(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)Py_None);
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1592
+ *     ## Public Memeber
+ *     cpdef public softdict vars
+ *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, file file, str name):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_5group_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_5group_5attrs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_5attrs___get__(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_5group_5attrs___get__(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_r = ((PyObject *)__pyx_v_self->attrs);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_5group_5attrs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_5group_5attrs_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_5group_5attrs_2__set__(((struct __pyx_obj_5adios_group *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_5group_5attrs_2__set__(struct __pyx_obj_5adios_group *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.group.attrs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_5group_5attrs_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_5group_5attrs_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_5group_5attrs_4__del__(((struct __pyx_obj_5adios_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_5group_5attrs_4__del__(struct __pyx_obj_5adios_group *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None);
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1694
+ * cdef class smartdict(dict):
+ *     cdef factory
+ *     def __init__(self, factory):             # <<<<<<<<<<<<<<
+ *         dict.__init__(self)
+ *         self.factory = factory
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_factory = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factory,0};
+    PyObject* values[1] = {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  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_factory)) != 0)) kw_args--;
+        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)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_factory = values[0];
+  }
+  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_L3_error:;
+  __Pyx_AddTraceback("adios.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_9smartdict___init__(((struct __pyx_obj_5adios_smartdict *)__pyx_v_self), __pyx_v_factory);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_factory) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios.pyx":1695
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_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
+ *     def __init__(self, factory):
+ *         dict.__init__(self)
+ *         self.factory = factory             # <<<<<<<<<<<<<<
+ * 
+ *     def __setitem__(self, key, value):
+ */
+  __Pyx_INCREF(__pyx_v_factory);
+  __Pyx_GIVEREF(__pyx_v_factory);
+  __Pyx_GOTREF(__pyx_v_self->factory);
+  __Pyx_DECREF(__pyx_v_self->factory);
+  __pyx_v_self->factory = __pyx_v_factory;
+
+  /* "adios.pyx":1694
+ * cdef class smartdict(dict):
+ *     cdef factory
+ *     def __init__(self, factory):             # <<<<<<<<<<<<<<
+ *         dict.__init__(self)
+ *         self.factory = factory
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1698
+ *         self.factory = factory
+ * 
+ *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
+ *         if key in dict.keys(self):
+ *             dict.__setitem__(self, key, value)
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_9smartdict_3__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_9smartdict_3__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_9smartdict_2__setitem__(((struct __pyx_obj_5adios_smartdict *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smartdict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  __Pyx_RefNannySetupContext("__setitem__", 0);
+
+  /* "adios.pyx":1699
+ * 
+ *     def __setitem__(self, key, value):
+ *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
+ *             dict.__setitem__(self, key, value)
+ *         else:
+ */
+  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_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = (__pyx_t_2 != 0);
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":1700
+ *     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_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    __pyx_t_6 = 0;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(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);
+        __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_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;
+    }
+    __Pyx_INCREF(((PyObject *)__pyx_v_self));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
+    __Pyx_INCREF(__pyx_v_key);
+    __Pyx_GIVEREF(__pyx_v_key);
+    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_key);
+    __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_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
+ * 
+ *     def __setitem__(self, key, value):
+ *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
+ *             dict.__setitem__(self, key, value)
+ *         else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":1702
+ *             dict.__setitem__(self, key, value)
+ *         else:
+ *             self.factory(key, value)             # <<<<<<<<<<<<<<
+ * 
+ * cdef class writer(object):
+ */
+  /*else*/ {
+    __Pyx_INCREF(__pyx_v_self->factory);
+    __pyx_t_4 = __pyx_v_self->factory; __pyx_t_7 = NULL;
+    __pyx_t_6 = 0;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __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_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;
+    }
+    __Pyx_INCREF(__pyx_v_key);
+    __Pyx_GIVEREF(__pyx_v_key);
+    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_key);
+    __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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_L3:;
+
+  /* "adios.pyx":1698
+ *         self.factory = factory
+ * 
+ *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
+ *         if key in dict.keys(self):
+ *             dict.__setitem__(self, key, value)
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios.smartdict.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1734
+ *     property fname:
+ *         """ The filename to write. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.fname
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_5fname_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_5fname_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_5fname___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1735
+ *         """ The filename to write. """
+ *         def __get__(self):
+ *             return self.fname             # <<<<<<<<<<<<<<
+ * 
+ *     property gname:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->fname);
+  __pyx_r = __pyx_v_self->fname;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1734
+ *     property fname:
+ *         """ The filename to write. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.fname
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1739
+ *     property gname:
+ *         """ The groupname associated with the file. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.gname
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_5gname_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_5gname_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_5gname___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1740
+ *         """ The groupname associated with the file. """
+ *         def __get__(self):
+ *             return self.gname             # <<<<<<<<<<<<<<
+ * 
+ *     property is_noxml:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->gname);
+  __pyx_r = __pyx_v_self->gname;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1739
+ *     property gname:
+ *         """ The groupname associated with the file. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.gname
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1744
+ *     property is_noxml:
+ *         """ Boolean to indicate using No-XML or not. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.is_noxml
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_8is_noxml_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_8is_noxml_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_8is_noxml___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_8is_noxml___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":1745
+ *         """ Boolean to indicate using No-XML or not. """
+ *         def __get__(self):
+ *             return self.is_noxml             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1744
+ *     property is_noxml:
+ *         """ Boolean to indicate using No-XML or not. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.is_noxml
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.writer.is_noxml.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1749
+ *     property mode:
+ *         """ Writing mode: overwrite or append. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.mode
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_4mode_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_4mode_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_4mode___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_4mode___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1750
+ *         """ Writing mode: overwrite or append. """
+ *         def __get__(self):
+ *             return self.mode             # <<<<<<<<<<<<<<
+ * 
+ *     property vars:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->mode);
+  __pyx_r = __pyx_v_self->mode;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1749
+ *     property mode:
+ *         """ Writing mode: overwrite or append. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.mode
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1754
+ *     property vars:
+ *         """ Dictionary of variables to write. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.vars
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_4vars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_4vars_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_4vars___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_4vars___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1755
+ *         """ Dictionary of variables to write. """
+ *         def __get__(self):
+ *             return self.vars             # <<<<<<<<<<<<<<
+ * 
+ *     property attrs:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->vars);
+  __pyx_r = __pyx_v_self->vars;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1754
+ *     property vars:
+ *         """ Dictionary of variables to write. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.vars
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1759
+ *     property attrs:
+ *         """ Dictionary of attributes to write. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.attrs
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_5attrs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_5attrs___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_5attrs___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1760
+ *         """ Dictionary of attributes to write. """
+ *         def __get__(self):
+ *             return self.attrs             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str fname,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->attrs);
+  __pyx_r = __pyx_v_self->attrs;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1759
+ *     property attrs:
+ *         """ Dictionary of attributes to write. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.attrs
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1762
+ *             return self.attrs
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  bint is_noxml = True,
+ *                  str mode = "w",
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_fname = 0;
+  int __pyx_v_is_noxml;
+  PyObject *__pyx_v_mode = 0;
+  MPI_Comm __pyx_v_comm;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    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);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        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_fname)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_noxml);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[3] = 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, 1762, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        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);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __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)
+    } else {
+
+      /* "adios.pyx":1763
+ * 
+ *     def __init__(self, str fname,
+ *                  bint is_noxml = True,             # <<<<<<<<<<<<<<
+ *                  str mode = "w",
+ *                  MPI_Comm comm = MPI_COMM_WORLD):
+ */
+      __pyx_v_is_noxml = ((int)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, 1765, __pyx_L3_error)
+    } else {
+      __pyx_v_comm = __pyx_k__53;
+    }
+  }
+  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_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)
+  __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
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  bint is_noxml = True,
+ *                  str mode = "w",
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+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) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  struct __pyx_opt_args_5adios_init_noxml __pyx_t_2;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios.pyx":1766
+ *                  str mode = "w",
+ *                  MPI_Comm comm = MPI_COMM_WORLD):
+ *         self.fname = fname             # <<<<<<<<<<<<<<
+ *         self.method = ""
+ *         self.method_params = ""
+ */
+  __Pyx_INCREF(__pyx_v_fname);
+  __Pyx_GIVEREF(__pyx_v_fname);
+  __Pyx_GOTREF(__pyx_v_self->fname);
+  __Pyx_DECREF(__pyx_v_self->fname);
+  __pyx_v_self->fname = __pyx_v_fname;
+
+  /* "adios.pyx":1767
+ *                  MPI_Comm comm = MPI_COMM_WORLD):
+ *         self.fname = fname
+ *         self.method = ""             # <<<<<<<<<<<<<<
+ *         self.method_params = ""
+ *         self.is_noxml = is_noxml
+ */
+  __Pyx_INCREF(__pyx_kp_s__10);
+  __Pyx_GIVEREF(__pyx_kp_s__10);
+  __Pyx_GOTREF(__pyx_v_self->method);
+  __Pyx_DECREF(__pyx_v_self->method);
+  __pyx_v_self->method = __pyx_kp_s__10;
+
+  /* "adios.pyx":1768
+ *         self.fname = fname
+ *         self.method = ""
+ *         self.method_params = ""             # <<<<<<<<<<<<<<
+ *         self.is_noxml = is_noxml
+ *         self.mode = mode
+ */
+  __Pyx_INCREF(__pyx_kp_s__10);
+  __Pyx_GIVEREF(__pyx_kp_s__10);
+  __Pyx_GOTREF(__pyx_v_self->method_params);
+  __Pyx_DECREF(__pyx_v_self->method_params);
+  __pyx_v_self->method_params = __pyx_kp_s__10;
+
+  /* "adios.pyx":1769
+ *         self.method = ""
+ *         self.method_params = ""
+ *         self.is_noxml = is_noxml             # <<<<<<<<<<<<<<
+ *         self.mode = mode
+ *         self.comm = comm
+ */
+  __pyx_v_self->is_noxml = __pyx_v_is_noxml;
+
+  /* "adios.pyx":1770
+ *         self.method_params = ""
+ *         self.is_noxml = is_noxml
+ *         self.mode = mode             # <<<<<<<<<<<<<<
+ *         self.comm = comm
+ *         self.vars = dict()
+ */
+  __Pyx_INCREF(__pyx_v_mode);
+  __Pyx_GIVEREF(__pyx_v_mode);
+  __Pyx_GOTREF(__pyx_v_self->mode);
+  __Pyx_DECREF(__pyx_v_self->mode);
+  __pyx_v_self->mode = __pyx_v_mode;
+
+  /* "adios.pyx":1771
+ *         self.is_noxml = is_noxml
+ *         self.mode = mode
+ *         self.comm = comm             # <<<<<<<<<<<<<<
+ *         self.vars = dict()
+ *         self.attrs = dict()
+ */
+  __pyx_v_self->comm = __pyx_v_comm;
+
+  /* "adios.pyx":1772
+ *         self.mode = mode
+ *         self.comm = comm
+ *         self.vars = dict()             # <<<<<<<<<<<<<<
+ *         self.attrs = dict()
+ * 
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1772, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(__pyx_v_self->vars);
+  __pyx_v_self->vars = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1773
+ *         self.comm = comm
+ *         self.vars = dict()
+ *         self.attrs = dict()             # <<<<<<<<<<<<<<
+ * 
+ *         init_noxml(comm)
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(__pyx_v_self->attrs);
+  __pyx_v_self->attrs = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1775
+ *         self.attrs = dict()
+ * 
+ *         init_noxml(comm)             # <<<<<<<<<<<<<<
+ *     ##def __var_factory__(self, name, value):
+ *     ##    print "var_factory:", name, value
+ */
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.comm = __pyx_v_comm;
+  __pyx_f_5adios_init_noxml(0, &__pyx_t_2); 
+
+  /* "adios.pyx":1762
+ *             return self.attrs
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  bint is_noxml = True,
+ *                  str mode = "w",
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.writer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1782
+ *     ##    print "attr_factory:", name, value
+ * 
+ *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *                       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 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;
+  PyObject *__pyx_v_method_params = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
+  {
+    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[1] = ((PyObject*)__pyx_n_s_POSIX1);
+    values[2] = ((PyObject*)__pyx_kp_s__10);
+    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_gname)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_params);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_gname = ((PyObject*)values[0]);
+    __pyx_v_method = ((PyObject*)values[1]);
+    __pyx_v_method_params = ((PyObject*)values[2]);
+  }
+  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_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)
+  __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+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;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  struct __pyx_opt_args_5adios_select_method __pyx_t_5;
+  __Pyx_RefNannySetupContext("declare_group", 0);
+
+  /* "adios.pyx":1798
+ * 
+ *         """
+ *         self.gid = declare_group(gname, "", 1)             # <<<<<<<<<<<<<<
+ *         self.gname = gname
+ *         self.method = method
+ */
+  __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;
+
+  /* "adios.pyx":1799
+ *         """
+ *         self.gid = declare_group(gname, "", 1)
+ *         self.gname = gname             # <<<<<<<<<<<<<<
+ *         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;
+
+  /* "adios.pyx":1800
+ *         self.gid = declare_group(gname, "", 1)
+ *         self.gname = gname
+ *         self.method = method             # <<<<<<<<<<<<<<
+ *         self.method_params = method_params
+ *         select_method(self.gid, self.method, self.method_params, "")
+ */
+  __Pyx_INCREF(__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_v_method);
+  __Pyx_GOTREF(__pyx_v_self->method);
+  __Pyx_DECREF(__pyx_v_self->method);
+  __pyx_v_self->method = __pyx_v_method;
+
+  /* "adios.pyx":1801
+ *         self.gname = gname
+ *         self.method = method
+ *         self.method_params = method_params             # <<<<<<<<<<<<<<
+ *         select_method(self.gid, self.method, self.method_params, "")
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_method_params);
+  __Pyx_GIVEREF(__pyx_v_method_params);
+  __Pyx_GOTREF(__pyx_v_self->method_params);
+  __Pyx_DECREF(__pyx_v_self->method_params);
+  __pyx_v_self->method_params = __pyx_v_method_params;
+
+  /* "adios.pyx":1802
+ *         self.method = method
+ *         self.method_params = method_params
+ *         select_method(self.gid, self.method, self.method_params, "")             # <<<<<<<<<<<<<<
+ * 
+ *     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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "adios.pyx":1782
+ *     ##    print "attr_factory:", name, value
+ * 
+ *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *                       str method = "POSIX1",
+ *                       str method_params = ""):
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1804
+ *         select_method(self.gid, self.method, self.method_params, "")
+ * 
+ *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
+ *                    ldim = tuple(),
+ *                    gdim = tuple(),
+ */
+
+/* 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) {
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_v_ldim = 0;
+  PyObject *__pyx_v_gdim = 0;
+  PyObject *__pyx_v_offset = 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;
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        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_varname)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ldim);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gdim);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
+          if (value) { values[3] = 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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        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);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_varname = ((PyObject*)values[0]);
+    __pyx_v_ldim = values[1];
+    __pyx_v_gdim = values[2];
+    __pyx_v_offset = values[3];
+  }
+  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_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);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("define_var", 0);
+
+  /* "adios.pyx":1824
+ * 
+ *         """
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_varname);
+  __Pyx_GIVEREF(__pyx_v_varname);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_varname);
+  __Pyx_INCREF(__pyx_v_ldim);
+  __Pyx_GIVEREF(__pyx_v_ldim);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ldim);
+  __Pyx_INCREF(__pyx_v_gdim);
+  __Pyx_GIVEREF(__pyx_v_gdim);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_gdim);
+  __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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 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)
+  }
+  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;
+
+  /* "adios.pyx":1804
+ *         select_method(self.gid, self.method, self.method_params, "")
+ * 
+ *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
+ *                    ldim = tuple(),
+ *                    gdim = tuple(),
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios.writer.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1826
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+ * 
+ *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Define attribute in the file.
+ */
+
+/* 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) {
+  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));
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("define_attr", 0);
+
+  /* "adios.pyx":1834
+ *         """
+ * 
+ *         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_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_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)
+  __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)
+  }
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1834, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios.pyx":1826
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+ * 
+ *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Define attribute in the file.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.writer.define_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1836
+ *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
+ * 
+ *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
+ *                             str varname,
+ *                             dtype):
+ */
+
+/* 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) {
+  PyObject *__pyx_v_attrname = 0;
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_v_dtype = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_dynamic_attr (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_attrname,&__pyx_n_s_varname,&__pyx_n_s_dtype,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_attrname)) != 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_dynamic_attr", 1, 3, 3, 1); __PYX_ERR(0, 1836, __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)
+        }
+      }
+      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)
+      }
+    } 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_attrname = ((PyObject*)values[0]);
+    __pyx_v_varname = ((PyObject*)values[1]);
+    __pyx_v_dtype = values[2];
+  }
+  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_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);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("define_dynamic_attr", 0);
+
+  /* "adios.pyx":1839
+ *                             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_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_INCREF(__pyx_v_varname);
+  __Pyx_GIVEREF(__pyx_v_varname);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_varname);
+  __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_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)
+  __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)
+  }
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1839, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios.pyx":1836
+ *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
+ * 
+ *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
+ *                             str varname,
+ *                             dtype):
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.writer.define_dynamic_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1840
+ *                             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
+ */
+
+/* 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) {
+  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));
+
+  /* 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) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("__setitem__", 0);
+
+  /* "adios.pyx":1841
+ *         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
+ *         elif self.attrs.has_key(name):
+ */
+  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_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_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":1842
+ *     def __setitem__(self, name, val):
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val             # <<<<<<<<<<<<<<
+ *         elif self.attrs.has_key(name):
+ *             self.attrs[name] = val
+ */
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(0, 1842, __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)
+
+    /* "adios.pyx":1841
+ *         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
+ *         elif self.attrs.has_key(name):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":1843
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             self.attrs[name] = val
+ *         else:
+ */
+  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_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) {
+
+    /* "adios.pyx":1844
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):
+ *             self.attrs[name] = val             # <<<<<<<<<<<<<<
+ *         else:
+ *             self.vars[name] = 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)
+    }
+    if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1844, __pyx_L1_error)
+
+    /* "adios.pyx":1843
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             self.attrs[name] = val
+ *         else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":1846
+ *             self.attrs[name] = val
+ *         else:
+ *             self.vars[name] = 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)
+    }
+    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1846, __pyx_L1_error)
+  }
+  __pyx_L3:;
+
+  /* "adios.pyx":1840
+ *                             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
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("adios.writer.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1848
+ *             self.vars[name] = val
+ * 
+ *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
+ */
+
+/* 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) {
+  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));
+
+  /* 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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
+
+  /* "adios.pyx":1849
+ * 
+ *     def __getitem__(self, name):
+ *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):
+ */
+  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_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_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":1850
+ *     def __getitem__(self, name):
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]             # <<<<<<<<<<<<<<
+ *         elif self.attrs.has_key(name):
+ *             return self.attrs[name]
+ */
+    __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_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_GOTREF(__pyx_t_3);
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+    /* "adios.pyx":1849
+ * 
+ *     def __getitem__(self, name):
+ *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):
+ */
+  }
+
+  /* "adios.pyx":1851
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.attrs[name]
+ *         else:
+ */
+  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_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_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":1852
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):
+ *             return self.attrs[name]             # <<<<<<<<<<<<<<
+ *         else:
+ *             raise KeyError(name)
+ */
+    __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_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_GOTREF(__pyx_t_3);
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+    /* "adios.pyx":1851
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.attrs[name]
+ *         else:
+ */
+  }
+
+  /* "adios.pyx":1854
+ *             return self.attrs[name]
+ *         else:
+ *             raise KeyError(name)             # <<<<<<<<<<<<<<
+ * 
+ *     def close(self):
+ */
+  /*else*/ {
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1854, __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_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)
+  }
+
+  /* "adios.pyx":1848
+ *             self.vars[name] = val
+ * 
+ *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios.writer.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1856
+ *             raise KeyError(name)
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Write variables and attributes to a file and close the writer.
+ */
+
+/* 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) {
+  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));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_14close(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;
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_v_val = NULL;
+  PyObject *__pyx_v_n = NULL;
+  PyObject *__pyx_v_var = NULL;
+  PyObject *__pyx_r = NULL;
+  __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;
+  Py_ssize_t __pyx_t_6;
+  Py_ssize_t __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *(*__pyx_t_13)(PyObject *);
+  __Pyx_RefNannySetupContext("close", 0);
+
+  /* "adios.pyx":1860
+ *         Write variables and attributes to a file and close the writer.
+ *         """
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.declare_group("group")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->gname == ((PyObject*)Py_None));
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":1861
+ *         """
+ *         if self.gname is None:
+ *             self.declare_group("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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "adios.pyx":1860
+ *         Write variables and attributes to a file and close the writer.
+ *         """
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.declare_group("group")
+ * 
+ */
+  }
+
+  /* "adios.pyx":1863
+ *             self.declare_group("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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios.pyx":1865
+ *         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;
+
+  /* "adios.pyx":1866
+ * 
+ *         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;
+
+  /* "adios.pyx":1868
+ *         extra_attrs = dict()
+ * 
+ *         for key, val in self.vars.iteritems():             # <<<<<<<<<<<<<<
+ *             if not isinstance(val, varinfo):
+ *                 n = np.array(val)
+ */
+  __pyx_t_6 = 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_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_GOTREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __pyx_t_5 = __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_GOTREF(__pyx_t_3);
+    __Pyx_GOTREF(__pyx_t_4);
+    __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;
+
+    /* "adios.pyx":1869
+ * 
+ *         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) {
+
+      /* "adios.pyx":1870
+ *         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_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_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_3)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_3);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+        }
+      }
+      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);
+      } else {
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1870, __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_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;
+
+      /* "adios.pyx":1871
+ *             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_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_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;
+
+      /* "adios.pyx":1872
+ *                 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)
+ */
+      __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;
+
+      /* "adios.pyx":1869
+ * 
+ *         for key, val in self.vars.iteritems():
+ *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
+ *                 n = np.array(val)
+ *                 extra_vars[key] = varinfo(key, n.shape)
+ */
+      goto __pyx_L6;
+    }
+
+    /* "adios.pyx":1874
+ *                 extra_vars[key].value = val
+ *             else:
+ *                 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_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_GOTREF(__pyx_t_11);
+        __pyx_t_3 = NULL;
+        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
+          if (likely(__pyx_t_3)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+            __Pyx_INCREF(__pyx_t_3);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_10, function);
+          }
+        }
+        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_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_GOTREF(__pyx_t_4);
+        } else {
+          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1874, __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_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_L6:;
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios.pyx":1876
+ *                 if self.is_noxml: 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;
+  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_GOTREF(__pyx_t_10);
+    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
+    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_10);
+    __pyx_t_10 = 0;
+
+    /* "adios.pyx":1877
+ * 
+ *         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_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 (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_4, 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_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_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_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_10); __pyx_t_10 = 0;
+    }
+
+    /* "adios.pyx":1878
+ *         for key, val in extra_vars.iteritems():
+ *             if self.is_noxml: val.define(self.gid)
+ *             self.vars[key] = val             # <<<<<<<<<<<<<<
+ * 
+ *         for key, val in self.attrs.iteritems():
+ */
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __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, 1878, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios.pyx":1880
+ *             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;
+  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_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_GOTREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_5);
+  __pyx_t_5 = __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_GOTREF(__pyx_t_10);
+    __Pyx_GOTREF(__pyx_t_4);
+    __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;
+
+    /* "adios.pyx":1881
+ * 
+ *         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) {
+
+      /* "adios.pyx":1882
+ *         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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+        }
+      }
+      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);
+      } else {
+        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1882, __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_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_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_INCREF(__pyx_v_key);
+      __Pyx_GIVEREF(__pyx_v_key);
+      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_val);
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_4, 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_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_3); __pyx_t_3 = 0;
+
+      /* "adios.pyx":1881
+ * 
+ *         for key, val in self.attrs.iteritems():
+ *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
+ *             else:
+ */
+      goto __pyx_L13;
+    }
+
+    /* "adios.pyx":1884
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
+ *             else:
+ *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
+ * 
+ *         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_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 (likely(__pyx_t_10)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_10);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, 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_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_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_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_3); __pyx_t_3 = 0;
+      }
+    }
+    __pyx_L13:;
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios.pyx":1886
+ *                 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_GOTREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __pyx_t_5 = __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_GOTREF(__pyx_t_3);
+    __Pyx_GOTREF(__pyx_t_4);
+    __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;
+
+    /* "adios.pyx":1887
+ * 
+ *         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_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_GOTREF(__pyx_t_11);
+      __pyx_t_12 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_12)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_12);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+        }
+      }
+      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_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_GOTREF(__pyx_t_4);
+      } else {
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1887, __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_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_5); __pyx_t_5 = 0;
+
+  /* "adios.pyx":1898
+ *         """
+ * 
+ *         for var in self.vars.values():             # <<<<<<<<<<<<<<
+ *             var.write(fd)
+ * 
+ */
+  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_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_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_DECREF(__pyx_t_5); __pyx_t_5 = 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 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)
+        #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);
+        #endif
+      } else {
+        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) 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)
+        #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);
+        #endif
+      }
+    } else {
+      __pyx_t_5 = __pyx_t_13(__pyx_t_4);
+      if (unlikely(!__pyx_t_5)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_5);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_5);
+    __pyx_t_5 = 0;
+
+    /* "adios.pyx":1899
+ * 
+ *         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_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_GOTREF(__pyx_t_10);
+    __pyx_t_11 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_11)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_11);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_5);
+    } else {
+      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1899, __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_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;
+
+    /* "adios.pyx":1898
+ *         """
+ * 
+ *         for var in self.vars.values():             # <<<<<<<<<<<<<<
+ *             var.write(fd)
+ * 
+ */
+  }
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "adios.pyx":1901
+ *             var.write(fd)
+ * 
+ *         close(fd)             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  __pyx_f_5adios_close(__pyx_v_fd, 0);
+
+  /* "adios.pyx":1856
+ *             raise KeyError(name)
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Write variables and attributes to a file and close the writer.
+ */
+
+  /* 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_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("adios.writer.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_extra_vars);
+  __Pyx_XDECREF(__pyx_v_extra_attrs);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_val);
+  __Pyx_XDECREF(__pyx_v_n);
+  __Pyx_XDECREF(__pyx_v_var);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1903
+ *         close(fd)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return ("AdiosWriter (fname=%r, gname=%r, "
+ *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
+ */
+
+/* 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) {
+  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));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios.pyx":1904
+ * 
+ *     def __repr__(self):
+ *         return ("AdiosWriter (fname=%r, gname=%r, "             # <<<<<<<<<<<<<<
+ *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
+ *                 (self.fname,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios.pyx":1910
+ *                  self.method,
+ *                  self.method_params,
+ *                  self.vars.keys(),             # <<<<<<<<<<<<<<
+ *                  self.attrs.keys(),
+ *                  self.mode)
+ */
+  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_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1910, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "adios.pyx":1911
+ *                  self.method_params,
+ *                  self.vars.keys(),
+ *                  self.attrs.keys(),             # <<<<<<<<<<<<<<
+ *                  self.mode)
+ * 
+ */
+  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_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1911, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "adios.pyx":1906
+ *         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_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_self->fname);
+  __Pyx_GIVEREF(__pyx_v_self->fname);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->fname);
+  __Pyx_INCREF(__pyx_v_self->gname);
+  __Pyx_GIVEREF(__pyx_v_self->gname);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->gname);
+  __Pyx_INCREF(__pyx_v_self->method);
+  __Pyx_GIVEREF(__pyx_v_self->method);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->method);
+  __Pyx_INCREF(__pyx_v_self->method_params);
+  __Pyx_GIVEREF(__pyx_v_self->method_params);
+  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->method_params);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->mode);
+  __Pyx_GIVEREF(__pyx_v_self->mode);
+  PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_self->mode);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+
+  /* "adios.pyx":1905
+ *     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_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
+ *         close(fd)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return ("AdiosWriter (fname=%r, gname=%r, "
+ *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.writer.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1914
+ *                  self.mode)
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         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) {
+  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));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_18__enter__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "adios.pyx":1916
+ *     def __enter__(self):
+ *         """ Enter for with statemetn """
+ *         return self             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
+  /* "adios.pyx":1914
+ *                  self.mode)
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         return self
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1918
+ *         return self
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
+ */
+
+/* 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) {
+  CYTHON_UNUSED PyObject *__pyx_v_exception_type = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_exception_value = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_traceback = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_type,&__pyx_n_s_exception_value,&__pyx_n_s_traceback,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_exception_type)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } 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_exception_type = values[0];
+    __pyx_v_exception_value = values[1];
+    __pyx_v_traceback = values[2];
+  }
+  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_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);
+
+  /* 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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("__exit__", 0);
+
+  /* "adios.pyx":1920
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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
+ *         return self
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.writer.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1929
+ * 
+ *     property name:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_8attrinfo_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_8attrinfo_4name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_8attrinfo_4name___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_8attrinfo_4name___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1930
+ *     property name:
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
+ * 
+ *     property is_static:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1929
+ * 
+ *     property name:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1933
+ * 
+ *     property is_static:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.is_static
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_8attrinfo_9is_static_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_8attrinfo_9is_static_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_8attrinfo_9is_static___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_8attrinfo_9is_static___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1934
+ *     property is_static:
+ *         def __get__(self):
+ *             return self.is_static             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1933
+ * 
+ *     property is_static:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.is_static
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.attrinfo.is_static.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1937
+ * 
+ *     property dtype:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_8attrinfo_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_8attrinfo_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_8attrinfo_5dtype___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_8attrinfo_5dtype___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1938
+ *     property dtype:
+ *         def __get__(self):
+ *             return self.dtype             # <<<<<<<<<<<<<<
+ * 
+ *     property value:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->dtype);
+  __pyx_r = __pyx_v_self->dtype;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1937
+ * 
+ *     property dtype:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1941
+ * 
+ *     property value:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.value
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_8attrinfo_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_8attrinfo_5value_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_8attrinfo_5value___get__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1942
+ *     property value:
+ *         def __get__(self):
+ *             return self.value             # <<<<<<<<<<<<<<
+ * 
+ *         def __set__(self, value):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->value);
+  __pyx_r = __pyx_v_self->value;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1941
+ * 
+ *     property value:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.value
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1944
+ *             return self.value
+ * 
+ *         def __set__(self, value):             # <<<<<<<<<<<<<<
+ *             self.value = value
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_8attrinfo_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_8attrinfo_5value_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_8attrinfo_5value_2__set__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "adios.pyx":1945
+ * 
+ *         def __set__(self, value):
+ *             self.value = value             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str name,
+ */
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->value);
+  __Pyx_DECREF(__pyx_v_self->value);
+  __pyx_v_self->value = __pyx_v_value;
+
+  /* "adios.pyx":1944
+ *             return self.value
+ * 
+ *         def __set__(self, value):             # <<<<<<<<<<<<<<
+ *             self.value = value
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1947
+ *             self.value = value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  value = None,
+ *                  dtype = None,
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_value = 0;
+  PyObject *__pyx_v_dtype = 0;
+  int __pyx_v_is_static;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    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
+ * 
+ *     def __init__(self, str name,
+ *                  value = None,             # <<<<<<<<<<<<<<
+ *                  dtype = None,
+ *                  bint is_static = True):
+ */
+    values[1] = ((PyObject *)Py_None);
+
+    /* "adios.pyx":1949
+ *     def __init__(self, str name,
+ *                  value = None,
+ *                  dtype = None,             # <<<<<<<<<<<<<<
+ *                  bint is_static = True):
+ *         self.name = name
+ */
+    values[2] = ((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  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_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_static);
+          if (value) { values[3] = 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, 1947, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        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);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_name = ((PyObject*)values[0]);
+    __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)
+    } else {
+
+      /* "adios.pyx":1950
+ *                  value = None,
+ *                  dtype = None,
+ *                  bint is_static = True):             # <<<<<<<<<<<<<<
+ *         self.name = name
+ *         self.value = value
+ */
+      __pyx_v_is_static = ((int)1);
+    }
+  }
+  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_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)
+  __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
+ *             self.value = value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  value = None,
+ *                  dtype = None,
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+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) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios.pyx":1951
+ *                  dtype = None,
+ *                  bint is_static = True):
+ *         self.name = name             # <<<<<<<<<<<<<<
+ *         self.value = value
+ *         self.dtype = dtype
+ */
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
+  __Pyx_GOTREF(__pyx_v_self->name);
+  __Pyx_DECREF(__pyx_v_self->name);
+  __pyx_v_self->name = __pyx_v_name;
+
+  /* "adios.pyx":1952
+ *                  bint is_static = True):
+ *         self.name = name
+ *         self.value = value             # <<<<<<<<<<<<<<
+ *         self.dtype = dtype
+ *         self.is_static = is_static
+ */
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->value);
+  __Pyx_DECREF(__pyx_v_self->value);
+  __pyx_v_self->value = __pyx_v_value;
+
+  /* "adios.pyx":1953
+ *         self.name = name
+ *         self.value = value
+ *         self.dtype = dtype             # <<<<<<<<<<<<<<
+ *         self.is_static = is_static
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_dtype);
+  __Pyx_GIVEREF(__pyx_v_dtype);
+  __Pyx_GOTREF(__pyx_v_self->dtype);
+  __Pyx_DECREF(__pyx_v_self->dtype);
+  __pyx_v_self->dtype = __pyx_v_dtype;
+
+  /* "adios.pyx":1954
+ *         self.value = value
+ *         self.dtype = dtype
+ *         self.is_static = is_static             # <<<<<<<<<<<<<<
+ * 
+ *     def define(self, int64_t gid):
+ */
+  __pyx_v_self->is_static = __pyx_v_is_static;
+
+  /* "adios.pyx":1947
+ *             self.value = value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  value = None,
+ *                  dtype = None,
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1956
+ *         self.is_static = is_static
+ * 
+ *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
+ *         if self.is_static:
+ *             if self.value is None:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_8attrinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid); /*proto*/
+static char __pyx_doc_5adios_8attrinfo_2define[] = "attrinfo.define(self, int64_t gid)";
+static PyObject *__pyx_pw_5adios_8attrinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid) {
+  int64_t __pyx_v_gid;
+  PyObject *__pyx_r = 0;
+  __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)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.attrinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_8attrinfo_2define(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self), ((int64_t)__pyx_v_gid));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, int64_t __pyx_v_gid) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("define", 0);
+
+  /* "adios.pyx":1957
+ * 
+ *     def define(self, int64_t gid):
+ *         if self.is_static:             # <<<<<<<<<<<<<<
+ *             if self.value is None:
+ *                 raise TypeError("Value is none")
+ */
+  __pyx_t_1 = (__pyx_v_self->is_static != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":1958
+ *     def define(self, int64_t gid):
+ *         if self.is_static:
+ *             if self.value is None:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Value is none")
+ * 
+ */
+    __pyx_t_1 = (__pyx_v_self->value == Py_None);
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
+
+      /* "adios.pyx":1959
+ *         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_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)
+
+      /* "adios.pyx":1958
+ *     def define(self, int64_t gid):
+ *         if self.is_static:
+ *             if self.value is None:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Value is none")
+ * 
+ */
+    }
+
+    /* "adios.pyx":1961
+ *                 raise TypeError("Value is none")
+ * 
+ *             define_attribute_byvalue(gid, self.name, "", self.value)             # <<<<<<<<<<<<<<
+ *         else:
+ *             ##atype = np2adiostype(np.dtype(self.dtype))
+ */
+    __pyx_t_3 = __pyx_v_self->name;
+    __Pyx_INCREF(__pyx_t_3);
+    __pyx_t_4 = __pyx_v_self->value;
+    __Pyx_INCREF(__pyx_t_4);
+    __pyx_f_5adios_define_attribute_byvalue(__pyx_v_gid, ((PyObject*)__pyx_t_3), __pyx_kp_s__10, __pyx_t_4, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "adios.pyx":1957
+ * 
+ *     def define(self, int64_t gid):
+ *         if self.is_static:             # <<<<<<<<<<<<<<
+ *             if self.value is None:
+ *                 raise TypeError("Value is none")
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":1966
+ *             ##define_attribute(gid, self.name, "",
+ *             ##                 atype, "", str(self.value))
+ *             raise NotImplementedError             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(0, 1966, __pyx_L1_error)
+  }
+  __pyx_L3:;
+
+  /* "adios.pyx":1956
+ *         self.is_static = is_static
+ * 
+ *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
+ *         if self.is_static:
+ *             if self.value is None:
+ */
+
+  /* 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_4);
+  __Pyx_AddTraceback("adios.attrinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1968
+ *             raise NotImplementedError
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
+ *                 (self.name,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_8attrinfo_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_8attrinfo_5__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_8attrinfo_4__repr__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios.pyx":1969
+ * 
+ *     def __repr__(self):
+ *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.name,
+ *                  self.is_static,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios.pyx":1971
+ *         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_GOTREF(__pyx_t_1);
+
+  /* "adios.pyx":1970
+ *     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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->value);
+  __Pyx_GIVEREF(__pyx_v_self->value);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->value);
+  __Pyx_INCREF(__pyx_v_self->dtype);
+  __Pyx_GIVEREF(__pyx_v_self->dtype);
+  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->dtype);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":1969
+ * 
+ *     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_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
+ *             raise NotImplementedError
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
+ *                 (self.name,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios.attrinfo.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1982
+ *     cdef public value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  ldim = tuple(),
+ *                  gdim = tuple(),
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_ldim = 0;
+  PyObject *__pyx_v_gdim = 0;
+  PyObject *__pyx_v_offset = 0;
+  PyObject *__pyx_v_value = 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};
+    values[1] = __pyx_k__59;
+    values[2] = __pyx_k__60;
+    values[3] = __pyx_k__61;
+
+    /* "adios.pyx":1986
+ *                  gdim = tuple(),
+ *                  offset = tuple(),
+ *                  value = None):             # <<<<<<<<<<<<<<
+ *         self.name = name
+ *         self.ldim = ldim
+ */
+    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);
+        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_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ldim);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gdim);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          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_value);
+          if (value) { values[4] = 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)
+      }
+    } 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);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_name = ((PyObject*)values[0]);
+    __pyx_v_ldim = values[1];
+    __pyx_v_gdim = values[2];
+    __pyx_v_offset = values[3];
+    __pyx_v_value = values[4];
+  }
+  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_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);
+
+  /* "adios.pyx":1982
+ *     cdef public value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  ldim = tuple(),
+ *                  gdim = tuple(),
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  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) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios.pyx":1987
+ *                  offset = tuple(),
+ *                  value = None):
+ *         self.name = name             # <<<<<<<<<<<<<<
+ *         self.ldim = ldim
+ *         self.gdim = gdim
+ */
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
+  __Pyx_GOTREF(__pyx_v_self->name);
+  __Pyx_DECREF(__pyx_v_self->name);
+  __pyx_v_self->name = __pyx_v_name;
+
+  /* "adios.pyx":1988
+ *                  value = None):
+ *         self.name = name
+ *         self.ldim = ldim             # <<<<<<<<<<<<<<
+ *         self.gdim = gdim
+ *         self.offset = offset
+ */
+  __Pyx_INCREF(__pyx_v_ldim);
+  __Pyx_GIVEREF(__pyx_v_ldim);
+  __Pyx_GOTREF(__pyx_v_self->ldim);
+  __Pyx_DECREF(__pyx_v_self->ldim);
+  __pyx_v_self->ldim = __pyx_v_ldim;
+
+  /* "adios.pyx":1989
+ *         self.name = name
+ *         self.ldim = ldim
+ *         self.gdim = gdim             # <<<<<<<<<<<<<<
+ *         self.offset = offset
+ *         self.value = value
+ */
+  __Pyx_INCREF(__pyx_v_gdim);
+  __Pyx_GIVEREF(__pyx_v_gdim);
+  __Pyx_GOTREF(__pyx_v_self->gdim);
+  __Pyx_DECREF(__pyx_v_self->gdim);
+  __pyx_v_self->gdim = __pyx_v_gdim;
+
+  /* "adios.pyx":1990
+ *         self.ldim = ldim
+ *         self.gdim = gdim
+ *         self.offset = offset             # <<<<<<<<<<<<<<
+ *         self.value = value
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_offset);
+  __Pyx_GIVEREF(__pyx_v_offset);
+  __Pyx_GOTREF(__pyx_v_self->offset);
+  __Pyx_DECREF(__pyx_v_self->offset);
+  __pyx_v_self->offset = __pyx_v_offset;
+
+  /* "adios.pyx":1991
+ *         self.gdim = gdim
+ *         self.offset = offset
+ *         self.value = value             # <<<<<<<<<<<<<<
+ * 
+ *     def define(self, int64_t gid):
+ */
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->value);
+  __Pyx_DECREF(__pyx_v_self->value);
+  __pyx_v_self->value = __pyx_v_value;
+
+  /* "adios.pyx":1982
+ *     cdef public value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  ldim = tuple(),
+ *                  gdim = tuple(),
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1993
+ *         self.value = value
+ * 
+ *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
+ *         if self.value is None:
+ *             raise TypeError("Value is none")
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid); /*proto*/
+static char __pyx_doc_5adios_7varinfo_2define[] = "varinfo.define(self, int64_t gid)";
+static PyObject *__pyx_pw_5adios_7varinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid) {
+  int64_t __pyx_v_gid;
+  PyObject *__pyx_r = 0;
+  __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)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.varinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_7varinfo_2define(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((int64_t)__pyx_v_gid));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinfo *__pyx_v_self, int64_t __pyx_v_gid) {
+  PyObject *__pyx_v_ldim_ = NULL;
+  PyObject *__pyx_v_gdim_ = NULL;
+  PyObject *__pyx_v_offset_ = NULL;
+  PyObject *__pyx_v_val_ = NULL;
+  PyObject *__pyx_v_atype = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  struct __pyx_opt_args_5adios_define_var __pyx_t_10;
+  __Pyx_RefNannySetupContext("define", 0);
+
+  /* "adios.pyx":1994
+ * 
+ *     def define(self, int64_t gid):
+ *         if self.value is None:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Value is none")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->value == Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":1995
+ *     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_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)
+
+    /* "adios.pyx":1994
+ * 
+ *     def define(self, int64_t gid):
+ *         if self.value is None:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Value is none")
+ * 
+ */
+  }
+
+  /* "adios.pyx":1997
+ *             raise TypeError("Value is none")
+ * 
+ *         ldim_ = self.ldim             # <<<<<<<<<<<<<<
+ *         if isinstance(self.ldim, (tuple, list)):
+ *             ldim_ = tuple(self.ldim)
+ */
+  __pyx_t_3 = __pyx_v_self->ldim;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_v_ldim_ = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":1998
+ * 
+ *         ldim_ = self.ldim
+ *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             ldim_ = tuple(self.ldim)
+ * 
+ */
+  __pyx_t_3 = __pyx_v_self->ldim;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_1 = PyTuple_Check(__pyx_t_3); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = (__pyx_t_1 != 0);
+  if (!__pyx_t_4) {
+  } else {
+    __pyx_t_2 = __pyx_t_4;
+    goto __pyx_L5_bool_binop_done;
+  }
+  __pyx_t_3 = __pyx_v_self->ldim;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_4 = PyList_Check(__pyx_t_3); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_1 = (__pyx_t_4 != 0);
+  __pyx_t_2 = __pyx_t_1;
+  __pyx_L5_bool_binop_done:;
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":1999
+ *         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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_ldim_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":1998
+ * 
+ *         ldim_ = self.ldim
+ *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             ldim_ = tuple(self.ldim)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2001
+ *             ldim_ = tuple(self.ldim)
+ * 
+ *         gdim_ = self.gdim             # <<<<<<<<<<<<<<
+ *         if isinstance(self.gdim, (tuple, list)):
+ *             gdim_ = tuple(self.gdim)
+ */
+  __pyx_t_3 = __pyx_v_self->gdim;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_v_gdim_ = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":2002
+ * 
+ *         gdim_ = self.gdim
+ *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             gdim_ = tuple(self.gdim)
+ * 
+ */
+  __pyx_t_3 = __pyx_v_self->gdim;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_2 = PyTuple_Check(__pyx_t_3); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = (__pyx_t_2 != 0);
+  if (!__pyx_t_4) {
+  } else {
+    __pyx_t_1 = __pyx_t_4;
+    goto __pyx_L8_bool_binop_done;
+  }
+  __pyx_t_3 = __pyx_v_self->gdim;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_4 = PyList_Check(__pyx_t_3); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_2 = (__pyx_t_4 != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L8_bool_binop_done:;
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":2003
+ *         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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_gdim_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":2002
+ * 
+ *         gdim_ = self.gdim
+ *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             gdim_ = tuple(self.gdim)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2005
+ *             gdim_ = tuple(self.gdim)
+ * 
+ *         offset_ = self.offset             # <<<<<<<<<<<<<<
+ *         if isinstance(self.offset, (tuple, list)):
+ *             offset_ = tuple(self.offset)
+ */
+  __pyx_t_3 = __pyx_v_self->offset;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_v_offset_ = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":2006
+ * 
+ *         offset_ = self.offset
+ *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             offset_ = tuple(self.offset)
+ * 
+ */
+  __pyx_t_3 = __pyx_v_self->offset;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_1 = PyTuple_Check(__pyx_t_3); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = (__pyx_t_1 != 0);
+  if (!__pyx_t_4) {
+  } else {
+    __pyx_t_2 = __pyx_t_4;
+    goto __pyx_L11_bool_binop_done;
+  }
+  __pyx_t_3 = __pyx_v_self->offset;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_4 = PyList_Check(__pyx_t_3); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_1 = (__pyx_t_4 != 0);
+  __pyx_t_2 = __pyx_t_1;
+  __pyx_L11_bool_binop_done:;
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":2007
+ *         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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_offset_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":2006
+ * 
+ *         offset_ = self.offset
+ *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             offset_ = tuple(self.offset)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2009
+ *             offset_ = tuple(self.offset)
+ * 
+ *         val_ = self.value             # <<<<<<<<<<<<<<
+ *         if not isinstance(self.value, (np.ndarray)):
+ *             val_ = np.array(self.value)
+ */
+  __pyx_t_3 = __pyx_v_self->value;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_v_val_ = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":2010
+ * 
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
+  __pyx_t_3 = __pyx_v_self->value;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_t_3, __pyx_ptype_5numpy_ndarray); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":2011
+ *         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_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_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_6, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios.pyx":2010
+ * 
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2013
+ *             val_ = np.array(self.value)
+ * 
+ *         atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+ *         ## No space allowed
+ *         define_var(gid, self.name, "", atype,
+ */
+  __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_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)
+  __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
+ *         atype = np2adiostype(val_.dtype)
+ *         ## No space allowed
+ *         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)
+
+  /* "adios.pyx":2016
+ *         ## No space allowed
+ *         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_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_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_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_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_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_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)
+
+  /* "adios.pyx":2017
+ *         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_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_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_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_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_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_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)
+
+  /* "adios.pyx":2018
+ *                    str(ldim_).replace(' ', '').strip('(,)'),
+ *                    str(gdim_).replace(' ', '').strip('(,)'),
+ *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
+ * 
+ *     def bytes(self):
+ */
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2018, __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_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_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_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_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_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)
+
+  /* "adios.pyx":2015
+ *         atype = np2adiostype(val_.dtype)
+ *         ## No space allowed
+ *         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_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;
+
+  /* "adios.pyx":1993
+ *         self.value = value
+ * 
+ *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
+ *         if self.value is None:
+ *             raise TypeError("Value is none")
+ */
+
+  /* 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_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("adios.varinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_ldim_);
+  __Pyx_XDECREF(__pyx_v_gdim_);
+  __Pyx_XDECREF(__pyx_v_offset_);
+  __Pyx_XDECREF(__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_atype);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2020
+ *                    str(offset_).replace(' ', '').strip('(,)'))
+ * 
+ *     def bytes(self):             # <<<<<<<<<<<<<<
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_5bytes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_7varinfo_4bytes[] = "varinfo.bytes(self)";
+static PyObject *__pyx_pw_5adios_7varinfo_5bytes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("bytes (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_4bytes(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_v_val_ = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  __Pyx_RefNannySetupContext("bytes", 0);
+
+  /* "adios.pyx":2021
+ * 
+ *     def bytes(self):
+ *         val_ = self.value             # <<<<<<<<<<<<<<
+ *         if not isinstance(self.value, (np.ndarray)):
+ *             val_ = np.array(self.value)
+ */
+  __pyx_t_1 = __pyx_v_self->value;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_v_val_ = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":2022
+ *     def bytes(self):
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
+  __pyx_t_1 = __pyx_v_self->value;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, __pyx_ptype_5numpy_ndarray); 
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":2023
+ *         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_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_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_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __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_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_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "adios.pyx":2022
+ *     def bytes(self):
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2025
+ *             val_ = np.array(self.value)
+ * 
+ *         return val_.size * val_.itemsize             # <<<<<<<<<<<<<<
+ * 
+ *     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_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_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_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_r = __pyx_t_6;
+  __pyx_t_6 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":2020
+ *                    str(offset_).replace(' ', '').strip('(,)'))
+ * 
+ *     def bytes(self):             # <<<<<<<<<<<<<<
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios.varinfo.bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_val_);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2027
+ *         return val_.size * val_.itemsize
+ * 
+ *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_7write(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd); /*proto*/
+static char __pyx_doc_5adios_7varinfo_6write[] = "varinfo.write(self, int64_t fd)";
+static PyObject *__pyx_pw_5adios_7varinfo_7write(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd) {
+  int64_t __pyx_v_fd;
+  PyObject *__pyx_r = 0;
+  __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)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.varinfo.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_7varinfo_6write(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((int64_t)__pyx_v_fd));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo *__pyx_v_self, int64_t __pyx_v_fd) {
+  PyObject *__pyx_v_val_ = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  __Pyx_RefNannySetupContext("write", 0);
+
+  /* "adios.pyx":2028
+ * 
+ *     def write(self, int64_t fd):
+ *         val_ = self.value             # <<<<<<<<<<<<<<
+ *         if not isinstance(self.value, (np.ndarray)):
+ *             val_ = np.array(self.value)
+ */
+  __pyx_t_1 = __pyx_v_self->value;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_v_val_ = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":2029
+ *     def write(self, int64_t fd):
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
+  __pyx_t_1 = __pyx_v_self->value;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, __pyx_ptype_5numpy_ndarray); 
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
+  if (__pyx_t_3) {
+
+    /* "adios.pyx":2030
+ *         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_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_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_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __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_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_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "adios.pyx":2029
+ *     def write(self, int64_t fd):
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2032
+ *             val_ = np.array(self.value)
+ * 
+ *         write(fd, self.name, val_)             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  __pyx_t_1 = __pyx_v_self->name;
+  __Pyx_INCREF(__pyx_t_1);
+  __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
+ *         return val_.size * val_.itemsize
+ * 
+ *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios.varinfo.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_val_);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2034
+ *         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)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_9__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_7varinfo_9__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_8__repr__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios.pyx":2035
+ * 
+ *     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)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios.pyx":2036
+ *     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)             # <<<<<<<<<<<<<<
+ * 
+ * ## Aliases
+ */
+  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
+  __Pyx_INCREF(__pyx_v_self->ldim);
+  __Pyx_GIVEREF(__pyx_v_self->ldim);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->ldim);
+  __Pyx_INCREF(__pyx_v_self->gdim);
+  __Pyx_GIVEREF(__pyx_v_self->gdim);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->gdim);
+  __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->value);
+  __Pyx_GIVEREF(__pyx_v_self->value);
+  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->value);
+
+  /* "adios.pyx":2035
+ * 
+ *     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)
+ * 
+ */
+  __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_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
+ *         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)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios.varinfo.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1977
+ * cdef class varinfo(object):
+ *     cdef str name
+ *     cdef public ldim             # <<<<<<<<<<<<<<
+ *     cdef public gdim
+ *     cdef public offset
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_4ldim_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_7varinfo_4ldim_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_4ldim___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_4ldim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->ldim);
+  __pyx_r = __pyx_v_self->ldim;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_4ldim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_7varinfo_4ldim_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_4ldim_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_4ldim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->ldim);
+  __Pyx_DECREF(__pyx_v_self->ldim);
+  __pyx_v_self->ldim = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_4ldim_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_7varinfo_4ldim_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_4ldim_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_7varinfo_4ldim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->ldim);
+  __Pyx_DECREF(__pyx_v_self->ldim);
+  __pyx_v_self->ldim = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1978
+ *     cdef str name
+ *     cdef public ldim
+ *     cdef public gdim             # <<<<<<<<<<<<<<
+ *     cdef public offset
+ *     cdef public value
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_4gdim_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_7varinfo_4gdim_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_4gdim___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_4gdim___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->gdim);
+  __pyx_r = __pyx_v_self->gdim;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_4gdim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_7varinfo_4gdim_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_4gdim_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_4gdim_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->gdim);
+  __Pyx_DECREF(__pyx_v_self->gdim);
+  __pyx_v_self->gdim = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_4gdim_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_7varinfo_4gdim_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_4gdim_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_7varinfo_4gdim_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->gdim);
+  __Pyx_DECREF(__pyx_v_self->gdim);
+  __pyx_v_self->gdim = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1979
+ *     cdef public ldim
+ *     cdef public gdim
+ *     cdef public offset             # <<<<<<<<<<<<<<
+ *     cdef public value
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_6offset_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_7varinfo_6offset_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_6offset___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_6offset___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->offset);
+  __pyx_r = __pyx_v_self->offset;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_6offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_7varinfo_6offset_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_6offset_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_6offset_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->offset);
+  __Pyx_DECREF(__pyx_v_self->offset);
+  __pyx_v_self->offset = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_6offset_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_7varinfo_6offset_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_6offset_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_7varinfo_6offset_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->offset);
+  __Pyx_DECREF(__pyx_v_self->offset);
+  __pyx_v_self->offset = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1980
+ *     cdef public gdim
+ *     cdef public offset
+ *     cdef public value             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str name,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_7varinfo_5value_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_5value___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_5value___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->value);
+  __pyx_r = __pyx_v_self->value;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_7varinfo_5value_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_5value_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_5value_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->value);
+  __Pyx_DECREF(__pyx_v_self->value);
+  __pyx_v_self->value = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_5value_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_5adios_7varinfo_5value_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_5value_4__del__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_7varinfo_5value_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->value);
+  __Pyx_DECREF(__pyx_v_self->value);
+  __pyx_v_self->value = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2050
+ * ## ====================
+ * 
+ * def readvar(fname, varname):             # <<<<<<<<<<<<<<
+ *     """ Retrieve a variable value from an Adios file.
+ * 
+ */
+
+/* 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) {
+  PyObject *__pyx_v_fname = 0;
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("readvar (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fname,&__pyx_n_s_varname,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_fname)) != 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("readvar", 1, 2, 2, 1); __PYX_ERR(0, 2050, __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)
+      }
+    } 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_fname = values[0];
+    __pyx_v_varname = values[1];
+  }
+  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_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);
+
+  /* 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) {
+  struct __pyx_obj_5adios_file *__pyx_v_f = NULL;
+  PyObject *__pyx_v_v = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("readvar", 0);
+
+  /* "adios.pyx":2060
+ *         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_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_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_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)
+  __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_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
+ *     """
+ *     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_GOTREF(__pyx_t_3);
+  __pyx_v_v = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "adios.pyx":2062
+ *     f = file(fname, comm=MPI_COMM_SELF)
+ *     v = f[varname]
+ *     return v.read(from_steps=0, nsteps=v.nsteps)             # <<<<<<<<<<<<<<
+ * 
+ * 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_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2062, __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)
+  __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)
+  __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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":2050
+ * ## ====================
+ * 
+ * def readvar(fname, varname):             # <<<<<<<<<<<<<<
+ *     """ Retrieve a variable value from an Adios file.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios.readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_f);
+  __Pyx_XDECREF(__pyx_v_v);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2064
+ *     return v.read(from_steps=0, nsteps=v.nsteps)
+ * 
+ * def bpls(fname):             # <<<<<<<<<<<<<<
+ *     """ Return meta data of an Adios file as a Python dictionary object.
+ * 
+ */
+
+/* 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) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("bpls (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_58bpls(__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) {
+  struct __pyx_obj_5adios_file *__pyx_v_f = NULL;
+  PyObject *__pyx_v_k = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  Py_ssize_t __pyx_t_5;
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  __Pyx_RefNannySetupContext("bpls", 0);
+
+  /* "adios.pyx":2073
+ *         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_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_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_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)
+  __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_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
+ *     """
+ *     f = file(fname, comm=MPI_COMM_SELF)
+ *     return {'nvars': f.nvars,             # <<<<<<<<<<<<<<
+ *             'nattrs': f.nattrs,
+ *             '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_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_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)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":2075
+ *     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_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)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":2076
+ *     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_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_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_GOTREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_1);
+  __pyx_t_1 = __pyx_t_7;
+  __pyx_t_7 = 0;
+  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)
+    __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)
+  }
+  __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_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)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":2077
+ *             '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_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_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_GOTREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_2);
+  __pyx_t_2 = __pyx_t_7;
+  __pyx_t_7 = 0;
+  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)
+    __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)
+  }
+  __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_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)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":2078
+ *             '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_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_GOTREF(__pyx_t_1);
+  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2078, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_1);
+  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)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "adios.pyx":2079
+ *             '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_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)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":2064
+ *     return v.read(from_steps=0, nsteps=v.nsteps)
+ * 
+ * def bpls(fname):             # <<<<<<<<<<<<<<
+ *     """ Return meta data of an Adios file as a Python dictionary object.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios.bpls", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_f);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
+ *         # experimental exception made for __getbuffer__ and __releasebuffer__
+ *         # -- the details of this may change.
+ *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
+ *             # This implementation of getbuffer is geared towards Cython
+ *             # requirements, and does not yet fullfill the PEP.
+ */
+
+/* Python wrapper */
+static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
+static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
+  int __pyx_v_copy_shape;
+  int __pyx_v_i;
+  int __pyx_v_ndim;
+  int __pyx_v_endian_detector;
+  int __pyx_v_little_endian;
+  int __pyx_v_t;
+  char *__pyx_v_f;
+  PyArray_Descr *__pyx_v_descr = 0;
+  int __pyx_v_offset;
+  int __pyx_v_hasfields;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  char *__pyx_t_7;
+  __Pyx_RefNannySetupContext("__getbuffer__", 0);
+  if (__pyx_v_info != NULL) {
+    __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(__pyx_v_info->obj);
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":203
+ *             # of flags
+ * 
+ *             if info == NULL: return             # <<<<<<<<<<<<<<
+ * 
+ *             cdef int copy_shape, i, ndim
+ */
+  __pyx_t_1 = ((__pyx_v_info == NULL) != 0);
+  if (__pyx_t_1) {
+    __pyx_r = 0;
+    goto __pyx_L0;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":206
+ * 
+ *             cdef int copy_shape, i, ndim
+ *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
+ *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
+ * 
+ */
+  __pyx_v_endian_detector = 1;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":207
+ *             cdef int copy_shape, i, ndim
+ *             cdef int endian_detector = 1
+ *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
+ * 
+ *             ndim = PyArray_NDIM(self)
+ */
+  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":209
+ *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
+ * 
+ *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
+ * 
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ */
+  __pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211
+ *             ndim = PyArray_NDIM(self)
+ * 
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 copy_shape = 1
+ *             else:
+ */
+  __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":212
+ * 
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *                 copy_shape = 1             # <<<<<<<<<<<<<<
+ *             else:
+ *                 copy_shape = 0
+ */
+    __pyx_v_copy_shape = 1;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211
+ *             ndim = PyArray_NDIM(self)
+ * 
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 copy_shape = 1
+ *             else:
+ */
+    goto __pyx_L4;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214
+ *                 copy_shape = 1
+ *             else:
+ *                 copy_shape = 0             # <<<<<<<<<<<<<<
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
+ */
+  /*else*/ {
+    __pyx_v_copy_shape = 0;
+  }
+  __pyx_L4:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
+ *                 copy_shape = 0
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ */
+  __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L6_bool_binop_done;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":217
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ * 
+ */
+  __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L6_bool_binop_done:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
+ *                 copy_shape = 0
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ */
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
+ */
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __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(1, 218, __pyx_L1_error)
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
+ *                 copy_shape = 0
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ */
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ */
+  __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L9_bool_binop_done;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":221
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ * 
+ */
+  __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L9_bool_binop_done:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ */
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
+ * 
+ *             info.buf = PyArray_DATA(self)
+ */
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __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(1, 222, __pyx_L1_error)
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ */
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":224
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ * 
+ *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
+ *             info.ndim = ndim
+ *             if copy_shape:
+ */
+  __pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ * 
+ *             info.buf = PyArray_DATA(self)
+ *             info.ndim = ndim             # <<<<<<<<<<<<<<
+ *             if copy_shape:
+ *                 # Allocate new buffer for strides and shape info.
+ */
+  __pyx_v_info->ndim = __pyx_v_ndim;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226
+ *             info.buf = PyArray_DATA(self)
+ *             info.ndim = ndim
+ *             if copy_shape:             # <<<<<<<<<<<<<<
+ *                 # Allocate new buffer for strides and shape info.
+ *                 # This is allocated as one block, strides first.
+ */
+  __pyx_t_1 = (__pyx_v_copy_shape != 0);
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ *                 # Allocate new buffer for strides and shape info.
+ *                 # This is allocated as one block, strides first.
+ *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)             # <<<<<<<<<<<<<<
+ *                 info.shape = info.strides + ndim
+ *                 for i in range(ndim):
+ */
+    __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2)));
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":230
+ *                 # This is allocated as one block, strides first.
+ *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
+ *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
+ *                 for i in range(ndim):
+ *                     info.strides[i] = PyArray_STRIDES(self)[i]
+ */
+    __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
+ *                 info.shape = info.strides + ndim
+ *                 for i in range(ndim):             # <<<<<<<<<<<<<<
+ *                     info.strides[i] = PyArray_STRIDES(self)[i]
+ *                     info.shape[i] = PyArray_DIMS(self)[i]
+ */
+    __pyx_t_4 = __pyx_v_ndim;
+    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+      __pyx_v_i = __pyx_t_5;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ *                 info.shape = info.strides + ndim
+ *                 for i in range(ndim):
+ *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
+ *                     info.shape[i] = PyArray_DIMS(self)[i]
+ *             else:
+ */
+      (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ *                 for i in range(ndim):
+ *                     info.strides[i] = PyArray_STRIDES(self)[i]
+ *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
+ *             else:
+ *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
+ */
+      (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226
+ *             info.buf = PyArray_DATA(self)
+ *             info.ndim = ndim
+ *             if copy_shape:             # <<<<<<<<<<<<<<
+ *                 # Allocate new buffer for strides and shape info.
+ *                 # This is allocated as one block, strides first.
+ */
+    goto __pyx_L11;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ *                     info.shape[i] = PyArray_DIMS(self)[i]
+ *             else:
+ *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
+ *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
+ *             info.suboffsets = NULL
+ */
+  /*else*/ {
+    __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ *             else:
+ *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
+ *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
+ *             info.suboffsets = NULL
+ *             info.itemsize = PyArray_ITEMSIZE(self)
+ */
+    __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self));
+  }
+  __pyx_L11:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
+ *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
+ *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
+ *             info.itemsize = PyArray_ITEMSIZE(self)
+ *             info.readonly = not PyArray_ISWRITEABLE(self)
+ */
+  __pyx_v_info->suboffsets = NULL;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":238
+ *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
+ *             info.suboffsets = NULL
+ *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
+ *             info.readonly = not PyArray_ISWRITEABLE(self)
+ * 
+ */
+  __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239
+ *             info.suboffsets = NULL
+ *             info.itemsize = PyArray_ITEMSIZE(self)
+ *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
+ * 
+ *             cdef int t
+ */
+  __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ * 
+ *             cdef int t
+ *             cdef char* f = NULL             # <<<<<<<<<<<<<<
+ *             cdef dtype descr = self.descr
+ *             cdef int offset
+ */
+  __pyx_v_f = NULL;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ *             cdef int t
+ *             cdef char* f = NULL
+ *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
+ *             cdef int offset
+ * 
+ */
+  __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ *             cdef int offset
+ * 
+ *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
+ * 
+ *             if not hasfields and not copy_shape:
+ */
+  __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
+ * 
+ *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
+ *                 # do not call releasebuffer
+ *                 info.obj = None
+ */
+  __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L15_bool_binop_done;
+  }
+  __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L15_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ *             if not hasfields and not copy_shape:
+ *                 # do not call releasebuffer
+ *                 info.obj = None             # <<<<<<<<<<<<<<
+ *             else:
+ *                 # need to call releasebuffer
+ */
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    __Pyx_GOTREF(__pyx_v_info->obj);
+    __Pyx_DECREF(__pyx_v_info->obj);
+    __pyx_v_info->obj = Py_None;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
+ * 
+ *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
+ *                 # do not call releasebuffer
+ *                 info.obj = None
+ */
+    goto __pyx_L14;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ *             else:
+ *                 # need to call releasebuffer
+ *                 info.obj = self             # <<<<<<<<<<<<<<
+ * 
+ *             if not hasfields:
+ */
+  /*else*/ {
+    __Pyx_INCREF(((PyObject *)__pyx_v_self));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    __Pyx_GOTREF(__pyx_v_info->obj);
+    __Pyx_DECREF(__pyx_v_info->obj);
+    __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
+  }
+  __pyx_L14:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255
+ *                 info.obj = self
+ * 
+ *             if not hasfields:             # <<<<<<<<<<<<<<
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or
+ */
+  __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0);
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":256
+ * 
+ *             if not hasfields:
+ *                 t = descr.type_num             # <<<<<<<<<<<<<<
+ *                 if ((descr.byteorder == c'>' and little_endian) or
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ */
+    __pyx_t_4 = __pyx_v_descr->type_num;
+    __pyx_v_t = __pyx_t_4;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ *             if not hasfields:
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")
+ */
+    __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0);
+    if (!__pyx_t_2) {
+      goto __pyx_L20_next_or;
+    } else {
+    }
+    __pyx_t_2 = (__pyx_v_little_endian != 0);
+    if (!__pyx_t_2) {
+    } else {
+      __pyx_t_1 = __pyx_t_2;
+      goto __pyx_L19_bool_binop_done;
+    }
+    __pyx_L20_next_or:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":258
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or
+ *                     (descr.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
+ *                     raise ValueError(u"Non-native byte order not supported")
+ *                 if   t == NPY_BYTE:        f = "b"
+ */
+    __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0);
+    if (__pyx_t_2) {
+    } else {
+      __pyx_t_1 = __pyx_t_2;
+      goto __pyx_L19_bool_binop_done;
+    }
+    __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0);
+    __pyx_t_1 = __pyx_t_2;
+    __pyx_L19_bool_binop_done:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ *             if not hasfields:
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")
+ */
+    if (__pyx_t_1) {
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ *                 if ((descr.byteorder == c'>' and little_endian) or
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
+ *                 if   t == NPY_BYTE:        f = "b"
+ *                 elif t == NPY_UBYTE:       f = "B"
+ */
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __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(1, 259, __pyx_L1_error)
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ *             if not hasfields:
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")
+ */
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")
+ *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_UBYTE:       f = "B"
+ *                 elif t == NPY_SHORT:       f = "h"
+ */
+    switch (__pyx_v_t) {
+      case NPY_BYTE:
+      __pyx_v_f = ((char *)"b");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ *                     raise ValueError(u"Non-native byte order not supported")
+ *                 if   t == NPY_BYTE:        f = "b"
+ *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_SHORT:       f = "h"
+ *                 elif t == NPY_USHORT:      f = "H"
+ */
+      case NPY_UBYTE:
+      __pyx_v_f = ((char *)"B");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ *                 if   t == NPY_BYTE:        f = "b"
+ *                 elif t == NPY_UBYTE:       f = "B"
+ *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_USHORT:      f = "H"
+ *                 elif t == NPY_INT:         f = "i"
+ */
+      case NPY_SHORT:
+      __pyx_v_f = ((char *)"h");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ *                 elif t == NPY_UBYTE:       f = "B"
+ *                 elif t == NPY_SHORT:       f = "h"
+ *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_INT:         f = "i"
+ *                 elif t == NPY_UINT:        f = "I"
+ */
+      case NPY_USHORT:
+      __pyx_v_f = ((char *)"H");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ *                 elif t == NPY_SHORT:       f = "h"
+ *                 elif t == NPY_USHORT:      f = "H"
+ *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_UINT:        f = "I"
+ *                 elif t == NPY_LONG:        f = "l"
+ */
+      case NPY_INT:
+      __pyx_v_f = ((char *)"i");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ *                 elif t == NPY_USHORT:      f = "H"
+ *                 elif t == NPY_INT:         f = "i"
+ *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_LONG:        f = "l"
+ *                 elif t == NPY_ULONG:       f = "L"
+ */
+      case NPY_UINT:
+      __pyx_v_f = ((char *)"I");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ *                 elif t == NPY_INT:         f = "i"
+ *                 elif t == NPY_UINT:        f = "I"
+ *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_ULONG:       f = "L"
+ *                 elif t == NPY_LONGLONG:    f = "q"
+ */
+      case NPY_LONG:
+      __pyx_v_f = ((char *)"l");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ *                 elif t == NPY_UINT:        f = "I"
+ *                 elif t == NPY_LONG:        f = "l"
+ *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_LONGLONG:    f = "q"
+ *                 elif t == NPY_ULONGLONG:   f = "Q"
+ */
+      case NPY_ULONG:
+      __pyx_v_f = ((char *)"L");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ *                 elif t == NPY_LONG:        f = "l"
+ *                 elif t == NPY_ULONG:       f = "L"
+ *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_ULONGLONG:   f = "Q"
+ *                 elif t == NPY_FLOAT:       f = "f"
+ */
+      case NPY_LONGLONG:
+      __pyx_v_f = ((char *)"q");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ *                 elif t == NPY_ULONG:       f = "L"
+ *                 elif t == NPY_LONGLONG:    f = "q"
+ *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_FLOAT:       f = "f"
+ *                 elif t == NPY_DOUBLE:      f = "d"
+ */
+      case NPY_ULONGLONG:
+      __pyx_v_f = ((char *)"Q");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ *                 elif t == NPY_LONGLONG:    f = "q"
+ *                 elif t == NPY_ULONGLONG:   f = "Q"
+ *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_DOUBLE:      f = "d"
+ *                 elif t == NPY_LONGDOUBLE:  f = "g"
+ */
+      case NPY_FLOAT:
+      __pyx_v_f = ((char *)"f");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ *                 elif t == NPY_ULONGLONG:   f = "Q"
+ *                 elif t == NPY_FLOAT:       f = "f"
+ *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_LONGDOUBLE:  f = "g"
+ *                 elif t == NPY_CFLOAT:      f = "Zf"
+ */
+      case NPY_DOUBLE:
+      __pyx_v_f = ((char *)"d");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ *                 elif t == NPY_FLOAT:       f = "f"
+ *                 elif t == NPY_DOUBLE:      f = "d"
+ *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_CFLOAT:      f = "Zf"
+ *                 elif t == NPY_CDOUBLE:     f = "Zd"
+ */
+      case NPY_LONGDOUBLE:
+      __pyx_v_f = ((char *)"g");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ *                 elif t == NPY_DOUBLE:      f = "d"
+ *                 elif t == NPY_LONGDOUBLE:  f = "g"
+ *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_CDOUBLE:     f = "Zd"
+ *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
+ */
+      case NPY_CFLOAT:
+      __pyx_v_f = ((char *)"Zf");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ *                 elif t == NPY_LONGDOUBLE:  f = "g"
+ *                 elif t == NPY_CFLOAT:      f = "Zf"
+ *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
+ *                 elif t == NPY_OBJECT:      f = "O"
+ */
+      case NPY_CDOUBLE:
+      __pyx_v_f = ((char *)"Zd");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ *                 elif t == NPY_CFLOAT:      f = "Zf"
+ *                 elif t == NPY_CDOUBLE:     f = "Zd"
+ *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
+ *                 elif t == NPY_OBJECT:      f = "O"
+ *                 else:
+ */
+      case NPY_CLONGDOUBLE:
+      __pyx_v_f = ((char *)"Zg");
+      break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ *                 elif t == NPY_CDOUBLE:     f = "Zd"
+ *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
+ *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+ */
+      case NPY_OBJECT:
+      __pyx_v_f = ((char *)"O");
+      break;
+      default:
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ *                 elif t == NPY_OBJECT:      f = "O"
+ *                 else:
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
+ *                 info.format = f
+ *                 return
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_6);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
+      __pyx_t_6 = 0;
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __PYX_ERR(1, 278, __pyx_L1_error)
+      break;
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ *                 else:
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+ *                 info.format = f             # <<<<<<<<<<<<<<
+ *                 return
+ *             else:
+ */
+    __pyx_v_info->format = __pyx_v_f;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+ *                 info.format = f
+ *                 return             # <<<<<<<<<<<<<<
+ *             else:
+ *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255
+ *                 info.obj = self
+ * 
+ *             if not hasfields:             # <<<<<<<<<<<<<<
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or
+ */
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ *                 return
+ *             else:
+ *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
+ *                 info.format[0] = c'^' # Native data types, manual alignment
+ *                 offset = 0
+ */
+  /*else*/ {
+    __pyx_v_info->format = ((char *)malloc(0xFF));
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ *             else:
+ *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
+ *                 info.format[0] = c'^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
+ *                 offset = 0
+ *                 f = _util_dtypestring(descr, info.format + 1,
+ */
+    (__pyx_v_info->format[0]) = '^';
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
+ *                 info.format[0] = c'^' # Native data types, manual alignment
+ *                 offset = 0             # <<<<<<<<<<<<<<
+ *                 f = _util_dtypestring(descr, info.format + 1,
+ *                                       info.format + _buffer_format_string_len,
+ */
+    __pyx_v_offset = 0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":285
+ *                 info.format[0] = c'^' # Native data types, manual alignment
+ *                 offset = 0
+ *                 f = _util_dtypestring(descr, info.format + 1,             # <<<<<<<<<<<<<<
+ *                                       info.format + _buffer_format_string_len,
+ *                                       &offset)
+ */
+    __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error)
+    __pyx_v_f = __pyx_t_7;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ *                                       info.format + _buffer_format_string_len,
+ *                                       &offset)
+ *                 f[0] = c'\0' # Terminate format string             # <<<<<<<<<<<<<<
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ */
+    (__pyx_v_f[0]) = '\x00';
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
+ *         # experimental exception made for __getbuffer__ and __releasebuffer__
+ *         # -- the details of this may change.
+ *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
+ *             # This implementation of getbuffer is geared towards Cython
+ *             # requirements, and does not yet fullfill the PEP.
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) {
+    __Pyx_GOTREF(__pyx_v_info->obj);
+    __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL;
+  }
+  goto __pyx_L2;
+  __pyx_L0:;
+  if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) {
+    __Pyx_GOTREF(Py_None);
+    __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL;
+  }
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_descr);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290
+ *                 f[0] = c'\0' # Terminate format string
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)
+ */
+
+/* Python wrapper */
+static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
+static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
+  __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("__releasebuffer__", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ */
+  __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *                 stdlib.free(info.strides)
+ */
+    free(__pyx_v_info->format);
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ */
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.strides)
+ *                 # info.shape was stored after info.strides in the same block
+ */
+  __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
+ *                 # info.shape was stored after info.strides in the same block
+ * 
+ */
+    free(__pyx_v_info->strides);
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.strides)
+ *                 # info.shape was stored after info.strides in the same block
+ */
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290
+ *                 f[0] = c'\0' # Terminate format string
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)
+ */
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+ * ctypedef npy_cdouble     complex_t
+ * 
+ * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(1, <void*>a)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+ * 
+ * cdef inline object PyArray_MultiIterNew1(a):
+ *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+ * ctypedef npy_cdouble     complex_t
+ * 
+ * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(1, <void*>a)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+ *     return PyArray_MultiIterNew(1, <void*>a)
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+ *     return PyArray_MultiIterNew(1, <void*>a)
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+ * 
+ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
+ *     # Recursive utility function used in __getbuffer__ to get format
+ *     # string. The new location in the format string is returned.
+ */
+
+static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
+  PyArray_Descr *__pyx_v_child = 0;
+  int __pyx_v_endian_detector;
+  int __pyx_v_little_endian;
+  PyObject *__pyx_v_fields = 0;
+  PyObject *__pyx_v_childname = NULL;
+  PyObject *__pyx_v_new_offset = NULL;
+  PyObject *__pyx_v_t = NULL;
+  char *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  Py_ssize_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  long __pyx_t_8;
+  char *__pyx_t_9;
+  __Pyx_RefNannySetupContext("_util_dtypestring", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ * 
+ *     cdef dtype child
+ *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
+ *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
+ *     cdef tuple fields
+ */
+  __pyx_v_endian_detector = 1;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ *     cdef dtype child
+ *     cdef int endian_detector = 1
+ *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
+ *     cdef tuple fields
+ * 
+ */
+  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ *     cdef tuple fields
+ * 
+ *     for childname in descr.names:             # <<<<<<<<<<<<<<
+ *         fields = descr.fields[childname]
+ *         child, new_offset = fields
+ */
+  if (unlikely(__pyx_v_descr->names == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(1, 794, __pyx_L1_error)
+  }
+  __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
+  for (;;) {
+    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+    #if CYTHON_COMPILING_IN_CPYTHON
+    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error)
+    #else
+    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":795
+ * 
+ *     for childname in descr.names:
+ *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
+ *         child, new_offset = fields
+ * 
+ */
+    if (unlikely(__pyx_v_descr->fields == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(1, 795, __pyx_L1_error)
+    }
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error)
+    __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
+    __pyx_t_3 = 0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ *     for childname in descr.names:
+ *         fields = descr.fields[childname]
+ *         child, new_offset = fields             # <<<<<<<<<<<<<<
+ * 
+ *         if (end - f) - <int>(new_offset - offset[0]) < 15:
+ */
+    if (likely(__pyx_v_fields != Py_None)) {
+      PyObject* sequence = __pyx_v_fields;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      Py_ssize_t size = Py_SIZE(sequence);
+      #else
+      Py_ssize_t size = PySequence_Size(sequence);
+      #endif
+      if (unlikely(size != 2)) {
+        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+        __PYX_ERR(1, 796, __pyx_L1_error)
+      }
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_4);
+      #else
+      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      #endif
+    } else {
+      __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 796, __pyx_L1_error)
+    }
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 796, __pyx_L1_error)
+    __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
+    __pyx_t_3 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798
+ *         child, new_offset = fields
+ * 
+ *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ */
+    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
+    if (__pyx_t_6) {
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799
+ * 
+ *         if (end - f) - <int>(new_offset - offset[0]) < 15:
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or
+ */
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __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(1, 799, __pyx_L1_error)
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798
+ *         child, new_offset = fields
+ * 
+ *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ */
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *             (child.byteorder == c'<' and not little_endian)):
+ *             raise ValueError(u"Non-native byte order not supported")
+ */
+    __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0);
+    if (!__pyx_t_7) {
+      goto __pyx_L8_next_or;
+    } else {
+    }
+    __pyx_t_7 = (__pyx_v_little_endian != 0);
+    if (!__pyx_t_7) {
+    } else {
+      __pyx_t_6 = __pyx_t_7;
+      goto __pyx_L7_bool_binop_done;
+    }
+    __pyx_L8_next_or:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or
+ *             (child.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
+ *             raise ValueError(u"Non-native byte order not supported")
+ *             # One could encode it in the format string and have Cython
+ */
+    __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0);
+    if (__pyx_t_7) {
+    } else {
+      __pyx_t_6 = __pyx_t_7;
+      goto __pyx_L7_bool_binop_done;
+    }
+    __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0);
+    __pyx_t_6 = __pyx_t_7;
+    __pyx_L7_bool_binop_done:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *             (child.byteorder == c'<' and not little_endian)):
+ *             raise ValueError(u"Non-native byte order not supported")
+ */
+    if (__pyx_t_6) {
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803
+ *         if ((child.byteorder == c'>' and little_endian) or
+ *             (child.byteorder == c'<' and not little_endian)):
+ *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
+ *             # One could encode it in the format string and have Cython
+ *             # complain instead, BUT: < and > in format strings also imply
+ */
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __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(1, 803, __pyx_L1_error)
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *             (child.byteorder == c'<' and not little_endian)):
+ *             raise ValueError(u"Non-native byte order not supported")
+ */
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ * 
+ *         # Output padding bytes
+ *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
+ *             f[0] = 120 # "x"; pad byte
+ *             f += 1
+ */
+    while (1) {
+      __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (!__pyx_t_6) break;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ *         # Output padding bytes
+ *         while offset[0] < new_offset:
+ *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
+ *             f += 1
+ *             offset[0] += 1
+ */
+      (__pyx_v_f[0]) = 0x78;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":815
+ *         while offset[0] < new_offset:
+ *             f[0] = 120 # "x"; pad byte
+ *             f += 1             # <<<<<<<<<<<<<<
+ *             offset[0] += 1
+ * 
+ */
+      __pyx_v_f = (__pyx_v_f + 1);
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":816
+ *             f[0] = 120 # "x"; pad byte
+ *             f += 1
+ *             offset[0] += 1             # <<<<<<<<<<<<<<
+ * 
+ *         offset[0] += child.itemsize
+ */
+      __pyx_t_8 = 0;
+      (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818
+ *             offset[0] += 1
+ * 
+ *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
+ * 
+ *         if not PyDataType_HASFIELDS(child):
+ */
+    __pyx_t_8 = 0;
+    (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820
+ *         offset[0] += child.itemsize
+ * 
+ *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
+ *             t = child.type_num
+ *             if end - f < 5:
+ */
+    __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
+    if (__pyx_t_6) {
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":821
+ * 
+ *         if not PyDataType_HASFIELDS(child):
+ *             t = child.type_num             # <<<<<<<<<<<<<<
+ *             if end - f < 5:
+ *                 raise RuntimeError(u"Format string allocated too short.")
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
+      __pyx_t_4 = 0;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822
+ *         if not PyDataType_HASFIELDS(child):
+ *             t = child.type_num
+ *             if end - f < 5:             # <<<<<<<<<<<<<<
+ *                 raise RuntimeError(u"Format string allocated too short.")
+ * 
+ */
+      __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
+      if (__pyx_t_6) {
+
+        /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823
+ *             t = child.type_num
+ *             if end - f < 5:
+ *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
+ * 
+ *             # Until ticket #99 is fixed, use integers to avoid warnings
+ */
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __PYX_ERR(1, 823, __pyx_L1_error)
+
+        /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822
+ *         if not PyDataType_HASFIELDS(child):
+ *             t = child.type_num
+ *             if end - f < 5:             # <<<<<<<<<<<<<<
+ *                 raise RuntimeError(u"Format string allocated too short.")
+ * 
+ */
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ * 
+ *             # Until ticket #99 is fixed, use integers to avoid warnings
+ *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
+ *             elif t == NPY_SHORT:       f[0] = 104 #"h"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 98;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ *             # Until ticket #99 is fixed, use integers to avoid warnings
+ *             if   t == NPY_BYTE:        f[0] =  98 #"b"
+ *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_SHORT:       f[0] = 104 #"h"
+ *             elif t == NPY_USHORT:      f[0] =  72 #"H"
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 66;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":828
+ *             if   t == NPY_BYTE:        f[0] =  98 #"b"
+ *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
+ *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_USHORT:      f[0] =  72 #"H"
+ *             elif t == NPY_INT:         f[0] = 105 #"i"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x68;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
+ *             elif t == NPY_SHORT:       f[0] = 104 #"h"
+ *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_INT:         f[0] = 105 #"i"
+ *             elif t == NPY_UINT:        f[0] =  73 #"I"
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 72;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":830
+ *             elif t == NPY_SHORT:       f[0] = 104 #"h"
+ *             elif t == NPY_USHORT:      f[0] =  72 #"H"
+ *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_UINT:        f[0] =  73 #"I"
+ *             elif t == NPY_LONG:        f[0] = 108 #"l"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x69;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ *             elif t == NPY_USHORT:      f[0] =  72 #"H"
+ *             elif t == NPY_INT:         f[0] = 105 #"i"
+ *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_LONG:        f[0] = 108 #"l"
+ *             elif t == NPY_ULONG:       f[0] = 76  #"L"
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 73;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ *             elif t == NPY_INT:         f[0] = 105 #"i"
+ *             elif t == NPY_UINT:        f[0] =  73 #"I"
+ *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_ULONG:       f[0] = 76  #"L"
+ *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x6C;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ *             elif t == NPY_UINT:        f[0] =  73 #"I"
+ *             elif t == NPY_LONG:        f[0] = 108 #"l"
+ *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
+ *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 76;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ *             elif t == NPY_LONG:        f[0] = 108 #"l"
+ *             elif t == NPY_ULONG:       f[0] = 76  #"L"
+ *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
+ *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x71;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":835
+ *             elif t == NPY_ULONG:       f[0] = 76  #"L"
+ *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
+ *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
+ *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 81;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":836
+ *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
+ *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
+ *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
+ *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x66;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
+ *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
+ *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
+ *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x64;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
+ *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
+ *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
+ *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 0x67;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
+ *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
+ *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
+ *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
+ *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 90;
+        (__pyx_v_f[1]) = 0x66;
+        __pyx_v_f = (__pyx_v_f + 1);
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
+ *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
+ *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
+ *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
+ *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 90;
+        (__pyx_v_f[1]) = 0x64;
+        __pyx_v_f = (__pyx_v_f + 1);
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
+ *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
+ *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
+ *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
+ *             else:
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 90;
+        (__pyx_v_f[1]) = 0x67;
+        __pyx_v_f = (__pyx_v_f + 1);
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
+ *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
+ *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
+ *             else:
+ *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+ */
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
+        (__pyx_v_f[0]) = 79;
+        goto __pyx_L15;
+      }
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
+ *             else:
+ *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
+ *             f += 1
+ *         else:
+ */
+      /*else*/ {
+        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __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 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __PYX_ERR(1, 844, __pyx_L1_error)
+      }
+      __pyx_L15:;
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ *             else:
+ *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+ *             f += 1             # <<<<<<<<<<<<<<
+ *         else:
+ *             # Cython ignores struct boundary information ("T{...}"),
+ */
+      __pyx_v_f = (__pyx_v_f + 1);
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820
+ *         offset[0] += child.itemsize
+ * 
+ *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
+ *             t = child.type_num
+ *             if end - f < 5:
+ */
+      goto __pyx_L13;
+    }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ *             # Cython ignores struct boundary information ("T{...}"),
+ *             # so don't output it
+ *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
+ *     return f
+ * 
+ */
+    /*else*/ {
+      __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(1, 849, __pyx_L1_error)
+      __pyx_v_f = __pyx_t_9;
+    }
+    __pyx_L13:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ *     cdef tuple fields
+ * 
+ *     for childname in descr.names:             # <<<<<<<<<<<<<<
+ *         fields = descr.fields[childname]
+ *         child, new_offset = fields
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ *             # so don't output it
+ *             f = _util_dtypestring(child, f, end, offset)
+ *     return f             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_f;
+  goto __pyx_L0;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
+ * 
+ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
+ *     # Recursive utility function used in __getbuffer__ to get format
+ *     # string. The new location in the format string is returned.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_child);
+  __Pyx_XDECREF(__pyx_v_fields);
+  __Pyx_XDECREF(__pyx_v_childname);
+  __Pyx_XDECREF(__pyx_v_new_offset);
+  __Pyx_XDECREF(__pyx_v_t);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":966
+ * 
+ * 
+ * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
+ *      cdef PyObject* baseptr
+ *      if base is None:
+ */
+
+static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
+  PyObject *__pyx_v_baseptr;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("set_array_base", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":968
+ * cdef inline void set_array_base(ndarray arr, object base):
+ *      cdef PyObject* baseptr
+ *      if base is None:             # <<<<<<<<<<<<<<
+ *          baseptr = NULL
+ *      else:
+ */
+  __pyx_t_1 = (__pyx_v_base == Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969
+ *      cdef PyObject* baseptr
+ *      if base is None:
+ *          baseptr = NULL             # <<<<<<<<<<<<<<
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!
+ */
+    __pyx_v_baseptr = NULL;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":968
+ * cdef inline void set_array_base(ndarray arr, object base):
+ *      cdef PyObject* baseptr
+ *      if base is None:             # <<<<<<<<<<<<<<
+ *          baseptr = NULL
+ *      else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":971
+ *          baseptr = NULL
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)
+ */
+  /*else*/ {
+    Py_INCREF(__pyx_v_base);
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":972
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!
+ *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
+ *      Py_XDECREF(arr.base)
+ *      arr.base = baseptr
+ */
+    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
+  }
+  __pyx_L3:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":973
+ *          Py_INCREF(base) # important to do this before decref below!
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
+ *      arr.base = baseptr
+ * 
+ */
+  Py_XDECREF(__pyx_v_arr->base);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":974
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)
+ *      arr.base = baseptr             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ */
+  __pyx_v_arr->base = __pyx_v_baseptr;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":966
+ * 
+ * 
+ * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
+ *      cdef PyObject* baseptr
+ *      if base is None:
+ */
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("get_array_base", 0);
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:             # <<<<<<<<<<<<<<
+ *         return None
+ *     else:
+ */
+  __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
+  if (__pyx_t_1) {
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":978
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:
+ *         return None             # <<<<<<<<<<<<<<
+ *     else:
+ *         return <object>arr.base
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:             # <<<<<<<<<<<<<<
+ *         return None
+ *     else:
+ */
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
+ *         return None
+ *     else:
+ *         return <object>arr.base             # <<<<<<<<<<<<<<
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
+    __pyx_r = ((PyObject *)__pyx_v_arr->base);
+    goto __pyx_L0;
+  }
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_5adios_softdict(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_softdict(PyObject *o) {
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
+}
+
+static int __pyx_tp_traverse_5adios_softdict(PyObject *o, visitproc v, void *a) {
+  int e;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_softdict(PyObject *o) {
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  return 0;
+}
+static PyObject *__pyx_sq_item_5adios_softdict(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+static PyMethodDef __pyx_methods_5adios_softdict[] = {
+  {0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_softdict = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_5adios_softdict, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_softdict = {
+  0, /*mp_length*/
+  __pyx_pw_5adios_8softdict_1__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_softdict = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.softdict", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_softdict), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_softdict, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  &__pyx_tp_as_sequence_softdict, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_softdict, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  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*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_5adios_softdict, /*tp_traverse*/
+  __pyx_tp_clear_5adios_softdict, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_softdict, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_softdict, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+static struct __pyx_vtabstruct_5adios_file __pyx_vtable_5adios_file;
+
+static PyObject *__pyx_tp_new_5adios_file(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_5adios_file *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_file *)o);
+  p->__pyx_vtab = __pyx_vtabptr_5adios_file;
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->vars = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  p->var = Py_None; Py_INCREF(Py_None);
+  p->attr = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_file(PyObject *o) {
+  struct __pyx_obj_5adios_file *p = (struct __pyx_obj_5adios_file *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->vars);
+  Py_CLEAR(p->attrs);
+  Py_CLEAR(p->var);
+  Py_CLEAR(p->attr);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
+}
+
+static int __pyx_tp_traverse_5adios_file(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_file *p = (struct __pyx_obj_5adios_file *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->vars) {
+    e = (*v)(((PyObject*)p->vars), a); if (e) return e;
+  }
+  if (p->attrs) {
+    e = (*v)(((PyObject*)p->attrs), a); if (e) return e;
+  }
+  if (p->var) {
+    e = (*v)(p->var, a); if (e) return e;
+  }
+  if (p->attr) {
+    e = (*v)(p->attr, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_file(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_file *p = (struct __pyx_obj_5adios_file *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->vars);
+  p->vars = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->var);
+  p->var = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attr);
+  p->attr = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+static PyObject *__pyx_sq_item_5adios_file(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+static PyObject *__pyx_tp_getattro_5adios_file(PyObject *o, PyObject *n) {
+  PyObject *v = PyObject_GenericGetAttr(o, n);
+  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+    PyErr_Clear();
+    v = __pyx_pw_5adios_4file_21__getattr__(o, n);
+  }
+  return v;
+}
+
+static PyObject *__pyx_getprop_5adios_4file_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_4name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_nvars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_5nvars_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_nattrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_6nattrs_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_current_step(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_12current_step_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_last_step(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_9last_step_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_endianness(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_10endianness_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_version(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_7version_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_file_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_9file_size_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_is_stream(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_9is_stream_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4file_vars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_4vars_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_4file_vars(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_4file_4vars_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_4file_4vars_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_4file_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_5attrs_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_4file_attrs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_4file_5attrs_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_4file_5attrs_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_4file_var(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_3var_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_4file_var(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_4file_3var_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_4file_3var_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_4file_attr(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4file_4attr_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_4file_attr(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_4file_4attr_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_4file_4attr_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_5adios_file[] = {
+  {"__del__", (PyCFunction)__pyx_pw_5adios_4file_3__del__, METH_NOARGS, __pyx_doc_5adios_4file_2__del__},
+  {"__enter__", (PyCFunction)__pyx_pw_5adios_4file_5__enter__, METH_NOARGS, __pyx_doc_5adios_4file_4__enter__},
+  {"__exit__", (PyCFunction)__pyx_pw_5adios_4file_7__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_4file_6__exit__},
+  {"close", (PyCFunction)__pyx_pw_5adios_4file_9close, METH_NOARGS, __pyx_doc_5adios_4file_8close},
+  {"printself", (PyCFunction)__pyx_pw_5adios_4file_11printself, METH_NOARGS, __pyx_doc_5adios_4file_10printself},
+  {"release_step", (PyCFunction)__pyx_pw_5adios_4file_13release_step, METH_NOARGS, __pyx_doc_5adios_4file_12release_step},
+  {"advance", (PyCFunction)__pyx_pw_5adios_4file_15advance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_4file_14advance},
+  {"__getattr__", (PyCFunction)__pyx_pw_5adios_4file_21__getattr__, METH_O|METH_COEXIST, 0},
+  {"__dir__", (PyCFunction)__pyx_pw_5adios_4file_23__dir__, METH_NOARGS, __pyx_doc_5adios_4file_22__dir__},
+  {"keys", (PyCFunction)__pyx_pw_5adios_4file_25keys, METH_NOARGS, __pyx_doc_5adios_4file_24keys},
+  {"is_open", (PyCFunction)__pyx_pw_5adios_4file_27is_open, METH_NOARGS, __pyx_doc_5adios_4file_26is_open},
+  {"dirs", (PyCFunction)__pyx_pw_5adios_4file_33dirs, METH_NOARGS, __pyx_doc_5adios_4file_32dirs},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_file[] = {
+  {(char *)"name", __pyx_getprop_5adios_4file_name, 0, (char *)" The filename (or stream name) associated with. ", 0},
+  {(char *)"nvars", __pyx_getprop_5adios_4file_nvars, 0, (char *)" The number of variables. ", 0},
+  {(char *)"nattrs", __pyx_getprop_5adios_4file_nattrs, 0, (char *)" The number of attributes. ", 0},
+  {(char *)"current_step", __pyx_getprop_5adios_4file_current_step, 0, (char *)" The current timestep index. ", 0},
+  {(char *)"last_step", __pyx_getprop_5adios_4file_last_step, 0, (char *)" The last timestep index. ", 0},
+  {(char *)"endianness", __pyx_getprop_5adios_4file_endianness, 0, (char *)" The endianness of the stored data. ", 0},
+  {(char *)"version", __pyx_getprop_5adios_4file_version, 0, (char *)" The version of Adios. ", 0},
+  {(char *)"file_size", __pyx_getprop_5adios_4file_file_size, 0, (char *)" The size of Adios file. ", 0},
+  {(char *)"is_stream", __pyx_getprop_5adios_4file_is_stream, 0, (char *)" Indicating reader type; file reader or stream reader ", 0},
+  {(char *)"vars", __pyx_getprop_5adios_4file_vars, __pyx_setprop_5adios_4file_vars, (char *)"vars: adios.softdict", 0},
+  {(char *)"attrs", __pyx_getprop_5adios_4file_attrs, __pyx_setprop_5adios_4file_attrs, (char *)"attrs: adios.softdict", 0},
+  {(char *)"var", __pyx_getprop_5adios_4file_var, __pyx_setprop_5adios_4file_var, (char *)"var: object", 0},
+  {(char *)"attr", __pyx_getprop_5adios_4file_attr, __pyx_setprop_5adios_4file_attr, (char *)"attr: object", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_file = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  __pyx_pw_5adios_4file_29__nonzero__, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  0, /*nb_index*/
+  #if PY_VERSION_HEX >= 0x03050000
+  0, /*nb_matrix_multiply*/
+  #endif
+  #if PY_VERSION_HEX >= 0x03050000
+  0, /*nb_inplace_matrix_multiply*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_file = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_5adios_file, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_file = {
+  0, /*mp_length*/
+  __pyx_pw_5adios_4file_17__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_file = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.file", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_file), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_file, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_4file_19__repr__, /*tp_repr*/
+  &__pyx_tp_as_number_file, /*tp_as_number*/
+  &__pyx_tp_as_sequence_file, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_file, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  __pyx_tp_getattro_5adios_file, /*tp_getattro*/
+  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*/
+  "file(str fname, str method_name='BP', MPI_Comm comm=MPI_COMM_WORLD, is_stream=False, ADIOS_LOCKMODE lock_mode=ADIOS_LOCKMODE_ALL, float timeout_sec=0.0)\n\n    file class for Adios file read and write.\n\n    Args:\n        fname (str): filename.\n        method_name (str, optional): Adios read method (default: 'BP').\n        comm (MPI_Comm, optional): MPI_comm for parallel read/write (default: MPI_COMM_WORLD).\n        is_stream (bool, optional): Set True if use stream reader (defau [...]
+  __pyx_tp_traverse_5adios_file, /*tp_traverse*/
+  __pyx_tp_clear_5adios_file, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_file, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_file, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_4file_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_file, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_blockinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_5adios_blockinfo *p;
+  PyObject *o;
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+    o = (*t->tp_alloc)(t, 0);
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_blockinfo *)o);
+  p->start = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->count = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_blockinfo(PyObject *o) {
+  struct __pyx_obj_5adios_blockinfo *p = (struct __pyx_obj_5adios_blockinfo *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->start);
+  Py_CLEAR(p->count);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_5adios_blockinfo(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_blockinfo *p = (struct __pyx_obj_5adios_blockinfo *)o;
+  if (p->start) {
+    e = (*v)(p->start, a); if (e) return e;
+  }
+  if (p->count) {
+    e = (*v)(p->count, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_blockinfo(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_blockinfo *p = (struct __pyx_obj_5adios_blockinfo *)o;
+  tmp = ((PyObject*)p->start);
+  p->start = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->count);
+  p->count = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_5adios_9blockinfo_start(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_9blockinfo_5start_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_9blockinfo_count(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_9blockinfo_5count_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_9blockinfo_process_id(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_9blockinfo_10process_id_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_9blockinfo_time_index(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_9blockinfo_10time_index_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_5adios_blockinfo[] = {
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_blockinfo[] = {
+  {(char *)"start", __pyx_getprop_5adios_9blockinfo_start, 0, (char *)0, 0},
+  {(char *)"count", __pyx_getprop_5adios_9blockinfo_count, 0, (char *)0, 0},
+  {(char *)"process_id", __pyx_getprop_5adios_9blockinfo_process_id, 0, (char *)0, 0},
+  {(char *)"time_index", __pyx_getprop_5adios_9blockinfo_time_index, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyTypeObject __pyx_type_5adios_blockinfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.blockinfo", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_blockinfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_blockinfo, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_9blockinfo_3__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  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*/
+  "blockinfo(tuple start, tuple count, int process_id, int time_index)", /*tp_doc*/
+  __pyx_tp_traverse_5adios_blockinfo, /*tp_traverse*/
+  __pyx_tp_clear_5adios_blockinfo, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_blockinfo, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_blockinfo, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_9blockinfo_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_blockinfo, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+static struct __pyx_vtabstruct_5adios_var __pyx_vtable_5adios_var;
+
+static PyObject *__pyx_tp_new_5adios_var(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_5adios_var *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_var *)o);
+  p->__pyx_vtab = __pyx_vtabptr_5adios_var;
+  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  p->blockinfo = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_var(PyObject *o) {
+  struct __pyx_obj_5adios_var *p = (struct __pyx_obj_5adios_var *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->file);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->dtype);
+  Py_CLEAR(p->dims);
+  Py_CLEAR(p->attrs);
+  Py_CLEAR(p->blockinfo);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
+}
+
+static int __pyx_tp_traverse_5adios_var(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_var *p = (struct __pyx_obj_5adios_var *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->file) {
+    e = (*v)(((PyObject*)p->file), a); if (e) return e;
+  }
+  if (p->dtype) {
+    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
+  }
+  if (p->dims) {
+    e = (*v)(p->dims, a); if (e) return e;
+  }
+  if (p->attrs) {
+    e = (*v)(((PyObject*)p->attrs), a); if (e) return e;
+  }
+  if (p->blockinfo) {
+    e = (*v)(p->blockinfo, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_var(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_var *p = (struct __pyx_obj_5adios_var *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->file);
+  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->dtype);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->dims);
+  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->blockinfo);
+  p->blockinfo = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+static PyObject *__pyx_sq_item_5adios_var(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+static PyObject *__pyx_tp_getattro_5adios_var(PyObject *o, PyObject *n) {
+  PyObject *v = PyObject_GenericGetAttr(o, n);
+  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+    PyErr_Clear();
+    v = __pyx_pw_5adios_3var_25__getattr__(o, n);
+  }
+  return v;
+}
+
+static PyObject *__pyx_getprop_5adios_3var_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_4name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_varid(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_5varid_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_5dtype_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_ndim(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_4ndim_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_dims(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_4dims_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_shape(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_5shape_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_4size_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_nsteps(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_6nsteps_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_5attrs_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_3var_blockinfo(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_3var_9blockinfo_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_5adios_var[] = {
+  {"__del__", (PyCFunction)__pyx_pw_5adios_3var_3__del__, METH_NOARGS, __pyx_doc_5adios_3var_2__del__},
+  {"close", (PyCFunction)__pyx_pw_5adios_3var_5close, METH_NOARGS, __pyx_doc_5adios_3var_4close},
+  {"advance", (PyCFunction)__pyx_pw_5adios_3var_7advance, METH_NOARGS, __pyx_doc_5adios_3var_6advance},
+  {"read_points", (PyCFunction)__pyx_pw_5adios_3var_9read_points, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_3var_8read_points},
+  {"read_writeblock", (PyCFunction)__pyx_pw_5adios_3var_11read_writeblock, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_3var_10read_writeblock},
+  {"read", (PyCFunction)__pyx_pw_5adios_3var_13read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_3var_12read},
+  {"printself", (PyCFunction)__pyx_pw_5adios_3var_15printself, METH_NOARGS, __pyx_doc_5adios_3var_14printself},
+  {"_readattr", (PyCFunction)__pyx_pw_5adios_3var_19_readattr, METH_O, __pyx_doc_5adios_3var_18_readattr},
+  {"_readvar", (PyCFunction)__pyx_pw_5adios_3var_21_readvar, METH_O, __pyx_doc_5adios_3var_20_readvar},
+  {"__getattr__", (PyCFunction)__pyx_pw_5adios_3var_25__getattr__, METH_O|METH_COEXIST, 0},
+  {"__dir__", (PyCFunction)__pyx_pw_5adios_3var_27__dir__, METH_NOARGS, __pyx_doc_5adios_3var_26__dir__},
+  {"keys", (PyCFunction)__pyx_pw_5adios_3var_29keys, METH_NOARGS, __pyx_doc_5adios_3var_28keys},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_var[] = {
+  {(char *)"name", __pyx_getprop_5adios_3var_name, 0, (char *)" The variable name. ", 0},
+  {(char *)"varid", __pyx_getprop_5adios_3var_varid, 0, (char *)" Internal variable id. ", 0},
+  {(char *)"dtype", __pyx_getprop_5adios_3var_dtype, 0, (char *)" Variable type as in numpy.dtype. ", 0},
+  {(char *)"ndim", __pyx_getprop_5adios_3var_ndim, 0, (char *)" The number of dimensions of the variable. ", 0},
+  {(char *)"dims", __pyx_getprop_5adios_3var_dims, 0, (char *)" The shape of the variable. ", 0},
+  {(char *)"shape", __pyx_getprop_5adios_3var_shape, 0, (char *)" The shape of the variable. ", 0},
+  {(char *)"size", __pyx_getprop_5adios_3var_size, 0, (char *)" The number of elements in the array. ", 0},
+  {(char *)"nsteps", __pyx_getprop_5adios_3var_nsteps, 0, (char *)" The number of time steps of the variable. ", 0},
+  {(char *)"attrs", __pyx_getprop_5adios_3var_attrs, 0, (char *)" Attributes associated with the variable. ", 0},
+  {(char *)"blockinfo", __pyx_getprop_5adios_3var_blockinfo, 0, (char *)" Block information. ", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_var = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_5adios_var, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_var = {
+  0, /*mp_length*/
+  __pyx_pw_5adios_3var_23__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_var = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.var", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_var), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_var, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_3var_17__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  &__pyx_tp_as_sequence_var, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_var, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  __pyx_tp_getattro_5adios_var, /*tp_getattro*/
+  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*/
+  "var(file file, str name)\n\n    Adios variable class.\n\n    Unlike attributes whose values are populated on initialization,\n    variable's values will be returned by explicitly calling read() or\n    array access interface ([]).\n\n    Args:\n        file (file): Associated file class\n        name (str): variable name\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_5adios_var, /*tp_traverse*/
+  __pyx_tp_clear_5adios_var, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_var, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_var, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_3var_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_var, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_attr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_5adios_attr *p;
+  PyObject *o;
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+    o = (*t->tp_alloc)(t, 0);
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_attr *)o);
+  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_attr(PyObject *o) {
+  struct __pyx_obj_5adios_attr *p = (struct __pyx_obj_5adios_attr *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->file);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->dtype);
+  Py_CLEAR(p->value);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_5adios_attr(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_attr *p = (struct __pyx_obj_5adios_attr *)o;
+  if (p->file) {
+    e = (*v)(((PyObject*)p->file), a); if (e) return e;
+  }
+  if (p->dtype) {
+    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
+  }
+  if (p->value) {
+    e = (*v)(((PyObject*)p->value), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_attr(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_attr *p = (struct __pyx_obj_5adios_attr *)o;
+  tmp = ((PyObject*)p->file);
+  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->dtype);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->value);
+  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+static PyObject *__pyx_sq_item_5adios_attr(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+static PyObject *__pyx_getprop_5adios_4attr_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4attr_4name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4attr_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4attr_5dtype_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_4attr_value(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_4attr_5value_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_5adios_attr[] = {
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_attr[] = {
+  {(char *)"name", __pyx_getprop_5adios_4attr_name, 0, (char *)" The attribute name ", 0},
+  {(char *)"dtype", __pyx_getprop_5adios_4attr_dtype, 0, (char *)" The attribute type as in numpy.dtype ", 0},
+  {(char *)"value", __pyx_getprop_5adios_4attr_value, 0, (char *)" The attribute's value ", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_attr = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_5adios_attr, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_attr = {
+  0, /*mp_length*/
+  __pyx_pw_5adios_4attr_3__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_attr = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.attr", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_attr), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_attr, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_4attr_5__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  &__pyx_tp_as_sequence_attr, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_attr, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  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*/
+  "attr(file file, str name)\n\n    Adios attribute class.\n\n    Attribute values are loaded on initialization.\n\n    Args:\n        attr_name (str): attribute name\n\n    Raises:\n        KeyError: If no attribute name exists.\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_5adios_attr, /*tp_traverse*/
+  __pyx_tp_clear_5adios_attr, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_attr, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_attr, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_4attr_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_attr, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_group(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_5adios_group *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_group *)o);
+  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->vars = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_group(PyObject *o) {
+  struct __pyx_obj_5adios_group *p = (struct __pyx_obj_5adios_group *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->file);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->vars);
+  Py_CLEAR(p->attrs);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
+}
+
+static int __pyx_tp_traverse_5adios_group(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_group *p = (struct __pyx_obj_5adios_group *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->file) {
+    e = (*v)(((PyObject*)p->file), a); if (e) return e;
+  }
+  if (p->vars) {
+    e = (*v)(((PyObject*)p->vars), a); if (e) return e;
+  }
+  if (p->attrs) {
+    e = (*v)(((PyObject*)p->attrs), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_group(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_group *p = (struct __pyx_obj_5adios_group *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->file);
+  p->file = ((struct __pyx_obj_5adios_file *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->vars);
+  p->vars = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((struct __pyx_obj_5adios_softdict *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+static PyObject *__pyx_sq_item_5adios_group(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+static PyObject *__pyx_tp_getattro_5adios_group(PyObject *o, PyObject *n) {
+  PyObject *v = PyObject_GenericGetAttr(o, n);
+  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+    PyErr_Clear();
+    v = __pyx_pw_5adios_5group_7__getattr__(o, n);
+  }
+  return v;
+}
+
+static PyObject *__pyx_getprop_5adios_5group_vars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_5group_4vars_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_5group_vars(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_5group_4vars_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_5group_4vars_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_5group_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_5group_5attrs_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_5group_attrs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_5group_5attrs_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_5group_5attrs_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_5adios_group[] = {
+  {"__getattr__", (PyCFunction)__pyx_pw_5adios_5group_7__getattr__, METH_O|METH_COEXIST, 0},
+  {"__dir__", (PyCFunction)__pyx_pw_5adios_5group_9__dir__, METH_NOARGS, __pyx_doc_5adios_5group_8__dir__},
+  {"keys", (PyCFunction)__pyx_pw_5adios_5group_11keys, METH_NOARGS, __pyx_doc_5adios_5group_10keys},
+  {"dirs", (PyCFunction)__pyx_pw_5adios_5group_13dirs, METH_NOARGS, __pyx_doc_5adios_5group_12dirs},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_group[] = {
+  {(char *)"vars", __pyx_getprop_5adios_5group_vars, __pyx_setprop_5adios_5group_vars, (char *)"vars: adios.softdict", 0},
+  {(char *)"attrs", __pyx_getprop_5adios_5group_attrs, __pyx_setprop_5adios_5group_attrs, (char *)"attrs: adios.softdict", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_group = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_5adios_group, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_group = {
+  0, /*mp_length*/
+  __pyx_pw_5adios_5group_3__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_group = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.group", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_group), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_group, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_5group_5__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  &__pyx_tp_as_sequence_group, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_group, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  __pyx_tp_getattro_5adios_group, /*tp_getattro*/
+  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*/
+  "group(file file, str name)\n\n    Adios group class.\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_5adios_group, /*tp_traverse*/
+  __pyx_tp_clear_5adios_group, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_group, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_group, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_5group_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_group, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_smartdict(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_5adios_smartdict *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_smartdict *)o);
+  p->factory = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_smartdict(PyObject *o) {
+  struct __pyx_obj_5adios_smartdict *p = (struct __pyx_obj_5adios_smartdict *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->factory);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
+}
+
+static int __pyx_tp_traverse_5adios_smartdict(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_smartdict *p = (struct __pyx_obj_5adios_smartdict *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->factory) {
+    e = (*v)(p->factory, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_smartdict(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_smartdict *p = (struct __pyx_obj_5adios_smartdict *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->factory);
+  p->factory = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static int __pyx_mp_ass_subscript_5adios_smartdict(PyObject *o, PyObject *i, PyObject *v) {
+  if (v) {
+    return __pyx_pw_5adios_9smartdict_3__setitem__(o, i, v);
+  }
+  else {
+    if ((&PyDict_Type)->tp_as_mapping && (&PyDict_Type)->tp_as_mapping->mp_ass_subscript)
+      return (&PyDict_Type)->tp_as_mapping->mp_ass_subscript(o, i, v);
+    PyErr_Format(PyExc_NotImplementedError,
+      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
+    return -1;
+  }
+}
+
+static PyMethodDef __pyx_methods_5adios_smartdict[] = {
+  {0, 0, 0, 0}
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_smartdict = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  __pyx_mp_ass_subscript_5adios_smartdict, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_smartdict = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.smartdict", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_smartdict), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_smartdict, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_smartdict, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  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*/
+  "smartdict(factory)", /*tp_doc*/
+  __pyx_tp_traverse_5adios_smartdict, /*tp_traverse*/
+  __pyx_tp_clear_5adios_smartdict, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_smartdict, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_9smartdict_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_smartdict, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_writer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_5adios_writer *p;
+  PyObject *o;
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+    o = (*t->tp_alloc)(t, 0);
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_writer *)o);
+  p->fname = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->gname = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->method = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->method_params = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->vars = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_writer(PyObject *o) {
+  struct __pyx_obj_5adios_writer *p = (struct __pyx_obj_5adios_writer *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->fname);
+  Py_CLEAR(p->gname);
+  Py_CLEAR(p->method);
+  Py_CLEAR(p->method_params);
+  Py_CLEAR(p->mode);
+  Py_CLEAR(p->vars);
+  Py_CLEAR(p->attrs);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_5adios_writer(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_writer *p = (struct __pyx_obj_5adios_writer *)o;
+  if (p->vars) {
+    e = (*v)(p->vars, a); if (e) return e;
+  }
+  if (p->attrs) {
+    e = (*v)(p->attrs, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_writer(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_writer *p = (struct __pyx_obj_5adios_writer *)o;
+  tmp = ((PyObject*)p->vars);
+  p->vars = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+static PyObject *__pyx_sq_item_5adios_writer(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+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);
+  }
+  else {
+    PyErr_Format(PyExc_NotImplementedError,
+      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_6writer_fname(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_5fname_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_6writer_gname(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_5gname_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_6writer_is_noxml(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_8is_noxml_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_6writer_mode(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_4mode_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_6writer_vars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_4vars_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_6writer_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_5attrs_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__},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_writer[] = {
+  {(char *)"fname", __pyx_getprop_5adios_6writer_fname, 0, (char *)" The filename to write. ", 0},
+  {(char *)"gname", __pyx_getprop_5adios_6writer_gname, 0, (char *)" The groupname associated with the file. ", 0},
+  {(char *)"is_noxml", __pyx_getprop_5adios_6writer_is_noxml, 0, (char *)" Boolean to indicate using No-XML or not. ", 0},
+  {(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},
+  {0, 0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_writer = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_5adios_writer, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_writer = {
+  0, /*mp_length*/
+  __pyx_pw_5adios_6writer_13__getitem__, /*mp_subscript*/
+  __pyx_mp_ass_subscript_5adios_writer, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_5adios_writer = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.writer", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_writer), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_writer, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_6writer_17__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  &__pyx_tp_as_sequence_writer, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_writer, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  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*/
+  "writer(str fname, bool is_noxml=True, str mode='w', MPI_Comm comm=MPI_COMM_WORLD)\n\n    writer class for Adios write.\n\n    Args:\n        fname (str): filename.\n        is_noxml (bool, optional): Set True if use noxml APIs (default: True).\n        comm (MPI_Comm, optional): MPI_comm for parallel read/write (default: MPI_COMM_WORLD).\n\n    Example:\n\n    >>> import adios as ad\n    >>> f = ad.writer('adiosfile.bp')\n\n    ", /*tp_doc*/
+  __pyx_tp_traverse_5adios_writer, /*tp_traverse*/
+  __pyx_tp_clear_5adios_writer, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_writer, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_writer, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_6writer_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_writer, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_attrinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_5adios_attrinfo *p;
+  PyObject *o;
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+    o = (*t->tp_alloc)(t, 0);
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_attrinfo *)o);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->dtype = Py_None; Py_INCREF(Py_None);
+  p->value = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_attrinfo(PyObject *o) {
+  struct __pyx_obj_5adios_attrinfo *p = (struct __pyx_obj_5adios_attrinfo *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->dtype);
+  Py_CLEAR(p->value);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_5adios_attrinfo(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_attrinfo *p = (struct __pyx_obj_5adios_attrinfo *)o;
+  if (p->dtype) {
+    e = (*v)(p->dtype, a); if (e) return e;
+  }
+  if (p->value) {
+    e = (*v)(p->value, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_attrinfo(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_attrinfo *p = (struct __pyx_obj_5adios_attrinfo *)o;
+  tmp = ((PyObject*)p->dtype);
+  p->dtype = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->value);
+  p->value = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_5adios_8attrinfo_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_8attrinfo_4name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_8attrinfo_is_static(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_8attrinfo_9is_static_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_8attrinfo_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_8attrinfo_5dtype_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_5adios_8attrinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_8attrinfo_5value_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_8attrinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_8attrinfo_5value_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyMethodDef __pyx_methods_5adios_attrinfo[] = {
+  {"define", (PyCFunction)__pyx_pw_5adios_8attrinfo_3define, METH_O, __pyx_doc_5adios_8attrinfo_2define},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_attrinfo[] = {
+  {(char *)"name", __pyx_getprop_5adios_8attrinfo_name, 0, (char *)0, 0},
+  {(char *)"is_static", __pyx_getprop_5adios_8attrinfo_is_static, 0, (char *)0, 0},
+  {(char *)"dtype", __pyx_getprop_5adios_8attrinfo_dtype, 0, (char *)0, 0},
+  {(char *)"value", __pyx_getprop_5adios_8attrinfo_value, __pyx_setprop_5adios_8attrinfo_value, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyTypeObject __pyx_type_5adios_attrinfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.attrinfo", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_attrinfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_attrinfo, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_8attrinfo_5__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  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*/
+  "attrinfo(str name, value=None, dtype=None, bool is_static=True)", /*tp_doc*/
+  __pyx_tp_traverse_5adios_attrinfo, /*tp_traverse*/
+  __pyx_tp_clear_5adios_attrinfo, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_5adios_attrinfo, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_5adios_attrinfo, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_5adios_8attrinfo_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_5adios_attrinfo, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_5adios_varinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_5adios_varinfo *p;
+  PyObject *o;
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+    o = (*t->tp_alloc)(t, 0);
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_5adios_varinfo *)o);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->ldim = Py_None; Py_INCREF(Py_None);
+  p->gdim = Py_None; Py_INCREF(Py_None);
+  p->offset = Py_None; Py_INCREF(Py_None);
+  p->value = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_5adios_varinfo(PyObject *o) {
+  struct __pyx_obj_5adios_varinfo *p = (struct __pyx_obj_5adios_varinfo *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->ldim);
+  Py_CLEAR(p->gdim);
+  Py_CLEAR(p->offset);
+  Py_CLEAR(p->value);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_5adios_varinfo(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_5adios_varinfo *p = (struct __pyx_obj_5adios_varinfo *)o;
+  if (p->ldim) {
+    e = (*v)(p->ldim, a); if (e) return e;
+  }
+  if (p->gdim) {
+    e = (*v)(p->gdim, a); if (e) return e;
+  }
+  if (p->offset) {
+    e = (*v)(p->offset, a); if (e) return e;
+  }
+  if (p->value) {
+    e = (*v)(p->value, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_5adios_varinfo(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_5adios_varinfo *p = (struct __pyx_obj_5adios_varinfo *)o;
+  tmp = ((PyObject*)p->ldim);
+  p->ldim = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->gdim);
+  p->gdim = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->offset);
+  p->offset = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->value);
+  p->value = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_5adios_7varinfo_ldim(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_7varinfo_4ldim_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_7varinfo_ldim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_7varinfo_4ldim_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_7varinfo_4ldim_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_7varinfo_gdim(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_7varinfo_4gdim_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_7varinfo_gdim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_7varinfo_4gdim_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_7varinfo_4gdim_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_7varinfo_offset(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_7varinfo_6offset_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_7varinfo_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_7varinfo_6offset_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_7varinfo_6offset_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_5adios_7varinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_7varinfo_5value_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_7varinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_7varinfo_5value_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_5adios_7varinfo_5value_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_5adios_varinfo[] = {
+  {"define", (PyCFunction)__pyx_pw_5adios_7varinfo_3define, METH_O, __pyx_doc_5adios_7varinfo_2define},
+  {"bytes", (PyCFunction)__pyx_pw_5adios_7varinfo_5bytes, METH_NOARGS, __pyx_doc_5adios_7varinfo_4bytes},
+  {"write", (PyCFunction)__pyx_pw_5adios_7varinfo_7write, METH_O, __pyx_doc_5adios_7varinfo_6write},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_5adios_varinfo[] = {
+  {(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},
+  {(char *)"value", __pyx_getprop_5adios_7varinfo_value, __pyx_setprop_5adios_7varinfo_value, (char *)"value: object", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyTypeObject __pyx_type_5adios_varinfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios.varinfo", /*tp_name*/
+  sizeof(struct __pyx_obj_5adios_varinfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_5adios_varinfo, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  0, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_5adios_7varinfo_9__repr__, /*tp_repr*/
   0, /*tp_as_number*/
   0, /*tp_as_sequence*/
   0, /*tp_as_mapping*/
@@ -24303,25 +36376,25 @@ static PyTypeObject __pyx_type_5adios___pyx_scope_struct_2_genexpr = {
   0, /*tp_getattro*/
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_5adios___pyx_scope_struct_2_genexpr, /*tp_traverse*/
-  __pyx_tp_clear_5adios___pyx_scope_struct_2_genexpr, /*tp_clear*/
+  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*/
+  __pyx_tp_traverse_5adios_varinfo, /*tp_traverse*/
+  __pyx_tp_clear_5adios_varinfo, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  0, /*tp_methods*/
+  __pyx_methods_5adios_varinfo, /*tp_methods*/
   0, /*tp_members*/
-  0, /*tp_getset*/
+  __pyx_getsets_5adios_varinfo, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  0, /*tp_init*/
+  __pyx_pw_5adios_7varinfo_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_5adios___pyx_scope_struct_2_genexpr, /*tp_new*/
+  __pyx_tp_new_5adios_varinfo, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -24337,30 +36410,33 @@ static PyTypeObject __pyx_type_5adios___pyx_scope_struct_2_genexpr = {
 };
 
 static PyMethodDef __pyx_methods[] = {
-  {"__parse_index", (PyCFunction)__pyx_pw_5adios_1__parse_index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios___parse_index},
-  {"init", (PyCFunction)__pyx_pw_5adios_3init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_2init},
-  {"open", (PyCFunction)__pyx_pw_5adios_5open, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_4open},
-  {"set_group_size", (PyCFunction)__pyx_pw_5adios_7set_group_size, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6set_group_size},
-  {"write", (PyCFunction)__pyx_pw_5adios_9write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_8write},
-  {"write_int", (PyCFunction)__pyx_pw_5adios_11write_int, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_10write_int},
-  {"write_long", (PyCFunction)__pyx_pw_5adios_13write_long, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_12write_long},
-  {"write_float", (PyCFunction)__pyx_pw_5adios_15write_float, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_14write_float},
-  {"write_double", (PyCFunction)__pyx_pw_5adios_17write_double, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_16write_double},
-  {"read", (PyCFunction)__pyx_pw_5adios_19read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_18read},
-  {"close", (PyCFunction)__pyx_pw_5adios_21close, METH_O, __pyx_doc_5adios_20close},
-  {"finalize", (PyCFunction)__pyx_pw_5adios_23finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_22finalize},
-  {"init_noxml", (PyCFunction)__pyx_pw_5adios_25init_noxml, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_24init_noxml},
-  {"allocate_buffer", (PyCFunction)__pyx_pw_5adios_27allocate_buffer, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_26allocate_buffer},
-  {"declare_group", (PyCFunction)__pyx_pw_5adios_29declare_group, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_28declare_group},
-  {"define_var", (PyCFunction)__pyx_pw_5adios_31define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_30define_var},
-  {"define_attribute", (PyCFunction)__pyx_pw_5adios_33define_attribute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_32define_attribute},
-  {"define_attribute_byvalue", (PyCFunction)__pyx_pw_5adios_35define_attribute_byvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_34define_attribute_byvalue},
-  {"select_method", (PyCFunction)__pyx_pw_5adios_37select_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_36select_method},
-  {"adios2npdtype", (PyCFunction)__pyx_pw_5adios_39adios2npdtype, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_38adios2npdtype},
-  {"np2adiostype", (PyCFunction)__pyx_pw_5adios_41np2adiostype, METH_O, __pyx_doc_5adios_40np2adiostype},
-  {"adiostype2string", (PyCFunction)__pyx_pw_5adios_43adiostype2string, METH_O, __pyx_doc_5adios_42adiostype2string},
-  {"read_init", (PyCFunction)__pyx_pw_5adios_45read_init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_44read_init},
-  {"read_finalize", (PyCFunction)__pyx_pw_5adios_47read_finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_46read_finalize},
+  {"test_str", (PyCFunction)__pyx_pw_5adios_1test_str, METH_O, __pyx_doc_5adios_test_str},
+  {"b2s", (PyCFunction)__pyx_pw_5adios_3b2s, METH_O, __pyx_doc_5adios_2b2s},
+  {"s2b", (PyCFunction)__pyx_pw_5adios_5s2b, METH_O, __pyx_doc_5adios_4s2b},
+  {"__parse_index", (PyCFunction)__pyx_pw_5adios_9__parse_index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_8__parse_index},
+  {"init", (PyCFunction)__pyx_pw_5adios_11init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_10init},
+  {"open", (PyCFunction)__pyx_pw_5adios_13open, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_12open},
+  {"set_group_size", (PyCFunction)__pyx_pw_5adios_15set_group_size, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_14set_group_size},
+  {"write", (PyCFunction)__pyx_pw_5adios_17write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_16write},
+  {"write_int", (PyCFunction)__pyx_pw_5adios_19write_int, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_18write_int},
+  {"write_long", (PyCFunction)__pyx_pw_5adios_21write_long, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_20write_long},
+  {"write_float", (PyCFunction)__pyx_pw_5adios_23write_float, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_22write_float},
+  {"write_double", (PyCFunction)__pyx_pw_5adios_25write_double, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_24write_double},
+  {"read", (PyCFunction)__pyx_pw_5adios_27read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_26read},
+  {"close", (PyCFunction)__pyx_pw_5adios_29close, METH_O, __pyx_doc_5adios_28close},
+  {"finalize", (PyCFunction)__pyx_pw_5adios_31finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_30finalize},
+  {"init_noxml", (PyCFunction)__pyx_pw_5adios_33init_noxml, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_32init_noxml},
+  {"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},
   {0, 0, 0, 0}
 };
 
@@ -24383,20 +36459,29 @@ static struct PyModuleDef __pyx_moduledef = {
 #endif
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
   {&__pyx_kp_s_15s_d, __pyx_k_15s_d, sizeof(__pyx_k_15s_d), 0, 0, 1, 0},
   {&__pyx_kp_s_15s_lu, __pyx_k_15s_lu, sizeof(__pyx_k_15s_lu), 0, 0, 1, 0},
   {&__pyx_kp_s_15s_s, __pyx_k_15s_s, sizeof(__pyx_k_15s_s), 0, 0, 1, 0},
+  {&__pyx_n_s_ALL, __pyx_k_ALL, sizeof(__pyx_k_ALL), 0, 0, 1, 1},
   {&__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r, __pyx_k_AdiosAttr_name_r_dtype_r_value_r, sizeof(__pyx_k_AdiosAttr_name_r_dtype_r_value_r), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_k_AdiosAttrinfo_name_r_is_static_r, sizeof(__pyx_k_AdiosAttrinfo_name_r_is_static_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosBlockinfo_process_id_r_time, __pyx_k_AdiosBlockinfo_process_id_r_time, sizeof(__pyx_k_AdiosBlockinfo_process_id_r_time), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosFile, __pyx_k_AdiosFile, sizeof(__pyx_k_AdiosFile), 0, 0, 1, 0},
-  {&__pyx_kp_s_AdiosFile_path_r_nvars_r_var_r_n, __pyx_k_AdiosFile_path_r_nvars_r_var_r_n, sizeof(__pyx_k_AdiosFile_path_r_nvars_r_var_r_n), 0, 0, 1, 0},
-  {&__pyx_kp_s_AdiosVar_varid_r_dtype_r_ndim_r, __pyx_k_AdiosVar_varid_r_dtype_r_ndim_r, sizeof(__pyx_k_AdiosVar_varid_r_dtype_r_ndim_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r, __pyx_k_AdiosFile_path_r_nvars_r_vars_r, sizeof(__pyx_k_AdiosFile_path_r_nvars_r_vars_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosGroup_vars_r_attrs_r, __pyx_k_AdiosGroup_vars_r_attrs_r, sizeof(__pyx_k_AdiosGroup_vars_r_attrs_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r, __pyx_k_AdiosVar_varid_r_name_r_dtype_r, sizeof(__pyx_k_AdiosVar_varid_r_name_r_dtype_r), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosVariable, __pyx_k_AdiosVariable, sizeof(__pyx_k_AdiosVariable), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim, sizeof(__pyx_k_AdiosVarinfo_name_r_ldim_r_gdim), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth, __pyx_k_AdiosWriter_fname_r_gname_r_meth, sizeof(__pyx_k_AdiosWriter_fname_r_gname_r_meth), 0, 0, 1, 0},
+  {&__pyx_kp_s_All_points_must_have_the_same_le, __pyx_k_All_points_must_have_the_same_le, sizeof(__pyx_k_All_points_must_have_the_same_le), 0, 0, 1, 0},
+  {&__pyx_n_s_Attr, __pyx_k_Attr, sizeof(__pyx_k_Attr), 0, 0, 1, 1},
+  {&__pyx_n_s_Attrinfo, __pyx_k_Attrinfo, sizeof(__pyx_k_Attrinfo), 0, 0, 1, 1},
   {&__pyx_n_s_BP, __pyx_k_BP, sizeof(__pyx_k_BP), 0, 0, 1, 1},
   {&__pyx_n_s_BP_AGGREGATE, __pyx_k_BP_AGGREGATE, sizeof(__pyx_k_BP_AGGREGATE), 0, 0, 1, 1},
   {&__pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_k_BUFFER_ALLOC_WHEN, sizeof(__pyx_k_BUFFER_ALLOC_WHEN), 0, 0, 1, 1},
+  {&__pyx_n_s_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 0, 1, 1},
+  {&__pyx_n_s_CURRENT, __pyx_k_CURRENT, sizeof(__pyx_k_CURRENT), 0, 0, 1, 1},
   {&__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_k_Count_dimension_mismatch_count_d, sizeof(__pyx_k_Count_dimension_mismatch_count_d), 0, 0, 1, 0},
   {&__pyx_n_s_DATASPACES, __pyx_k_DATASPACES, sizeof(__pyx_k_DATASPACES), 0, 0, 1, 1},
   {&__pyx_n_s_DATATYPE, __pyx_k_DATATYPE, sizeof(__pyx_k_DATATYPE), 0, 0, 1, 1},
@@ -24407,63 +36492,72 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1},
   {&__pyx_n_s_FLAG, __pyx_k_FLAG, sizeof(__pyx_k_FLAG), 0, 0, 1, 1},
   {&__pyx_n_s_FLEXPATH, __pyx_k_FLEXPATH, sizeof(__pyx_k_FLEXPATH), 0, 0, 1, 1},
+  {&__pyx_n_s_FancySelection, __pyx_k_FancySelection, sizeof(__pyx_k_FancySelection), 0, 0, 1, 1},
+  {&__pyx_n_s_File, __pyx_k_File, sizeof(__pyx_k_File), 0, 0, 1, 1},
   {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0},
   {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0},
   {&__pyx_n_s_ICEE, __pyx_k_ICEE, sizeof(__pyx_k_ICEE), 0, 0, 1, 1},
   {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
   {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
   {&__pyx_n_s_LATER, __pyx_k_LATER, sizeof(__pyx_k_LATER), 0, 0, 1, 1},
+  {&__pyx_n_s_LOCKMODE, __pyx_k_LOCKMODE, sizeof(__pyx_k_LOCKMODE), 0, 0, 1, 1},
   {&__pyx_n_s_NO, __pyx_k_NO, sizeof(__pyx_k_NO), 0, 0, 1, 1},
+  {&__pyx_n_s_NONE, __pyx_k_NONE, sizeof(__pyx_k_NONE), 0, 0, 1, 1},
   {&__pyx_n_s_NOW, __pyx_k_NOW, sizeof(__pyx_k_NOW), 0, 0, 1, 1},
-  {&__pyx_kp_s_Name_index_r_is_not_supported, __pyx_k_Name_index_r_is_not_supported, sizeof(__pyx_k_Name_index_r_is_not_supported), 0, 0, 1, 0},
-  {&__pyx_kp_s_No_valid_variable, __pyx_k_No_valid_variable, sizeof(__pyx_k_No_valid_variable), 0, 0, 1, 0},
   {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0},
   {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
   {&__pyx_kp_s_Not_a_valid_var, __pyx_k_Not_a_valid_var, sizeof(__pyx_k_Not_a_valid_var), 0, 0, 1, 0},
   {&__pyx_kp_s_Not_an_open_file, __pyx_k_Not_an_open_file, sizeof(__pyx_k_Not_an_open_file), 0, 0, 1, 0},
   {&__pyx_kp_s_Not_an_open_var, __pyx_k_Not_an_open_var, sizeof(__pyx_k_Not_an_open_var), 0, 0, 1, 0},
   {&__pyx_kp_s_Not_an_open_variable, __pyx_k_Not_an_open_variable, sizeof(__pyx_k_Not_an_open_variable), 0, 0, 1, 0},
+  {&__pyx_kp_s_Not_implemented_yet, __pyx_k_Not_implemented_yet, sizeof(__pyx_k_Not_implemented_yet), 0, 0, 1, 0},
   {&__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_k_Offset_dimension_mismatch_offset, sizeof(__pyx_k_Offset_dimension_mismatch_offset), 0, 0, 1, 0},
   {&__pyx_kp_s_Only_contiguous_arrays_are_suppo, __pyx_k_Only_contiguous_arrays_are_suppo, sizeof(__pyx_k_Only_contiguous_arrays_are_suppo), 0, 0, 1, 0},
+  {&__pyx_n_s_POSIX1, __pyx_k_POSIX1, sizeof(__pyx_k_POSIX1), 0, 0, 1, 1},
   {&__pyx_kp_u_Perform_read_Read_data_from_an, __pyx_k_Perform_read_Read_data_from_an, sizeof(__pyx_k_Perform_read_Read_data_from_an), 0, 1, 0, 0},
   {&__pyx_n_s_READ_METHOD, __pyx_k_READ_METHOD, sizeof(__pyx_k_READ_METHOD), 0, 0, 1, 1},
+  {&__pyx_kp_s_Rank_is_out_of_range_nblock_r, __pyx_k_Rank_is_out_of_range_nblock_r, sizeof(__pyx_k_Rank_is_out_of_range_nblock_r), 0, 0, 1, 0},
   {&__pyx_kp_s_Reading, __pyx_k_Reading, sizeof(__pyx_k_Reading), 0, 0, 1, 0},
   {&__pyx_kp_s_Requested_is_larger_than_the_sha, __pyx_k_Requested_is_larger_than_the_sha, sizeof(__pyx_k_Requested_is_larger_than_the_sha), 0, 0, 1, 0},
   {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
   {&__pyx_n_s_S, __pyx_k_S, sizeof(__pyx_k_S), 0, 0, 1, 1},
+  {&__pyx_kp_s_Scalar_dimension_mismatch_scalar, __pyx_k_Scalar_dimension_mismatch_scalar, sizeof(__pyx_k_Scalar_dimension_mismatch_scalar), 0, 0, 1, 0},
+  {&__pyx_n_s_SimpleSelection, __pyx_k_SimpleSelection, sizeof(__pyx_k_SimpleSelection), 0, 0, 1, 1},
   {&__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_k_Step_index_is_out_of_range_from, sizeof(__pyx_k_Step_index_is_out_of_range_from), 0, 0, 1, 0},
-  {&__pyx_kp_s_Step_size_d_is_not_supported, __pyx_k_Step_size_d_is_not_supported, sizeof(__pyx_k_Step_size_d_is_not_supported), 0, 0, 1, 0},
-  {&__pyx_kp_s_Too_many_indices_for_data, __pyx_k_Too_many_indices_for_data, sizeof(__pyx_k_Too_many_indices_for_data), 0, 0, 1, 0},
   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
   {&__pyx_n_s_UNKNOWN, __pyx_k_UNKNOWN, sizeof(__pyx_k_UNKNOWN), 0, 0, 1, 1},
   {&__pyx_kp_s_Unhashable_type, __pyx_k_Unhashable_type, sizeof(__pyx_k_Unhashable_type), 0, 0, 1, 0},
   {&__pyx_kp_s_Use_default_BP_method, __pyx_k_Use_default_BP_method, sizeof(__pyx_k_Use_default_BP_method), 0, 0, 1, 0},
   {&__pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_k_Users_jyc_project_adios_devel_w, sizeof(__pyx_k_Users_jyc_project_adios_devel_w), 0, 0, 1, 0},
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   {&__pyx_kp_s_Value_is_none, __pyx_k_Value_is_none, sizeof(__pyx_k_Value_is_none), 0, 0, 1, 0},
+  {&__pyx_n_s_Var, __pyx_k_Var, sizeof(__pyx_k_Var), 0, 0, 1, 1},
+  {&__pyx_n_s_Varinfo, __pyx_k_Varinfo, sizeof(__pyx_k_Varinfo), 0, 0, 1, 1},
   {&__pyx_kp_s_WARN_Invalid_read_method_name, __pyx_k_WARN_Invalid_read_method_name, sizeof(__pyx_k_WARN_Invalid_read_method_name), 0, 0, 1, 0},
   {&__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_k_Warning_No_support_yet_s_type_d, sizeof(__pyx_k_Warning_No_support_yet_s_type_d), 0, 0, 1, 0},
+  {&__pyx_n_s_Writer, __pyx_k_Writer, sizeof(__pyx_k_Writer), 0, 0, 1, 1},
   {&__pyx_n_s_YES, __pyx_k_YES, sizeof(__pyx_k_YES), 0, 0, 1, 1},
-  {&__pyx_kp_s__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 1, 0},
-  {&__pyx_kp_s__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 0, 1, 0},
-  {&__pyx_kp_s__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 0, 1, 0},
-  {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
+  {&__pyx_kp_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 0},
+  {&__pyx_kp_s__63, __pyx_k__63, sizeof(__pyx_k__63), 0, 0, 1, 0},
+  {&__pyx_kp_s__65, __pyx_k__65, sizeof(__pyx_k__65), 0, 0, 1, 0},
   {&__pyx_n_s_adios, __pyx_k_adios, sizeof(__pyx_k_adios), 0, 0, 1, 1},
   {&__pyx_n_s_advance, __pyx_k_advance, sizeof(__pyx_k_advance), 0, 0, 1, 1},
+  {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
   {&__pyx_n_s_any, __pyx_k_any, sizeof(__pyx_k_any), 0, 0, 1, 1},
-  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
   {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
+  {&__pyx_n_s_asscalar, __pyx_k_asscalar, sizeof(__pyx_k_asscalar), 0, 0, 1, 1},
   {&__pyx_n_s_attr_namelist, __pyx_k_attr_namelist, sizeof(__pyx_k_attr_namelist), 0, 0, 1, 1},
   {&__pyx_n_s_attrname, __pyx_k_attrname, sizeof(__pyx_k_attrname), 0, 0, 1, 1},
   {&__pyx_n_s_attrs, __pyx_k_attrs, sizeof(__pyx_k_attrs), 0, 0, 1, 1},
   {&__pyx_n_s_atype, __pyx_k_atype, sizeof(__pyx_k_atype), 0, 0, 1, 1},
+  {&__pyx_n_s_axis, __pyx_k_axis, sizeof(__pyx_k_axis), 0, 0, 1, 1},
   {&__pyx_n_s_base_path, __pyx_k_base_path, sizeof(__pyx_k_base_path), 0, 0, 1, 1},
   {&__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_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_bytes_2, __pyx_k_bytes_2, sizeof(__pyx_k_bytes_2), 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},
@@ -24471,21 +36565,27 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_complex128, __pyx_k_complex128, sizeof(__pyx_k_complex128), 0, 0, 1, 1},
   {&__pyx_n_s_complex64, __pyx_k_complex64, sizeof(__pyx_k_complex64), 0, 0, 1, 1},
   {&__pyx_n_s_complex_2, __pyx_k_complex_2, sizeof(__pyx_k_complex_2), 0, 0, 1, 1},
+  {&__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_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_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},
   {&__pyx_n_s_dimensions, __pyx_k_dimensions, sizeof(__pyx_k_dimensions), 0, 0, 1, 1},
   {&__pyx_n_s_dims, __pyx_k_dims, sizeof(__pyx_k_dims), 0, 0, 1, 1},
+  {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1},
   {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
   {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1},
   {&__pyx_n_s_double_complex, __pyx_k_double_complex, sizeof(__pyx_k_double_complex), 0, 0, 1, 1},
   {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1},
-  {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1},
+  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
   {&__pyx_n_s_endianness, __pyx_k_endianness, sizeof(__pyx_k_endianness), 0, 0, 1, 1},
+  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
+  {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1},
+  {&__pyx_n_s_exception_value, __pyx_k_exception_value, sizeof(__pyx_k_exception_value), 0, 0, 1, 1},
   {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
   {&__pyx_n_s_factory, __pyx_k_factory, sizeof(__pyx_k_factory), 0, 0, 1, 1},
   {&__pyx_n_s_fd_p, __pyx_k_fd_p, sizeof(__pyx_k_fd_p), 0, 0, 1, 1},
@@ -24503,17 +36603,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_fp, __pyx_k_fp, sizeof(__pyx_k_fp), 0, 0, 1, 1},
   {&__pyx_n_s_from_steps, __pyx_k_from_steps, sizeof(__pyx_k_from_steps), 0, 0, 1, 1},
   {&__pyx_n_s_gdim, __pyx_k_gdim, sizeof(__pyx_k_gdim), 0, 0, 1, 1},
-  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
   {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
-  {&__pyx_n_s_getitem___locals_genexpr, __pyx_k_getitem___locals_genexpr, sizeof(__pyx_k_getitem___locals_genexpr), 0, 0, 1, 1},
+  {&__pyx_n_s_getitem, __pyx_k_getitem, sizeof(__pyx_k_getitem), 0, 0, 1, 1},
   {&__pyx_n_s_global_dimensions, __pyx_k_global_dimensions, sizeof(__pyx_k_global_dimensions), 0, 0, 1, 1},
   {&__pyx_n_s_gname, __pyx_k_gname, sizeof(__pyx_k_gname), 0, 0, 1, 1},
   {&__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_hl, __pyx_k_hl, sizeof(__pyx_k_hl), 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_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1},
   {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
   {&__pyx_n_s_int16, __pyx_k_int16, sizeof(__pyx_k_int16), 0, 0, 1, 1},
   {&__pyx_n_s_int32, __pyx_k_int32, sizeof(__pyx_k_int32), 0, 0, 1, 1},
@@ -24521,13 +36620,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_int8, __pyx_k_int8, sizeof(__pyx_k_int8), 0, 0, 1, 1},
   {&__pyx_n_s_integer, __pyx_k_integer, sizeof(__pyx_k_integer), 0, 0, 1, 1},
   {&__pyx_n_s_is_noxml, __pyx_k_is_noxml, sizeof(__pyx_k_is_noxml), 0, 0, 1, 1},
+  {&__pyx_n_s_is_open, __pyx_k_is_open, sizeof(__pyx_k_is_open), 0, 0, 1, 1},
   {&__pyx_n_s_is_static, __pyx_k_is_static, sizeof(__pyx_k_is_static), 0, 0, 1, 1},
   {&__pyx_n_s_is_stream, __pyx_k_is_stream, sizeof(__pyx_k_is_stream), 0, 0, 1, 1},
   {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
   {&__pyx_n_s_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 0, 0, 1, 1},
   {&__pyx_n_s_iterkeys, __pyx_k_iterkeys, sizeof(__pyx_k_iterkeys), 0, 0, 1, 1},
   {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
+  {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
   {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
+  {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1},
   {&__pyx_n_s_last, __pyx_k_last, sizeof(__pyx_k_last), 0, 0, 1, 1},
   {&__pyx_n_s_last_step, __pyx_k_last_step, sizeof(__pyx_k_last_step), 0, 0, 1, 1},
   {&__pyx_n_s_ldim, __pyx_k_ldim, sizeof(__pyx_k_ldim), 0, 0, 1, 1},
@@ -24542,50 +36644,70 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_method_params, __pyx_k_method_params, sizeof(__pyx_k_method_params), 0, 0, 1, 1},
   {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
   {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
+  {&__pyx_n_s_morder, __pyx_k_morder, sizeof(__pyx_k_morder), 0, 0, 1, 1},
+  {&__pyx_n_s_mshape, __pyx_k_mshape, sizeof(__pyx_k_mshape), 0, 0, 1, 1},
   {&__pyx_n_s_mype, __pyx_k_mype, sizeof(__pyx_k_mype), 0, 0, 1, 1},
   {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
   {&__pyx_n_s_nattrs, __pyx_k_nattrs, sizeof(__pyx_k_nattrs), 0, 0, 1, 1},
   {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0},
   {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0},
   {&__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_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_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},
+  {&__pyx_n_s_points, __pyx_k_points, sizeof(__pyx_k_points), 0, 0, 1, 1},
   {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
   {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
   {&__pyx_n_s_printself, __pyx_k_printself, sizeof(__pyx_k_printself), 0, 0, 1, 1},
+  {&__pyx_n_s_process_id, __pyx_k_process_id, sizeof(__pyx_k_process_id), 0, 0, 1, 1},
+  {&__pyx_n_s_prod, __pyx_k_prod, sizeof(__pyx_k_prod), 0, 0, 1, 1},
   {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
   {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
   {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
+  {&__pyx_n_s_rank, __pyx_k_rank, sizeof(__pyx_k_rank), 0, 0, 1, 1},
   {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1},
+  {&__pyx_n_s_read_points, __pyx_k_read_points, sizeof(__pyx_k_read_points), 0, 0, 1, 1},
+  {&__pyx_n_s_read_writeblock, __pyx_k_read_writeblock, sizeof(__pyx_k_read_writeblock), 0, 0, 1, 1},
+  {&__pyx_n_s_readattr, __pyx_k_readattr, sizeof(__pyx_k_readattr), 0, 0, 1, 1},
   {&__pyx_n_s_readvar, __pyx_k_readvar, sizeof(__pyx_k_readvar), 0, 0, 1, 1},
+  {&__pyx_n_s_readvar_2, __pyx_k_readvar_2, sizeof(__pyx_k_readvar_2), 0, 0, 1, 1},
   {&__pyx_n_s_real, __pyx_k_real, sizeof(__pyx_k_real), 0, 0, 1, 1},
+  {&__pyx_n_s_release_step, __pyx_k_release_step, sizeof(__pyx_k_release_step), 0, 0, 1, 1},
   {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1},
-  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
+  {&__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_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_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_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
-  {&__pyx_n_s_squeeze, __pyx_k_squeeze, sizeof(__pyx_k_squeeze), 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},
   {&__pyx_n_s_stats, __pyx_k_stats, sizeof(__pyx_k_stats), 0, 0, 1, 1},
-  {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
-  {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
+  {&__pyx_n_s_step_scalar, __pyx_k_step_scalar, sizeof(__pyx_k_step_scalar), 0, 0, 1, 1},
   {&__pyx_n_s_string, __pyx_k_string, sizeof(__pyx_k_string), 0, 0, 1, 1},
+  {&__pyx_n_s_string_2, __pyx_k_string_2, sizeof(__pyx_k_string_2), 0, 0, 1, 1},
   {&__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_subtract, __pyx_k_subtract, sizeof(__pyx_k_subtract), 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_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 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_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_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},
@@ -24603,36 +36725,40 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__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_namelist, __pyx_k_var_namelist, sizeof(__pyx_k_var_namelist), 0, 0, 1, 1},
-  {&__pyx_kp_u_var_read_line_888, __pyx_k_var_read_line_888, sizeof(__pyx_k_var_read_line_888), 0, 1, 0, 0},
+  {&__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_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},
   {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1},
   {&__pyx_n_s_vp, __pyx_k_vp, sizeof(__pyx_k_vp), 0, 0, 1, 1},
+  {&__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_1222, __pyx_k_writer_declare_group_line_1222, sizeof(__pyx_k_writer_declare_group_line_1222), 0, 1, 0, 0},
-  {&__pyx_kp_u_writer_define_var_line_1244, __pyx_k_writer_define_var_line_1244, sizeof(__pyx_k_writer_define_var_line_1244), 0, 1, 0, 0},
+  {&__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_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},
   {0, 0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 35, __pyx_L1_error)
   #if PY_MAJOR_VERSION >= 3
-  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) __PYX_ERR(0, 71, __pyx_L1_error)
   #else
-  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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;
   __pyx_L1_error:;
   return -1;
@@ -24642,289 +36768,632 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
 
-  /* "adios.pyx":288
+  /* "adios.pyx":63
+ *     l = list()
+ *     for key in keys:
+ *         if key.startswith('/'):             # <<<<<<<<<<<<<<
+ *             key = key[1:]
+ *         if '/' not in key:
+ */
+  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__2);
+  __Pyx_GIVEREF(__pyx_tuple__2);
+
+  /* "adios.pyx":64
+ *     for key in keys:
+ *         if key.startswith('/'):
+ *             key = key[1:]             # <<<<<<<<<<<<<<
+ *         if '/' not in key:
+ *             l.append(key)
+ */
+  __pyx_slice__3 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__3)) __PYX_ERR(0, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__3);
+  __Pyx_GIVEREF(__pyx_slice__3);
+
+  /* "adios.pyx":359
  *     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_ = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice_);
-  __Pyx_GIVEREF(__pyx_slice_);
+  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 359, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__4);
+  __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "adios.pyx":297
+  /* "adios.pyx":370
  *     index = tuple(fixed)
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))             # <<<<<<<<<<<<<<
  * 
  *     return index
  */
-  __pyx_slice__2 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_slice__2);
-  __pyx_tuple__3 = PyTuple_New(1); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__3);
-  __Pyx_INCREF(__pyx_slice__2);
-  PyTuple_SET_ITEM(__pyx_tuple__3, 0, __pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_tuple__3);
-
-  /* "adios.pyx":704
+  __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 370, __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_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
+ *         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);
+
+  /* "adios.pyx":710
+ *                 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);
+
+  /* "adios.pyx":711
+ * 
+ *             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);
+
+  /* "adios.pyx":823
  *         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__12 = PyTuple_Pack(1, __pyx_kp_s__11); if (unlikely(!__pyx_tuple__12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
+  __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);
 
-  /* "adios.pyx":776
+  /* "adios.pyx":862
+ *         """ 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);
+
+  /* "adios.pyx":910
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
- *             if key_ in self.var.keys():
+ *             if key_.startswith('/'):
  */
-  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
+  __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);
 
-  /* "adios.pyx":951
+  /* "adios.pyx":912
+ *                 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);
+
+  /* "adios.pyx":913
+ * 
+ *             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);
+
+  /* "adios.pyx":987
+ *         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);
+
+  /* "adios.pyx":988
+ *         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);
+
+  /* "adios.pyx":990
+ *             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);
+
+  /* "adios.pyx":991
+ *         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);
+
+  /* "adios.pyx":1332
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()
  *             npoffset.fill(0)             # <<<<<<<<<<<<<<
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)
  */
-  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__14);
-  __Pyx_GIVEREF(__pyx_tuple__14);
+  __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);
 
-  /* "adios.pyx":968
+  /* "adios.pyx":1343
+ * 
+ *         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_INCREF(Py_False);
+  __Pyx_GIVEREF(Py_False);
+  PyTuple_SET_ITEM(__pyx_tuple__29, 0, Py_False);
+  __Pyx_GIVEREF(__pyx_tuple__29);
+
+  /* "adios.pyx":1355
  * 
  *         if (npshape < npcount + npoffset).any():
  *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
  * 
- *         shape = list(npcount)
+ *         shape = [x for x, y in zip(npcount, scalar) if not y]
  */
-  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Requested_is_larger_than_the_sha); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__15);
-  __Pyx_GIVEREF(__pyx_tuple__15);
+  __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);
 
-  /* "adios.pyx":976
+  /* "adios.pyx":1363
  * 
  *         if len(shape) > 0:
  *             var[:] = fill             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_slice__16 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__16);
-  __Pyx_GIVEREF(__pyx_slice__16);
+  __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);
 
-  /* "adios.pyx":1017
+  /* "adios.pyx":1383
+ *         """ 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);
+
+  /* "adios.pyx":1407
+ *         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);
+
+  /* "adios.pyx":1409
+ *                 raise TypeError("Unhashable type")
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
  */
-  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Too_many_indices_for_data); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
+  __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);
 
-  /* "adios.pyx":1020
+  /* "adios.pyx":1410
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *             if key_.startswith('/'):
+ *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
- *         for slice_ in index_:
+ *             if key_ in self.attrs.keys():
  */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Too_many_indices_for_data); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __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);
 
-  /* "adios.pyx":1036
- *             from_steps_ = z[0][0]
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]             # <<<<<<<<<<<<<<
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
+  /* "adios.pyx":1431
+ *         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);
+
+  /* "adios.pyx":1432
+ *             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);
+
+  /* "adios.pyx":1433
+ *                 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);
+
+  /* "adios.pyx":1450
+ *             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);
+
+  /* "adios.pyx":1451
+ *                 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__19 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__19);
-  __Pyx_GIVEREF(__pyx_slice__19);
+  __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);
 
-  /* "adios.pyx":1037
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)             # <<<<<<<<<<<<<<
+  /* "adios.pyx":1452
+ *                     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);
+
+  /* "adios.pyx":1470
+ * 
  *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
+ *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
+ * 
+ *     def __getitem__(self, args):
  */
-  __pyx_slice__20 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__20);
-  __Pyx_GIVEREF(__pyx_slice__20);
-  __pyx_slice__21 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__21);
-  __Pyx_GIVEREF(__pyx_slice__21);
+  __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);
 
-  /* "adios.pyx":1384
+  /* "adios.pyx":1596
+ *     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);
+
+  /* "adios.pyx":1631
+ *         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);
+
+  /* "adios.pyx":1633
+ *                 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);
+
+  /* "adios.pyx":1634
+ * 
+ *             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);
+
+  /* "adios.pyx":1684
+ *         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);
+
+  /* "adios.pyx":1685
+ *         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);
+
+  /* "adios.pyx":1687
+ *             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);
+
+  /* "adios.pyx":1688
+ *         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);
+
+  /* "adios.pyx":1959
  *         if self.is_static:
  *             if self.value is None:
  *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)
  */
-  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__26);
-  __Pyx_GIVEREF(__pyx_tuple__26);
+  __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_GOTREF(__pyx_tuple__58);
+  __Pyx_GIVEREF(__pyx_tuple__58);
 
-  /* "adios.pyx":1418
+  /* "adios.pyx":1995
  *     def define(self, int64_t gid):
  *         if self.value is None:
  *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *         ldim_ = self.ldim
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __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_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
 
-  /* "adios.pyx":1439
+  /* "adios.pyx":2016
  *         ## No space allowed
  *         define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_tuple__32 = PyTuple_Pack(2, __pyx_kp_s__31, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
-  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s__33); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__34);
-  __Pyx_GIVEREF(__pyx_tuple__34);
+  __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_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_GOTREF(__pyx_tuple__66);
+  __Pyx_GIVEREF(__pyx_tuple__66);
 
-  /* "adios.pyx":1440
+  /* "adios.pyx":2017
  *         define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_kp_s__31, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__35);
-  __Pyx_GIVEREF(__pyx_tuple__35);
-  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s__33); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__36);
-  __Pyx_GIVEREF(__pyx_tuple__36);
+  __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_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_GOTREF(__pyx_tuple__68);
+  __Pyx_GIVEREF(__pyx_tuple__68);
 
-  /* "adios.pyx":1441
+  /* "adios.pyx":2018
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
  *     def bytes(self):
  */
-  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_kp_s__31, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__37);
-  __Pyx_GIVEREF(__pyx_tuple__37);
-  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s__33); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__38);
-  __Pyx_GIVEREF(__pyx_tuple__38);
+  __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_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_GOTREF(__pyx_tuple__70);
+  __Pyx_GIVEREF(__pyx_tuple__70);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  */
-  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__39);
-  __Pyx_GIVEREF(__pyx_tuple__39);
+  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(1, 218, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
  * 
  *             info.buf = PyArray_DATA(self)
  */
-  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__40);
-  __Pyx_GIVEREF(__pyx_tuple__40);
+  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(1, 222, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
  *                 if ((descr.byteorder == c'>' and little_endian) or
  *                     (descr.byteorder == c'<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  */
-  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__41);
-  __Pyx_GIVEREF(__pyx_tuple__41);
+  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(1, 259, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799
  * 
  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
  * 
  *         if ((child.byteorder == c'>' and little_endian) or
  */
-  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__42);
-  __Pyx_GIVEREF(__pyx_tuple__42);
+  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(1, 799, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803
  *         if ((child.byteorder == c'>' and little_endian) or
  *             (child.byteorder == c'<' and not little_endian)):
  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *             # One could encode it in the format string and have Cython
  *             # complain instead, BUT: < and > in format strings also imply
  */
-  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
+  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(1, 803, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823
  *             t = child.type_num
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(1, 823, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__76);
+  __Pyx_GIVEREF(__pyx_tuple__76);
+
+  /* "adios.pyx":58
+ *         return x.encode()
+ * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ */
+  __pyx_tuple__77 = PyTuple_Pack(3, __pyx_n_s_keys, __pyx_n_s_l, __pyx_n_s_key); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__77);
+  __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":1465
+  /* "adios.pyx":2050
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_tuple__45 = PyTuple_Pack(4, __pyx_n_s_fname, __pyx_n_s_varname, __pyx_n_s_f, __pyx_n_s_v); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
-  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_readvar, 1465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __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, 2050, __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)
 
-  /* "adios.pyx":1483
+  /* "adios.pyx":2064
  *     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__47 = PyTuple_Pack(3, __pyx_n_s_fname, __pyx_n_s_f, __pyx_n_s_k); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__47);
-  __Pyx_GIVEREF(__pyx_tuple__47);
-  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_bpls, 1483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1483; __pyx_clineno = __LINE__; goto __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, 2064, __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_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -24933,24 +37402,26 @@ static int __Pyx_InitCachedConstants(void) {
 }
 
 static int __Pyx_InitGlobals(void) {
-  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_12 = PyInt_FromLong(12); if (unlikely(!__pyx_int_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_51 = PyInt_FromLong(51); if (unlikely(!__pyx_int_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_52 = PyInt_FromLong(52); if (unlikely(!__pyx_int_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_54 = PyInt_FromLong(54); if (unlikely(!__pyx_int_54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type;
+  __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_12 = PyInt_FromLong(12); if (unlikely(!__pyx_int_12)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_51 = PyInt_FromLong(51); if (unlikely(!__pyx_int_51)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_52 = PyInt_FromLong(52); if (unlikely(!__pyx_int_52)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_54 = PyInt_FromLong(54); if (unlikely(!__pyx_int_54)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -24966,9 +37437,6 @@ PyMODINIT_FUNC PyInit_adios(void)
 {
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannyDeclarations
   #if CYTHON_REFNANNY
   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
@@ -24980,17 +37448,24 @@ PyMODINIT_FUNC PyInit_adios(void)
   }
   #endif
   __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_adios(void)", 0);
-  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
   #ifdef __Pyx_CyFunction_USED
-  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_FusedFunction_USED
-  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_Coroutine_USED
+  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_Generator_USED
-  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_StopAsyncIteration_USED
+  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   /*--- Library function declarations ---*/
   /*--- Threads initialization code ---*/
@@ -25005,107 +37480,137 @@ PyMODINIT_FUNC PyInit_adios(void)
   #else
   __pyx_m = PyModule_Create(&__pyx_moduledef);
   #endif
-  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
   Py_INCREF(__pyx_d);
-  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
   #if CYTHON_COMPILING_IN_PYPY
   Py_INCREF(__pyx_b);
   #endif
-  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
   /*--- Initialize various global constants etc. ---*/
-  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
-  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   if (__pyx_module_is_main_adios) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   }
   #if PY_MAJOR_VERSION >= 3
   {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
     if (!PyDict_GetItemString(modules, "adios")) {
-      if (unlikely(PyDict_SetItemString(modules, "adios", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyDict_SetItemString(modules, "adios", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
     }
   }
   #endif
   /*--- Builtin init code ---*/
-  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   /*--- Constants init code ---*/
-  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   /*--- Global init code ---*/
   /*--- Variable export code ---*/
   /*--- 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)
+  __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)
+  __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;
   __pyx_vtable_5adios_file.printself = (PyObject *(*)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch))__pyx_f_5adios_4file_printself;
+  __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;
-  if (PyType_Ready(&__pyx_type_5adios_file) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_5adios_file.tp_base = (&PyDict_Type);
+  if (PyType_Ready(&__pyx_type_5adios_file) < 0) __PYX_ERR(0, 722, __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_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 722, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_5adios_4file_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_5adios_4file_10__getitem__.doc = __pyx_doc_5adios_4file_10__getitem__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_5adios_4file_10__getitem__;
+      __pyx_wrapperbase_5adios_4file_16__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_5adios_4file_16__getitem__.doc = __pyx_doc_5adios_4file_16__getitem__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_5adios_4file_16__getitem__;
     }
   }
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__repr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 722, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_5adios_4file_12__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_5adios_4file_12__repr__.doc = __pyx_doc_5adios_4file_12__repr__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_5adios_4file_12__repr__;
+      __pyx_wrapperbase_5adios_4file_18__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_5adios_4file_18__repr__.doc = __pyx_doc_5adios_4file_18__repr__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_5adios_4file_18__repr__;
     }
   }
   #endif
-  if (__Pyx_SetVtable(__pyx_type_5adios_file.tp_dict, __pyx_vtabptr_5adios_file) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "file", (PyObject *)&__pyx_type_5adios_file) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __pyx_ptype_5adios_file = &__pyx_type_5adios_file;
+  if (PyType_Ready(&__pyx_type_5adios_blockinfo) < 0) __PYX_ERR(0, 994, __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)
+  __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;
   __pyx_vtable_5adios_var.advance = (PyObject *(*)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch))__pyx_f_5adios_3var_advance;
+  __pyx_vtable_5adios_var.read_points = (PyObject *(*)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_points *__pyx_optional_args))__pyx_f_5adios_3var_read_points;
+  __pyx_vtable_5adios_var.read_writeblock = (PyObject *(*)(struct __pyx_obj_5adios_var *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read_writeblock *__pyx_optional_args))__pyx_f_5adios_3var_read_writeblock;
   __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;
-  if (PyType_Ready(&__pyx_type_5adios_var) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_5adios_var.tp_base = (&PyDict_Type);
+  if (PyType_Ready(&__pyx_type_5adios_var) < 0) __PYX_ERR(0, 1029, __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_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "var", (PyObject *)&__pyx_type_5adios_var) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __pyx_ptype_5adios_var = &__pyx_type_5adios_var;
-  if (PyType_Ready(&__pyx_type_5adios_attr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5adios_attr) < 0) __PYX_ERR(0, 1494, __pyx_L1_error)
   __pyx_type_5adios_attr.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_5adios_attr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_5adios_attr) < 0) __PYX_ERR(0, 1494, __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)
+  __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)
+    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__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_5adios_5group_2__getitem__;
+    }
+  }
+  #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)
+    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__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_5adios_5group_4__repr__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "group", (PyObject *)&__pyx_type_5adios_group) < 0) __PYX_ERR(0, 1580, __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_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5adios_smartdict) < 0) __PYX_ERR(0, 1692, __pyx_L1_error)
   __pyx_type_5adios_smartdict.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_5adios_smartdict) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_5adios_smartdict) < 0) __PYX_ERR(0, 1692, __pyx_L1_error)
   __pyx_ptype_5adios_smartdict = &__pyx_type_5adios_smartdict;
-  if (PyType_Ready(&__pyx_type_5adios_writer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5adios_writer) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __pyx_type_5adios_writer.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_5adios_writer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_5adios_writer) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __pyx_ptype_5adios_writer = &__pyx_type_5adios_writer;
-  if (PyType_Ready(&__pyx_type_5adios_attrinfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5adios_attrinfo) < 0) __PYX_ERR(0, 1922, __pyx_L1_error)
   __pyx_type_5adios_attrinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_5adios_attrinfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_5adios_attrinfo) < 0) __PYX_ERR(0, 1922, __pyx_L1_error)
   __pyx_ptype_5adios_attrinfo = &__pyx_type_5adios_attrinfo;
-  if (PyType_Ready(&__pyx_type_5adios_varinfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5adios_varinfo) < 0) __PYX_ERR(0, 1975, __pyx_L1_error)
   __pyx_type_5adios_varinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_5adios_varinfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_5adios_varinfo) < 0) __PYX_ERR(0, 1975, __pyx_L1_error)
   __pyx_ptype_5adios_varinfo = &__pyx_type_5adios_varinfo;
-  if (PyType_Ready(&__pyx_type_5adios___pyx_scope_struct____getitem__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_5adios___pyx_scope_struct____getitem__.tp_print = 0;
-  __pyx_ptype_5adios___pyx_scope_struct____getitem__ = &__pyx_type_5adios___pyx_scope_struct____getitem__;
-  if (PyType_Ready(&__pyx_type_5adios___pyx_scope_struct_1_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_5adios___pyx_scope_struct_1_genexpr.tp_print = 0;
-  __pyx_ptype_5adios___pyx_scope_struct_1_genexpr = &__pyx_type_5adios___pyx_scope_struct_1_genexpr;
-  if (PyType_Ready(&__pyx_type_5adios___pyx_scope_struct_2_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_5adios___pyx_scope_struct_2_genexpr.tp_print = 0;
-  __pyx_ptype_5adios___pyx_scope_struct_2_genexpr = &__pyx_type_5adios___pyx_scope_struct_2_genexpr;
   /*--- Type import code ---*/
   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
   #if CYTHON_COMPILING_IN_PYPY
@@ -25113,1497 +37618,999 @@ PyMODINIT_FUNC PyInit_adios(void)
   #else
   sizeof(PyHeapTypeObject),
   #endif
-  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error)
+  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error)
+  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error)
+  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error)
+  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error)
+  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error)
   /*--- Variable import code ---*/
   /*--- Function import code ---*/
   /*--- Execution code ---*/
+  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
+  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
 
-  /* "adios.pyx":7
- * """
+  /* "adios.pyx":13
+ *     char   *strdup  (const char *s)
  * 
  * import numpy as np             # <<<<<<<<<<<<<<
  * cimport numpy as np
  * 
  */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":28
+ * from cpython.ref cimport PyObject
+ * 
+ * import os             # <<<<<<<<<<<<<<
+ * from ._hl import selections as sel
+ * 
+ */
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 28, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios.pyx":29
+ * 
+ * import os
+ * from ._hl import selections as sel             # <<<<<<<<<<<<<<
+ * 
+ * ## To convert a string to bytes: "str".encode()
+ */
+  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_n_s_selections);
+  __Pyx_GIVEREF(__pyx_n_s_selections);
+  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_selections);
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_hl, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_selections); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sel, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":58
+ *         return x.encode()
+ * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_5adios_7normalize_key, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  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":241
+  /* "adios.pyx":308
  * ## ====================
  * 
  * 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, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __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_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":242
+  /* "adios.pyx":309
  * 
  * class DATATYPE:
  *     unknown = -1             # <<<<<<<<<<<<<<
  *     byte = 0
  *     short = 1
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) __PYX_ERR(0, 309, __pyx_L1_error)
 
-  /* "adios.pyx":243
+  /* "adios.pyx":310
  * 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_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_byte, __pyx_int_0) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
 
-  /* "adios.pyx":244
+  /* "adios.pyx":311
  *     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_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_short, __pyx_int_1) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
 
-  /* "adios.pyx":245
+  /* "adios.pyx":312
  *     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_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_integer, __pyx_int_2) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
 
-  /* "adios.pyx":246
+  /* "adios.pyx":313
  *     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_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_long, __pyx_int_4) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
 
-  /* "adios.pyx":247
+  /* "adios.pyx":314
  *     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_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_byte, __pyx_int_50) < 0) __PYX_ERR(0, 314, __pyx_L1_error)
 
-  /* "adios.pyx":248
+  /* "adios.pyx":315
  *     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_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_short, __pyx_int_51) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
 
-  /* "adios.pyx":249
+  /* "adios.pyx":316
  *     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_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_integer, __pyx_int_52) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
 
-  /* "adios.pyx":250
+  /* "adios.pyx":317
  *     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_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_long, __pyx_int_54) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
 
-  /* "adios.pyx":251
+  /* "adios.pyx":318
  *     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_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_real, __pyx_int_5) < 0) __PYX_ERR(0, 318, __pyx_L1_error)
 
-  /* "adios.pyx":252
+  /* "adios.pyx":319
  *     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_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_double, __pyx_int_6) < 0) __PYX_ERR(0, 319, __pyx_L1_error)
 
-  /* "adios.pyx":253
+  /* "adios.pyx":320
  *     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_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_long_double, __pyx_int_7) < 0) __PYX_ERR(0, 320, __pyx_L1_error)
 
-  /* "adios.pyx":254
+  /* "adios.pyx":321
  *     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_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_string, __pyx_int_9) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
 
-  /* "adios.pyx":255
+  /* "adios.pyx":322
  *     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_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_complex_2, __pyx_int_10) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
 
-  /* "adios.pyx":256
+  /* "adios.pyx":323
  *     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_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_double_complex, __pyx_int_11) < 0) __PYX_ERR(0, 323, __pyx_L1_error)
 
-  /* "adios.pyx":257
+  /* "adios.pyx":324
  *     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_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_string_array, __pyx_int_12) < 0) __PYX_ERR(0, 324, __pyx_L1_error)
 
-  /* "adios.pyx":241
+  /* "adios.pyx":308
  * ## ====================
  * 
  * 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_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_1) < 0) __PYX_ERR(0, 308, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":259
+  /* "adios.pyx":326
  *     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, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_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_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":260
+  /* "adios.pyx":327
  * 
  * class FLAG:
  *     UNKNOWN = 0             # <<<<<<<<<<<<<<
  *     YES = 1
- *     NO = 2
- */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":261
- * class FLAG:
- *     UNKNOWN = 0
- *     YES = 1             # <<<<<<<<<<<<<<
- *     NO = 2
- * 
- */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_YES, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":262
- *     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_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":259
- *     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_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":264
- *     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, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios.pyx":265
- * 
- * 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_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":266
- * 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_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":267
- *     UNKNOWN = 0
- *     NOW = 1
- *     LATER = 2             # <<<<<<<<<<<<<<
- * 
- * class READ_METHOD:
- */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_LATER, __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":264
- *     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_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":269
- *     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, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios.pyx":270
- * 
- * 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_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":271
- * 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_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":272
- *     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_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":273
- *     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_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":274
- *     DATASPACES    = 3
- *     DIMES         = 4
- *     FLEXPATH      = 5             # <<<<<<<<<<<<<<
- *     ICEE          = 6
- * 
- */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":275
- *     DIMES         = 4
- *     FLEXPATH      = 5
- *     ICEE          = 6             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ICEE, __pyx_int_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios.pyx":269
- *     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_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ_METHOD, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios.pyx":305
- * ## ====================
- * 
- * cpdef init(char * config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm)
- * 
- */
-  __pyx_k__4 = MPI_COMM_WORLD;
-  __pyx_k__4 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":311
- *                    char * name,
- *                    char * mode,
- *                    MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     cdef int64_t fd
- *     cdef int result
- */
-  __pyx_k__5 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":308
- *     return adios_init(config, comm)
- * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
- */
-  __pyx_k__5 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":362
- * ## ADIOS No-XML API
- * ## ====================
- * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm)
- * 
- */
-  __pyx_k__6 = MPI_COMM_WORLD;
-  __pyx_k__6 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":593
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",
- *                     MPI_Comm comm = MPI_COMM_WORLD,             # <<<<<<<<<<<<<<
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)
- */
-  __pyx_k__8 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":592
- * 
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
- *                     MPI_Comm comm = MPI_COMM_WORLD,
- *                     char * parameters = ""):
- */
-  __pyx_k__8 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":686
- *     def __init__(self, char * fname,
- *                  char * method_name = 'BP',
- *                  MPI_Comm comm = MPI_COMM_WORLD,             # <<<<<<<<<<<<<<
- *                  is_stream = False,
- *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
- */
-  __pyx_k__9 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":688
- *                  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__10 = ADIOS_LOCKMODE_ALL;
-
-  /* "adios.pyx":1207
- *     def __init__(self,char * fname,
- *                  bint is_noxml = True,
- *                  MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
- *         self.fname = fname
- *         self.method = <bytes>""
- */
-  __pyx_k__22 = MPI_COMM_WORLD;
-
-  /* "adios.pyx":1245
- * 
- *     def define_var(self, char * varname,
- *                    ldim = tuple(),             # <<<<<<<<<<<<<<
- *                    gdim = tuple(),
- *                    offset = tuple()):
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__23 = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1246
- *     def define_var(self, char * varname,
- *                    ldim = tuple(),
- *                    gdim = tuple(),             # <<<<<<<<<<<<<<
- *                    offset = tuple()):
- *         """
- */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__24 = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios.pyx":1247
- *                    ldim = tuple(),
- *                    gdim = tuple(),
- *                    offset = tuple()):             # <<<<<<<<<<<<<<
- *         """
- *         Define a variable associated with the file.
+ *     NO = 2
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__25 = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 327, __pyx_L1_error)
 
-  /* "adios.pyx":1408
+  /* "adios.pyx":328
+ * class FLAG:
+ *     UNKNOWN = 0
+ *     YES = 1             # <<<<<<<<<<<<<<
+ *     NO = 2
  * 
- *     def __init__(self, char * name,
- *                  ldim = tuple(),             # <<<<<<<<<<<<<<
- *                  gdim = tuple(),
- *                  offset = tuple()):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__27 = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_YES, __pyx_int_1) < 0) __PYX_ERR(0, 328, __pyx_L1_error)
 
-  /* "adios.pyx":1409
- *     def __init__(self, char * name,
- *                  ldim = tuple(),
- *                  gdim = tuple(),             # <<<<<<<<<<<<<<
- *                  offset = tuple()):
- *         self.name = name
+  /* "adios.pyx":329
+ *     UNKNOWN = 0
+ *     YES = 1
+ *     NO = 2             # <<<<<<<<<<<<<<
+ * 
+ * class BUFFER_ALLOC_WHEN:
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__28 = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NO, __pyx_int_2) < 0) __PYX_ERR(0, 329, __pyx_L1_error)
 
-  /* "adios.pyx":1410
- *                  ldim = tuple(),
- *                  gdim = tuple(),
- *                  offset = tuple()):             # <<<<<<<<<<<<<<
- *         self.name = name
- *         self.ldim = ldim
+  /* "adios.pyx":326
+ *     string_array = 12
+ * 
+ * class FLAG:             # <<<<<<<<<<<<<<
+ *     UNKNOWN = 0
+ *     YES = 1
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __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, 326, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__29 = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":1465
- * ## ====================
+  /* "adios.pyx":331
+ *     NO = 2
  * 
- * def readvar(fname, varname):             # <<<<<<<<<<<<<<
- *     """ Retrieve a variable value from an Adios file.
+ * 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_GOTREF(__pyx_t_2);
+
+  /* "adios.pyx":332
  * 
+ * class BUFFER_ALLOC_WHEN:
+ *     UNKNOWN = 0             # <<<<<<<<<<<<<<
+ *     NOW = 1
+ *     LATER = 2
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5adios_49readvar, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readvar, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
 
-  /* "adios.pyx":1483
- *     return v.read(from_steps=0, nsteps=v.nsteps)
+  /* "adios.pyx":333
+ * class BUFFER_ALLOC_WHEN:
+ *     UNKNOWN = 0
+ *     NOW = 1             # <<<<<<<<<<<<<<
+ *     LATER = 2
  * 
- * def bpls(fname):             # <<<<<<<<<<<<<<
- *     """ Return meta data of an Adios file as a Python dictionary object.
+ */
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NOW, __pyx_int_1) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
+
+  /* "adios.pyx":334
+ *     UNKNOWN = 0
+ *     NOW = 1
+ *     LATER = 2             # <<<<<<<<<<<<<<
  * 
+ * class READ_METHOD:
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5adios_51bpls, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_LATER, __pyx_int_2) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
 
-  /* "adios.pyx":1
- * # -*- coding: utf-8 -*-             # <<<<<<<<<<<<<<
- * """ADIOS: ADIOS python module
+  /* "adios.pyx":331
+ *     NO = 2
  * 
+ * class BUFFER_ALLOC_WHEN:             # <<<<<<<<<<<<<<
+ *     UNKNOWN = 0
+ *     NOW = 1
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __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, 331, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_var_read_line_888, __pyx_kp_u_Perform_read_Read_data_from_an) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_writer_declare_group_line_1222, __pyx_kp_u_Define_a_group_associated_with) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_writer_define_var_line_1244, __pyx_kp_u_Define_a_variable_associated_wi) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_1) < 0) __PYX_ERR(0, 331, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- *      arr.base = baseptr
+  /* "adios.pyx":336
+ *     LATER = 2
  * 
- * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
- *     if arr.base is NULL:
- *         return None
+ * 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_GOTREF(__pyx_t_2);
 
-  /*--- Wrapped vars code ---*/
+  /* "adios.pyx":337
+ * 
+ * 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)
 
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  if (__pyx_m) {
-    if (__pyx_d) {
-      __Pyx_AddTraceback("init adios", __pyx_clineno, __pyx_lineno, __pyx_filename);
-    }
-    Py_DECREF(__pyx_m); __pyx_m = 0;
-  } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init adios");
-  }
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  #if PY_MAJOR_VERSION < 3
-  return;
-  #else
-  return __pyx_m;
-  #endif
-}
+  /* "adios.pyx":338
+ * 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)
 
-/* --- Runtime support code --- */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
-    PyObject *m = NULL, *p = NULL;
-    void *r = NULL;
-    m = PyImport_ImportModule((char *)modname);
-    if (!m) goto end;
-    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
-    if (!p) goto end;
-    r = PyLong_AsVoidPtr(p);
-end:
-    Py_XDECREF(p);
-    Py_XDECREF(m);
-    return (__Pyx_RefNannyAPIStruct *)r;
-}
-#endif
+  /* "adios.pyx":339
+ *     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)
 
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
-    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
-    if (unlikely(!result)) {
-        PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
-            "name '%U' is not defined", name);
-#else
-            "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
-    }
-    return result;
-}
+  /* "adios.pyx":340
+ *     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)
 
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
-    PyObject *r;
-    if (!j) return NULL;
-    r = PyObject_GetItem(o, j);
-    Py_DECREF(j);
-    return r;
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
-                                                              int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
-    if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
-        PyObject *r = PyList_GET_ITEM(o, i);
-        Py_INCREF(r);
-        return r;
-    }
-    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
-    return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
-                                                              int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
-    if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
-        PyObject *r = PyTuple_GET_ITEM(o, i);
-        Py_INCREF(r);
-        return r;
-    }
-    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-#else
-    return PySequence_GetItem(o, i);
-#endif
-}
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
-                                                     int is_list, int wraparound, int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (is_list || PyList_CheckExact(o)) {
-        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
-        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
-            PyObject *r = PyList_GET_ITEM(o, n);
-            Py_INCREF(r);
-            return r;
-        }
-    }
-    else if (PyTuple_CheckExact(o)) {
-        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
-        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
-            PyObject *r = PyTuple_GET_ITEM(o, n);
-            Py_INCREF(r);
-            return r;
-        }
-    } else {
-        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
-        if (likely(m && m->sq_item)) {
-            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
-                Py_ssize_t l = m->sq_length(o);
-                if (likely(l >= 0)) {
-                    i += l;
-                } else {
-                    if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                        PyErr_Clear();
-                    else
-                        return NULL;
-                }
-            }
-            return m->sq_item(o, i);
-        }
-    }
-#else
-    if (is_list || PySequence_Check(o)) {
-        return PySequence_GetItem(o, i);
-    }
-#endif
-    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-}
+  /* "adios.pyx":341
+ *     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)
+
+  /* "adios.pyx":342
+ *     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)
+
+  /* "adios.pyx":336
+ *     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_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)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyThreadState *tstate = PyThreadState_GET();
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-#else
-    PyErr_Restore(type, value, tb);
-#endif
-}
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-#else
-    PyErr_Fetch(type, value, tb);
-#endif
-}
+  /* "adios.pyx":344
+ *     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_GOTREF(__pyx_t_2);
 
-static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
-                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
-                                  int full_traceback) {
-    PyObject *old_exc, *old_val, *old_tb;
-    PyObject *ctx;
-    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
-    if (full_traceback) {
-        Py_XINCREF(old_exc);
-        Py_XINCREF(old_val);
-        Py_XINCREF(old_tb);
-        __Pyx_ErrRestore(old_exc, old_val, old_tb);
-        PyErr_PrintEx(1);
-    }
-    #if PY_MAJOR_VERSION < 3
-    ctx = PyString_FromString(name);
-    #else
-    ctx = PyUnicode_FromString(name);
-    #endif
-    __Pyx_ErrRestore(old_exc, old_val, old_tb);
-    if (!ctx) {
-        PyErr_WriteUnraisable(Py_None);
-    } else {
-        PyErr_WriteUnraisable(ctx);
-        Py_DECREF(ctx);
-    }
-}
+  /* "adios.pyx":345
+ * 
+ * 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)
 
-static void __Pyx_RaiseArgtupleInvalid(
-    const char* func_name,
-    int exact,
-    Py_ssize_t num_min,
-    Py_ssize_t num_max,
-    Py_ssize_t num_found)
-{
-    Py_ssize_t num_expected;
-    const char *more_or_less;
-    if (num_found < num_min) {
-        num_expected = num_min;
-        more_or_less = "at least";
-    } else {
-        num_expected = num_max;
-        more_or_less = "at most";
-    }
-    if (exact) {
-        more_or_less = "exactly";
-    }
-    PyErr_Format(PyExc_TypeError,
-                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
-                 func_name, more_or_less, num_expected,
-                 (num_expected == 1) ? "" : "s", num_found);
-}
+  /* "adios.pyx":346
+ * 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)
 
-static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name,
-    PyObject* kw_name)
-{
-    PyErr_Format(PyExc_TypeError,
-        #if PY_MAJOR_VERSION >= 3
-        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
-        #else
-        "%s() got multiple values for keyword argument '%s'", func_name,
-        PyString_AsString(kw_name));
-        #endif
-}
+  /* "adios.pyx":347
+ *     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)
 
-static int __Pyx_ParseOptionalKeywords(
-    PyObject *kwds,
-    PyObject **argnames[],
-    PyObject *kwds2,
-    PyObject *values[],
-    Py_ssize_t num_pos_args,
-    const char* function_name)
-{
-    PyObject *key = 0, *value = 0;
-    Py_ssize_t pos = 0;
-    PyObject*** name;
-    PyObject*** first_kw_arg = argnames + num_pos_args;
-    while (PyDict_Next(kwds, &pos, &key, &value)) {
-        name = first_kw_arg;
-        while (*name && (**name != key)) name++;
-        if (*name) {
-            values[name-argnames] = value;
-            continue;
-        }
-        name = first_kw_arg;
-        #if PY_MAJOR_VERSION < 3
-        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
-            while (*name) {
-                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
-                        && _PyString_Eq(**name, key)) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    if ((**argname == key) || (
-                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
-                             && _PyString_Eq(**argname, key))) {
-                        goto arg_passed_twice;
-                    }
-                    argname++;
-                }
-            }
-        } else
-        #endif
-        if (likely(PyUnicode_Check(key))) {
-            while (*name) {
-                int cmp = (**name == key) ? 0 :
-                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
-                #endif
-                    PyUnicode_Compare(**name, key);
-                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                if (cmp == 0) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    int cmp = (**argname == key) ? 0 :
-                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
-                    #endif
-                        PyUnicode_Compare(**argname, key);
-                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                    if (cmp == 0) goto arg_passed_twice;
-                    argname++;
-                }
-            }
-        } else
-            goto invalid_keyword_type;
-        if (kwds2) {
-            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
-        } else {
-            goto invalid_keyword;
-        }
-    }
-    return 0;
-arg_passed_twice:
-    __Pyx_RaiseDoubleKeywordsError(function_name, key);
-    goto bad;
-invalid_keyword_type:
-    PyErr_Format(PyExc_TypeError,
-        "%.200s() keywords must be strings", function_name);
-    goto bad;
-invalid_keyword:
-    PyErr_Format(PyExc_TypeError,
-    #if PY_MAJOR_VERSION < 3
-        "%.200s() got an unexpected keyword argument '%.200s'",
-        function_name, PyString_AsString(key));
-    #else
-        "%s() got an unexpected keyword argument '%U'",
-        function_name, key);
-    #endif
-bad:
-    return -1;
-}
+  /* "adios.pyx":344
+ *     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_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCKMODE, __pyx_t_1) < 0) __PYX_ERR(0, 344, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
-    if (unlikely(!type)) {
-        PyErr_SetString(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    if (likely(PyObject_TypeCheck(obj, type)))
-        return 1;
-    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
-                 Py_TYPE(obj)->tp_name, type->tp_name);
-    return 0;
-}
+  /* "adios.pyx":381
+ * cdef MPI_Comm read_init_comm
+ * 
+ * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
+ */
+  __pyx_k__7 = MPI_COMM_WORLD;
+  __pyx_k__7 = MPI_COMM_WORLD;
 
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
-    PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON
-    result = PyDict_GetItem(__pyx_d, name);
-    if (likely(result)) {
-        Py_INCREF(result);
-    } else {
-#else
-    result = PyObject_GetItem(__pyx_d, name);
-    if (!result) {
-        PyErr_Clear();
-#endif
-        result = __Pyx_GetBuiltinName(name);
-    }
-    return result;
-}
+  /* "adios.pyx":389
+ *                    str name,
+ *                    str mode,
+ *                    MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     cdef int64_t fd
+ *     cdef int result
+ */
+  __pyx_k__8 = MPI_COMM_WORLD;
+
+  /* "adios.pyx":386
+ *     return adios_init(s2b(config), init_comm)
+ * 
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
+ */
+  __pyx_k__8 = MPI_COMM_WORLD;
+
+  /* "adios.pyx":448
+ * ## ====================
+ * 
+ * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm
+ */
+  __pyx_k__9 = MPI_COMM_WORLD;
+  __pyx_k__9 = MPI_COMM_WORLD;
+
+  /* "adios.pyx":684
+ * """ 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;
+
+  /* "adios.pyx":683
+ * 
+ * """ 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;
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
-    PyObject *result;
-    ternaryfunc call = func->ob_type->tp_call;
-    if (unlikely(!call))
-        return PyObject_Call(func, arg, kw);
-    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
-        return NULL;
-    result = (*call)(func, arg, kw);
-    Py_LeaveRecursiveCall();
-    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
-        PyErr_SetString(
-            PyExc_SystemError,
-            "NULL result without error in PyObject_Call");
-    }
-    return result;
-}
-#endif
+  /* "adios.pyx":805
+ *     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;
 
-static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
-    PyErr_Format(PyExc_TypeError,
-        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
-        name, type->tp_name, Py_TYPE(obj)->tp_name);
-}
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact)
-{
-    if (unlikely(!type)) {
-        PyErr_SetString(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    if (none_allowed && obj == Py_None) return 1;
-    else if (exact) {
-        if (likely(Py_TYPE(obj) == type)) return 1;
-        #if PY_MAJOR_VERSION == 2
-        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
-        #endif
-    }
-    else {
-        if (likely(PyObject_TypeCheck(obj, type))) return 1;
-    }
-    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
-    return 0;
-}
+  /* "adios.pyx":807
+ *                  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;
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
-    PyObject *self, *result;
-    PyCFunction cfunc;
-    cfunc = PyCFunction_GET_FUNCTION(func);
-    self = PyCFunction_GET_SELF(func);
-    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
-        return NULL;
-    result = cfunc(self, arg);
-    Py_LeaveRecursiveCall();
-    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
-        PyErr_SetString(
-            PyExc_SystemError,
-            "NULL result without error in PyObject_Call");
-    }
-    return result;
-}
-#endif
+  /* "adios.pyx":1765
+ *                  bint is_noxml = True,
+ *                  str mode = "w",
+ *                  MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *         self.fname = fname
+ *         self.method = ""
+ */
+  __pyx_k__53 = MPI_COMM_WORLD;
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-    PyObject *result;
-    PyObject *args = PyTuple_New(1);
-    if (unlikely(!args)) return NULL;
-    Py_INCREF(arg);
-    PyTuple_SET_ITEM(args, 0, arg);
-    result = __Pyx_PyObject_Call(func, args, NULL);
-    Py_DECREF(args);
-    return result;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
-    if (likely(PyCFunction_Check(func))) {
-#endif
-        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
-            return __Pyx_PyObject_CallMethO(func, arg);
-        }
-    }
-    return __Pyx__PyObject_CallOneArg(func, arg);
-}
-#else
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-    PyObject* args = PyTuple_Pack(1, arg);
-    return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL;
-}
-#endif
+  /* "adios.pyx":1805
+ * 
+ *     def define_var(self, str varname,
+ *                    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, 1805, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_k__54 = __pyx_t_2;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
 
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
-#if CYTHON_COMPILING_IN_PYPY
-    return PyObject_RichCompareBool(s1, s2, equals);
-#else
-    if (s1 == s2) {
-        return (equals == Py_EQ);
-    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
-        const char *ps1, *ps2;
-        Py_ssize_t length = PyBytes_GET_SIZE(s1);
-        if (length != PyBytes_GET_SIZE(s2))
-            return (equals == Py_NE);
-        ps1 = PyBytes_AS_STRING(s1);
-        ps2 = PyBytes_AS_STRING(s2);
-        if (ps1[0] != ps2[0]) {
-            return (equals == Py_NE);
-        } else if (length == 1) {
-            return (equals == Py_EQ);
-        } else {
-            int result = memcmp(ps1, ps2, (size_t)length);
-            return (equals == Py_EQ) ? (result == 0) : (result != 0);
-        }
-    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
-        return (equals == Py_NE);
-    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
-        return (equals == Py_NE);
-    } else {
-        int result;
-        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
-        if (!py_result)
-            return -1;
-        result = __Pyx_PyObject_IsTrue(py_result);
-        Py_DECREF(py_result);
-        return result;
-    }
-#endif
-}
+  /* "adios.pyx":1806
+ *     def define_var(self, str varname,
+ *                    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, 1806, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_k__55 = __pyx_t_2;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
 
-static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
-#if CYTHON_COMPILING_IN_PYPY
-    return PyObject_RichCompareBool(s1, s2, equals);
-#else
-#if PY_MAJOR_VERSION < 3
-    PyObject* owned_ref = NULL;
-#endif
-    int s1_is_unicode, s2_is_unicode;
-    if (s1 == s2) {
-        goto return_eq;
-    }
-    s1_is_unicode = PyUnicode_CheckExact(s1);
-    s2_is_unicode = PyUnicode_CheckExact(s2);
-#if PY_MAJOR_VERSION < 3
-    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
-        owned_ref = PyUnicode_FromObject(s2);
-        if (unlikely(!owned_ref))
-            return -1;
-        s2 = owned_ref;
-        s2_is_unicode = 1;
-    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
-        owned_ref = PyUnicode_FromObject(s1);
-        if (unlikely(!owned_ref))
-            return -1;
-        s1 = owned_ref;
-        s1_is_unicode = 1;
-    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
-        return __Pyx_PyBytes_Equals(s1, s2, equals);
-    }
-#endif
-    if (s1_is_unicode & s2_is_unicode) {
-        Py_ssize_t length;
-        int kind;
-        void *data1, *data2;
-        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
-            return -1;
-        length = __Pyx_PyUnicode_GET_LENGTH(s1);
-        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
-            goto return_ne;
-        }
-        kind = __Pyx_PyUnicode_KIND(s1);
-        if (kind != __Pyx_PyUnicode_KIND(s2)) {
-            goto return_ne;
-        }
-        data1 = __Pyx_PyUnicode_DATA(s1);
-        data2 = __Pyx_PyUnicode_DATA(s2);
-        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
-            goto return_ne;
-        } else if (length == 1) {
-            goto return_eq;
-        } else {
-            int result = memcmp(data1, data2, (size_t)(length * kind));
-            #if PY_MAJOR_VERSION < 3
-            Py_XDECREF(owned_ref);
-            #endif
-            return (equals == Py_EQ) ? (result == 0) : (result != 0);
-        }
-    } else if ((s1 == Py_None) & s2_is_unicode) {
-        goto return_ne;
-    } else if ((s2 == Py_None) & s1_is_unicode) {
-        goto return_ne;
-    } else {
-        int result;
-        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
-        if (!py_result)
-            return -1;
-        result = __Pyx_PyObject_IsTrue(py_result);
-        Py_DECREF(py_result);
-        return result;
-    }
-return_eq:
-    #if PY_MAJOR_VERSION < 3
-    Py_XDECREF(owned_ref);
-    #endif
-    return (equals == Py_EQ);
-return_ne:
-    #if PY_MAJOR_VERSION < 3
-    Py_XDECREF(owned_ref);
-    #endif
-    return (equals == Py_NE);
-#endif
-}
+  /* "adios.pyx":1807
+ *                    ldim = tuple(),
+ *                    gdim = tuple(),
+ *                    offset = tuple()):             # <<<<<<<<<<<<<<
+ *         """
+ *         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_GOTREF(__pyx_t_2);
+  __pyx_k__56 = __pyx_t_2;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "adios.pyx":1983
+ * 
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_k__59 = __pyx_t_2;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "adios.pyx":1984
+ *     def __init__(self, str name,
+ *                  ldim = tuple(),
+ *                  gdim = tuple(),             # <<<<<<<<<<<<<<
+ *                  offset = tuple(),
+ *                  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_GOTREF(__pyx_t_2);
+  __pyx_k__60 = __pyx_t_2;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
-#ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
-    if (likely(PyCFunction_Check(func))) {
-#endif
-        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
-            return __Pyx_PyObject_CallMethO(func, NULL);
-        }
-    }
-    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
-}
-#endif
+  /* "adios.pyx":1985
+ *                  ldim = tuple(),
+ *                  gdim = tuple(),
+ *                  offset = tuple(),             # <<<<<<<<<<<<<<
+ *                  value = None):
+ *         self.name = name
+ */
+  __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_GOTREF(__pyx_t_2);
+  __pyx_k__61 = __pyx_t_2;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
 
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
-    PyObject *method, *result = NULL;
-    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
-    if (unlikely(!method)) goto bad;
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (likely(PyMethod_Check(method))) {
-        PyObject *self = PyMethod_GET_SELF(method);
-        if (likely(self)) {
-            PyObject *args;
-            PyObject *function = PyMethod_GET_FUNCTION(method);
-            args = PyTuple_New(2);
-            if (unlikely(!args)) goto bad;
-            Py_INCREF(self);
-            PyTuple_SET_ITEM(args, 0, self);
-            Py_INCREF(arg);
-            PyTuple_SET_ITEM(args, 1, arg);
-            Py_INCREF(function);
-            Py_DECREF(method); method = NULL;
-            result = __Pyx_PyObject_Call(function, args, NULL);
-            Py_DECREF(args);
-            Py_DECREF(function);
-            return result;
-        }
+  /* "adios.pyx":2039
+ * 
+ * ## 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)
+
+  /* "adios.pyx":2040
+ * ## 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)
+
+  /* "adios.pyx":2041
+ * 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)
+
+  /* "adios.pyx":2042
+ * 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)
+
+  /* "adios.pyx":2043
+ * 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)
+
+  /* "adios.pyx":2044
+ * 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)
+
+  /* "adios.pyx":2050
+ * ## ====================
+ * 
+ * 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_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)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":2064
+ *     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_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_2) < 0) __PYX_ERR(0, 2064, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios.pyx":1
+ * # -*- coding: utf-8 -*-             # <<<<<<<<<<<<<<
+ * """ADIOS: ADIOS python module
+ * 
+ */
+  __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_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;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
+
+  /*--- Wrapped vars code ---*/
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    if (__pyx_d) {
+      __Pyx_AddTraceback("init adios", __pyx_clineno, __pyx_lineno, __pyx_filename);
     }
-#endif
-    result = __Pyx_PyObject_CallOneArg(method, arg);
-bad:
-    Py_XDECREF(method);
-    return result;
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init adios");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
-    if (PY_MAJOR_VERSION >= 3)
-        return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_values, d);
-    else
-        return PyDict_Values(d);
+/* --- Runtime support code --- */
+/* Refnanny */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
 }
+#endif
 
-#if PY_MAJOR_VERSION < 3
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
-                        CYTHON_UNUSED PyObject *cause) {
-    Py_XINCREF(type);
-    if (!value || value == Py_None)
-        value = NULL;
-    else
-        Py_INCREF(value);
-    if (!tb || tb == Py_None)
-        tb = NULL;
-    else {
-        Py_INCREF(tb);
-        if (!PyTraceBack_Check(tb)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: arg 3 must be a traceback or None");
-            goto raise_error;
-        }
-    }
-    if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
-        if (!value) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
+/* GetBuiltinName */
+static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
+    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
+    if (unlikely(!result)) {
+        PyErr_Format(PyExc_NameError,
+#if PY_MAJOR_VERSION >= 3
+            "name '%U' is not defined", name);
+#else
+            "name '%.200s' is not defined", PyString_AS_STRING(name));
 #endif
-        PyErr_NormalizeException(&type, &value, &tb);
-    } else {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto raise_error;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(type);
-        Py_INCREF(type);
-        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: exception class must be a subclass of BaseException");
-            goto raise_error;
-        }
     }
-    __Pyx_ErrRestore(type, value, tb);
-    return;
-raise_error:
-    Py_XDECREF(value);
-    Py_XDECREF(type);
-    Py_XDECREF(tb);
-    return;
+    return result;
 }
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
-    PyObject* owned_instance = NULL;
-    if (tb == Py_None) {
-        tb = 0;
-    } else if (tb && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: arg 3 must be a traceback or None");
-        goto bad;
-    }
-    if (value == Py_None)
-        value = 0;
-    if (PyExceptionInstance_Check(type)) {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto bad;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(value);
-    } else if (PyExceptionClass_Check(type)) {
-        PyObject *instance_class = NULL;
-        if (value && PyExceptionInstance_Check(value)) {
-            instance_class = (PyObject*) Py_TYPE(value);
-            if (instance_class != type) {
-                if (PyObject_IsSubclass(instance_class, type)) {
-                    type = instance_class;
-                } else {
-                    instance_class = NULL;
-                }
-            }
-        }
-        if (!instance_class) {
-            PyObject *args;
-            if (!value)
-                args = PyTuple_New(0);
-            else if (PyTuple_Check(value)) {
-                Py_INCREF(value);
-                args = value;
-            } else
-                args = PyTuple_Pack(1, value);
-            if (!args)
-                goto bad;
-            owned_instance = PyObject_Call(type, args, NULL);
-            Py_DECREF(args);
-            if (!owned_instance)
-                goto bad;
-            value = owned_instance;
-            if (!PyExceptionInstance_Check(value)) {
-                PyErr_Format(PyExc_TypeError,
-                             "calling %R should have returned an instance of "
-                             "BaseException, not %R",
-                             type, Py_TYPE(value));
-                goto bad;
-            }
-        }
-    } else {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: exception class must be a subclass of BaseException");
-        goto bad;
+
+/* PyObjectCall */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+    PyObject *result;
+    ternaryfunc call = func->ob_type->tp_call;
+    if (unlikely(!call))
+        return PyObject_Call(func, arg, kw);
+    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+        return NULL;
+    result = (*call)(func, arg, kw);
+    Py_LeaveRecursiveCall();
+    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
+        PyErr_SetString(
+            PyExc_SystemError,
+            "NULL result without error in PyObject_Call");
     }
-#if PY_VERSION_HEX >= 0x03030000
-    if (cause) {
+    return result;
+}
+#endif
+
+/* PyObjectCallMethO */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
+    PyObject *self, *result;
+    PyCFunction cfunc;
+    cfunc = PyCFunction_GET_FUNCTION(func);
+    self = PyCFunction_GET_SELF(func);
+    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+        return NULL;
+    result = cfunc(self, arg);
+    Py_LeaveRecursiveCall();
+    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
+        PyErr_SetString(
+            PyExc_SystemError,
+            "NULL result without error in PyObject_Call");
+    }
+    return result;
+}
+#endif
+
+/* PyObjectCallOneArg */
+#if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+    PyObject *result;
+    PyObject *args = PyTuple_New(1);
+    if (unlikely(!args)) return NULL;
+    Py_INCREF(arg);
+    PyTuple_SET_ITEM(args, 0, arg);
+    result = __Pyx_PyObject_Call(func, args, NULL);
+    Py_DECREF(args);
+    return result;
+}
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+#ifdef __Pyx_CyFunction_USED
+    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
 #else
-    if (cause && cause != Py_None) {
+    if (likely(PyCFunction_Check(func))) {
 #endif
-        PyObject *fixed_cause;
-        if (cause == Py_None) {
-            fixed_cause = NULL;
-        } else if (PyExceptionClass_Check(cause)) {
-            fixed_cause = PyObject_CallObject(cause, NULL);
-            if (fixed_cause == NULL)
-                goto bad;
-        } else if (PyExceptionInstance_Check(cause)) {
-            fixed_cause = cause;
-            Py_INCREF(fixed_cause);
-        } else {
-            PyErr_SetString(PyExc_TypeError,
-                            "exception causes must derive from "
-                            "BaseException");
-            goto bad;
+        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
+            return __Pyx_PyObject_CallMethO(func, arg);
         }
-        PyException_SetCause(value, fixed_cause);
     }
-    PyErr_SetObject(type, value);
-    if (tb) {
-#if CYTHON_COMPILING_IN_PYPY
-        PyObject *tmp_type, *tmp_value, *tmp_tb;
-        PyErr_Fetch(tmp_type, tmp_value, tmp_tb);
-        Py_INCREF(tb);
-        PyErr_Restore(tmp_type, tmp_value, tb);
-        Py_XDECREF(tmp_tb);
+    return __Pyx__PyObject_CallOneArg(func, arg);
+}
 #else
-        PyThreadState *tstate = PyThreadState_GET();
-        PyObject* tmp_tb = tstate->curexc_traceback;
-        if (tb != tmp_tb) {
-            Py_INCREF(tb);
-            tstate->curexc_traceback = tb;
-            Py_XDECREF(tmp_tb);
-        }
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+    PyObject *result;
+    PyObject *args = PyTuple_Pack(1, arg);
+    if (unlikely(!args)) return NULL;
+    result = __Pyx_PyObject_Call(func, args, NULL);
+    Py_DECREF(args);
+    return result;
+}
+#endif
+
+/* PyObjectCallNoArg */
+  #if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
+#ifdef __Pyx_CyFunction_USED
+    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
+#else
+    if (likely(PyCFunction_Check(func))) {
 #endif
+        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
+            return __Pyx_PyObject_CallMethO(func, NULL);
+        }
     }
-bad:
-    Py_XDECREF(owned_instance);
-    return;
+    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
 }
 #endif
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
-    if (PY_MAJOR_VERSION >= 3)
-        return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_keys, d);
-    else
-        return PyDict_Keys(d);
+/* PyErrFetchRestore */
+    #if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
 }
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
 
-static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
-    PyObject* value;
-#if PY_MAJOR_VERSION >= 3
-    value = PyDict_GetItemWithError(d, key);
-    if (unlikely(!value)) {
-        if (unlikely(PyErr_Occurred()))
-            return NULL;
-        value = default_value;
+/* WriteUnraisableException */
+    static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
+                                  int full_traceback, CYTHON_UNUSED int nogil) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_PyThreadState_declare
+#ifdef WITH_THREAD
+    PyGILState_STATE state;
+    if (nogil)
+        state = PyGILState_Ensure();
+#ifdef _MSC_VER
+    else state = (PyGILState_STATE)-1;
+#endif
+#endif
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    if (full_traceback) {
+        Py_XINCREF(old_exc);
+        Py_XINCREF(old_val);
+        Py_XINCREF(old_tb);
+        __Pyx_ErrRestore(old_exc, old_val, old_tb);
+        PyErr_PrintEx(1);
     }
-    Py_INCREF(value);
-#else
-    if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
-        value = PyDict_GetItem(d, key);
-        if (unlikely(!value)) {
-            value = default_value;
-        }
-        Py_INCREF(value);
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
     } else {
-        if (default_value == Py_None)
-            default_value = NULL;
-        value = PyObject_CallMethodObjArgs(
-            d, __pyx_n_s_get, key, default_value, NULL);
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
     }
+#ifdef WITH_THREAD
+    if (nogil)
+        PyGILState_Release(state);
 #endif
-    return value;
 }
 
-static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
-        PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
-        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
-        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyMappingMethods* mp;
-#if PY_MAJOR_VERSION < 3
-    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
-    if (likely(ms && ms->sq_ass_slice)) {
-        if (!has_cstart) {
-            if (_py_start && (*_py_start != Py_None)) {
-                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
-                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
-            } else
-                cstart = 0;
-        }
-        if (!has_cstop) {
-            if (_py_stop && (*_py_stop != Py_None)) {
-                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
-                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
-            } else
-                cstop = PY_SSIZE_T_MAX;
-        }
-        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
-            Py_ssize_t l = ms->sq_length(obj);
-            if (likely(l >= 0)) {
-                if (cstop < 0) {
-                    cstop += l;
-                    if (cstop < 0) cstop = 0;
-                }
-                if (cstart < 0) {
-                    cstart += l;
-                    if (cstart < 0) cstart = 0;
-                }
-            } else {
-                if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                    PyErr_Clear();
-                else
-                    goto bad;
-            }
-        }
-        return ms->sq_ass_slice(obj, cstart, cstop, value);
-    }
-#endif
-    mp = Py_TYPE(obj)->tp_as_mapping;
-    if (likely(mp && mp->mp_ass_subscript))
-#endif
-    {
-        int result;
-        PyObject *py_slice, *py_start, *py_stop;
-        if (_py_slice) {
-            py_slice = *_py_slice;
-        } else {
-            PyObject* owned_start = NULL;
-            PyObject* owned_stop = NULL;
-            if (_py_start) {
-                py_start = *_py_start;
-            } else {
-                if (has_cstart) {
-                    owned_start = py_start = PyInt_FromSsize_t(cstart);
-                    if (unlikely(!py_start)) goto bad;
-                } else
-                    py_start = Py_None;
-            }
-            if (_py_stop) {
-                py_stop = *_py_stop;
-            } else {
-                if (has_cstop) {
-                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
-                    if (unlikely(!py_stop)) {
-                        Py_XDECREF(owned_start);
-                        goto bad;
-                    }
-                } else
-                    py_stop = Py_None;
-            }
-            py_slice = PySlice_New(py_start, py_stop, Py_None);
-            Py_XDECREF(owned_start);
-            Py_XDECREF(owned_stop);
-            if (unlikely(!py_slice)) goto bad;
-        }
-#if CYTHON_COMPILING_IN_CPYTHON
-        result = mp->mp_ass_subscript(obj, py_slice, value);
-#else
-        result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
-#endif
-        if (!_py_slice) {
-            Py_DECREF(py_slice);
-        }
-        return result;
+/* ArgTypeTest */
+    static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+}
+static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (unlikely(!type)) {
+        PyErr_SetString(PyExc_SystemError, "Missing type object");
+        return 0;
     }
-    PyErr_Format(PyExc_TypeError,
-        "'%.200s' object does not support slice %.10s",
-        Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
-bad:
-    return -1;
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (likely(Py_TYPE(obj) == type)) return 1;
+        #if PY_MAJOR_VERSION == 2
+        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
+        #endif
+    }
+    else {
+        if (likely(PyObject_TypeCheck(obj, type))) return 1;
+    }
+    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
+    return 0;
 }
 
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
-    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
+/* decode_c_bytes */
+    static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
+    if (unlikely((start < 0) | (stop < 0))) {
+        if (start < 0) {
+            start += length;
+            if (start < 0)
+                start = 0;
+        }
+        if (stop < 0)
+            stop += length;
+    }
+    if (stop > length)
+        stop = length;
+    length = stop - start;
+    if (unlikely(length <= 0))
+        return PyUnicode_FromUnicode(NULL, 0);
+    cstring += start;
+    if (decode_func) {
+        return decode_func(cstring, length, errors);
+    } else {
+        return PyUnicode_Decode(cstring, length, encoding, errors);
+    }
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
-        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+/* SliceObject */
+    static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
+        Py_ssize_t cstart, Py_ssize_t cstop,
         PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
         int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
 #if CYTHON_COMPILING_IN_CPYTHON
@@ -26637,10 +38644,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
                     if (cstart < 0) cstart = 0;
                 }
             } else {
-                if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                    PyErr_Clear();
-                else
+                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                     goto bad;
+                PyErr_Clear();
             }
         }
         return ms->sq_slice(obj, cstart, cstop);
@@ -26699,1167 +38705,1779 @@ bad:
     return NULL;
 }
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE void __Pyx_crop_slice(Py_ssize_t* _start, Py_ssize_t* _stop, Py_ssize_t* _length) {
-    Py_ssize_t start = *_start, stop = *_stop, length = *_length;
-    if (start < 0) {
-        start += length;
-        if (start < 0)
-            start = 0;
-    }
-    if (stop < 0)
-        stop += length;
-    else if (stop > length)
-        stop = length;
-    *_length = stop - start;
-    *_start = start;
-    *_stop = stop;
-}
-static CYTHON_INLINE void __Pyx_copy_object_array(PyObject** CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
-    PyObject *v;
-    Py_ssize_t i;
-    for (i = 0; i < length; i++) {
-        v = dest[i] = src[i];
-        Py_INCREF(v);
-    }
-}
-static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(
-            PyObject* src, Py_ssize_t start, Py_ssize_t stop) {
-    PyObject* dest;
-    Py_ssize_t length = PyList_GET_SIZE(src);
-    __Pyx_crop_slice(&start, &stop, &length);
-    if (unlikely(length <= 0))
-        return PyList_New(0);
-    dest = PyList_New(length);
-    if (unlikely(!dest))
-        return NULL;
-    __Pyx_copy_object_array(
-        ((PyListObject*)src)->ob_item + start,
-        ((PyListObject*)dest)->ob_item,
-        length);
-    return dest;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(
-            PyObject* src, Py_ssize_t start, Py_ssize_t stop) {
-    PyObject* dest;
-    Py_ssize_t length = PyTuple_GET_SIZE(src);
-    __Pyx_crop_slice(&start, &stop, &length);
-    if (unlikely(length <= 0))
-        return PyTuple_New(0);
-    dest = PyTuple_New(length);
-    if (unlikely(!dest))
-        return NULL;
-    __Pyx_copy_object_array(
-        ((PyTupleObject*)src)->ob_item + start,
-        ((PyTupleObject*)dest)->ob_item,
-        length);
-    return dest;
-}
-#endif
-
-static CYTHON_INLINE int __Pyx_div_int(int a, int b) {
-    int q = a / b;
-    int r = a - q*b;
-    q -= ((r != 0) & ((r ^ b) < 0));
-    return q;
-}
-
-static CYTHON_INLINE int __Pyx_IterFinish(void) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject* exc_type = tstate->curexc_type;
-    if (unlikely(exc_type)) {
-        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
-            PyObject *exc_value, *exc_tb;
-            exc_value = tstate->curexc_value;
-            exc_tb = tstate->curexc_traceback;
-            tstate->curexc_type = 0;
-            tstate->curexc_value = 0;
-            tstate->curexc_traceback = 0;
-            Py_DECREF(exc_type);
-            Py_XDECREF(exc_value);
-            Py_XDECREF(exc_tb);
-            return 0;
-        } else {
-            return -1;
-        }
-    }
-    return 0;
-#else
-    if (unlikely(PyErr_Occurred())) {
-        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
-            PyErr_Clear();
-            return 0;
-        } else {
-            return -1;
-        }
-    }
-    return 0;
-#endif
+/* GetItemInt */
+    static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
 }
-
-static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
-    PyObject *method, *result = NULL;
-    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
-    if (unlikely(!method)) goto bad;
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
+                                                              CYTHON_NCP_UNUSED int wraparound,
+                                                              CYTHON_NCP_UNUSED int boundscheck) {
 #if CYTHON_COMPILING_IN_CPYTHON
-    if (likely(PyMethod_Check(method))) {
-        PyObject *self = PyMethod_GET_SELF(method);
-        if (likely(self)) {
-            PyObject *function = PyMethod_GET_FUNCTION(method);
-            result = __Pyx_PyObject_CallOneArg(function, self);
-            Py_DECREF(method);
-            return result;
-        }
-    }
-#endif
-    result = __Pyx_PyObject_CallNoArg(method);
-    Py_DECREF(method);
-bad:
-    return result;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
-    PyErr_Format(PyExc_ValueError,
-                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
-                 index, (index == 1) ? "" : "s");
-}
-
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
-    PyErr_Format(PyExc_ValueError,
-                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
-}
-
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
-    if (unlikely(retval)) {
-        Py_DECREF(retval);
-        __Pyx_RaiseTooManyValuesError(expected);
-        return -1;
-    } else {
-        return __Pyx_IterFinish();
-    }
-    return 0;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-}
-
-static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
-    if (t == Py_None) {
-      __Pyx_RaiseNoneNotIterableError();
-    } else if (PyTuple_GET_SIZE(t) < index) {
-      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
-    } else {
-      __Pyx_RaiseTooManyValuesError(index);
-    }
-}
-
-static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
-                                             int is_tuple, int has_known_size, int decref_tuple) {
-    Py_ssize_t index;
-    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
-    if (!is_tuple && unlikely(!PyTuple_Check(tuple))) {
-        iternextfunc iternext;
-        iter = PyObject_GetIter(tuple);
-        if (unlikely(!iter)) goto bad;
-        if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
-        iternext = Py_TYPE(iter)->tp_iternext;
-        value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
-        value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
-        if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
-        Py_DECREF(iter);
-    } else {
-        if (!has_known_size && unlikely(PyTuple_GET_SIZE(tuple) != 2)) {
-            __Pyx_UnpackTupleError(tuple, 2);
-            goto bad;
-        }
-#if CYTHON_COMPILING_IN_PYPY
-        value1 = PySequence_ITEM(tuple, 0);
-        if (unlikely(!value1)) goto bad;
-        value2 = PySequence_ITEM(tuple, 1);
-        if (unlikely(!value2)) goto bad;
-#else
-        value1 = PyTuple_GET_ITEM(tuple, 0);
-        value2 = PyTuple_GET_ITEM(tuple, 1);
-        Py_INCREF(value1);
-        Py_INCREF(value2);
-#endif
-        if (decref_tuple) { Py_DECREF(tuple); }
-    }
-    *pvalue1 = value1;
-    *pvalue2 = value2;
-    return 0;
-unpacking_failed:
-    if (!has_known_size && __Pyx_IterFinish() == 0)
-        __Pyx_RaiseNeedMoreValuesError(index);
-bad:
-    Py_XDECREF(iter);
-    Py_XDECREF(value1);
-    Py_XDECREF(value2);
-    if (decref_tuple) { Py_XDECREF(tuple); }
-    return -1;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
-                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
-    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
-    *p_source_is_dict = is_dict;
-#if !CYTHON_COMPILING_IN_PYPY
-    if (is_dict) {
-        *p_orig_length = PyDict_Size(iterable);
-        Py_INCREF(iterable);
-        return iterable;
-    }
-#endif
-    *p_orig_length = 0;
-    if (method_name) {
-        PyObject* iter;
-        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
-        if (!iterable)
-            return NULL;
-#if !CYTHON_COMPILING_IN_PYPY
-        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
-            return iterable;
-#endif
-        iter = PyObject_GetIter(iterable);
-        Py_DECREF(iterable);
-        return iter;
+    if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
+    if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
     }
-    return PyObject_GetIter(iterable);
-}
-static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* iter_obj, Py_ssize_t orig_length, Py_ssize_t* ppos,
-                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
-    PyObject* next_item;
-#if !CYTHON_COMPILING_IN_PYPY
-    if (source_is_dict) {
-        PyObject *key, *value;
-        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
-            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
-            return -1;
-        }
-        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
-            return 0;
-        }
-        if (pitem) {
-            PyObject* tuple = PyTuple_New(2);
-            if (unlikely(!tuple)) {
-                return -1;
-            }
-            Py_INCREF(key);
-            Py_INCREF(value);
-            PyTuple_SET_ITEM(tuple, 0, key);
-            PyTuple_SET_ITEM(tuple, 1, value);
-            *pitem = tuple;
-        } else {
-            if (pkey) {
-                Py_INCREF(key);
-                *pkey = key;
-            }
-            if (pvalue) {
-                Py_INCREF(value);
-                *pvalue = value;
-            }
-        }
-        return 1;
-    } else if (PyTuple_CheckExact(iter_obj)) {
-        Py_ssize_t pos = *ppos;
-        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
-        *ppos = pos + 1;
-        next_item = PyTuple_GET_ITEM(iter_obj, pos);
-        Py_INCREF(next_item);
-    } else if (PyList_CheckExact(iter_obj)) {
-        Py_ssize_t pos = *ppos;
-        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
-        *ppos = pos + 1;
-        next_item = PyList_GET_ITEM(iter_obj, pos);
-        Py_INCREF(next_item);
-    } else
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
 #endif
-    {
-        next_item = PyIter_Next(iter_obj);
-        if (unlikely(!next_item)) {
-            return __Pyx_IterFinish();
+}
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
+                                                              CYTHON_NCP_UNUSED int wraparound,
+                                                              CYTHON_NCP_UNUSED int boundscheck) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
+    if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
+                                                     CYTHON_NCP_UNUSED int wraparound,
+                                                     CYTHON_NCP_UNUSED int boundscheck) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (is_list || PyList_CheckExact(o)) {
+        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+            PyObject *r = PyList_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
         }
     }
-    if (pitem) {
-        *pitem = next_item;
-    } else if (pkey && pvalue) {
-        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
-            return -1;
-    } else if (pkey) {
-        *pkey = next_item;
+    else if (PyTuple_CheckExact(o)) {
+        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
     } else {
-        *pvalue = next_item;
+        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+        if (likely(m && m->sq_item)) {
+            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
+                Py_ssize_t l = m->sq_length(o);
+                if (likely(l >= 0)) {
+                    i += l;
+                } else {
+                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
+                        return NULL;
+                    PyErr_Clear();
+                }
+            }
+            return m->sq_item(o, i);
+        }
     }
-    return 1;
-}
-
-static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000
-    PyObject *ob = PyCapsule_New(vtable, 0, 0);
 #else
-    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
+    if (is_list || PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
 #endif
-    if (!ob)
-        goto bad;
-    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
-        goto bad;
-    Py_DECREF(ob);
-    return 0;
-bad:
-    Py_XDECREF(ob);
-    return -1;
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
 }
 
-static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
-    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
-    for (i=0; i < nbases; i++) {
-        PyTypeObject *tmptype;
-        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
-        tmptype = Py_TYPE(tmp);
-#if PY_MAJOR_VERSION < 3
-        if (tmptype == &PyClass_Type)
-            continue;
-#endif
-        if (!metaclass) {
-            metaclass = tmptype;
-            continue;
+/* PyIntBinop */
+    #if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long x;
+        long a = PyInt_AS_LONG(op1);
+            x = (long)((unsigned long)a + b);
+            if (likely((x^a) >= 0 || (x^b) >= 0))
+                return PyInt_FromLong(x);
+            return PyLong_Type.tp_as_number->nb_add(op1, op2);
+    }
+    #endif
+    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
+    if (likely(PyLong_CheckExact(op1))) {
+        const long b = intval;
+        long a, x;
+        const PY_LONG_LONG llb = intval;
+        PY_LONG_LONG lla, llx;
+        const digit* digits = ((PyLongObject*)op1)->ob_digit;
+        const Py_ssize_t size = Py_SIZE(op1);
+        if (likely(__Pyx_sst_abs(size) <= 1)) {
+            a = likely(size) ? digits[0] : 0;
+            if (size == -1) a = -a;
+        } else {
+            switch (size) {
+                case -2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
+            }
         }
-        if (PyType_IsSubtype(metaclass, tmptype))
-            continue;
-        if (PyType_IsSubtype(tmptype, metaclass)) {
-            metaclass = tmptype;
-            continue;
+                x = a + b;
+            return PyLong_FromLong(x);
+        long_long:
+                llx = lla + llb;
+            return PyLong_FromLongLong(llx);
+    }
+    #endif
+    if (PyFloat_CheckExact(op1)) {
+        const long b = intval;
+        double a = PyFloat_AS_DOUBLE(op1);
+            double result;
+            PyFPE_START_PROTECT("add", return NULL)
+            result = ((double)a) + (double)b;
+            PyFPE_END_PROTECT(result)
+            return PyFloat_FromDouble(result);
+    }
+    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
+}
+#endif
+
+/* PyIntBinop */
+    #if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long x;
+        long a = PyInt_AS_LONG(op1);
+            x = (long)((unsigned long)a - b);
+            if (likely((x^a) >= 0 || (x^~b) >= 0))
+                return PyInt_FromLong(x);
+            return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
+    }
+    #endif
+    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
+    if (likely(PyLong_CheckExact(op1))) {
+        const long b = intval;
+        long a, x;
+        const PY_LONG_LONG llb = intval;
+        PY_LONG_LONG lla, llx;
+        const digit* digits = ((PyLongObject*)op1)->ob_digit;
+        const Py_ssize_t size = Py_SIZE(op1);
+        if (likely(__Pyx_sst_abs(size) <= 1)) {
+            a = likely(size) ? digits[0] : 0;
+            if (size == -1) a = -a;
+        } else {
+            switch (size) {
+                case -2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
+            }
         }
-        PyErr_SetString(PyExc_TypeError,
-                        "metaclass conflict: "
-                        "the metaclass of a derived class "
-                        "must be a (non-strict) subclass "
-                        "of the metaclasses of all its bases");
-        return NULL;
+                x = a - b;
+            return PyLong_FromLong(x);
+        long_long:
+                llx = lla - llb;
+            return PyLong_FromLongLong(llx);
     }
-    if (!metaclass) {
-#if PY_MAJOR_VERSION < 3
-        metaclass = &PyClass_Type;
-#else
-        metaclass = &PyType_Type;
+    #endif
+    if (PyFloat_CheckExact(op1)) {
+        const long b = intval;
+        double a = PyFloat_AS_DOUBLE(op1);
+            double result;
+            PyFPE_START_PROTECT("subtract", return NULL)
+            result = ((double)a) - (double)b;
+            PyFPE_END_PROTECT(result)
+            return PyFloat_FromDouble(result);
+    }
+    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
+}
 #endif
+
+/* RaiseArgTupleInvalid */
+    static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
     }
-    Py_INCREF((PyObject*) metaclass);
-    return (PyObject*) metaclass;
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
 }
 
-static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
-                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
-    PyObject *ns;
-    if (metaclass) {
-        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
-        if (prep) {
-            PyObject *pargs = PyTuple_Pack(2, name, bases);
-            if (unlikely(!pargs)) {
-                Py_DECREF(prep);
-                return NULL;
+/* RaiseDoubleKeywords */
+    static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+/* ParseKeywords */
+    static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
             }
-            ns = PyObject_Call(prep, pargs, mkw);
-            Py_DECREF(prep);
-            Py_DECREF(pargs);
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
         } else {
-            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
-                return NULL;
-            PyErr_Clear();
-            ns = PyDict_New();
+            goto invalid_keyword;
         }
-    } else {
-        ns = PyDict_New();
     }
-    if (unlikely(!ns))
-        return NULL;
-    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
-    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
-    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
-    return ns;
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%.200s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%.200s() got an unexpected keyword argument '%.200s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
 bad:
-    Py_DECREF(ns);
-    return NULL;
+    return -1;
 }
-static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
-                                      PyObject *dict, PyObject *mkw,
-                                      int calculate_metaclass, int allow_py2_metaclass) {
-    PyObject *result, *margs;
-    PyObject *owned_metaclass = NULL;
-    if (allow_py2_metaclass) {
-        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
-        if (owned_metaclass) {
-            metaclass = owned_metaclass;
-        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
-            PyErr_Clear();
-        } else {
-            return NULL;
-        }
-    }
-    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
-        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
-        Py_XDECREF(owned_metaclass);
-        if (unlikely(!metaclass))
-            return NULL;
-        owned_metaclass = metaclass;
+
+/* ExtTypeTest */
+    static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_SetString(PyExc_SystemError, "Missing type object");
+        return 0;
     }
-    margs = PyTuple_Pack(3, name, bases, dict);
-    if (unlikely(!margs)) {
-        result = NULL;
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+/* GetModuleGlobalName */
+    static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+    PyObject *result;
+#if CYTHON_COMPILING_IN_CPYTHON
+    result = PyDict_GetItem(__pyx_d, name);
+    if (likely(result)) {
+        Py_INCREF(result);
     } else {
-        result = PyObject_Call(metaclass, margs, mkw);
-        Py_DECREF(margs);
+#else
+    result = PyObject_GetItem(__pyx_d, name);
+    if (!result) {
+        PyErr_Clear();
+#endif
+        result = __Pyx_GetBuiltinName(name);
     }
-    Py_XDECREF(owned_metaclass);
     return result;
 }
 
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
-    int start = 0, mid = 0, end = count - 1;
-    if (end >= 0 && code_line > entries[end].code_line) {
-        return count;
-    }
-    while (start < end) {
-        mid = (start + end) / 2;
-        if (code_line < entries[mid].code_line) {
-            end = mid;
-        } else if (code_line > entries[mid].code_line) {
-             start = mid + 1;
+/* BytesEquals */
+      static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+#if CYTHON_COMPILING_IN_PYPY
+    return PyObject_RichCompareBool(s1, s2, equals);
+#else
+    if (s1 == s2) {
+        return (equals == Py_EQ);
+    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
+        const char *ps1, *ps2;
+        Py_ssize_t length = PyBytes_GET_SIZE(s1);
+        if (length != PyBytes_GET_SIZE(s2))
+            return (equals == Py_NE);
+        ps1 = PyBytes_AS_STRING(s1);
+        ps2 = PyBytes_AS_STRING(s2);
+        if (ps1[0] != ps2[0]) {
+            return (equals == Py_NE);
+        } else if (length == 1) {
+            return (equals == Py_EQ);
         } else {
-            return mid;
+            int result = memcmp(ps1, ps2, (size_t)length);
+            return (equals == Py_EQ) ? (result == 0) : (result != 0);
         }
-    }
-    if (code_line <= entries[mid].code_line) {
-        return mid;
+    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
+        return (equals == Py_NE);
+    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
+        return (equals == Py_NE);
     } else {
-        return mid + 1;
+        int result;
+        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+        if (!py_result)
+            return -1;
+        result = __Pyx_PyObject_IsTrue(py_result);
+        Py_DECREF(py_result);
+        return result;
     }
+#endif
 }
-static PyCodeObject *__pyx_find_code_object(int code_line) {
-    PyCodeObject* code_object;
-    int pos;
-    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
-        return NULL;
-    }
-    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
-    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
-        return NULL;
+
+/* UnicodeEquals */
+      static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+#if CYTHON_COMPILING_IN_PYPY
+    return PyObject_RichCompareBool(s1, s2, equals);
+#else
+#if PY_MAJOR_VERSION < 3
+    PyObject* owned_ref = NULL;
+#endif
+    int s1_is_unicode, s2_is_unicode;
+    if (s1 == s2) {
+        goto return_eq;
     }
-    code_object = __pyx_code_cache.entries[pos].code_object;
-    Py_INCREF(code_object);
-    return code_object;
-}
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
-    int pos, i;
-    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
-    if (unlikely(!code_line)) {
-        return;
+    s1_is_unicode = PyUnicode_CheckExact(s1);
+    s2_is_unicode = PyUnicode_CheckExact(s2);
+#if PY_MAJOR_VERSION < 3
+    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
+        owned_ref = PyUnicode_FromObject(s2);
+        if (unlikely(!owned_ref))
+            return -1;
+        s2 = owned_ref;
+        s2_is_unicode = 1;
+    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
+        owned_ref = PyUnicode_FromObject(s1);
+        if (unlikely(!owned_ref))
+            return -1;
+        s1 = owned_ref;
+        s1_is_unicode = 1;
+    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
+        return __Pyx_PyBytes_Equals(s1, s2, equals);
     }
-    if (unlikely(!entries)) {
-        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
-        if (likely(entries)) {
-            __pyx_code_cache.entries = entries;
-            __pyx_code_cache.max_count = 64;
-            __pyx_code_cache.count = 1;
-            entries[0].code_line = code_line;
-            entries[0].code_object = code_object;
-            Py_INCREF(code_object);
+#endif
+    if (s1_is_unicode & s2_is_unicode) {
+        Py_ssize_t length;
+        int kind;
+        void *data1, *data2;
+        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
+            return -1;
+        length = __Pyx_PyUnicode_GET_LENGTH(s1);
+        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
+            goto return_ne;
         }
-        return;
+        kind = __Pyx_PyUnicode_KIND(s1);
+        if (kind != __Pyx_PyUnicode_KIND(s2)) {
+            goto return_ne;
+        }
+        data1 = __Pyx_PyUnicode_DATA(s1);
+        data2 = __Pyx_PyUnicode_DATA(s2);
+        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
+            goto return_ne;
+        } else if (length == 1) {
+            goto return_eq;
+        } else {
+            int result = memcmp(data1, data2, (size_t)(length * kind));
+            #if PY_MAJOR_VERSION < 3
+            Py_XDECREF(owned_ref);
+            #endif
+            return (equals == Py_EQ) ? (result == 0) : (result != 0);
+        }
+    } else if ((s1 == Py_None) & s2_is_unicode) {
+        goto return_ne;
+    } else if ((s2 == Py_None) & s1_is_unicode) {
+        goto return_ne;
+    } else {
+        int result;
+        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+        if (!py_result)
+            return -1;
+        result = __Pyx_PyObject_IsTrue(py_result);
+        Py_DECREF(py_result);
+        return result;
     }
-    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
-    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
-        PyCodeObject* tmp = entries[pos].code_object;
-        entries[pos].code_object = code_object;
-        Py_DECREF(tmp);
-        return;
+return_eq:
+    #if PY_MAJOR_VERSION < 3
+    Py_XDECREF(owned_ref);
+    #endif
+    return (equals == Py_EQ);
+return_ne:
+    #if PY_MAJOR_VERSION < 3
+    Py_XDECREF(owned_ref);
+    #endif
+    return (equals == Py_NE);
+#endif
+}
+
+/* PyIntBinop */
+      #if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+    if (op1 == op2) {
+        Py_RETURN_TRUE;
+    }
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long a = PyInt_AS_LONG(op1);
+        if (a == b) {
+            Py_RETURN_TRUE;
+        } else {
+            Py_RETURN_FALSE;
+        }
     }
-    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
-        int new_max = __pyx_code_cache.max_count + 64;
-        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
-            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
-        if (unlikely(!entries)) {
-            return;
+    #endif
+    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
+    if (likely(PyLong_CheckExact(op1))) {
+        const long b = intval;
+        long a;
+        const digit* digits = ((PyLongObject*)op1)->ob_digit;
+        const Py_ssize_t size = Py_SIZE(op1);
+        if (likely(__Pyx_sst_abs(size) <= 1)) {
+            a = likely(size) ? digits[0] : 0;
+            if (size == -1) a = -a;
+        } else {
+            switch (size) {
+                case -2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case 2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case -3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case 3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case -4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case 4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
+                default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
+                #else
+                default: Py_RETURN_FALSE;
+                #endif
+            }
         }
-        __pyx_code_cache.entries = entries;
-        __pyx_code_cache.max_count = new_max;
+            if (a == b) {
+                Py_RETURN_TRUE;
+            } else {
+                Py_RETURN_FALSE;
+            }
     }
-    for (i=__pyx_code_cache.count; i>pos; i--) {
-        entries[i] = entries[i-1];
+    #endif
+    if (PyFloat_CheckExact(op1)) {
+        const long b = intval;
+        double a = PyFloat_AS_DOUBLE(op1);
+            if ((double)a == (double)b) {
+                Py_RETURN_TRUE;
+            } else {
+                Py_RETURN_FALSE;
+            }
     }
-    entries[pos].code_line = code_line;
-    entries[pos].code_object = code_object;
-    __pyx_code_cache.count++;
-    Py_INCREF(code_object);
+    return PyObject_RichCompare(op1, op2, Py_EQ);
 }
+#endif
 
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
-            const char *funcname, int c_line,
-            int py_line, const char *filename) {
-    PyCodeObject *py_code = 0;
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    #if PY_MAJOR_VERSION < 3
-    py_srcfile = PyString_FromString(filename);
-    #else
-    py_srcfile = PyUnicode_FromString(filename);
-    #endif
-    if (!py_srcfile) goto bad;
-    if (c_line) {
-        #if PY_MAJOR_VERSION < 3
-        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
-        #else
-        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
-        #endif
-    }
+/* RaiseException */
+      #if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    __Pyx_PyThreadState_declare
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
     else {
-        #if PY_MAJOR_VERSION < 3
-        py_funcname = PyString_FromString(funcname);
-        #else
-        py_funcname = PyUnicode_FromString(funcname);
-        #endif
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
     }
-    if (!py_funcname) goto bad;
-    py_code = __Pyx_PyCode_New(
-        0,
-        0,
-        0,
-        0,
-        0,
-        __pyx_empty_bytes, /*PyObject *code,*/
-        __pyx_empty_tuple, /*PyObject *consts,*/
-        __pyx_empty_tuple, /*PyObject *names,*/
-        __pyx_empty_tuple, /*PyObject *varnames,*/
-        __pyx_empty_tuple, /*PyObject *freevars,*/
-        __pyx_empty_tuple, /*PyObject *cellvars,*/
-        py_srcfile,   /*PyObject *filename,*/
-        py_funcname,  /*PyObject *name,*/
-        py_line,
-        __pyx_empty_bytes  /*PyObject *lnotab*/
-    );
-    Py_DECREF(py_srcfile);
-    Py_DECREF(py_funcname);
-    return py_code;
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    return NULL;
-}
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename) {
-    PyCodeObject *py_code = 0;
-    PyFrameObject *py_frame = 0;
-    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
-    if (!py_code) {
-        py_code = __Pyx_CreateCodeObjectForTraceback(
-            funcname, c_line, py_line, filename);
-        if (!py_code) goto bad;
-        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    if (PyType_Check(type)) {
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(type);
+        Py_INCREF(type);
+        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: exception class must be a subclass of BaseException");
+            goto raise_error;
+        }
     }
-    py_frame = PyFrame_New(
-        PyThreadState_GET(), /*PyThreadState *tstate,*/
-        py_code,             /*PyCodeObject *code,*/
-        __pyx_d,      /*PyObject *globals,*/
-        0                    /*PyObject *locals*/
-    );
-    if (!py_frame) goto bad;
-    py_frame->f_lineno = py_line;
-    PyTraceBack_Here(py_frame);
-bad:
-    Py_XDECREF(py_code);
-    Py_XDECREF(py_frame);
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
 }
-
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
-    PyObject *empty_list = 0;
-    PyObject *module = 0;
-    PyObject *global_dict = 0;
-    PyObject *empty_dict = 0;
-    PyObject *list;
-    #if PY_VERSION_HEX < 0x03030000
-    PyObject *py_import;
-    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
-    if (!py_import)
+#else
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
         goto bad;
-    #endif
-    if (from_list)
-        list = from_list;
-    else {
-        empty_list = PyList_New(0);
-        if (!empty_list)
-            goto bad;
-        list = empty_list;
     }
-    global_dict = PyModule_GetDict(__pyx_m);
-    if (!global_dict)
-        goto bad;
-    empty_dict = PyDict_New();
-    if (!empty_dict)
-        goto bad;
-    {
-        #if PY_MAJOR_VERSION >= 3
-        if (level == -1) {
-            if (strchr(__Pyx_MODULE_NAME, '.')) {
-                #if PY_VERSION_HEX < 0x03030000
-                PyObject *py_level = PyInt_FromLong(1);
-                if (!py_level)
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *instance_class = NULL;
+        if (value && PyExceptionInstance_Check(value)) {
+            instance_class = (PyObject*) Py_TYPE(value);
+            if (instance_class != type) {
+                int is_subclass = PyObject_IsSubclass(instance_class, type);
+                if (!is_subclass) {
+                    instance_class = NULL;
+                } else if (unlikely(is_subclass == -1)) {
                     goto bad;
-                module = PyObject_CallFunctionObjArgs(py_import,
-                    name, global_dict, empty_dict, list, py_level, NULL);
-                Py_DECREF(py_level);
-                #else
-                module = PyImport_ImportModuleLevelObject(
-                    name, global_dict, empty_dict, list, 1);
-                #endif
-                if (!module) {
-                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
-                        goto bad;
-                    PyErr_Clear();
+                } else {
+                    type = instance_class;
                 }
             }
-            level = 0;
         }
-        #endif
-        if (!module) {
-            #if PY_VERSION_HEX < 0x03030000
-            PyObject *py_level = PyInt_FromLong(level);
-            if (!py_level)
+        if (!instance_class) {
+            PyObject *args;
+            if (!value)
+                args = PyTuple_New(0);
+            else if (PyTuple_Check(value)) {
+                Py_INCREF(value);
+                args = value;
+            } else
+                args = PyTuple_Pack(1, value);
+            if (!args)
+                goto bad;
+            owned_instance = PyObject_Call(type, args, NULL);
+            Py_DECREF(args);
+            if (!owned_instance)
+                goto bad;
+            value = owned_instance;
+            if (!PyExceptionInstance_Check(value)) {
+                PyErr_Format(PyExc_TypeError,
+                             "calling %R should have returned an instance of "
+                             "BaseException, not %R",
+                             type, Py_TYPE(value));
+                goto bad;
+            }
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x03030000
+    if (cause) {
+#else
+    if (cause && cause != Py_None) {
+#endif
+        PyObject *fixed_cause;
+        if (cause == Py_None) {
+            fixed_cause = NULL;
+        } else if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
                 goto bad;
-            module = PyObject_CallFunctionObjArgs(py_import,
-                name, global_dict, empty_dict, list, py_level, NULL);
-            Py_DECREF(py_level);
-            #else
-            module = PyImport_ImportModuleLevelObject(
-                name, global_dict, empty_dict, list, level);
-            #endif
+        } else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        } else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+#if CYTHON_COMPILING_IN_PYPY
+        PyObject *tmp_type, *tmp_value, *tmp_tb;
+        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
+        Py_INCREF(tb);
+        PyErr_Restore(tmp_type, tmp_value, tb);
+        Py_XDECREF(tmp_tb);
+#else
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
         }
+#endif
     }
 bad:
-    #if PY_VERSION_HEX < 0x03030000
-    Py_XDECREF(py_import);
-    #endif
-    Py_XDECREF(empty_list);
-    Py_XDECREF(empty_dict);
-    return module;
+    Py_XDECREF(owned_instance);
+    return;
 }
+#endif
 
-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)       \
-    {                                                                     \
-        func_type value = func_value;                                     \
-        if (sizeof(target_type) < sizeof(func_type)) {                    \
-            if (unlikely(value != (func_type) (target_type) value)) {     \
-                func_type zero = 0;                                       \
-                if (is_unsigned && unlikely(value < zero))                \
-                    goto raise_neg_overflow;                              \
-                else                                                      \
-                    goto raise_overflow;                                  \
-            }                                                             \
-        }                                                                 \
-        return (target_type) value;                                       \
+/* UnpackUnboundCMethod */
+        static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
+    PyObject *method;
+    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
+    if (unlikely(!method))
+        return -1;
+    target->method = method;
+#if CYTHON_COMPILING_IN_CPYTHON
+    #if PY_MAJOR_VERSION >= 3
+    if (likely(PyObject_TypeCheck(method, &PyMethodDescr_Type)))
+    #endif
+    {
+        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
+        target->func = descr->d_method->ml_meth;
+        target->flag = descr->d_method->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_O | METH_NOARGS);
     }
+#endif
+    return 0;
+}
 
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-  #include "longintrepr.h"
- #endif
+/* CallUnboundCMethod0 */
+        static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
+    PyObject *args, *result = NULL;
+    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
+#if CYTHON_COMPILING_IN_CPYTHON
+    args = PyTuple_New(1);
+    if (unlikely(!args)) goto bad;
+    Py_INCREF(self);
+    PyTuple_SET_ITEM(args, 0, self);
+#else
+    args = PyTuple_Pack(1, self);
+    if (unlikely(!args)) goto bad;
 #endif
+    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+    Py_DECREF(args);
+bad:
+    return result;
+}
 
-static CYTHON_INLINE MPI_Comm __Pyx_PyInt_As_MPI_Comm(PyObject *x) {
-    const MPI_Comm neg_one = (MPI_Comm) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(MPI_Comm) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(MPI_Comm, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (MPI_Comm) val;
+/* py_dict_keys */
+        static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
+    if (PY_MAJOR_VERSION >= 3)
+        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d);
+    else
+        return PyDict_Keys(d);
+}
+
+/* dict_getitem_default */
+        static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
+    PyObject* value;
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+    value = PyDict_GetItemWithError(d, key);
+    if (unlikely(!value)) {
+        if (unlikely(PyErr_Occurred()))
+            return NULL;
+        value = default_value;
+    }
+    Py_INCREF(value);
+#else
+    if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
+        value = PyDict_GetItem(d, key);
+        if (unlikely(!value)) {
+            value = default_value;
         }
-    } else
+        Py_INCREF(value);
+    } else {
+        if (default_value == Py_None)
+            default_value = NULL;
+        value = PyObject_CallMethodObjArgs(
+            d, __pyx_n_s_get, key, default_value, NULL);
+    }
 #endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(MPI_Comm, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
+    return value;
+}
+
+/* None */
+        static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
+}
+
+/* bytes_tailmatch */
+        static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg,
+                                         Py_ssize_t start, Py_ssize_t end, int direction) {
+    const char* self_ptr = PyBytes_AS_STRING(self);
+    Py_ssize_t self_len = PyBytes_GET_SIZE(self);
+    const char* sub_ptr;
+    Py_ssize_t sub_len;
+    int retval;
+    Py_buffer view;
+    view.obj = NULL;
+    if ( PyBytes_Check(arg) ) {
+        sub_ptr = PyBytes_AS_STRING(arg);
+        sub_len = PyBytes_GET_SIZE(arg);
+    }
+#if PY_MAJOR_VERSION < 3
+    else if ( PyUnicode_Check(arg) ) {
+        return (int) PyUnicode_Tailmatch(self, arg, start, end, direction);
+    }
 #endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(MPI_Comm) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(MPI_Comm) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(MPI_Comm,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(MPI_Comm, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
+    else {
+        if (unlikely(PyObject_GetBuffer(self, &view, PyBUF_SIMPLE) == -1))
+            return -1;
+        sub_ptr = (const char*) view.buf;
+        sub_len = view.len;
+    }
+    if (end > self_len)
+        end = self_len;
+    else if (end < 0)
+        end += self_len;
+    if (end < 0)
+        end = 0;
+    if (start < 0)
+        start += self_len;
+    if (start < 0)
+        start = 0;
+    if (direction > 0) {
+        if (end-sub_len > start)
+            start = end - sub_len;
+    }
+    if (start + sub_len <= end)
+        retval = !memcmp(self_ptr+start, sub_ptr, (size_t)sub_len);
+    else
+        retval = 0;
+    if (view.obj)
+        PyBuffer_Release(&view);
+    return retval;
+}
+static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr,
+                                   Py_ssize_t start, Py_ssize_t end, int direction) {
+    if (unlikely(PyTuple_Check(substr))) {
+        Py_ssize_t i, count = PyTuple_GET_SIZE(substr);
+        for (i = 0; i < count; i++) {
+            int result;
+#if CYTHON_COMPILING_IN_CPYTHON
+            result = __Pyx_PyBytes_SingleTailmatch(self, PyTuple_GET_ITEM(substr, i),
+                                                   start, end, direction);
+#else
+            PyObject* sub = PySequence_ITEM(substr, i);
+            if (unlikely(!sub)) return -1;
+            result = __Pyx_PyBytes_SingleTailmatch(self, sub, start, end, direction);
+            Py_DECREF(sub);
 #endif
-            if (sizeof(MPI_Comm) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(MPI_Comm, long, PyLong_AsLong(x))
-            } else if (sizeof(MPI_Comm) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(MPI_Comm, long long, PyLong_AsLongLong(x))
+            if (result) {
+                return result;
             }
         }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        return 0;
+    }
+    return __Pyx_PyBytes_SingleTailmatch(self, substr, start, end, direction);
+}
+
+/* unicode_tailmatch */
+        static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr,
+                                     Py_ssize_t start, Py_ssize_t end, int direction) {
+    if (unlikely(PyTuple_Check(substr))) {
+        Py_ssize_t i, count = PyTuple_GET_SIZE(substr);
+        for (i = 0; i < count; i++) {
+            Py_ssize_t result;
+#if CYTHON_COMPILING_IN_CPYTHON
+            result = PyUnicode_Tailmatch(s, PyTuple_GET_ITEM(substr, i),
+                                         start, end, direction);
 #else
-            MPI_Comm val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
+            PyObject* sub = PySequence_ITEM(substr, i);
+            if (unlikely(!sub)) return -1;
+            result = PyUnicode_Tailmatch(s, sub, start, end, direction);
+            Py_DECREF(sub);
 #endif
-            return (MPI_Comm) -1;
+            if (result) {
+                return (int) result;
+            }
+        }
+        return 0;
+    }
+    return (int) PyUnicode_Tailmatch(s, substr, start, end, direction);
+}
+
+/* str_tailmatch */
+        static CYTHON_INLINE int __Pyx_PyStr_Tailmatch(PyObject* self, PyObject* arg, Py_ssize_t start,
+                                               Py_ssize_t end, int direction)
+{
+    if (PY_MAJOR_VERSION < 3)
+        return __Pyx_PyBytes_Tailmatch(self, arg, start, end, direction);
+    else
+        return __Pyx_PyUnicode_Tailmatch(self, arg, start, end, direction);
+}
+
+/* RaiseTooManyValuesToUnpack */
+        static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+    PyErr_Format(PyExc_ValueError,
+                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
+}
+
+/* RaiseNeedMoreValuesToUnpack */
+        static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+    PyErr_Format(PyExc_ValueError,
+                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
+                 index, (index == 1) ? "" : "s");
+}
+
+/* IterFinish */
+        static CYTHON_INLINE int __Pyx_IterFinish(void) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    PyObject* exc_type = tstate->curexc_type;
+    if (unlikely(exc_type)) {
+        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
+            PyObject *exc_value, *exc_tb;
+            exc_value = tstate->curexc_value;
+            exc_tb = tstate->curexc_traceback;
+            tstate->curexc_type = 0;
+            tstate->curexc_value = 0;
+            tstate->curexc_traceback = 0;
+            Py_DECREF(exc_type);
+            Py_XDECREF(exc_value);
+            Py_XDECREF(exc_tb);
+            return 0;
+        } else {
+            return -1;
+        }
+    }
+    return 0;
+#else
+    if (unlikely(PyErr_Occurred())) {
+        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
+            PyErr_Clear();
+            return 0;
+        } else {
+            return -1;
         }
+    }
+    return 0;
+#endif
+}
+
+/* UnpackItemEndCheck */
+        static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+    if (unlikely(retval)) {
+        Py_DECREF(retval);
+        __Pyx_RaiseTooManyValuesError(expected);
+        return -1;
     } else {
-        MPI_Comm val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (MPI_Comm) -1;
-        val = __Pyx_PyInt_As_MPI_Comm(tmp);
-        Py_DECREF(tmp);
-        return val;
+        return __Pyx_IterFinish();
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to MPI_Comm");
-    return (MPI_Comm) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to MPI_Comm");
-    return (MPI_Comm) -1;
+    return 0;
 }
 
-static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
-    const int64_t neg_one = (int64_t) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
+/* SliceObject */
+        static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
+        Py_ssize_t cstart, Py_ssize_t cstop,
+        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
+        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyMappingMethods* mp;
 #if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(int64_t) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(int64_t, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
+    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
+    if (likely(ms && ms->sq_ass_slice)) {
+        if (!has_cstart) {
+            if (_py_start && (*_py_start != Py_None)) {
+                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
+                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+            } else
+                cstart = 0;
+        }
+        if (!has_cstop) {
+            if (_py_stop && (*_py_stop != Py_None)) {
+                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
+                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+            } else
+                cstop = PY_SSIZE_T_MAX;
+        }
+        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
+            Py_ssize_t l = ms->sq_length(obj);
+            if (likely(l >= 0)) {
+                if (cstop < 0) {
+                    cstop += l;
+                    if (cstop < 0) cstop = 0;
+                }
+                if (cstart < 0) {
+                    cstart += l;
+                    if (cstart < 0) cstart = 0;
+                }
+            } else {
+                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
+                    goto bad;
+                PyErr_Clear();
             }
-            return (int64_t) val;
         }
-    } else
+        return ms->sq_ass_slice(obj, cstart, cstop, value);
+    }
 #endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int64_t, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
+    mp = Py_TYPE(obj)->tp_as_mapping;
+    if (likely(mp && mp->mp_ass_subscript))
 #endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(int64_t) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(int64_t) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
+    {
+        int result;
+        PyObject *py_slice, *py_start, *py_stop;
+        if (_py_slice) {
+            py_slice = *_py_slice;
         } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int64_t,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(int64_t, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
+            PyObject* owned_start = NULL;
+            PyObject* owned_stop = NULL;
+            if (_py_start) {
+                py_start = *_py_start;
+            } else {
+                if (has_cstart) {
+                    owned_start = py_start = PyInt_FromSsize_t(cstart);
+                    if (unlikely(!py_start)) goto bad;
+                } else
+                    py_start = Py_None;
             }
- #endif
-#endif
-            if (sizeof(int64_t) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, long, PyLong_AsLong(x))
-            } else if (sizeof(int64_t) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, long long, PyLong_AsLongLong(x))
+            if (_py_stop) {
+                py_stop = *_py_stop;
+            } else {
+                if (has_cstop) {
+                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
+                    if (unlikely(!py_stop)) {
+                        Py_XDECREF(owned_start);
+                        goto bad;
+                    }
+                } else
+                    py_stop = Py_None;
             }
+            py_slice = PySlice_New(py_start, py_stop, Py_None);
+            Py_XDECREF(owned_start);
+            Py_XDECREF(owned_stop);
+            if (unlikely(!py_slice)) goto bad;
         }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#if CYTHON_COMPILING_IN_CPYTHON
+        result = mp->mp_ass_subscript(obj, py_slice, value);
 #else
-            int64_t val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
+        result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
 #endif
-            return (int64_t) -1;
+        if (!_py_slice) {
+            Py_DECREF(py_slice);
+        }
+        return result;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "'%.200s' object does not support slice %.10s",
+        Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
+bad:
+    return -1;
+}
+
+/* None */
+        static CYTHON_INLINE int __Pyx_div_int(int a, int b) {
+    int q = a / b;
+    int r = a - q*b;
+    q -= ((r != 0) & ((r ^ b) < 0));
+    return q;
+}
+
+/* PyObjectCallMethod0 */
+        static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
+    PyObject *method, *result = NULL;
+    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
+    if (unlikely(!method)) goto bad;
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely(PyMethod_Check(method))) {
+        PyObject *self = PyMethod_GET_SELF(method);
+        if (likely(self)) {
+            PyObject *function = PyMethod_GET_FUNCTION(method);
+            result = __Pyx_PyObject_CallOneArg(function, self);
+            Py_DECREF(method);
+            return result;
         }
+    }
+#endif
+    result = __Pyx_PyObject_CallNoArg(method);
+    Py_DECREF(method);
+bad:
+    return result;
+}
+
+/* RaiseNoneIterError */
+        static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+}
+
+/* UnpackTupleError */
+        static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+    if (t == Py_None) {
+      __Pyx_RaiseNoneNotIterableError();
+    } else if (PyTuple_GET_SIZE(t) < index) {
+      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
     } else {
-        int64_t val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (int64_t) -1;
-        val = __Pyx_PyInt_As_int64_t(tmp);
-        Py_DECREF(tmp);
-        return val;
+      __Pyx_RaiseTooManyValuesError(index);
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to int64_t");
-    return (int64_t) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to int64_t");
-    return (int64_t) -1;
 }
 
-static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) {
-    const uint64_t neg_one = (uint64_t) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(uint64_t) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (uint64_t) val;
+/* UnpackTuple2 */
+        static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
+                                             int is_tuple, int has_known_size, int decref_tuple) {
+    Py_ssize_t index;
+    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
+    if (!is_tuple && unlikely(!PyTuple_Check(tuple))) {
+        iternextfunc iternext;
+        iter = PyObject_GetIter(tuple);
+        if (unlikely(!iter)) goto bad;
+        if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
+        iternext = Py_TYPE(iter)->tp_iternext;
+        value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
+        value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
+        if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
+        Py_DECREF(iter);
+    } else {
+        if (!has_known_size && unlikely(PyTuple_GET_SIZE(tuple) != 2)) {
+            __Pyx_UnpackTupleError(tuple, 2);
+            goto bad;
         }
-    } else
+#if CYTHON_COMPILING_IN_PYPY
+        value1 = PySequence_ITEM(tuple, 0);
+        if (unlikely(!value1)) goto bad;
+        value2 = PySequence_ITEM(tuple, 1);
+        if (unlikely(!value2)) goto bad;
+#else
+        value1 = PyTuple_GET_ITEM(tuple, 0);
+        value2 = PyTuple_GET_ITEM(tuple, 1);
+        Py_INCREF(value1);
+        Py_INCREF(value2);
 #endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(uint64_t, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
+        if (decref_tuple) { Py_DECREF(tuple); }
+    }
+    *pvalue1 = value1;
+    *pvalue2 = value2;
+    return 0;
+unpacking_failed:
+    if (!has_known_size && __Pyx_IterFinish() == 0)
+        __Pyx_RaiseNeedMoreValuesError(index);
+bad:
+    Py_XDECREF(iter);
+    Py_XDECREF(value1);
+    Py_XDECREF(value2);
+    if (decref_tuple) { Py_XDECREF(tuple); }
+    return -1;
+}
+
+/* dict_iter */
+        static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
+    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
+    *p_source_is_dict = is_dict;
+#if !CYTHON_COMPILING_IN_PYPY
+    if (is_dict) {
+        *p_orig_length = PyDict_Size(iterable);
+        Py_INCREF(iterable);
+        return iterable;
+    }
 #endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(uint64_t) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(uint64_t) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long long, PyLong_AsUnsignedLongLong(x))
+    *p_orig_length = 0;
+    if (method_name) {
+        PyObject* iter;
+        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
+        if (!iterable)
+            return NULL;
+#if !CYTHON_COMPILING_IN_PYPY
+        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
+            return iterable;
+#endif
+        iter = PyObject_GetIter(iterable);
+        Py_DECREF(iterable);
+        return iter;
+    }
+    return PyObject_GetIter(iterable);
+}
+static CYTHON_INLINE int __Pyx_dict_iter_next(
+        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
+        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
+    PyObject* next_item;
+#if !CYTHON_COMPILING_IN_PYPY
+    if (source_is_dict) {
+        PyObject *key, *value;
+        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
+            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
+            return -1;
+        }
+        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
+            return 0;
+        }
+        if (pitem) {
+            PyObject* tuple = PyTuple_New(2);
+            if (unlikely(!tuple)) {
+                return -1;
             }
+            Py_INCREF(key);
+            Py_INCREF(value);
+            PyTuple_SET_ITEM(tuple, 0, key);
+            PyTuple_SET_ITEM(tuple, 1, value);
+            *pitem = tuple;
         } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(uint64_t,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(uint64_t, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
+            if (pkey) {
+                Py_INCREF(key);
+                *pkey = key;
             }
- #endif
-#endif
-            if (sizeof(uint64_t) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, long, PyLong_AsLong(x))
-            } else if (sizeof(uint64_t) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, long long, PyLong_AsLongLong(x))
+            if (pvalue) {
+                Py_INCREF(value);
+                *pvalue = value;
             }
         }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            uint64_t val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
+        return 1;
+    } else if (PyTuple_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyTuple_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else if (PyList_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyList_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else
 #endif
-            return (uint64_t) -1;
+    {
+        next_item = PyIter_Next(iter_obj);
+        if (unlikely(!next_item)) {
+            return __Pyx_IterFinish();
         }
+    }
+    if (pitem) {
+        *pitem = next_item;
+    } else if (pkey && pvalue) {
+        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
+            return -1;
+    } else if (pkey) {
+        *pkey = next_item;
     } else {
-        uint64_t val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (uint64_t) -1;
-        val = __Pyx_PyInt_As_uint64_t(tmp);
-        Py_DECREF(tmp);
-        return val;
+        *pvalue = next_item;
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to uint64_t");
-    return (uint64_t) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to uint64_t");
-    return (uint64_t) -1;
+    return 1;
 }
 
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
-    const int neg_one = (int) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(int) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (int) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
+/* py_dict_values */
+        static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
+    if (PY_MAJOR_VERSION >= 3)
+        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
+    else
+        return PyDict_Values(d);
+}
+
+/* SetVTable */
+        static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+#if PY_VERSION_HEX >= 0x02070000
+    PyObject *ob = PyCapsule_New(vtable, 0, 0);
+#else
+    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
 #endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(int) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(int, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(int) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(int, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
+    if (!ob)
+        goto bad;
+    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
+        goto bad;
+    Py_DECREF(ob);
+    return 0;
+bad:
+    Py_XDECREF(ob);
+    return -1;
+}
+
+/* Import */
+        static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import;
+    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
             }
- #endif
+            level = 0;
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+/* ImportFrom */
+        static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
+    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+        PyErr_Format(PyExc_ImportError,
+        #if PY_MAJOR_VERSION < 3
+            "cannot import name %.230s", PyString_AS_STRING(name));
+        #else
+            "cannot import name %S", name);
+        #endif
+    }
+    return value;
+}
+
+/* CalculateMetaclass */
+        static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
+    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
+    for (i=0; i < nbases; i++) {
+        PyTypeObject *tmptype;
+        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
+        tmptype = Py_TYPE(tmp);
+#if PY_MAJOR_VERSION < 3
+        if (tmptype == &PyClass_Type)
+            continue;
 #endif
-            if (sizeof(int) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(int, long, PyLong_AsLong(x))
-            } else if (sizeof(int) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(int, long long, PyLong_AsLongLong(x))
-            }
+        if (!metaclass) {
+            metaclass = tmptype;
+            continue;
         }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            int val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
+        if (PyType_IsSubtype(metaclass, tmptype))
+            continue;
+        if (PyType_IsSubtype(tmptype, metaclass)) {
+            metaclass = tmptype;
+            continue;
+        }
+        PyErr_SetString(PyExc_TypeError,
+                        "metaclass conflict: "
+                        "the metaclass of a derived class "
+                        "must be a (non-strict) subclass "
+                        "of the metaclasses of all its bases");
+        return NULL;
+    }
+    if (!metaclass) {
+#if PY_MAJOR_VERSION < 3
+        metaclass = &PyClass_Type;
+#else
+        metaclass = &PyType_Type;
 #endif
-            return (int) -1;
-        }
-    } else {
-        int val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (int) -1;
-        val = __Pyx_PyInt_As_int(tmp);
-        Py_DECREF(tmp);
-        return val;
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to int");
-    return (int) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to int");
-    return (int) -1;
+    Py_INCREF((PyObject*) metaclass);
+    return (PyObject*) metaclass;
 }
 
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
-    const long neg_one = (long) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(long) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
+/* Py3ClassCreate */
+        static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
+                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
+    PyObject *ns;
+    if (metaclass) {
+        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
+        if (prep) {
+            PyObject *pargs = PyTuple_Pack(2, name, bases);
+            if (unlikely(!pargs)) {
+                Py_DECREF(prep);
+                return NULL;
             }
-            return (long) val;
+            ns = PyObject_Call(prep, pargs, mkw);
+            Py_DECREF(prep);
+            Py_DECREF(pargs);
+        } else {
+            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
+                return NULL;
+            PyErr_Clear();
+            ns = PyDict_New();
         }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(long, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(long) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(long, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(long) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(long, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
+    } else {
+        ns = PyDict_New();
+    }
+    if (unlikely(!ns))
+        return NULL;
+    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
+    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
+    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
+    return ns;
+bad:
+    Py_DECREF(ns);
+    return NULL;
+}
+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
+                                      PyObject *dict, PyObject *mkw,
+                                      int calculate_metaclass, int allow_py2_metaclass) {
+    PyObject *result, *margs;
+    PyObject *owned_metaclass = NULL;
+    if (allow_py2_metaclass) {
+        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
+        if (owned_metaclass) {
+            metaclass = owned_metaclass;
+        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
+            PyErr_Clear();
         } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (sizeof(long) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(long, long, PyLong_AsLong(x))
-            } else if (sizeof(long) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(long, long long, PyLong_AsLongLong(x))
-            }
+            return NULL;
         }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            long val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (long) -1;
+    }
+    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
+        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
+        Py_XDECREF(owned_metaclass);
+        if (unlikely(!metaclass))
+            return NULL;
+        owned_metaclass = metaclass;
+    }
+    margs = PyTuple_Pack(3, name, bases, dict);
+    if (unlikely(!margs)) {
+        result = NULL;
+    } else {
+        result = PyObject_Call(metaclass, margs, mkw);
+        Py_DECREF(margs);
+    }
+    Py_XDECREF(owned_metaclass);
+    return result;
+}
+
+/* CodeObjectCache */
+        static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = start + (end - start) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
         }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
     } else {
-        long val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (long) -1;
-        val = __Pyx_PyInt_As_long(tmp);
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
         Py_DECREF(tmp);
-        return val;
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+/* AddTraceback */
+        #include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,
+        0,
+        0,
+        0,
+        0,
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to long");
-    return (long) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to long");
-    return (long) -1;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        __pyx_d,      /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
-    const int neg_one = (int) -1, const_zero = 0;
+/* CIntFromPyVerify */
+        #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
+#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
+    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
+#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
+    {\
+        func_type value = func_value;\
+        if (sizeof(target_type) < sizeof(func_type)) {\
+            if (unlikely(value != (func_type) (target_type) value)) {\
+                func_type zero = 0;\
+                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
+                    return (target_type) -1;\
+                if (is_unsigned && unlikely(value < zero))\
+                    goto raise_neg_overflow;\
+                else\
+                    goto raise_overflow;\
+            }\
+        }\
+        return (target_type) value;\
+    }
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+    const int neg_one = (int) -1, const_zero = (int) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(int) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(int) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(int) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(int) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(int) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
@@ -27870,22 +40488,23 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
     }
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
-    const int64_t neg_one = (int64_t) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
+    const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(int64_t) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(int64_t) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(int64_t) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(int64_t) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(int64_t) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
@@ -27896,127 +40515,23 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
     }
 }
 
-#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
-static PyObject *__Pyx_GetStdout(void) {
-    PyObject *f = PySys_GetObject((char *)"stdout");
-    if (!f) {
-        PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
-    }
-    return f;
-}
-static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) {
-    int i;
-    if (!f) {
-        if (!(f = __Pyx_GetStdout()))
-            return -1;
-    }
-    Py_INCREF(f);
-    for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) {
-        PyObject* v;
-        if (PyFile_SoftSpace(f, 1)) {
-            if (PyFile_WriteString(" ", f) < 0)
-                goto error;
-        }
-        v = PyTuple_GET_ITEM(arg_tuple, i);
-        if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
-            goto error;
-        if (PyString_Check(v)) {
-            char *s = PyString_AsString(v);
-            Py_ssize_t len = PyString_Size(v);
-            if (len > 0) {
-                switch (s[len-1]) {
-                    case ' ': break;
-                    case '\f': case '\r': case '\n': case '\t': case '\v':
-                        PyFile_SoftSpace(f, 0);
-                        break;
-                    default:  break;
-                }
-            }
-        }
-    }
-    if (newline) {
-        if (PyFile_WriteString("\n", f) < 0)
-            goto error;
-        PyFile_SoftSpace(f, 0);
-    }
-    Py_DECREF(f);
-    return 0;
-error:
-    Py_DECREF(f);
-    return -1;
-}
-#else
-static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) {
-    PyObject* kwargs = 0;
-    PyObject* result = 0;
-    PyObject* end_string;
-    if (unlikely(!__pyx_print)) {
-        __pyx_print = PyObject_GetAttr(__pyx_b, __pyx_n_s_print);
-        if (!__pyx_print)
-            return -1;
-    }
-    if (stream) {
-        kwargs = PyDict_New();
-        if (unlikely(!kwargs))
-            return -1;
-        if (unlikely(PyDict_SetItem(kwargs, __pyx_n_s_file, stream) < 0))
-            goto bad;
-        if (!newline) {
-            end_string = PyUnicode_FromStringAndSize(" ", 1);
-            if (unlikely(!end_string))
-                goto bad;
-            if (PyDict_SetItem(kwargs, __pyx_n_s_end, end_string) < 0) {
-                Py_DECREF(end_string);
-                goto bad;
-            }
-            Py_DECREF(end_string);
-        }
-    } else if (!newline) {
-        if (unlikely(!__pyx_print_kwargs)) {
-            __pyx_print_kwargs = PyDict_New();
-            if (unlikely(!__pyx_print_kwargs))
-                return -1;
-            end_string = PyUnicode_FromStringAndSize(" ", 1);
-            if (unlikely(!end_string))
-                return -1;
-            if (PyDict_SetItem(__pyx_print_kwargs, __pyx_n_s_end, end_string) < 0) {
-                Py_DECREF(end_string);
-                return -1;
-            }
-            Py_DECREF(end_string);
-        }
-        kwargs = __pyx_print_kwargs;
-    }
-    result = PyObject_Call(__pyx_print, arg_tuple, kwargs);
-    if (unlikely(kwargs) && (kwargs != __pyx_print_kwargs))
-        Py_DECREF(kwargs);
-    if (!result)
-        return -1;
-    Py_DECREF(result);
-    return 0;
-bad:
-    if (kwargs != __pyx_print_kwargs)
-        Py_XDECREF(kwargs);
-    return -1;
-}
-#endif
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
-    const uint64_t neg_one = (uint64_t) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
+    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(uint64_t) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(uint64_t) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(uint64_t) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(uint64_t) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(uint64_t) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
@@ -28027,58 +40542,50 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
     }
 }
 
-#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
-static int __Pyx_PrintOne(PyObject* f, PyObject *o) {
-    if (!f) {
-        if (!(f = __Pyx_GetStdout()))
-            return -1;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_READ_METHOD(ADIOS_READ_METHOD value) {
+    const ADIOS_READ_METHOD neg_one = (ADIOS_READ_METHOD) -1, const_zero = (ADIOS_READ_METHOD) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(ADIOS_READ_METHOD) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(ADIOS_READ_METHOD) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
     }
-    Py_INCREF(f);
-    if (PyFile_SoftSpace(f, 0)) {
-        if (PyFile_WriteString(" ", f) < 0)
-            goto error;
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(ADIOS_READ_METHOD),
+                                     little, !is_unsigned);
     }
-    if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0)
-        goto error;
-    if (PyFile_WriteString("\n", f) < 0)
-        goto error;
-    Py_DECREF(f);
-    return 0;
-error:
-    Py_DECREF(f);
-    return -1;
-    /* the line below is just to avoid C compiler
-     * warnings about unused functions */
-    return __Pyx_Print(f, NULL, 0);
-}
-#else
-static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
-    int res;
-    PyObject* arg_tuple = PyTuple_Pack(1, o);
-    if (unlikely(!arg_tuple))
-        return -1;
-    res = __Pyx_Print(stream, arg_tuple, 1);
-    Py_DECREF(arg_tuple);
-    return res;
 }
-#endif
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
-    const long neg_one = (long) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+    const long neg_one = (long) -1, const_zero = (long) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(long) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(long) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(long) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(long) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(long) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
@@ -28089,110 +40596,289 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
     }
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
-    const unsigned long neg_one = (unsigned long) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
+    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(unsigned long) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(unsigned long) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(unsigned long) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(unsigned long) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
+    }
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
+                                     little, !is_unsigned);
+    }
+}
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value) {
+    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(uint32_t) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(uint32_t) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(uint32_t) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
+    }
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
+                                     little, !is_unsigned);
+    }
+}
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_DATATYPES(ADIOS_DATATYPES value) {
+    const ADIOS_DATATYPES neg_one = (ADIOS_DATATYPES) -1, const_zero = (ADIOS_DATATYPES) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(ADIOS_DATATYPES) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(ADIOS_DATATYPES) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(ADIOS_DATATYPES) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
+    }
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(ADIOS_DATATYPES),
+                                     little, !is_unsigned);
+    }
+}
+
+/* None */
+        #if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
+      return ::std::complex< float >(x, y);
+    }
+  #else
+    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
+      return x + y*(__pyx_t_float_complex)_Complex_I;
+    }
+  #endif
+#else
+    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
+      __pyx_t_float_complex z;
+      z.real = x;
+      z.imag = y;
+      return z;
+    }
+#endif
+
+/* None */
+        #if CYTHON_CCOMPLEX
+#else
+    static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+       return (a.real == b.real) && (a.imag == b.imag);
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        z.real = a.real + b.real;
+        z.imag = a.imag + b.imag;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        z.real = a.real - b.real;
+        z.imag = a.imag - b.imag;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        z.real = a.real * b.real - a.imag * b.imag;
+        z.imag = a.real * b.imag + a.imag * b.real;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        float denom = b.real * b.real + b.imag * b.imag;
+        z.real = (a.real * b.real + a.imag * b.imag) / denom;
+        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex a) {
+        __pyx_t_float_complex z;
+        z.real = -a.real;
+        z.imag = -a.imag;
+        return z;
+    }
+    static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) {
+       return (a.real == 0) && (a.imag == 0);
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex a) {
+        __pyx_t_float_complex z;
+        z.real =  a.real;
+        z.imag = -a.imag;
+        return z;
+    }
+    #if 1
+        static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) {
+          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
+            return sqrtf(z.real*z.real + z.imag*z.imag);
+          #else
+            return hypotf(z.real, z.imag);
+          #endif
+        }
+        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+            __pyx_t_float_complex z;
+            float r, lnr, theta, z_r, z_theta;
+            if (b.imag == 0 && b.real == (int)b.real) {
+                if (b.real < 0) {
+                    float denom = a.real * a.real + a.imag * a.imag;
+                    a.real = a.real / denom;
+                    a.imag = -a.imag / denom;
+                    b.real = -b.real;
+                }
+                switch ((int)b.real) {
+                    case 0:
+                        z.real = 1;
+                        z.imag = 0;
+                        return z;
+                    case 1:
+                        return a;
+                    case 2:
+                        z = __Pyx_c_prodf(a, a);
+                        return __Pyx_c_prodf(a, a);
+                    case 3:
+                        z = __Pyx_c_prodf(a, a);
+                        return __Pyx_c_prodf(z, a);
+                    case 4:
+                        z = __Pyx_c_prodf(a, a);
+                        return __Pyx_c_prodf(z, z);
+                }
+            }
+            if (a.imag == 0) {
+                if (a.real == 0) {
+                    return a;
+                }
+                r = a.real;
+                theta = 0;
+            } else {
+                r = __Pyx_c_absf(a);
+                theta = atan2f(a.imag, a.real);
+            }
+            lnr = logf(r);
+            z_r = expf(lnr * b.real - theta * b.imag);
+            z_theta = theta * b.real + lnr * b.imag;
+            z.real = z_r * cosf(z_theta);
+            z.imag = z_r * sinf(z_theta);
+            return z;
         }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
-                                     little, !is_unsigned);
-    }
-}
+    #endif
+#endif
 
-#if CYTHON_CCOMPLEX
+/* None */
+        #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
-    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
-      return ::std::complex< float >(x, y);
+    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
+      return ::std::complex< double >(x, y);
     }
   #else
-    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
-      return x + y*(__pyx_t_float_complex)_Complex_I;
+    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
+      return x + y*(__pyx_t_double_complex)_Complex_I;
     }
   #endif
 #else
-    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
-      __pyx_t_float_complex z;
+    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
+      __pyx_t_double_complex z;
       z.real = x;
       z.imag = y;
       return z;
     }
 #endif
 
-#if CYTHON_CCOMPLEX
+/* None */
+        #if CYTHON_CCOMPLEX
 #else
-    static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+    static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        return (a.real == b.real) && (a.imag == b.imag);
     }
-    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
         z.real = a.real + b.real;
         z.imag = a.imag + b.imag;
         return z;
     }
-    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
         z.real = a.real - b.real;
         z.imag = a.imag - b.imag;
         return z;
     }
-    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
         z.real = a.real * b.real - a.imag * b.imag;
         z.imag = a.real * b.imag + a.imag * b.real;
         return z;
     }
-    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
-        float denom = b.real * b.real + b.imag * b.imag;
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
+        double denom = b.real * b.real + b.imag * b.imag;
         z.real = (a.real * b.real + a.imag * b.imag) / denom;
         z.imag = (a.imag * b.real - a.real * b.imag) / denom;
         return z;
     }
-    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex a) {
-        __pyx_t_float_complex z;
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex a) {
+        __pyx_t_double_complex z;
         z.real = -a.real;
         z.imag = -a.imag;
         return z;
     }
-    static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) {
+    static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) {
        return (a.real == 0) && (a.imag == 0);
     }
-    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex a) {
-        __pyx_t_float_complex z;
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex a) {
+        __pyx_t_double_complex z;
         z.real =  a.real;
         z.imag = -a.imag;
         return z;
     }
     #if 1
-        static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) {
+        static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) {
           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
-            return sqrtf(z.real*z.real + z.imag*z.imag);
+            return sqrt(z.real*z.real + z.imag*z.imag);
           #else
-            return hypotf(z.real, z.imag);
+            return hypot(z.real, z.imag);
           #endif
         }
-        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-            __pyx_t_float_complex z;
-            float r, lnr, theta, z_r, z_theta;
+        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+            __pyx_t_double_complex z;
+            double r, lnr, theta, z_r, z_theta;
             if (b.imag == 0 && b.real == (int)b.real) {
                 if (b.real < 0) {
-                    float denom = a.real * a.real + a.imag * a.imag;
+                    double denom = a.real * a.real + a.imag * a.imag;
                     a.real = a.real / denom;
                     a.imag = -a.imag / denom;
                     b.real = -b.real;
@@ -28205,14 +40891,14 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
                     case 1:
                         return a;
                     case 2:
-                        z = __Pyx_c_prodf(a, a);
-                        return __Pyx_c_prodf(a, a);
+                        z = __Pyx_c_prod(a, a);
+                        return __Pyx_c_prod(a, a);
                     case 3:
-                        z = __Pyx_c_prodf(a, a);
-                        return __Pyx_c_prodf(z, a);
+                        z = __Pyx_c_prod(a, a);
+                        return __Pyx_c_prod(z, a);
                     case 4:
-                        z = __Pyx_c_prodf(a, a);
-                        return __Pyx_c_prodf(z, z);
+                        z = __Pyx_c_prod(a, a);
+                        return __Pyx_c_prod(z, z);
                 }
             }
             if (a.imag == 0) {
@@ -28222,742 +40908,1528 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
                 r = a.real;
                 theta = 0;
             } else {
-                r = __Pyx_c_absf(a);
-                theta = atan2f(a.imag, a.real);
+                r = __Pyx_c_abs(a);
+                theta = atan2(a.imag, a.real);
+            }
+            lnr = log(r);
+            z_r = exp(lnr * b.real - theta * b.imag);
+            z_theta = theta * b.real + lnr * b.imag;
+            z.real = z_r * cos(z_theta);
+            z.imag = z_r * sin(z_theta);
+            return z;
+        }
+    #endif
+#endif
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+    const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(enum NPY_TYPES) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(enum NPY_TYPES) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
+    }
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES),
+                                     little, !is_unsigned);
+    }
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE MPI_Comm __Pyx_PyInt_As_MPI_Comm(PyObject *x) {
+    const MPI_Comm neg_one = (MPI_Comm) -1, const_zero = (MPI_Comm) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(MPI_Comm) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(MPI_Comm, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (MPI_Comm) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (MPI_Comm) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(MPI_Comm, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(MPI_Comm) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) >= 2 * PyLong_SHIFT) {
+                            return (MPI_Comm) (((((MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(MPI_Comm) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) >= 3 * PyLong_SHIFT) {
+                            return (MPI_Comm) (((((((MPI_Comm)digits[2]) << PyLong_SHIFT) | (MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(MPI_Comm) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) >= 4 * PyLong_SHIFT) {
+                            return (MPI_Comm) (((((((((MPI_Comm)digits[3]) << PyLong_SHIFT) | (MPI_Comm)digits[2]) << PyLong_SHIFT) | (MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (MPI_Comm) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(MPI_Comm) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(MPI_Comm, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(MPI_Comm) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(MPI_Comm, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (MPI_Comm) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(MPI_Comm, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(MPI_Comm,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(MPI_Comm) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) - 1 > 2 * PyLong_SHIFT) {
+                            return (MPI_Comm) (((MPI_Comm)-1)*(((((MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(MPI_Comm) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) - 1 > 2 * PyLong_SHIFT) {
+                            return (MPI_Comm) ((((((MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(MPI_Comm) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) - 1 > 3 * PyLong_SHIFT) {
+                            return (MPI_Comm) (((MPI_Comm)-1)*(((((((MPI_Comm)digits[2]) << PyLong_SHIFT) | (MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(MPI_Comm) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) - 1 > 3 * PyLong_SHIFT) {
+                            return (MPI_Comm) ((((((((MPI_Comm)digits[2]) << PyLong_SHIFT) | (MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(MPI_Comm) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) - 1 > 4 * PyLong_SHIFT) {
+                            return (MPI_Comm) (((MPI_Comm)-1)*(((((((((MPI_Comm)digits[3]) << PyLong_SHIFT) | (MPI_Comm)digits[2]) << PyLong_SHIFT) | (MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(MPI_Comm) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(MPI_Comm, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(MPI_Comm) - 1 > 4 * PyLong_SHIFT) {
+                            return (MPI_Comm) ((((((((((MPI_Comm)digits[3]) << PyLong_SHIFT) | (MPI_Comm)digits[2]) << PyLong_SHIFT) | (MPI_Comm)digits[1]) << PyLong_SHIFT) | (MPI_Comm)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(MPI_Comm) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(MPI_Comm, long, PyLong_AsLong(x))
+            } else if (sizeof(MPI_Comm) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(MPI_Comm, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            MPI_Comm val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (MPI_Comm) -1;
+        }
+    } else {
+        MPI_Comm val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (MPI_Comm) -1;
+        val = __Pyx_PyInt_As_MPI_Comm(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to MPI_Comm");
+    return (MPI_Comm) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to MPI_Comm");
+    return (MPI_Comm) -1;
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
+    const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(int64_t) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(int64_t, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (int64_t) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int64_t) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(int64_t, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(int64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) >= 2 * PyLong_SHIFT) {
+                            return (int64_t) (((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) >= 3 * PyLong_SHIFT) {
+                            return (int64_t) (((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) >= 4 * PyLong_SHIFT) {
+                            return (int64_t) (((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (int64_t) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(int64_t) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int64_t) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(int64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(int64_t,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(int64_t) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (int64_t) (((int64_t)-1)*(((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(int64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (int64_t) ((((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (int64_t) (((int64_t)-1)*(((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (int64_t) ((((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (int64_t) (((int64_t)-1)*(((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (int64_t) ((((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
             }
-            lnr = logf(r);
-            z_r = expf(lnr * b.real - theta * b.imag);
-            z_theta = theta * b.real + lnr * b.imag;
-            z.real = z_r * cosf(z_theta);
-            z.imag = z_r * sinf(z_theta);
-            return z;
-        }
-    #endif
 #endif
-
-#if CYTHON_CCOMPLEX
-  #ifdef __cplusplus
-    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
-      return ::std::complex< double >(x, y);
-    }
-  #else
-    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
-      return x + y*(__pyx_t_double_complex)_Complex_I;
-    }
-  #endif
+            if (sizeof(int64_t) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, long, PyLong_AsLong(x))
+            } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
 #else
-    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
-      __pyx_t_double_complex z;
-      z.real = x;
-      z.imag = y;
-      return z;
-    }
+            int64_t val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
+            return (int64_t) -1;
+        }
+    } else {
+        int64_t val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (int64_t) -1;
+        val = __Pyx_PyInt_As_int64_t(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to int64_t");
+    return (int64_t) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to int64_t");
+    return (int64_t) -1;
+}
 
-#if CYTHON_CCOMPLEX
+/* CIntFromPy */
+        static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) {
+    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(uint64_t) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (uint64_t) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (uint64_t) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(uint64_t, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT) {
+                            return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT) {
+                            return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT) {
+                            return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-       return (a.real == b.real) && (a.imag == b.imag);
-    }
-    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        z.real = a.real + b.real;
-        z.imag = a.imag + b.imag;
-        return z;
-    }
-    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        z.real = a.real - b.real;
-        z.imag = a.imag - b.imag;
-        return z;
-    }
-    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        z.real = a.real * b.real - a.imag * b.imag;
-        z.imag = a.real * b.imag + a.imag * b.real;
-        return z;
-    }
-    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        double denom = b.real * b.real + b.imag * b.imag;
-        z.real = (a.real * b.real + a.imag * b.imag) / denom;
-        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
-        return z;
-    }
-    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex a) {
-        __pyx_t_double_complex z;
-        z.real = -a.real;
-        z.imag = -a.imag;
-        return z;
-    }
-    static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) {
-       return (a.real == 0) && (a.imag == 0);
-    }
-    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex a) {
-        __pyx_t_double_complex z;
-        z.real =  a.real;
-        z.imag = -a.imag;
-        return z;
-    }
-    #if 1
-        static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) {
-          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
-            return sqrt(z.real*z.real + z.imag*z.imag);
-          #else
-            return hypot(z.real, z.imag);
-          #endif
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (uint64_t) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(uint64_t) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (uint64_t) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(uint64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(uint64_t,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(uint64_t) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x))
+            } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
         }
-        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-            __pyx_t_double_complex z;
-            double r, lnr, theta, z_r, z_theta;
-            if (b.imag == 0 && b.real == (int)b.real) {
-                if (b.real < 0) {
-                    double denom = a.real * a.real + a.imag * a.imag;
-                    a.real = a.real / denom;
-                    a.imag = -a.imag / denom;
-                    b.real = -b.real;
-                }
-                switch ((int)b.real) {
-                    case 0:
-                        z.real = 1;
-                        z.imag = 0;
-                        return z;
-                    case 1:
-                        return a;
-                    case 2:
-                        z = __Pyx_c_prod(a, a);
-                        return __Pyx_c_prod(a, a);
-                    case 3:
-                        z = __Pyx_c_prod(a, a);
-                        return __Pyx_c_prod(z, a);
-                    case 4:
-                        z = __Pyx_c_prod(a, a);
-                        return __Pyx_c_prod(z, z);
-                }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            uint64_t val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
             }
-            if (a.imag == 0) {
-                if (a.real == 0) {
-                    return a;
-                }
-                r = a.real;
-                theta = 0;
-            } else {
-                r = __Pyx_c_abs(a);
-                theta = atan2(a.imag, a.real);
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (uint64_t) -1;
+        }
+    } else {
+        uint64_t val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (uint64_t) -1;
+        val = __Pyx_PyInt_As_uint64_t(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to uint64_t");
+    return (uint64_t) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to uint64_t");
+    return (uint64_t) -1;
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+    const int neg_one = (int) -1, const_zero = (int) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(int) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
             }
-            lnr = log(r);
-            z_r = exp(lnr * b.real - theta * b.imag);
-            z_theta = theta * b.real + lnr * b.imag;
-            z.real = z_r * cos(z_theta);
-            z.imag = z_r * sin(z_theta);
-            return z;
+            return (int) val;
         }
-    #endif
+    } else
 #endif
-
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
-    PyObject* fake_module;
-    PyTypeObject* cached_type = NULL;
-    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
-    if (!fake_module) return NULL;
-    Py_INCREF(fake_module);
-    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
-    if (cached_type) {
-        if (!PyType_Check((PyObject*)cached_type)) {
-            PyErr_Format(PyExc_TypeError,
-                "Shared Cython type %.200s is not a type object",
-                type->tp_name);
-            goto bad;
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
+                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
+                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
+                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (int) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(int) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
+                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
+                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
+                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
+                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
+                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
+                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(int) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
+            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
         }
-        if (cached_type->tp_basicsize != type->tp_basicsize) {
-            PyErr_Format(PyExc_TypeError,
-                "Shared Cython type %.200s has the wrong size, try recompiling",
-                type->tp_name);
-            goto bad;
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            int val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (int) -1;
         }
     } else {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
-        PyErr_Clear();
-        if (PyType_Ready(type) < 0) goto bad;
-        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
-            goto bad;
-        Py_INCREF(type);
-        cached_type = type;
+        int val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (int) -1;
+        val = __Pyx_PyInt_As_int(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-done:
-    Py_DECREF(fake_module);
-    return cached_type;
-bad:
-    Py_XDECREF(cached_type);
-    cached_type = NULL;
-    goto done;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to int");
+    return (int) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to int");
+    return (int) -1;
 }
 
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
+/* CIntFromPy */
+        static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+    const long neg_one = (long) -1, const_zero = (long) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(long) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (long) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (long) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
+                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
+                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
+                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
 #if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    tstate->exc_type = *type;
-    tstate->exc_value = *value;
-    tstate->exc_traceback = *tb;
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
-    PyErr_SetExcInfo(*type, *value, *tb);
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (long) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
 #endif
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-
-static PyObject *__Pyx_Generator_Next(PyObject *self);
-static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value);
-static PyObject *__Pyx_Generator_Close(PyObject *self);
-static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args);
-static PyTypeObject *__pyx_GeneratorType = 0;
-#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
-#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
-#if 1 || PY_VERSION_HEX < 0x030300B0
-static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) {
-    PyObject *et, *ev, *tb;
-    PyObject *value = NULL;
-    __Pyx_ErrFetch(&et, &ev, &tb);
-    if (!et) {
-        Py_XDECREF(tb);
-        Py_XDECREF(ev);
-        Py_INCREF(Py_None);
-        *pvalue = Py_None;
-        return 0;
-    }
-    if (unlikely(et != PyExc_StopIteration) &&
-            unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    if (likely(et == PyExc_StopIteration)) {
-        if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) {
-            if (!ev) {
-                Py_INCREF(Py_None);
-                ev = Py_None;
+            if (sizeof(long) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (long) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(long) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
+            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
             }
-            Py_XDECREF(tb);
-            Py_DECREF(et);
-            *pvalue = ev;
-            return 0;
         }
-    }
-    PyErr_NormalizeException(&et, &ev, &tb);
-    if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    Py_XDECREF(tb);
-    Py_DECREF(et);
-#if PY_VERSION_HEX >= 0x030300A0
-    value = ((PyStopIterationObject *)ev)->value;
-    Py_INCREF(value);
-    Py_DECREF(ev);
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
 #else
-    {
-        PyObject* args = PyObject_GetAttr(ev, __pyx_n_s_args);
-        Py_DECREF(ev);
-        if (likely(args)) {
-            value = PyObject_GetItem(args, 0);
-            Py_DECREF(args);
-        }
-        if (unlikely(!value)) {
-            __Pyx_ErrRestore(NULL, NULL, NULL);
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-    }
-#endif
-    *pvalue = value;
-    return 0;
-}
+            long val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
-static CYTHON_INLINE
-void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) {
-    PyObject *exc_type = self->exc_type;
-    PyObject *exc_value = self->exc_value;
-    PyObject *exc_traceback = self->exc_traceback;
-    self->exc_type = NULL;
-    self->exc_value = NULL;
-    self->exc_traceback = NULL;
-    Py_XDECREF(exc_type);
-    Py_XDECREF(exc_value);
-    Py_XDECREF(exc_traceback);
-}
-static CYTHON_INLINE
-int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) {
-    if (unlikely(gen->is_running)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "generator already executing");
-        return 1;
+            return (long) -1;
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (long) -1;
+        val = __Pyx_PyInt_As_long(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    return 0;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to long");
+    return (long) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to long");
+    return (long) -1;
 }
-static CYTHON_INLINE
-PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) {
-    PyObject *retval;
-    assert(!self->is_running);
-    if (unlikely(self->resume_label == 0)) {
-        if (unlikely(value && value != Py_None)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "can't send non-None value to a "
-                            "just-started generator");
-            return NULL;
+
+/* CIntFromPy */
+        static CYTHON_INLINE ADIOS_DATATYPES __Pyx_PyInt_As_ADIOS_DATATYPES(PyObject *x) {
+    const ADIOS_DATATYPES neg_one = (ADIOS_DATATYPES) -1, const_zero = (ADIOS_DATATYPES) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(ADIOS_DATATYPES) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (ADIOS_DATATYPES) val;
         }
-    }
-    if (unlikely(self->resume_label == -1)) {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-    if (value) {
-#if CYTHON_COMPILING_IN_PYPY
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_DATATYPES) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) >= 2 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((((ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) >= 3 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((((((ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) >= 4 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((((((((ADIOS_DATATYPES)digits[3]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-        if (self->exc_traceback) {
-            PyThreadState *tstate = PyThreadState_GET();
-            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-            PyFrameObject *f = tb->tb_frame;
-            Py_XINCREF(tstate->frame);
-            assert(f->f_back == NULL);
-            f->f_back = tstate->frame;
-        }
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (ADIOS_DATATYPES) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_DATATYPES) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(ADIOS_DATATYPES) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((ADIOS_DATATYPES)-1)*(((((ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) ((((((ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(ADIOS_DATATYPES) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((ADIOS_DATATYPES)-1)*(((((((ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) ((((((((ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(ADIOS_DATATYPES) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((ADIOS_DATATYPES)-1)*(((((((((ADIOS_DATATYPES)digits[3]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) ((((((((((ADIOS_DATATYPES)digits[3]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+            }
 #endif
-        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
-                            &self->exc_traceback);
-    } else {
-        __Pyx_Generator_ExceptionClear(self);
-    }
-    self->is_running = 1;
-    retval = self->body((PyObject *) self, value);
-    self->is_running = 0;
-    if (retval) {
-        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
-                            &self->exc_traceback);
-#if CYTHON_COMPILING_IN_PYPY
-#else
-        if (self->exc_traceback) {
-            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-            PyFrameObject *f = tb->tb_frame;
-            Py_CLEAR(f->f_back);
+            if (sizeof(ADIOS_DATATYPES) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, long, PyLong_AsLong(x))
+            } else if (sizeof(ADIOS_DATATYPES) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
         }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            ADIOS_DATATYPES val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
-    } else {
-        __Pyx_Generator_ExceptionClear(self);
-    }
-    return retval;
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) {
-    PyObject *ret;
-    PyObject *val = NULL;
-    __Pyx_Generator_Undelegate(gen);
-    __Pyx_PyGen_FetchStopIterationValue(&val);
-    ret = __Pyx_Generator_SendEx(gen, val);
-    Py_XDECREF(val);
-    return ret;
-}
-static PyObject *__Pyx_Generator_Next(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        ret = Py_TYPE(yf)->tp_iternext(yf);
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
-        }
-        return __Pyx_Generator_FinishDelegation(gen);
-    }
-    return __Pyx_Generator_SendEx(gen, Py_None);
-}
-static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Generator_Send(yf, value);
-        } else {
-            if (value == Py_None)
-                ret = PyIter_Next(yf);
-            else
-                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
-        }
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
+            return (ADIOS_DATATYPES) -1;
         }
-        return __Pyx_Generator_FinishDelegation(gen);
-    }
-    return __Pyx_Generator_SendEx(gen, value);
-}
-static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) {
-    PyObject *retval = NULL;
-    int err = 0;
-    if (__Pyx_Generator_CheckExact(yf)) {
-        retval = __Pyx_Generator_Close(yf);
-        if (!retval)
-            return -1;
     } else {
-        PyObject *meth;
-        gen->is_running = 1;
-        meth = PyObject_GetAttr(yf, __pyx_n_s_close);
-        if (unlikely(!meth)) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                PyErr_WriteUnraisable(yf);
-            }
-            PyErr_Clear();
-        } else {
-            retval = PyObject_CallFunction(meth, NULL);
-            Py_DECREF(meth);
-            if (!retval)
-                err = -1;
-        }
-        gen->is_running = 0;
-    }
-    Py_XDECREF(retval);
-    return err;
-}
-static PyObject *__Pyx_Generator_Close(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    PyObject *retval, *raised_exception;
-    PyObject *yf = gen->yieldfrom;
-    int err = 0;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        Py_INCREF(yf);
-        err = __Pyx_Generator_CloseIter(gen, yf);
-        __Pyx_Generator_Undelegate(gen);
-        Py_DECREF(yf);
-    }
-    if (err == 0)
-        PyErr_SetNone(PyExc_GeneratorExit);
-    retval = __Pyx_Generator_SendEx(gen, NULL);
-    if (retval) {
-        Py_DECREF(retval);
-        PyErr_SetString(PyExc_RuntimeError,
-                        "generator ignored GeneratorExit");
-        return NULL;
-    }
-    raised_exception = PyErr_Occurred();
-    if (!raised_exception
-        || raised_exception == PyExc_StopIteration
-        || raised_exception == PyExc_GeneratorExit
-        || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)
-        || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))
-    {
-        if (raised_exception) PyErr_Clear();
-        Py_INCREF(Py_None);
-        return Py_None;
+        ADIOS_DATATYPES val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (ADIOS_DATATYPES) -1;
+        val = __Pyx_PyInt_As_ADIOS_DATATYPES(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    return NULL;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to ADIOS_DATATYPES");
+    return (ADIOS_DATATYPES) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to ADIOS_DATATYPES");
+    return (ADIOS_DATATYPES) -1;
 }
-static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    PyObject *typ;
-    PyObject *tb = NULL;
-    PyObject *val = NULL;
-    PyObject *yf = gen->yieldfrom;
-    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
-        return NULL;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        PyObject *ret;
-        Py_INCREF(yf);
-        if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) {
-            int err = __Pyx_Generator_CloseIter(gen, yf);
-            Py_DECREF(yf);
-            __Pyx_Generator_Undelegate(gen);
-            if (err < 0)
-                return __Pyx_Generator_SendEx(gen, NULL);
-            goto throw_here;
-        }
-        gen->is_running = 1;
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Generator_Throw(yf, args);
+
+/* CIntFromPy */
+        static CYTHON_INLINE ADIOS_LOCKMODE __Pyx_PyInt_As_ADIOS_LOCKMODE(PyObject *x) {
+    const ADIOS_LOCKMODE neg_one = (ADIOS_LOCKMODE) -1, const_zero = (ADIOS_LOCKMODE) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(ADIOS_LOCKMODE) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, PyInt_AS_LONG(x))
         } else {
-            PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s_throw);
-            if (unlikely(!meth)) {
-                Py_DECREF(yf);
-                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                    gen->is_running = 0;
-                    return NULL;
-                }
-                PyErr_Clear();
-                __Pyx_Generator_Undelegate(gen);
-                gen->is_running = 0;
-                goto throw_here;
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
             }
-            ret = PyObject_CallObject(meth, args);
-            Py_DECREF(meth);
-        }
-        gen->is_running = 0;
-        Py_DECREF(yf);
-        if (!ret) {
-            ret = __Pyx_Generator_FinishDelegation(gen);
-        }
-        return ret;
-    }
-throw_here:
-    __Pyx_Raise(typ, val, tb, NULL);
-    return __Pyx_Generator_SendEx(gen, NULL);
-}
-static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    Py_VISIT(gen->closure);
-    Py_VISIT(gen->classobj);
-    Py_VISIT(gen->yieldfrom);
-    Py_VISIT(gen->exc_type);
-    Py_VISIT(gen->exc_value);
-    Py_VISIT(gen->exc_traceback);
-    return 0;
-}
-static int __Pyx_Generator_clear(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    Py_CLEAR(gen->closure);
-    Py_CLEAR(gen->classobj);
-    Py_CLEAR(gen->yieldfrom);
-    Py_CLEAR(gen->exc_type);
-    Py_CLEAR(gen->exc_value);
-    Py_CLEAR(gen->exc_traceback);
-    Py_CLEAR(gen->gi_name);
-    Py_CLEAR(gen->gi_qualname);
-    return 0;
-}
-static void __Pyx_Generator_dealloc(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    PyObject_GC_UnTrack(gen);
-    if (gen->gi_weakreflist != NULL)
-        PyObject_ClearWeakRefs(self);
-    if (gen->resume_label > 0) {
-        PyObject_GC_Track(self);
-#if PY_VERSION_HEX >= 0x030400a1
-        if (PyObject_CallFinalizerFromDealloc(self))
-#else
-        Py_TYPE(gen)->tp_del(self);
-        if (self->ob_refcnt > 0)
-#endif
-        {
-            return;
+            return (ADIOS_LOCKMODE) val;
         }
-        PyObject_GC_UnTrack(self);
-    }
-    __Pyx_Generator_clear(self);
-    PyObject_GC_Del(gen);
-}
-static void __Pyx_Generator_del(PyObject *self) {
-    PyObject *res;
-    PyObject *error_type, *error_value, *error_traceback;
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    if (gen->resume_label <= 0)
-        return ;
-#if PY_VERSION_HEX < 0x030400a1
-    assert(self->ob_refcnt == 0);
-    self->ob_refcnt = 1;
-#endif
-    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
-    res = __Pyx_Generator_Close(self);
-    if (res == NULL)
-        PyErr_WriteUnraisable(self);
-    else
-        Py_DECREF(res);
-    __Pyx_ErrRestore(error_type, error_value, error_traceback);
-#if PY_VERSION_HEX < 0x030400a1
-    assert(self->ob_refcnt > 0);
-    if (--self->ob_refcnt == 0) {
-        return;
-    }
-    {
-        Py_ssize_t refcnt = self->ob_refcnt;
-        _Py_NewReference(self);
-        self->ob_refcnt = refcnt;
-    }
-#if CYTHON_COMPILING_IN_CPYTHON
-    assert(PyType_IS_GC(self->ob_type) &&
-           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
-    _Py_DEC_REFTOTAL;
-#endif
-#ifdef COUNT_ALLOCS
-    --Py_TYPE(self)->tp_frees;
-    --Py_TYPE(self)->tp_allocs;
+    } else
 #endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_LOCKMODE) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) >= 2 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((((ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) >= 3 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((((((ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) >= 4 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((((((((ADIOS_LOCKMODE)digits[3]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0]));
+                        }
+                    }
+                    break;
+            }
 #endif
-}
-static PyObject *
-__Pyx_Generator_get_name(__pyx_GeneratorObject *self)
-{
-    Py_INCREF(self->gi_name);
-    return self->gi_name;
-}
-static int
-__Pyx_Generator_set_name(__pyx_GeneratorObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (ADIOS_LOCKMODE) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
 #endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__name__ must be set to a string object");
-        return -1;
-    }
-    tmp = self->gi_name;
-    Py_INCREF(value);
-    self->gi_name = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_Generator_get_qualname(__pyx_GeneratorObject *self)
-{
-    Py_INCREF(self->gi_qualname);
-    return self->gi_qualname;
-}
-static int
-__Pyx_Generator_set_qualname(__pyx_GeneratorObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+            if (sizeof(ADIOS_LOCKMODE) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(ADIOS_LOCKMODE) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_LOCKMODE) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((ADIOS_LOCKMODE)-1)*(((((ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) ((((((ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((ADIOS_LOCKMODE)-1)*(((((((ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) ((((((((ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((ADIOS_LOCKMODE)-1)*(((((((((ADIOS_LOCKMODE)digits[3]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) ((((((((((ADIOS_LOCKMODE)digits[3]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(ADIOS_LOCKMODE) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, long, PyLong_AsLong(x))
+            } else if (sizeof(ADIOS_LOCKMODE) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
 #else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
+            ADIOS_LOCKMODE val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__qualname__ must be set to a string object");
-        return -1;
+            return (ADIOS_LOCKMODE) -1;
+        }
+    } else {
+        ADIOS_LOCKMODE val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (ADIOS_LOCKMODE) -1;
+        val = __Pyx_PyInt_As_ADIOS_LOCKMODE(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    tmp = self->gi_qualname;
-    Py_INCREF(value);
-    self->gi_qualname = value;
-    Py_XDECREF(tmp);
-    return 0;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to ADIOS_LOCKMODE");
+    return (ADIOS_LOCKMODE) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to ADIOS_LOCKMODE");
+    return (ADIOS_LOCKMODE) -1;
 }
-static PyGetSetDef __pyx_Generator_getsets[] = {
-    {(char *) "__name__", (getter)__Pyx_Generator_get_name, (setter)__Pyx_Generator_set_name,
-     (char*) PyDoc_STR("name of the generator"), 0},
-    {(char *) "__qualname__", (getter)__Pyx_Generator_get_qualname, (setter)__Pyx_Generator_set_qualname,
-     (char*) PyDoc_STR("qualified name of the generator"), 0},
-    {0, 0, 0, 0, 0}
-};
-static PyMemberDef __pyx_Generator_memberlist[] = {
-    {(char *) "gi_running", T_BOOL, offsetof(__pyx_GeneratorObject, is_running), READONLY, NULL},
-    {0, 0, 0, 0, 0}
-};
-static PyMethodDef __pyx_Generator_methods[] = {
-    {"send", (PyCFunction) __Pyx_Generator_Send, METH_O, 0},
-    {"throw", (PyCFunction) __Pyx_Generator_Throw, METH_VARARGS, 0},
-    {"close", (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0},
-    {0, 0, 0, 0}
-};
-static PyTypeObject __pyx_GeneratorType_type = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "generator",
-    sizeof(__pyx_GeneratorObject),
-    0,
-    (destructor) __Pyx_Generator_dealloc,
-    0,
-    0,
-    0,
+
+/* CIntFromPy */
+        static CYTHON_INLINE ADIOS_READ_METHOD __Pyx_PyInt_As_ADIOS_READ_METHOD(PyObject *x) {
+    const ADIOS_READ_METHOD neg_one = (ADIOS_READ_METHOD) -1, const_zero = (ADIOS_READ_METHOD) 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
-    0,
-#else
-    0,
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(ADIOS_READ_METHOD) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (ADIOS_READ_METHOD) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_READ_METHOD) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) >= 2 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((((ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) >= 3 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((((((ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) >= 4 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((((((((ADIOS_READ_METHOD)digits[3]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0]));
+                        }
+                    }
+                    break;
+            }
 #endif
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
-    0,
-    (traverseproc) __Pyx_Generator_traverse,
-    0,
-    0,
-    offsetof(__pyx_GeneratorObject, gi_weakreflist),
-    0,
-    (iternextfunc) __Pyx_Generator_Next,
-    __pyx_Generator_methods,
-    __pyx_Generator_memberlist,
-    __pyx_Generator_getsets,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-#if PY_VERSION_HEX >= 0x030400a1
-    0,
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    __Pyx_Generator_del,
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (ADIOS_READ_METHOD) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
 #endif
-    0,
-#if PY_VERSION_HEX >= 0x030400a1
-    __Pyx_Generator_del,
+            if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_READ_METHOD) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((ADIOS_READ_METHOD)-1)*(((((ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) ((((((ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((ADIOS_READ_METHOD)-1)*(((((((ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) ((((((((ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((ADIOS_READ_METHOD)-1)*(((((((((ADIOS_READ_METHOD)digits[3]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) ((((((((((ADIOS_READ_METHOD)digits[3]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+            }
 #endif
-};
-static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
-                                                  PyObject *closure, PyObject *name, PyObject *qualname) {
-    __pyx_GeneratorObject *gen =
-        PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type);
-    if (gen == NULL)
-        return NULL;
-    gen->body = body;
-    gen->closure = closure;
-    Py_XINCREF(closure);
-    gen->is_running = 0;
-    gen->resume_label = 0;
-    gen->classobj = NULL;
-    gen->yieldfrom = NULL;
-    gen->exc_type = NULL;
-    gen->exc_value = NULL;
-    gen->exc_traceback = NULL;
-    gen->gi_weakreflist = NULL;
-    Py_XINCREF(qualname);
-    gen->gi_qualname = qualname;
-    Py_XINCREF(name);
-    gen->gi_name = name;
-    PyObject_GC_Track(gen);
-    return gen;
-}
-static int __pyx_Generator_init(void) {
-    __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
-    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
-    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
-    if (__pyx_GeneratorType == NULL) {
-        return -1;
+            if (sizeof(ADIOS_READ_METHOD) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, long, PyLong_AsLong(x))
+            } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            ADIOS_READ_METHOD val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (ADIOS_READ_METHOD) -1;
+        }
+    } else {
+        ADIOS_READ_METHOD val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (ADIOS_READ_METHOD) -1;
+        val = __Pyx_PyInt_As_ADIOS_READ_METHOD(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    return 0;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to ADIOS_READ_METHOD");
+    return (ADIOS_READ_METHOD) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to ADIOS_READ_METHOD");
+    return (ADIOS_READ_METHOD) -1;
 }
 
-static int __Pyx_check_binary_version(void) {
+/* CheckBinaryVersion */
+        static int __Pyx_check_binary_version(void) {
     char ctversion[4], rtversion[4];
     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -28972,7 +42444,8 @@ static int __Pyx_check_binary_version(void) {
     return 0;
 }
 
-#ifndef __PYX_HAVE_RT_ImportModule
+/* ModuleImport */
+        #ifndef __PYX_HAVE_RT_ImportModule
 #define __PYX_HAVE_RT_ImportModule
 static PyObject *__Pyx_ImportModule(const char *name) {
     PyObject *py_name = 0;
@@ -28989,7 +42462,8 @@ bad:
 }
 #endif
 
-#ifndef __PYX_HAVE_RT_ImportType
+/* TypeImport */
+        #ifndef __PYX_HAVE_RT_ImportType
 #define __PYX_HAVE_RT_ImportType
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
     size_t size, int strict)
@@ -29035,14 +42509,14 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class
 #endif
     if (!strict && (size_t)basicsize > size) {
         PyOS_snprintf(warning, sizeof(warning),
-            "%s.%s size changed, may indicate binary incompatibility",
-            module_name, class_name);
+            "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
+            module_name, class_name, basicsize, size);
         if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
     }
     else if ((size_t)basicsize != size) {
         PyErr_Format(PyExc_ValueError,
-            "%.200s.%.200s has the wrong size, try recompiling",
-            module_name, class_name);
+            "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
+            module_name, class_name, basicsize, size);
         goto bad;
     }
     return (PyTypeObject *)result;
@@ -29053,7 +42527,8 @@ bad:
 }
 #endif
 
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+/* InitStrings */
+        static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
     while (t->p) {
         #if PY_MAJOR_VERSION < 3
         if (t->is_unicode) {
@@ -29091,7 +42566,7 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
     return __Pyx_PyObject_AsStringAndSize(o, &ignore);
 }
 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
     if (
 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
             __Pyx_sys_getdefaultencoding_not_ascii &&
@@ -29132,7 +42607,7 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_
 #endif
     } else
 #endif
-#if !CYTHON_COMPILING_IN_PYPY
+#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
     if (PyByteArray_Check(o)) {
         *length = PyByteArray_GET_SIZE(o);
         return PyByteArray_AS_STRING(o);
@@ -29153,7 +42628,7 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
    else return PyObject_IsTrue(x);
 }
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
   PyNumberMethods *m;
   const char *name = NULL;
   PyObject *res = NULL;
@@ -29162,7 +42637,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
 #else
   if (PyLong_Check(x))
 #endif
-    return Py_INCREF(x), x;
+    return __Pyx_NewRef(x);
   m = Py_TYPE(x)->tp_as_number;
 #if PY_MAJOR_VERSION < 3
   if (m && m->nb_int) {
@@ -29202,18 +42677,55 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_ssize_t ival;
   PyObject *x;
 #if PY_MAJOR_VERSION < 3
-  if (likely(PyInt_CheckExact(b)))
-      return PyInt_AS_LONG(b);
+  if (likely(PyInt_CheckExact(b))) {
+    if (sizeof(Py_ssize_t) >= sizeof(long))
+        return PyInt_AS_LONG(b);
+    else
+        return PyInt_AsSsize_t(x);
+  }
 #endif
   if (likely(PyLong_CheckExact(b))) {
-    #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-     #if CYTHON_USE_PYLONG_INTERNALS
-       switch (Py_SIZE(b)) {
-       case -1: return -(sdigit)((PyLongObject*)b)->ob_digit[0];
-       case  0: return 0;
-       case  1: return ((PyLongObject*)b)->ob_digit[0];
-       }
-     #endif
+    #if CYTHON_USE_PYLONG_INTERNALS
+    const digit* digits = ((PyLongObject*)b)->ob_digit;
+    const Py_ssize_t size = Py_SIZE(b);
+    if (likely(__Pyx_sst_abs(size) <= 1)) {
+        ival = likely(size) ? digits[0] : 0;
+        if (size == -1) ival = -ival;
+        return ival;
+    } else {
+      switch (size) {
+         case 2:
+           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
+             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case -2:
+           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
+             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case 3:
+           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
+             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case -3:
+           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
+             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case 4:
+           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
+             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case -4:
+           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
+             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+      }
+    }
     #endif
     return PyLong_AsSsize_t(b);
   }
diff --git a/wrappers/numpy/adios.pyx b/wrappers/numpy/adios.pyx
index 125fc2f..7bde3cf 100644
--- a/wrappers/numpy/adios.pyx
+++ b/wrappers/numpy/adios.pyx
@@ -4,10 +4,16 @@
 .. moduleauthor:: Jong Choi <choij at ornl.gov>
 """
 
+from __future__ import print_function
+
+#cdef extern from "mpi-compat.h": pass
+cdef extern from "string.h" nogil:
+    char   *strdup  (const char *s)
+
 import numpy as np
 cimport numpy as np
 
-#import mpi4py.MPI_as MPI_
+#import mpi4py.MPI_as MPI
 #cimport mpi4py.MPI_as MPI
 
 import cython
@@ -15,11 +21,56 @@ cimport cython
 
 from libc.stdlib cimport malloc, free
 from cpython.string cimport PyString_AsString
+from cpython.bytes cimport PyBytes_AsString, PyBytes_AS_STRING
+from cpython.unicode cimport PyUnicode_AsUTF8String, PyUnicode_Check
+from cpython.ref cimport PyObject
+
+import os
+from ._hl import selections as sel
+
+## To convert a string to bytes: "str".encode()
+## To convert bytes to a String: b"".decode() or str(b"")
+cpdef void test_str(str x):
+    cdef char * y = strdup(x.encode())
+    print(x, str(y))
+
+from cpython.version cimport PY_MAJOR_VERSION
+
+## Fixed-length ASCII (NumPy S type)
+## Variable-length ASCII (Python 2 str, Python 3 bytes)
+## Variable-length UTF-8 (Python 2 unicode, Python 3 str)
+
+## bytes-to-str problem for supporting both python2 and python3
+## python2: str(b"") return str
+## python3: str(b"") return 'b""'. Correct way: b"".decode()
+cpdef str b2s(bytes x):
+    if PY_MAJOR_VERSION < 3:
+        return str(x)
+    else:
+        return x.decode()
+
+cpdef bytes s2b(str x):
+    if PY_MAJOR_VERSION < 3:
+        return <bytes>x
+    else:
+        return x.encode()
+
+def normalize_key(keys):
+    if not isinstance(keys, list):
+        keys = [keys,]
+    l = list()
+    for key in keys:
+        if key.startswith('/'):
+            key = key[1:]
+        if '/' not in key:
+            l.append(key)
+    return (l)
 
 cdef char ** to_cstring_array(list_str):
     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
     for i in xrange(len(list_str)):
-        ret[i] = PyString_AsString(list_str[i])
+        bstr = s2b(list_str[i])
+        ret[i] = PyBytes_AsString(bstr)
     return ret
 
 ## ====================
@@ -64,40 +115,40 @@ cdef extern from "adios.h":
     ctypedef char* const_char_ptr "const char*"
 
     cdef int adios_init (char * config, MPI_Comm)
-    
+
     cdef int adios_finalize (int mype)
-    
+
     cdef int adios_open (int64_t * fd,
                          char * group_name,
-                         char * name, 
+                         char * name,
                          char * mode,
                          MPI_Comm comm)
-    
+
     cdef int adios_group_size (int64_t fd_p,
                                uint64_t data_size,
                                uint64_t * total_size)
-    
+
     cdef int adios_write (int64_t fd_p,
                           char * name,
                           void * var)
-    
+
     cdef int adios_read (int64_t fd_p,
                          char * name,
                          void * buffer,
                          uint64_t buffer_size)
 
     cdef int adios_close(int64_t fd_p)
-    
+
     cdef int adios_init_noxml (MPI_Comm)
-    
+
     cdef int adios_allocate_buffer (ADIOS_BUFFER_ALLOC_WHEN when,
                                     uint64_t buffer_size)
-    
+
     cdef int adios_declare_group (int64_t * id,
                                   char * name,
                                   char * time_index,
                                   ADIOS_FLAG stats)
-    
+
     cdef int adios_define_var (int64_t group_id,
                                char * name,
                                char * path,
@@ -105,7 +156,7 @@ cdef extern from "adios.h":
                                char * dimensions,
                                char * global_dimensions,
                                char * local_offsets)
-    
+
     cdef int adios_define_attribute (int64_t group,
                                      char * name,
                                      char * path,
@@ -119,7 +170,7 @@ cdef extern from "adios.h":
                                              ADIOS_DATATYPES type,
                                              int nelems,
                                              void * values)
-    
+
     cdef int adios_select_method (int64_t group,
                                   char * method,
                                   char * parameters,
@@ -142,7 +193,7 @@ cdef extern from "adios_selection.h":
 
     ctypedef struct ADIOS_SELECTION_WRITEBLOCK_STRUCT:
         pass
-    
+
     ctypedef struct ADIOS_SELECTION_AUTO_STRUCT:
         pass
 
@@ -156,10 +207,18 @@ cdef extern from "adios_selection.h":
         ADIOS_SELECTION_TYPE    type
         ADIOS_SELECTION_UNION   u
 
-    cdef ADIOS_SELECTION * adios_selection_boundingbox (int ndim,
+    cdef ADIOS_SELECTION * adios_selection_boundingbox (uint64_t ndim,
                                                         const uint64_t *start,
                                                         const uint64_t *count)
 
+    cdef ADIOS_SELECTION * adios_selection_points (uint64_t ndim,
+                                                   uint64_t npoints,
+                                                   const uint64_t *points)
+
+    cdef ADIOS_SELECTION * adios_selection_writeblock (int index)
+
+    cdef void adios_selection_delete (ADIOS_SELECTION * sel)
+
 cdef extern from "adios_read.h":
     ctypedef enum ADIOS_READ_METHOD:
         pass
@@ -170,47 +229,55 @@ cdef extern from "adios_read.h":
         ADIOS_LOCKMODE_ALL
 
     ctypedef struct ADIOS_FILE:
-        uint64_t fh               
-        int      nvars            
-        char     ** var_namelist  
-        int      nattrs           
-        char     ** attr_namelist 
-        int      nmeshes          
-        char     ** mesh_namelist 
-        int      current_step     
-        int      last_step        
-        char     *path            
-        int      endianness       
-        int      version          
+        uint64_t fh
+        int      nvars
+        char     ** var_namelist
+        int      nattrs
+        char     ** attr_namelist
+        int      nmeshes
+        char     ** mesh_namelist
+        int      current_step
+        int      last_step
+        char     *path
+        int      endianness
+        int      version
         uint64_t file_size
 
     ctypedef struct ADIOS_VARINFO:
         int        varid
-        ADIOS_DATATYPES type  
-        int        ndim       
-        uint64_t * dims       
-        int        nsteps     
-        void     * value      
-        int      * nblocks    
+        ADIOS_DATATYPES type
+        int        ndim
+        uint64_t * dims
+        int        nsteps
+        void     * value
+        int      * nblocks
         int        sum_nblocks
+        ADIOS_VARBLOCK *blockinfo
 
-    cdef int adios_read_init_method (ADIOS_READ_METHOD method, 
-                                     MPI_Comm comm, 
+    ctypedef struct ADIOS_VARBLOCK:
+        uint64_t * start
+        uint64_t * count
+        uint32_t process_id
+        uint32_t time_index
+
+    cdef int adios_read_init_method (ADIOS_READ_METHOD method,
+                                     MPI_Comm comm,
                                      char * parameters)
     cdef int adios_read_finalize_method(ADIOS_READ_METHOD method)
-    cdef ADIOS_FILE * adios_read_open (const char * fname, 
-                                       ADIOS_READ_METHOD method, 
-                                       MPI_Comm comm, 
+    cdef ADIOS_FILE * adios_read_open (const char * fname,
+                                       ADIOS_READ_METHOD method,
+                                       MPI_Comm comm,
                                        ADIOS_LOCKMODE lock_mode,
                                        float timeout_sec)
-    cdef ADIOS_FILE * adios_read_open_file (const char * fname, 
-                                            ADIOS_READ_METHOD method, 
+    cdef ADIOS_FILE * adios_read_open_file (const char * fname,
+                                            ADIOS_READ_METHOD method,
                                             MPI_Comm comm)
     cdef int adios_read_close (ADIOS_FILE *fp)
     cdef int adios_advance_step (ADIOS_FILE *fp, int last, float timeout_sec)
     cdef void adios_release_step (ADIOS_FILE *fp)
     cdef ADIOS_VARINFO * adios_inq_var (ADIOS_FILE *fp, const char * varname)
     cdef ADIOS_VARINFO * adios_inq_var_byid (ADIOS_FILE *fp, int varid)
+    cdef int adios_inq_var_blockinfo (ADIOS_FILE *fp, ADIOS_VARINFO * varinfo)
     cdef void adios_free_varinfo (ADIOS_VARINFO *cp)
     cdef int adios_schedule_read (const ADIOS_FILE * fp,
                                   const ADIOS_SELECTION * sel,
@@ -218,7 +285,7 @@ cdef extern from "adios_read.h":
                                   int from_steps,
                                   int nsteps,
                                   void * data)
-    cdef int adios_schedule_read_byid (const ADIOS_FILE * fp, 
+    cdef int adios_schedule_read_byid (const ADIOS_FILE * fp,
                                        const ADIOS_SELECTION * sel,
                                        int varid,
                                        int from_steps,
@@ -231,7 +298,7 @@ cdef extern from "adios_read.h":
                              ADIOS_DATATYPES  * type,
                              int * size,
                              void ** data)
-    
+
     cdef char * adios_type_to_string (ADIOS_DATATYPES type)
 
 ## ====================
@@ -260,20 +327,24 @@ class FLAG:
     UNKNOWN = 0
     YES = 1
     NO = 2
-    
+
 class BUFFER_ALLOC_WHEN:
     UNKNOWN = 0
     NOW = 1
     LATER = 2
 
 class READ_METHOD:
-    BP            = 0 
+    BP            = 0
     BP_AGGREGATE  = 1
     DATASPACES    = 3
     DIMES         = 4
     FLEXPATH      = 5
     ICEE          = 6
 
+class LOCKMODE:
+    NONE = 0
+    CURRENT = 1
+    ALL =2
 
 cpdef __parse_index(index, ndim):
     # Fix index, handling ellipsis and incomplete slices.
@@ -282,12 +353,14 @@ cpdef __parse_index(index, ndim):
 
     fixed = []
     length = len(index)
-    
+
     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))
+        elif isinstance(slice_, (float)):
+            fixed.append(slice(int(slice_), int(slice_)+1, None))
         else:
             fixed.append(slice_)
         length -= 1
@@ -302,16 +375,21 @@ cpdef __parse_index(index, ndim):
 ## ADIOS Write API
 ## ====================
 
-cpdef init(char * config, MPI_Comm comm = MPI_COMM_WORLD):
-    return adios_init(config, comm)
+cdef MPI_Comm init_comm
+cdef MPI_Comm read_init_comm
 
-cpdef int64_t open(char * group_name,
-                   char * name,
-                   char * mode,
+cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):
+    global init_comm
+    init_comm = comm
+    return adios_init(s2b(config), init_comm)
+
+cpdef int64_t open(str group_name,
+                   str name,
+                   str mode,
                    MPI_Comm comm = MPI_COMM_WORLD):
     cdef int64_t fd
     cdef int result
-    result = adios_open(&fd, group_name, name, mode, comm)
+    result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm)
     return fd
 
 cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
@@ -320,7 +398,7 @@ cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
     result = adios_group_size(fd_p, data_size, &total_size)
     return total_size
 
-cpdef int write (int64_t fd_p, char * name, val, dtype=None):
+cpdef int write (int64_t fd_p, str name, val, dtype=None):
     cdef np.ndarray val_
     if isinstance(val, (np.ndarray)):
         if val.flags.contiguous:
@@ -330,25 +408,32 @@ cpdef int write (int64_t fd_p, char * name, val, dtype=None):
     else:
         val_ = np.array(val, dtype=dtype)
 
-    return adios_write (fd_p, name, <void *> val_.data)
+    cdef void * ptr
+    if (val_.dtype.char in ('S', 'U')):
+        bstr = val_.tostring()
+        ptr = <void *> PyBytes_AS_STRING(bstr)
+    else:
+        ptr = <void *> val_.data
+
+    return adios_write (fd_p, s2b(name), ptr)
 
-cpdef int write_int (int64_t fd_p, char * name, int val):
-    return adios_write (fd_p, name, &val)
+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, char * name, long val):
-    return adios_write (fd_p, name, &val)
+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, char * name, float val):
-    return adios_write (fd_p, name, &val)
+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, char * name, double val):
-    return adios_write (fd_p, name, &val)
+cpdef int write_double (int64_t fd_p, str name, double val):
+    return adios_write (fd_p, s2b(name), &val)
 
 
-cpdef int read(int64_t fd_p, char * name, np.ndarray val):
+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, name, <void *> val.data, val.itemsize * val.size)
+    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):
     return adios_close(fd_p)
@@ -359,54 +444,58 @@ cpdef int finalize(int mype = 0):
 ## ====================
 ## ADIOS No-XML API
 ## ====================
+
 cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):
-    return adios_init_noxml(comm)
+    global init_comm
+    init_comm = comm
+    return adios_init_noxml(init_comm)
 
 cpdef int allocate_buffer(int when,
                           uint64_t buffer_size):
     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
                                  buffer_size)
 
-cpdef int64_t declare_group(char * name,
-                            char * time_index = "",
+cpdef int64_t declare_group(str name,
+                            str time_index = "",
                             int stats = 1):
     cdef int64_t id = 0
     adios_declare_group (&id,
-                         name,
-                         time_index,
+                         s2b(name),
+                         s2b(time_index),
                          <ADIOS_FLAG> stats)
     return id
 
 cpdef int define_var(int64_t group_id,
-                     char * name,
-                     char * path,
+                     str name,
+                     str path,
                      int atype,
-                     char * dimensions = "",
-                     char * global_dimensions = "",
-                     char * local_offsets = ""):
+                     str dimensions = "",
+                     str global_dimensions = "",
+                     str local_offsets = ""):
     return adios_define_var(group_id,
-                            name, path,
+                            s2b(name),
+                            s2b(path),
                             <ADIOS_DATATYPES> atype,
-                            dimensions,
-                            global_dimensions,
-                            local_offsets)
+                            s2b(dimensions),
+                            s2b(global_dimensions),
+                            s2b(local_offsets))
 
 cpdef int define_attribute (int64_t group,
-                            char * name,
-                            char * path,
+                            str name,
+                            str path,
                             int atype,
-                            char * value,
-                            char * var):
+                            str value,
+                            str var):
     return adios_define_attribute (group,
-                                   name,
-                                   path,
+                                   s2b(name),
+                                   s2b(path),
                                    <ADIOS_DATATYPES> atype,
-                                   value,
-                                   var)
+                                   s2b(value),
+                                   s2b(var))
 
 cpdef int define_attribute_byvalue (int64_t group,
-                                    char * name,
-                                    char * path,
+                                    str name,
+                                    str path,
                                     val):
     cdef np.ndarray val_
     if isinstance(val, (np.ndarray)):
@@ -421,40 +510,41 @@ cpdef int define_attribute_byvalue (int64_t group,
 
     cdef char * pt1
     cdef char ** pt2
-    if (val_.dtype.char == 'S'):
+    if (val_.dtype.char in ('S', 'U')):
         if (val_.size == 1):
-            pt1 = PyString_AsString(val)
+            bstr = s2b(str(val))
+            pt1 = PyBytes_AsString(bstr)
             adios_define_attribute_byvalue (group,
-                                            name,
-                                            path,
+                                            s2b(name),
+                                            s2b(path),
                                             DATATYPE.string,
                                             1,
                                             <void *> pt1)
         else:
             pt2 = to_cstring_array(val)
             adios_define_attribute_byvalue (group,
-                                            name,
-                                            path,
+                                            s2b(name),
+                                            s2b(path),
                                             DATATYPE.string_array,
                                             len(val),
                                             <void *> pt2)
             free(pt2)
     else:
         adios_define_attribute_byvalue (group,
-                                        name,
-                                        path,
+                                        s2b(name),
+                                        s2b(path),
                                         <ADIOS_DATATYPES> atype,
                                         val_.size,
                                         <void *> val_.data)
 
 cpdef int select_method (int64_t group,
-                         char * method,
-                         char * parameters = "",
-                         char * base_path = ""):
+                         str method,
+                         str parameters = "",
+                         str base_path = ""):
     return adios_select_method (group,
-                                method,
-                                parameters,
-                                base_path)
+                                s2b(method),
+                                s2b(parameters),
+                                s2b(base_path))
 
 
 ## ====================
@@ -491,33 +581,34 @@ cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
     elif t == adios_double_complex:
         ntype = np.dtype(np.complex128)
     elif t == adios_string:
-        ntype = np.dtype((np.str_, strlen))
+        ## Use string_ instead of str_ for py3
+        ntype = np.dtype((np.string_, strlen))
     else:
         ntype = None
 
     return ntype
 
 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)
-    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)       
-    print '%15s : %d' % ('version', f.version)       
-    print '%15s : %lu' % ('file_size', f.file_size)
+    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)]))
+    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))
+    print ('%15s : %lu' % ('file_size', f.file_size))
 
 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)])
-    print '%15s : %d' % ('nsteps', v.nsteps)
+    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))
 
-cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
+cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
     if (name == "BP"):
         method = READ_METHOD.BP
     elif (name == "BP_AGGREGATE"):
@@ -531,9 +622,9 @@ cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
     elif (name == "ICEE"):
         method = READ_METHOD.ICEE
     else:
-        print '[WARN] Invalid read method name:', name, '. Use default BP method'
+        print ('[WARN] Invalid read method name:', name, '. Use default BP method')
         method = READ_METHOD.BP
-        
+
     return method
 
 cpdef np2adiostype(np.dtype nptype):
@@ -543,7 +634,7 @@ cpdef np2adiostype(np.dtype nptype):
     cdef atype = DATATYPE.unknown
 
     if (nptype == np.bool_):
-        atype = DATATYPE.integer
+        atype = DATATYPE.byte
     elif (nptype == np.int8):
         atype = DATATYPE.byte
     elif (nptype == np.int16):
@@ -574,7 +665,7 @@ cpdef np2adiostype(np.dtype nptype):
         atype = DATATYPE.complex
     elif (nptype == np.complex128):
         atype = DATATYPE.double_complex
-    elif (nptype.char == 'S'):
+    elif (nptype.char in ('S', 'U')):
         atype = DATATYPE.string
     else:
         atype = DATATYPE.unknown
@@ -589,20 +680,46 @@ cpdef str adiostype2string (ADIOS_DATATYPES type):
 ## ====================
 
 """ Call adios_read_init_method """
-cpdef int read_init(char * method_name = "BP",
+cpdef int read_init(str method_name = "BP",
                     MPI_Comm comm = MPI_COMM_WORLD,
-                    char * parameters = ""):
+                    str parameters = ""):
+    global read_init_comm
+    read_init_comm = comm
     cdef method = str2adiosreadmethod(method_name)
-    return adios_read_init_method (method, comm, parameters)
+    return adios_read_init_method (method, read_init_comm, s2b(parameters))
 
 
 """ Call adios_read_finalize_method """
-cpdef int read_finalize(char * method_name = "BP"):
+cpdef int read_finalize(str method_name = "BP"):
     cdef method = str2adiosreadmethod(method_name)
-    return adios_read_finalize_method (method)
+    return adios_read_finalize_method (s2b(method))
+
+## dict for handling '/' prefix
+cdef class softdict(dict):
+    def __getitem__(self, varname):
+        if not isinstance(varname, tuple):
+            varname = (varname,)
+
+        if len(varname) > 1:
+            raise KeyError(varname)
+
+        for key_ in varname:
+            if not isinstance(key_, str):
+                raise TypeError("Unhashable type")
+
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in dict.keys(self):
+                return dict.get(self, key_)
+
+            if '/'+key_ in dict.keys(self):
+                return dict.get(self, '/'+key_)
+
+        raise KeyError(key_)
 
 ## Python class for ADIOS_FILE structure
-cdef class file:
+cdef class file(dict):
     """
     file class for Adios file read and write.
 
@@ -615,14 +732,14 @@ cdef class file:
         timeout_sec (float, optional): Timeout seconds for stream reader (default: 0.0).
 
     Example:
-    
+
     >>> import adios as ad
     >>> f = ad.file('adiosfile.bp')
-    
+
     """
-    
+
     cpdef ADIOS_FILE * fp
-    cpdef bytes name
+    cpdef str name
     cpdef int nvars
     cpdef int nattrs
     cpdef int current_step
@@ -631,10 +748,12 @@ cdef class file:
     cpdef int version
     cpdef int file_size
     cpdef bint is_stream
-    
+
     ## Public Memeber
-    cpdef public dict var
-    cpdef public dict attr
+    cpdef public softdict vars
+    cpdef public softdict attrs
+    cpdef public var
+    cpdef public attr
 
     property name:
         """ The filename (or stream name) associated with. """
@@ -670,8 +789,8 @@ cdef class file:
         """ The version of Adios. """
         def __get__(self):
             return self.version
-        
-    property file_sizec:
+
+    property file_size:
         """ The size of Adios file. """
         def __get__(self):
             return self.file_size
@@ -681,24 +800,24 @@ cdef class file:
         def __get__(self):
             return self.is_stream
 
-    def __init__(self, char * fname,
-                 char * method_name = 'BP',
+    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,
                  float timeout_sec = 0.0):
         self.fp = NULL
-        self.var = {}
-        self.attr = {}
+        self.vars = softdict()
+        self.attrs = softdict()
         self.is_stream = is_stream
         cdef method = str2adiosreadmethod(method_name)
 
         if (is_stream):
-            self.fp = adios_read_open(fname, method, comm,
+            self.fp = adios_read_open(s2b(fname), method, comm,
                                       lock_mode, timeout_sec)
         else:
-            self.fp = adios_read_open_file(fname, method, comm)
-            
+            self.fp = adios_read_open_file(s2b(fname), method, comm)
+
         assert self.fp != NULL, 'Not an open file'
 
         self.name = fname.split('/')[-1]  ## basename
@@ -709,30 +828,45 @@ cdef class file:
         self.endianness = self.fp.endianness
         self.version = self.fp.version
         self.file_size = self.fp.file_size
-    
-        for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
-            self.var[name] = var(self, name)
 
         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
-            self.attr[name] = attr(self, name)
+            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))
+
+        self.var = self.vars
+        self.attr = self.attrs
 
     def __del__(self):
         """ Close file on destruction. """
         self.close()
-            
+
+    def __enter__(self):
+        """ Enter for with statemetn """
+        return self
+
+    def __exit__(self, exception_type, exception_value, traceback):
+        """ Close file on exit. """
+        self.close()
+
     cpdef close(self):
         """ Close the open file. """
         assert self.fp != NULL, 'Not an open file'
         adios_read_close(self.fp)
         self.fp = NULL
-        
+
     cpdef printself(self):
         """ Print native ADIOS_FILE structure. """
         assert self.fp != NULL, 'Not an open file'
-        print '=== AdiosFile ==='
-        print '%15s : %lu' % ('fp', <unsigned long> self.fp)
+        print ('=== AdiosFile ===')
+        print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
         printfile(self.fp)
 
+    cpdef release_step(self):
+        """ Release the current step lock and let the writer code to progress """
+        adios_release_step(self.fp)
+
     cpdef advance(self, int last = 0, float timeout_sec = 0.0):
         """
         Advance a timestep for stream reader.
@@ -749,20 +883,20 @@ cdef class file:
             self.current_step = self.fp.current_step
             self.last_step = self.fp.last_step
 
-            for v in self.var.values():
+            for v in self.vars.values():
                 v.advance()
-                
+
         return val
-        
+
     def __getitem__(self, varname):
         """
-        Return Adios variable.
+        Return Adios variable, attribute, or group.
 
         Args:
-            varname (str): variable name.
+            varname (str): variable or attribute name.
 
         Raises:
-            KeyError: If no varname exists.
+            KeyError: If no name exists.
 
         """
         if not isinstance(varname, tuple):
@@ -770,38 +904,135 @@ cdef class file:
 
         if len(varname) > 1:
             raise KeyError(varname)
-        
+
         for key_ in varname:
             if not isinstance(key_, str):
                 raise TypeError("Unhashable type")
 
-            if key_ in self.var.keys():
-                return self.var.get(key_)
-            elif key_ in self.attr.keys():
-                return self.attr.get(key_)
-            else:
-                raise KeyError(key_)
-        
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in self.vars.keys():
+                return self.vars.get(key_)
+
+            if key_ in self.attrs.keys():
+                return self.attrs.get(key_)
+
+            if '/'+key_ in self.vars.keys():
+                return self.vars.get('/'+key_)
+
+            if '/'+key_ in self.attrs.keys():
+                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_):
+                    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_):
+                    return group(self, key_)
+
+        raise KeyError(key_)
+
+
     def __repr__(self):
         """ Return string representation. """
-        return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
+        return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
                 "current_step=%r, last_step=%r, file_size=%r)") % \
-                (self.fp.path,
+                (self.fp.path if self.fp != NULL else None,
                  self.nvars,
-                 self.var.keys(),
+                 self.vars.keys(),
                  self.nattrs,
-                 self.attr.keys(),
+                 self.attrs.keys(),
                  self.current_step,
                  self.last_step,
                  self.file_size)
 
-cdef class var:
+    ## For access var/attr/group as an attribute
+    def __getattr__(self, varname):
+        return self.__getitem__(varname)
+
+    ## To support ipython tab completion
+    def __dir__(self):
+        k0 = dir(type(self))
+        ## 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
+
+    ## Require for dictionary key completion
+    def keys(self):
+        return self.vars.keys() + self.attrs.keys()
+
+    def is_open(self):
+        """ Check whether file is open or closed """
+        return True if self.fp != NULL else False
+
+    ## for py2
+    def __nonzero__(self):
+        return self.is_open()
+
+    ## for py3
+    def __bool__(self):
+        """ Check whether file is open or closed """
+        return self.is_open()
+
+    def dirs(self):
+        """ 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])
+        for k in self.attrs.keys():
+            if k.startswith('/'): k = k[1:]
+            s.add(os.path.dirname(k).split('/')[0])
+        return list(s-set(['']))
+
+cdef class blockinfo(object):
+    cpdef tuple start
+    cpdef tuple count
+    cpdef int process_id
+    cpdef int time_index
+
+    property start:
+        def __get__(self):
+            return self.start
+
+    property count:
+        def __get__(self):
+            return self.count
+
+    property process_id:
+        def __get__(self):
+            return self.process_id
+
+    property time_index:
+        def __get__(self):
+            return self.time_index
+
+    def __init__(self, tuple start, tuple count, int process_id, int time_index):
+        self.start = start
+        self.count = count
+        self.process_id = process_id
+        self.time_index = time_index
+
+    def __repr__(self):
+        return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+               (self.process_id,
+                self.time_index,
+                self.start,
+                self.count)
+
+cdef class var(dict):
     """
     Adios variable class.
 
     Unlike attributes whose values are populated on initialization,
     variable's values will be returned by explicitly calling read() or
-    array access interface ([]).  
+    array access interface ([]).
 
     Args:
         file (file): Associated file class
@@ -810,27 +1041,29 @@ cdef class var:
     Note:
         Users do not need to create this class manually.
     """
-    
+
     cdef file file
     cdef ADIOS_VARINFO * vp
 
-    cpdef bytes name
+    cpdef str name
     cpdef int varid
     cpdef np.dtype dtype
     cpdef int ndim
     cpdef tuple dims
     cpdef int nsteps
+    cpdef softdict attrs
+    cpdef list blockinfo
 
     property name:
         """ The variable name. """
         def __get__(self):
             return self.name
-    
+
     property varid:
         """ Internal variable id. """
         def __get__(self):
             return self.varid
-    
+
     property dtype:
         """ Variable type as in numpy.dtype. """
         def __get__(self):
@@ -846,22 +1079,62 @@ cdef class var:
         def __get__(self):
             return self.dims
 
+    property shape:
+        """ The shape of the variable. """
+        def __get__(self):
+            return self.dims
+
+    property size:
+        """ The number of elements in the array. """
+        def __get__(self):
+            return np.prod(self.dims)
+
     property nsteps:
         """ The number of time steps of the variable. """
         def __get__(self):
             return self.nsteps
 
-    def __init__(self, file file, char * name):
+    property attrs:
+        """ Attributes associated with the variable. """
+        def __get__(self):
+            return self.attrs
+
+    property blockinfo:
+        """ Block information. """
+        def __get__(self):
+            if self.blockinfo is None:
+                ll = list()
+                k = 0
+                for t in range(self.vp.nsteps):
+                    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)])
+                        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)
+                        k += 1
+                    ll.append(l)
+                self.blockinfo = ll
+            return (self.blockinfo)
+
+    def __init__(self, file file, str name):
         self.file = file
         self.vp = NULL
 
         assert self.file.fp != NULL, 'Not an open file'
-        self.vp = adios_inq_var(self.file.fp, name)
+        self.vp = adios_inq_var(self.file.fp, s2b(name))
         assert self.vp != NULL, 'Not a valid var'
 
+        ## Further populate vp.blockinfo
+        adios_inq_var_blockinfo(self.file.fp, self.vp)
+
         self.name = name
         self.varid = self.vp.varid
-        self.ndim = self.vp.ndim                 
+        self.ndim = self.vp.ndim
         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
         self.nsteps = self.vp.nsteps
 
@@ -870,6 +1143,13 @@ cdef class var:
         else:
             self.dtype = adios2npdtype(self.vp.type)
 
+        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]
+            if name.startswith('/' + self.name + '/'):
+                self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
+
     def __del__(self):
         self.close()
 
@@ -885,7 +1165,105 @@ cdef class var:
         assert self.vp != NULL, 'Not a valid var'
         self.nsteps = self.vp.nsteps
 
-    cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):
+    cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):
+        """ Perform points read.
+
+        Read data from an ADIOS BP file based on the given list of point index.
+
+        Args:
+            points (tuple of int, optional): points index defined by ((o1,o2,...,oN),...) (default: ())
+            from_steps (int, optional): starting step index (default: None)
+            nsteps (int, optional): number of time dimensions (default: None)
+
+        Returns:
+            NumPy 1-D ndarray
+
+        Raises:
+            IndexError: If dimension is mismatched or out of the boundary.
+        """
+        if from_steps is None:
+            from_steps = 0 ##self.file.current_step
+
+        if nsteps is None:
+            nsteps = self.file.last_step - from_steps + 1
+
+        assert self.dtype is not None, 'Data type is not supported yet'
+
+        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):
+            points = (points,)
+
+        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,))
+
+        cpdef uint64_t ndim = self.ndim
+        cpdef uint64_t npoints = len(points)
+        ##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])
+
+        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])
+
+        cdef ADIOS_SELECTION * sel
+        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)
+
+        return var
+
+    cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):
+        """ Perform block read.
+
+        Read data from an ADIOS BP file based on the rank id.
+
+        Args:
+            rank (int): rank id
+            from_steps (int, optional): starting step index (default: None)
+            nsteps (int, optional): number of time dimensions (default: None)
+
+        Returns:
+            NumPy 1-D ndarray
+
+        Raises:
+            IndexError: If dimension is mismatched or out of the boundary.
+        """
+        if from_steps is None:
+            from_steps = 0 ##self.file.current_step
+
+        if nsteps is None:
+            nsteps = self.file.last_step - from_steps + 1
+
+        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)
+
+        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)]
+        if (nsteps>1):
+            shape.insert(0, nsteps)
+        cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
+
+        cdef ADIOS_SELECTION * sel
+        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)
+        return var
+
+    cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+               from_steps = None, nsteps = None, fill = 0, step_scalar = True):
         """ Perform read.
 
         Read data from an ADIOS BP file. Subset reading is
@@ -895,13 +1273,15 @@ cdef class var:
         Args:
             offset (tuple of int, optional): offset (default: ())
             count (tuple of int, optional): count (default: ())
+            scalar (tuple of bool, optional): scalar (default: ())
             from_steps (int, optional): starting step index (default: None)
             nsteps (int, optional): number of time dimensions (default: None)
             fill (value, optional): default fill value (default: 0)
+            step_scalar (bool, optional): add time dim or not (default: True)
 
         Returns:
             NumPy ndarray
-            
+
         Raises:
             IndexError: If dimension is mismatched or out of the boundary.
 
@@ -909,7 +1289,7 @@ cdef class var:
         Example:
 
         The following command will read the full data:
-        
+
         >>> var.read()
 
         which is equvalent to
@@ -918,7 +1298,7 @@ cdef class var:
 
 
         The following command is for subset reading:
-        
+
         >>> var.read(offset=(1,2), count=(3,4))
 
         which will return an 3x4 array offset by (1,2) in the original
@@ -930,7 +1310,7 @@ cdef class var:
 
         >>> var.read(count=(5,6))
         >>> var[:5, :6]
-        
+
         """
         if from_steps is None:
             from_steps = 0 ##self.file.current_step
@@ -939,39 +1319,46 @@ cdef class var:
             nsteps = self.file.last_step - from_steps + 1
 
         assert self.dtype is not None, 'Data type is not supported yet'
+
         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)]
         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)
-        
+
         cdef np.ndarray npoffset
         if len(offset) == 0:
             npoffset = npshape.copy()
             npoffset.fill(0)
         else:
             npoffset = np.array(offset, dtype=np.int64)
-        
+
         cdef np.ndarray npcount
         if len(count) == 0:
             npcount = npshape - npoffset
         else:
             npcount = np.array(count, dtype=np.int64)
 
-        if npshape.ndim != npoffset.ndim:
-            raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))
+        if len(scalar) == 0:
+            scalar = tuple((False,) * len(npshape))
+
+        if len(npshape) != len(npoffset):
+            raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
 
-        if npshape.ndim != npcount.ndim:
-            raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))
+        if len(npshape) != len(npcount):
+            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))
 
         if (npshape < npcount + npoffset).any():
             raise IndexError('Requested is larger than the shape.')
 
-        shape = list(npcount)
-        if (nsteps > 1):
+        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)
-        
+
         if len(shape) > 0:
             var[:] = fill
 
@@ -983,87 +1370,131 @@ cdef class var:
 
         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)
 
-        ## Try not to return as scalar to be consistent
-        ##if (var.ndim == 0):
-        ##    return np.asscalar(var)
-        ##else:
-        ##    return var
-        return np.squeeze(var)
+        if (var.ndim == 0):
+            return np.asscalar(var)
+        else:
+            return var
 
     cpdef printself(self):
         """ 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)
+        print ('=== AdiosVariable ===')
+        print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
+        print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
         printvar(self.vp)
-        
+
     def __repr__(self):
-        return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
+        return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
                (self.varid,
+                self.name,
                 self.dtype,
                 self.ndim,
                 self.dims,
-                self.nsteps)
-
-    def __getitem__(self, index):
-        ndim_ = self.ndim
-        if (self.nsteps) > 1: ndim_ += 1
-
-        index_ = __parse_index(index, ndim_)
-
-        if (ndim_ > 0) and (len(index_) > ndim_):
-            raise IndexError("Too many indices for data")
-
-        if (ndim_ == 0) and (len(index_) > 1):
-            raise IndexError("Too many indices for data")
-        
-        for slice_ in index_:
-            if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
-                raise IndexError("Step size (%d) is not supported." % (slice_.step))
-            if isinstance(slice_, str):
-                raise IndexError("Name index (%r) is not supported." % (slice_))
-        
-        if (self.nsteps) > 1:
-            dims_ = list(self.dims)
-            dims_.insert(0, self.nsteps)
-            indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
-            z = zip(*indices)
-
-            from_steps_ = z[0][0]
-            nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
-            offset_ = z[0][1:]
-            count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
-        else:
-            indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
-            z = zip(*indices)
-
-            if len(z) == 0:
-                from_steps_ = 0
-                nsteps_ = self.nsteps
-                offset_ = ()
-                count_ = ()
+                self.nsteps,
+                self.attrs.keys())
+
+    def _readattr(self, varname):
+        if not isinstance(varname, tuple):
+            varname = (varname,)
+
+        if len(varname) > 1:
+            raise KeyError(varname)
+
+        for key_ in varname:
+            if not isinstance(key_, str):
+                raise TypeError("Unhashable type")
+
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in self.attrs.keys():
+                return self.attrs.get(key_)
+
+            if '/'+key_ in self.attrs.keys():
+                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_):
+                    return group(self.file, self.name + '/' + key_)
+
+    def _readvar(self, args):
+        shape = list(self.dims)
+        if self.nsteps > 1:
+            shape.insert(0, self.nsteps)
+        asel = sel.select(shape, args)
+
+        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:],
+                                 from_steps=asel.sel[0][0],
+                                 nsteps=asel.sel[1][0],
+                                 step_scalar=asel.sel[3][0])
             else:
-                from_steps_ = 0
-                nsteps_ = self.nsteps
-                offset_ = z[0]
-                count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)
-
-        ##print "from_steps", from_steps_
-        ##print "nsteps", nsteps_
-        ##print "offset", offset_
-        ##print "count", count_
-        
-        return self.read(offset=offset_,
-                         count=count_,
-                         from_steps=from_steps_,
-                         nsteps=nsteps_)
-
-cdef class attr:
+                return self.read(offset=asel.sel[0],
+                                 count=asel.sel[1],
+                                 scalar=asel.sel[3],
+                                 from_steps=0,
+                                 nsteps=1)
+
+        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):
+                if (self.nsteps) > 1:
+                    v = self.read(offset=obj[0][1:],
+                                  count=obj[1][1:],
+                                  scalar=obj[3][1:],
+                                  from_steps=obj[0][0],
+                                  nsteps=obj[1][0],
+                                  step_scalar=obj[3][0])
+                else:
+                    v = self.read(offset=obj[0],
+                                  count=obj[1],
+                                  scalar=obj[3],
+                                  from_steps=0,
+                                  nsteps=1)
+
+                var = np.concatenate((var, v), axis=asel.morder[idx])
+
+            var = np.reshape(var, asel.mshape)
+
+            return var
+
+        else:
+            raise NotImplementedError("Not implemented yet")
+
+    def __getitem__(self, args):
+        if isinstance(args, str):
+            return self._readattr(args)
+        else:
+            return self._readvar(args)
+
+    ## For access var/attr/group as an attribute
+    def __getattr__(self, varname):
+        return self.__getitem__(varname)
+
+    ## To support ipython tab completion
+    def __dir__(self):
+        k0 = dir(type(self))
+        ## Normalize to support var starting with '/'
+        ## E.g., f['/attr1'] == f.attr1
+        k2 = normalize_key(self.attrs.keys())
+        return k0 + k2
+
+    ## Require for dictionary key completion
+    def keys(self):
+        return self.attrs.keys()
+
+cdef class attr(object):
     """
     Adios attribute class.
-    
+
     Attribute values are loaded on initialization.
 
     Args:
@@ -1073,10 +1504,10 @@ cdef class attr:
         KeyError: If no attribute name exists.
 
     Note:
-        Users do not need to create this class manually.        
+        Users do not need to create this class manually.
     """
     cdef file file
-    cpdef bytes name
+    cpdef str name
     cpdef np.dtype dtype
     cdef np.ndarray value
 
@@ -1093,9 +1524,12 @@ cdef class attr:
     property value:
         """ The attribute's value """
         def __get__(self):
-            return self.value
+            if (self.value.ndim == 0):
+                return np.asscalar(self.value)
+            else:
+                return self.value
 
-    def __init__(self, file file, char * name):
+    def __init__(self, file file, str name):
         self.file = file
         self.name = name
 
@@ -1104,26 +1538,26 @@ cdef class attr:
         cdef int bytes
         cdef list strlist
         cdef int len
-        
-        err = adios_get_attr(self.file.fp, self.name, &atype, &bytes, <void **> &p)
+
+        err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
 
         if err == 0:
             if atype == DATATYPE.string:
-                bytes = bytes - 1 ## Remove the NULL terminal                
+                bytes = bytes - 1 ## Remove the NULL terminal
             self.dtype = adios2npdtype(atype, bytes)
             if atype == DATATYPE.string_array:
                 strlist = list()
-                len = bytes/sizeof(p)
+                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
-                    
+
             elif self.dtype is None:
-                print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \
-                      (self.name, atype, bytes)
+                print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
+                      (self.name, atype, bytes))
             else:
-                len = bytes/self.dtype.itemsize
+                len = <int>(bytes/self.dtype.itemsize)
                 if len == 1:
                     self.value = np.array(len, dtype=self.dtype)
                 else:
@@ -1132,10 +1566,127 @@ cdef class attr:
         else:
             raise KeyError(name)
 
+    def __getitem__(self, args):
+        val = self.value[args]
+        if (val.ndim == 0):
+            return np.asscalar(val)
+        else:
+            return val
+
     def __repr__(self):
         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
                (self.name, self.dtype, self.value)
 
+cdef class group(dict):
+    """
+    Adios group class.
+
+    Note:
+        Users do not need to create this class manually.
+    """
+    cdef file file
+    cpdef str name
+
+    ## Public Memeber
+    cpdef public softdict vars
+    cpdef public softdict attrs
+
+    def __init__(self, file file, str name):
+        self.file = file
+        self.name = name.rstrip('/')
+
+        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]
+            if name.startswith('/' + self.name + '/'):
+                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 + '/'):
+                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):
+        """
+        Return Adios variable, attribute, or group.
+
+        Args:
+            varname (str): variable or attribute name.
+
+        Raises:
+            KeyError: If no name exists.
+
+        """
+        if not isinstance(varname, tuple):
+            varname = (varname,)
+
+        if len(varname) > 1:
+            raise KeyError(varname)
+
+        for key_ in varname:
+            if not isinstance(key_, str):
+                raise TypeError("Unhashable type")
+
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in self.vars.keys():
+                return self.vars.get(key_)
+
+            if key_ in self.attrs.keys():
+                return self.attrs.get(key_)
+
+            if '/'+key_ in self.vars.keys():
+                return self.vars.get('/'+key_)
+
+            if '/'+key_ in self.attrs.keys():
+                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_):
+                    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_):
+                    return group(self.file, self.name + '/' + key_)
+
+        raise KeyError(key_)
+
+    def __repr__(self):
+        """ Return string representation. """
+        return ("AdiosGroup (vars=%r, attrs=%r)") % \
+                (self.vars.keys(),
+                 self.attrs.keys())
+
+    ## To support ipython tab completion
+    def __getattr__(self, varname):
+        return self.__getitem__(varname)
+
+    def __dir__(self):
+        k0 = dir(type(self))
+        k1 = normalize_key(self.vars.keys())
+        k2 = normalize_key(self.attrs.keys())
+        return k0 + k1 + k2
+
+    ## Require for dictionary key completion
+    def keys(self):
+        return self.vars.keys() + self.attrs.keys()
+
+    def dirs(self):
+        """ 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])
+        for k in self.attrs.keys():
+            if k.startswith('/'): k = k[1:]
+            s.add(os.path.dirname(k).split('/')[0])
+        return list(s-set(['']))
 
 ## Helper dict
 cdef class smartdict(dict):
@@ -1143,14 +1694,14 @@ cdef class smartdict(dict):
     def __init__(self, factory):
         dict.__init__(self)
         self.factory = factory
-        
+
     def __setitem__(self, key, value):
         if key in dict.keys(self):
             dict.__setitem__(self, key, value)
         else:
             self.factory(key, value)
 
-cdef class writer:
+cdef class writer(object):
     """
     writer class for Adios write.
 
@@ -1160,22 +1711,23 @@ cdef class writer:
         comm (MPI_Comm, optional): MPI_comm for parallel read/write (default: MPI_COMM_WORLD).
 
     Example:
-    
+
     >>> import adios as ad
     >>> f = ad.writer('adiosfile.bp')
-    
+
     """
-    
+
     cdef int64_t gid
-    cpdef bytes fname
-    cpdef bytes gname
-    cpdef bytes method
-    cpdef bytes method_params
+    cpdef str fname
+    cpdef str gname
+    cpdef str method
+    cpdef str method_params
     cpdef bint is_noxml
+    cpdef str mode
     cpdef MPI_Comm comm
 
-    cpdef dict var
-    cpdef dict attr
+    cpdef dict vars
+    cpdef dict attrs
 
     property fname:
         """ The filename to write. """
@@ -1186,42 +1738,50 @@ cdef class writer:
         """ The groupname associated with the file. """
         def __get__(self):
             return self.gname
-        
+
     property is_noxml:
         """ Boolean to indicate using No-XML or not. """
         def __get__(self):
             return self.is_noxml
-        
-    property var:
+
+    property mode:
+        """ Writing mode: overwrite or append. """
+        def __get__(self):
+            return self.mode
+
+    property vars:
         """ Dictionary of variables to write. """
         def __get__(self):
-            return self.var
+            return self.vars
 
-    property attr:
+    property attrs:
         """ Dictionary of attributes to write. """
         def __get__(self):
-            return self.attr
-        
-    def __init__(self,char * fname,
+            return self.attrs
+
+    def __init__(self, str fname,
                  bint is_noxml = True,
+                 str mode = "w",
                  MPI_Comm comm = MPI_COMM_WORLD):
         self.fname = fname
-        self.method = <bytes>""
-        self.method_params = <bytes>""
+        self.method = ""
+        self.method_params = ""
         self.is_noxml = is_noxml
+        self.mode = mode
         self.comm = comm
-        self.var = dict()
-        self.attr = dict()
+        self.vars = dict()
+        self.attrs = dict()
 
+        init_noxml(comm)
     ##def __var_factory__(self, name, value):
     ##    print "var_factory:", name, value
     ##
     ##def __attr_factory__(self, name, value):
     ##    print "attr_factory:", name, value
 
-    def declare_group(self, char * gname,
-                      char * method = "POSIX1",
-                      char * method_params = ""):
+    def declare_group(self, str gname,
+                      str method = "POSIX1",
+                      str method_params = ""):
         """
         Define a group associated with the file.
 
@@ -1233,7 +1793,7 @@ cdef class writer:
         Example:
 
         >>>  fw.declare_group('group', method='MPI_, method_params='verbose=3')
-        
+
         """
         self.gid = declare_group(gname, "", 1)
         self.gname = gname
@@ -1241,7 +1801,7 @@ cdef class writer:
         self.method_params = method_params
         select_method(self.gid, self.method, self.method_params, "")
 
-    def define_var(self, char * varname,
+    def define_var(self, str varname,
                    ldim = tuple(),
                    gdim = tuple(),
                    offset = tuple()):
@@ -1259,11 +1819,11 @@ cdef class writer:
         Write 'temperature' variable of size of 2x3 array.
 
         >>>  fw.define_var ('temperature', (2,3))
-        
+
         """
-        self.var[varname] = varinfo(varname, ldim, gdim, offset)
+        self.vars[varname] = varinfo(varname, ldim, gdim, offset)
 
-    def define_attr(self, char * attrname):
+    def define_attr(self, str attrname):
         """
         Define attribute in the file.
 
@@ -1271,81 +1831,96 @@ cdef class writer:
             attrname (str): attribute name.
         """
 
-        self.attr[attrname] = attrinfo(attrname, is_static=True)
+        self.attrs[attrname] = attrinfo(attrname, is_static=True)
 
-    def define_dynamic_attr(self, char * attrname,
-                            char * varname,
+    def define_dynamic_attr(self, str attrname,
+                            str varname,
                             dtype):
-        self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+        self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
     def __setitem__(self, name, val):
-        if self.var.has_key(name):
-            self.var[name].value = val
-        elif self.attr.has_key(name):
-            self.attr[name].value = val
+        if self.vars.has_key(name):
+            self.vars[name] = val
+        elif self.attrs.has_key(name):
+            self.attrs[name] = val
         else:
-            self.var[name] = val
-        
+            self.vars[name] = val
+
     def __getitem__(self, name):
-        if self.var.has_key(name):
-            return self.var[name].value
-        elif self.attr.has_key(name):
-            return self.attr[name].value
+        if self.vars.has_key(name):
+            return self.vars[name]
+        elif self.attrs.has_key(name):
+            return self.attrs[name]
         else:
             raise KeyError(name)
-    
+
     def close(self):
         """
         Write variables and attributes to a file and close the writer.
         """
-        fd = open(self.gname, self.fname, "w")
+        if self.gname is None:
+            self.declare_group("group")
+
+        fd = open(self.gname, self.fname, self.mode)
 
-        extra_var = dict()
-        extra_attr = dict()
+        extra_vars = dict()
+        extra_attrs = dict()
 
-        for key, val in self.var.iteritems():
+        for key, val in self.vars.iteritems():
             if not isinstance(val, varinfo):
                 n = np.array(val)
-                extra_var[key] = varinfo(key, n.shape)
-                extra_var[key].value = val
+                extra_vars[key] = varinfo(key, n.shape)
+                extra_vars[key].value = val
             else:
                 if self.is_noxml: val.define(self.gid)
 
-        for key, val in extra_var.iteritems():
+        for key, val in extra_vars.iteritems():
             if self.is_noxml: val.define(self.gid)
-            self.var[key] = val
+            self.vars[key] = val
 
-        for key, val in self.attr.iteritems():
+        for key, val in self.attrs.iteritems():
             if not isinstance(val, attrinfo):
-                extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
+                extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
             else:
                 if self.is_noxml: val.define(self.gid)
 
-        for key, val in extra_attr.iteritems():
+        for key, val in extra_attrs.iteritems():
             if self.is_noxml: val.define(self.gid)
 
+        """
+        ## No groupsize anymore (Jun 17, 2016)
         groupsize = 0
-        for var in self.var.values():
+        for var in self.vars.values():
             groupsize = groupsize + var.bytes()
 
         set_group_size(fd, groupsize)
+        """
 
-        for var in self.var.values():
+        for var in self.vars.values():
             var.write(fd)
-            
+
         close(fd)
-    
+
     def __repr__(self):
         return ("AdiosWriter (fname=%r, gname=%r, "
-                "method=%r, method_params=%r, var=%r, attr=%r)") % \
+                "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
                 (self.fname,
                  self.gname,
                  self.method,
                  self.method_params,
-                 self.var.keys(),
-                 self.attr.keys())
+                 self.vars.keys(),
+                 self.attrs.keys(),
+                 self.mode)
 
-cdef class attrinfo:
-    cdef bytes name
+    def __enter__(self):
+        """ Enter for with statemetn """
+        return self
+
+    def __exit__(self, exception_type, exception_value, traceback):
+        """ Close file on exit. """
+        self.close()
+
+cdef class attrinfo(object):
+    cdef str name
     cdef bint is_static # Use define_byvalue, if True
     cdef dtype
     cdef value # Either varname or nparray
@@ -1361,15 +1936,15 @@ cdef class attrinfo:
     property dtype:
         def __get__(self):
             return self.dtype
-        
+
     property value:
         def __get__(self):
             return self.value
-        
+
         def __set__(self, value):
             self.value = value
-        
-    def __init__(self, char * name,
+
+    def __init__(self, str name,
                  value = None,
                  dtype = None,
                  bint is_static = True):
@@ -1382,14 +1957,14 @@ cdef class attrinfo:
         if self.is_static:
             if self.value is None:
                 raise TypeError("Value is none")
-            
+
             define_attribute_byvalue(gid, self.name, "", self.value)
         else:
             ##atype = np2adiostype(np.dtype(self.dtype))
             ##define_attribute(gid, self.name, "",
             ##                 atype, "", str(self.value))
-            raise NotImplementedError            
-        
+            raise NotImplementedError
+
     def __repr__(self):
         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
                 (self.name,
@@ -1397,22 +1972,24 @@ cdef class attrinfo:
                  self.value,
                  self.dtype)
 
-cdef class varinfo:
-    cdef bytes name
+cdef class varinfo(object):
+    cdef str name
     cdef public ldim
     cdef public gdim
     cdef public offset
     cdef public value
 
-    def __init__(self, char * name,
+    def __init__(self, str name,
                  ldim = tuple(),
                  gdim = tuple(),
-                 offset = tuple()):
+                 offset = tuple(),
+                 value = None):
         self.name = name
         self.ldim = ldim
         self.gdim = gdim
         self.offset = offset
-        
+        self.value = value
+
     def define(self, int64_t gid):
         if self.value is None:
             raise TypeError("Value is none")
@@ -1444,20 +2021,28 @@ cdef class varinfo:
         val_ = self.value
         if not isinstance(self.value, (np.ndarray)):
             val_ = np.array(self.value)
-        
+
         return val_.size * val_.itemsize
-    
-    def write(self, int64_t fd): 
+
+    def write(self, int64_t fd):
         val_ = self.value
         if not isinstance(self.value, (np.ndarray)):
             val_ = np.array(self.value)
-        
+
         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)
-        
+
+## Aliases
+File = file
+Var = var
+Attr = attr
+Writer = writer
+Attrinfo = attrinfo
+Varinfo = varinfo
+
 ## ====================
 ## ADIOS Global functions
 ## ====================
@@ -1473,11 +2058,7 @@ def readvar(fname, varname):
         NumPy ndarray: variable value
     """
     f = file(fname, comm=MPI_COMM_SELF)
-    if not f.var.has_key(varname):
-        print "No valid variable"
-        return
-
-    v = f.var[varname]
+    v = f[varname]
     return v.read(from_steps=0, nsteps=v.nsteps)
 
 def bpls(fname):
@@ -1492,7 +2073,7 @@ def bpls(fname):
     f = file(fname, comm=MPI_COMM_SELF)
     return {'nvars': f.nvars,
             'nattrs': f.nattrs,
-            'vars': tuple([ k for k in f.var.iterkeys() ]),
-            'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+            '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}
diff --git a/wrappers/numpy/adios_mpi.cpp b/wrappers/numpy/adios_mpi.cpp
index ffaa23b..e03d7b6 100644
--- a/wrappers/numpy/adios_mpi.cpp
+++ b/wrappers/numpy/adios_mpi.cpp
@@ -1,28 +1,16 @@
-/* Generated by Cython 0.22 */
+/* Generated by Cython 0.24 */
 
 #define PY_SSIZE_T_CLEAN
-#ifndef CYTHON_USE_PYLONG_INTERNALS
-#ifdef PYLONG_BITS_IN_DIGIT
-#define CYTHON_USE_PYLONG_INTERNALS 0
-#else
-#include "pyconfig.h"
-#ifdef PYLONG_BITS_IN_DIGIT
-#define CYTHON_USE_PYLONG_INTERNALS 1
-#else
-#define CYTHON_USE_PYLONG_INTERNALS 0
-#endif
-#endif
-#endif
 #include "Python.h"
 #ifndef Py_PYTHON_H
     #error Python headers needed to compile C extensions, please install development version of Python.
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
     #error Cython requires Python 2.6+ or Python 3.2+.
 #else
-#define CYTHON_ABI "0_22"
+#define CYTHON_ABI "0_24"
 #include <stddef.h>
 #ifndef offsetof
-#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
 #endif
 #if !defined(WIN32) && !defined(MS_WINDOWS)
   #ifndef __stdcall
@@ -48,45 +36,59 @@
   #define Py_HUGE_VAL HUGE_VAL
 #endif
 #ifdef PYPY_VERSION
-#define CYTHON_COMPILING_IN_PYPY 1
-#define CYTHON_COMPILING_IN_CPYTHON 0
+  #define CYTHON_COMPILING_IN_PYPY 1
+  #define CYTHON_COMPILING_IN_CPYTHON 0
 #else
-#define CYTHON_COMPILING_IN_PYPY 0
-#define CYTHON_COMPILING_IN_CPYTHON 1
+  #define CYTHON_COMPILING_IN_PYPY 0
+  #define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
+  #define CYTHON_USE_PYLONG_INTERNALS 1
+#endif
+#if CYTHON_USE_PYLONG_INTERNALS
+  #include "longintrepr.h"
+  #undef SHIFT
+  #undef BASE
+  #undef MASK
 #endif
 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
-#define Py_OptimizeFlag 0
+  #define Py_OptimizeFlag 0
 #endif
 #define __PYX_BUILD_PY_SSIZE_T "n"
 #define CYTHON_FORMAT_SSIZE_T "z"
 #if PY_MAJOR_VERSION < 3
   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
-  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
           PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
   #define __Pyx_DefaultClassType PyClass_Type
 #else
   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
-  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
   #define __Pyx_DefaultClassType PyType_Type
 #endif
-#if PY_MAJOR_VERSION >= 3
+#ifndef Py_TPFLAGS_CHECKTYPES
   #define Py_TPFLAGS_CHECKTYPES 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_INDEX
   #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
 #endif
-#if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE)
+#ifndef Py_TPFLAGS_HAVE_FINALIZE
   #define Py_TPFLAGS_HAVE_FINALIZE 0
 #endif
 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
   #define CYTHON_PEP393_ENABLED 1
-  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                               0 : _PyUnicode_Ready((PyObject *)(op)))
   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
 #else
   #define CYTHON_PEP393_ENABLED 0
   #define __Pyx_PyUnicode_READY(op)       (0)
@@ -95,16 +97,26 @@
   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
 #endif
 #if CYTHON_COMPILING_IN_PYPY
   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
   #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
-  #define __Pyx_PyFrozenSet_Size(s)         PyObject_Size(s)
 #else
   #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
-  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ? \
+  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
       PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
-  #define __Pyx_PyFrozenSet_Size(s)         PySet_Size(s)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
+  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
+  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
+#endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
+  #define PyObject_Malloc(s)   PyMem_Malloc(s)
+  #define PyObject_Free(p)     PyMem_Free(p)
+  #define PyObject_Realloc(p)  PyMem_Realloc(p)
 #endif
 #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
@@ -113,6 +125,9 @@
 #else
   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
 #endif
+#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
+  #define PyObject_ASCII(o)            PyObject_Repr(o)
+#endif
 #if PY_MAJOR_VERSION >= 3
   #define PyBaseString_Type            PyUnicode_Type
   #define PyStringObject               PyUnicodeObject
@@ -169,16 +184,18 @@
 #else
   #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
 #endif
-#ifndef CYTHON_INLINE
-  #if defined(__GNUC__)
-    #define CYTHON_INLINE __inline__
-  #elif defined(_MSC_VER)
-    #define CYTHON_INLINE __inline
-  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-    #define CYTHON_INLINE inline
-  #else
-    #define CYTHON_INLINE
-  #endif
+#if PY_VERSION_HEX >= 0x030500B1
+#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
+#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
+#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
+typedef struct {
+    unaryfunc am_await;
+    unaryfunc am_aiter;
+    unaryfunc am_anext;
+} __Pyx_PyAsyncMethodsStruct;
+#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
+#else
+#define __Pyx_PyType_AsAsync(obj) NULL
 #endif
 #ifndef CYTHON_RESTRICT
   #if defined(__GNUC__)
@@ -191,37 +208,49 @@
     #define CYTHON_RESTRICT
   #endif
 #endif
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
-  /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and
-   a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is
-   a quiet NaN. */
-  float value;
-  memset(&value, 0xFF, sizeof(value));
-  return value;
-}
+#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
+
+#ifndef __cplusplus
+  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
+#endif
+#ifndef CYTHON_INLINE
+  #define CYTHON_INLINE inline
 #endif
-#define __Pyx_void_to_None(void_result) (void_result, Py_INCREF(Py_None), Py_None)
-#ifdef __cplusplus
 template<typename T>
-void __Pyx_call_destructor(T* x) {
-    x->~T();
+void __Pyx_call_destructor(T& x) {
+    x.~T();
 }
 template<typename T>
 class __Pyx_FakeReference {
   public:
     __Pyx_FakeReference() : ptr(NULL) { }
-    __Pyx_FakeReference(T& ref) : ptr(&ref) { }
+    __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
     T *operator->() { return ptr; }
     operator T&() { return *ptr; }
   private:
     T *ptr;
 };
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+  #define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#ifdef NAN
+#define __PYX_NAN() ((float) NAN)
+#else
+static CYTHON_INLINE float __PYX_NAN() {
+  float value;
+  memset(&value, 0xFF, sizeof(value));
+  return value;
+}
 #endif
 
 
+#define __PYX_ERR(f_index, lineno, Ln_error) \
+{ \
+  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
+}
+
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
@@ -238,12 +267,9 @@ class __Pyx_FakeReference {
   #endif
 #endif
 
-#if defined(WIN32) || defined(MS_WINDOWS)
-#define _USE_MATH_DEFINES
-#endif
-#include <math.h>
 #define __PYX_HAVE__adios_mpi
 #define __PYX_HAVE_API__adios_mpi
+#include "mpi-compat.h"
 #include "string.h"
 #include "stdio.h"
 #include "stdlib.h"
@@ -276,7 +302,14 @@ class __Pyx_FakeReference {
 #   define CYTHON_UNUSED
 # endif
 #endif
-typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
+#ifndef CYTHON_NCP_UNUSED
+# if CYTHON_COMPILING_IN_CPYTHON
+#  define CYTHON_NCP_UNUSED
+# else
+#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
@@ -284,16 +317,34 @@ typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (    \
-    (sizeof(type) < sizeof(Py_ssize_t))  ||             \
-    (sizeof(type) > sizeof(Py_ssize_t) &&               \
-          likely(v < (type)PY_SSIZE_T_MAX ||            \
-                 v == (type)PY_SSIZE_T_MAX)  &&         \
-          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||       \
-                                v == (type)PY_SSIZE_T_MIN)))  ||  \
-    (sizeof(type) == sizeof(Py_ssize_t) &&              \
-          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||        \
+#define __Pyx_uchar_cast(c) ((unsigned char)c)
+#define __Pyx_long_cast(x) ((long)x)
+#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
+    (sizeof(type) < sizeof(Py_ssize_t))  ||\
+    (sizeof(type) > sizeof(Py_ssize_t) &&\
+          likely(v < (type)PY_SSIZE_T_MAX ||\
+                 v == (type)PY_SSIZE_T_MAX)  &&\
+          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
+                                v == (type)PY_SSIZE_T_MIN)))  ||\
+    (sizeof(type) == sizeof(Py_ssize_t) &&\
+          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                                v == (type)PY_SSIZE_T_MAX)))  )
+#if defined (__cplusplus) && __cplusplus >= 201103L
+    #include <cstdlib>
+    #define __Pyx_sst_abs(value) std::abs(value)
+#elif SIZEOF_INT >= SIZEOF_SIZE_T
+    #define __Pyx_sst_abs(value) abs(value)
+#elif SIZEOF_LONG >= SIZEOF_SIZE_T
+    #define __Pyx_sst_abs(value) labs(value)
+#elif defined (_MSC_VER) && defined (_M_X64)
+    #define __Pyx_sst_abs(value) _abs64(value)
+#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define __Pyx_sst_abs(value) llabs(value)
+#elif defined (__GNUC__)
+    #define __Pyx_sst_abs(value) __builtin_llabs(value)
+#else
+    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
+#endif
 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
@@ -328,10 +379,11 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
 #define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
-#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
+#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
 #if CYTHON_COMPILING_IN_CPYTHON
@@ -340,6 +392,12 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
 #endif
 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+#if PY_MAJOR_VERSION >= 3
+#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
+#else
+#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
+#endif
+#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
 static int __Pyx_sys_getdefaultencoding_not_ascii;
 static int __Pyx_init_sys_getdefaultencoding_params(void) {
@@ -430,11 +488,13 @@ static PyObject *__pyx_d;
 static PyObject *__pyx_b;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
+static PyObject *__pyx_empty_unicode;
 static int __pyx_lineno;
 static int __pyx_clineno = 0;
 static const char * __pyx_cfilenm= __FILE__;
 static const char *__pyx_filename;
 
+/* None.proto */
 #if !defined(CYTHON_CCOMPLEX)
   #if defined(__cplusplus)
     #define CYTHON_CCOMPLEX 1
@@ -464,7 +524,7 @@ static const char *__pyx_f[] = {
   "MPI.pxd",
 };
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":726
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":725
  * # in Cython to enable them only on the right systems.
  * 
  * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
@@ -473,7 +533,7 @@ static const char *__pyx_f[] = {
  */
 typedef npy_int8 __pyx_t_5numpy_int8_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":727
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":726
  * 
  * ctypedef npy_int8       int8_t
  * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
@@ -482,7 +542,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
  */
 typedef npy_int16 __pyx_t_5numpy_int16_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":728
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":727
  * ctypedef npy_int8       int8_t
  * ctypedef npy_int16      int16_t
  * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
@@ -491,7 +551,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
  */
 typedef npy_int32 __pyx_t_5numpy_int32_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":729
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":728
  * ctypedef npy_int16      int16_t
  * ctypedef npy_int32      int32_t
  * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
@@ -500,7 +560,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
  */
 typedef npy_int64 __pyx_t_5numpy_int64_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
  * #ctypedef npy_int128     int128_t
  * 
  * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
@@ -509,7 +569,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
  */
 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":734
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
  * 
  * ctypedef npy_uint8      uint8_t
  * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
@@ -518,7 +578,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
  */
 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":735
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":734
  * ctypedef npy_uint8      uint8_t
  * ctypedef npy_uint16     uint16_t
  * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
@@ -527,7 +587,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
  */
 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":736
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":735
  * ctypedef npy_uint16     uint16_t
  * ctypedef npy_uint32     uint32_t
  * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
@@ -536,7 +596,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
  */
 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
  * #ctypedef npy_uint128    uint128_t
  * 
  * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
@@ -545,7 +605,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
  */
 typedef npy_float32 __pyx_t_5numpy_float32_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":741
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
  * 
  * ctypedef npy_float32    float32_t
  * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
@@ -554,7 +614,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
  */
 typedef npy_float64 __pyx_t_5numpy_float64_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":749
  * # The int types are mapped a bit surprising --
  * # numpy.int corresponds to 'l' and numpy.long to 'q'
  * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
@@ -563,7 +623,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
  */
 typedef npy_long __pyx_t_5numpy_int_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750
  * # numpy.int corresponds to 'l' and numpy.long to 'q'
  * ctypedef npy_long       int_t
  * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
@@ -572,7 +632,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
  */
 typedef npy_longlong __pyx_t_5numpy_long_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":752
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751
  * ctypedef npy_long       int_t
  * ctypedef npy_longlong   long_t
  * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
@@ -581,7 +641,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
  */
 typedef npy_longlong __pyx_t_5numpy_longlong_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":753
  * ctypedef npy_longlong   longlong_t
  * 
  * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
@@ -590,7 +650,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
  */
 typedef npy_ulong __pyx_t_5numpy_uint_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
  * 
  * ctypedef npy_ulong      uint_t
  * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
@@ -599,7 +659,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
  */
 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
  * ctypedef npy_ulong      uint_t
  * ctypedef npy_ulonglong  ulong_t
  * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
@@ -608,7 +668,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
  */
 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":757
  * ctypedef npy_ulonglong  ulonglong_t
  * 
  * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
@@ -617,7 +677,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
  */
 typedef npy_intp __pyx_t_5numpy_intp_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
  * 
  * ctypedef npy_intp       intp_t
  * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
@@ -626,7 +686,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
  */
 typedef npy_uintp __pyx_t_5numpy_uintp_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":761
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
  * ctypedef npy_uintp      uintp_t
  * 
  * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
@@ -635,7 +695,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
  */
 typedef npy_double __pyx_t_5numpy_float_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":761
  * 
  * ctypedef npy_double     float_t
  * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
@@ -644,7 +704,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
  */
 typedef npy_double __pyx_t_5numpy_double_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
  * ctypedef npy_double     float_t
  * ctypedef npy_double     double_t
  * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
@@ -652,6 +712,7 @@ typedef npy_double __pyx_t_5numpy_double_t;
  * ctypedef npy_cfloat      cfloat_t
  */
 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     typedef ::std::complex< float > __pyx_t_float_complex;
@@ -662,6 +723,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
     typedef struct { float real, imag; } __pyx_t_float_complex;
 #endif
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     typedef ::std::complex< double > __pyx_t_double_complex;
@@ -679,30 +741,32 @@ struct PyMPIDatatypeObject;
 struct PyMPIRequestObject;
 struct PyMPIPrequestObject;
 struct PyMPIGrequestObject;
+struct PyMPIMessageObject;
 struct PyMPIOpObject;
 struct PyMPIGroupObject;
 struct PyMPIInfoObject;
 struct PyMPIErrhandlerObject;
 struct PyMPICommObject;
 struct PyMPIIntracommObject;
+struct PyMPITopocommObject;
 struct PyMPICartcommObject;
 struct PyMPIGraphcommObject;
 struct PyMPIDistgraphcommObject;
 struct PyMPIIntercommObject;
 struct PyMPIWinObject;
 struct PyMPIFileObject;
+struct __pyx_obj_9adios_mpi_softdict;
 struct __pyx_obj_9adios_mpi_file;
+struct __pyx_obj_9adios_mpi_blockinfo;
 struct __pyx_obj_9adios_mpi_var;
 struct __pyx_obj_9adios_mpi_attr;
+struct __pyx_obj_9adios_mpi_group;
 struct __pyx_obj_9adios_mpi_smartdict;
 struct __pyx_obj_9adios_mpi_writer;
 struct __pyx_obj_9adios_mpi_attrinfo;
 struct __pyx_obj_9adios_mpi_varinfo;
-struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__;
-struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr;
-struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":764
  * ctypedef npy_longdouble longdouble_t
  * 
  * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
@@ -711,7 +775,7 @@ struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr;
  */
 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
  * 
  * ctypedef npy_cfloat      cfloat_t
  * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
@@ -720,7 +784,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
  */
 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
  * ctypedef npy_cfloat      cfloat_t
  * ctypedef npy_cdouble     cdouble_t
  * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
@@ -729,7 +793,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
  */
 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":768
  * ctypedef npy_clongdouble clongdouble_t
  * 
  * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
@@ -749,36 +813,38 @@ struct __pyx_opt_args_9adios_mpi_adios2npdtype;
 struct __pyx_opt_args_9adios_mpi_read_init;
 struct __pyx_opt_args_9adios_mpi_read_finalize;
 struct __pyx_opt_args_9adios_mpi_4file_advance;
+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":304
- * ## ====================
- * 
- * cpdef init(char * config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm.ob_mpi)
+/* "adios_mpi.pyx":380
+ * cdef MPI.Comm read_init_comm
  * 
+ * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm.Clone()
  */
 struct __pyx_opt_args_9adios_mpi_init {
   int __pyx_n;
   struct PyMPICommObject *comm;
 };
 
-/* "adios_mpi.pyx":307
- *     return adios_init(config, comm.ob_mpi)
+/* "adios_mpi.pyx":385
+ *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
  */
 struct __pyx_opt_args_9adios_mpi_open {
   int __pyx_n;
   struct PyMPICommObject *comm;
 };
 
-/* "adios_mpi.pyx":322
+/* "adios_mpi.pyx":400
  *     return total_size
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):             # <<<<<<<<<<<<<<
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):
  */
@@ -787,7 +853,7 @@ struct __pyx_opt_args_9adios_mpi_write {
   PyObject *dtype;
 };
 
-/* "adios_mpi.pyx":355
+/* "adios_mpi.pyx":440
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -799,59 +865,59 @@ struct __pyx_opt_args_9adios_mpi_finalize {
   int mype;
 };
 
-/* "adios_mpi.pyx":361
- * ## ADIOS No-XML API
+/* "adios_mpi.pyx":447
  * ## ====================
- * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm.ob_mpi)
  * 
+ * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm.Clone()
  */
 struct __pyx_opt_args_9adios_mpi_init_noxml {
   int __pyx_n;
   struct PyMPICommObject *comm;
 };
 
-/* "adios_mpi.pyx":369
+/* "adios_mpi.pyx":457
  *                                  buffer_size)
  * 
- * cpdef int64_t declare_group(char * name,             # <<<<<<<<<<<<<<
- *                             char * time_index = "",
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
  *                             int stats = 1):
  */
 struct __pyx_opt_args_9adios_mpi_declare_group {
   int __pyx_n;
-  char *time_index;
+  PyObject *time_index;
   int stats;
 };
 
-/* "adios_mpi.pyx":379
+/* "adios_mpi.pyx":467
  *     return id
  * 
  * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
- *                      char * name,
- *                      char * path,
+ *                      str name,
+ *                      str path,
  */
 struct __pyx_opt_args_9adios_mpi_define_var {
   int __pyx_n;
-  char *dimensions;
-  char *global_dimensions;
-  char *local_offsets;
+  PyObject *dimensions;
+  PyObject *global_dimensions;
+  PyObject *local_offsets;
 };
 
-/* "adios_mpi.pyx":449
+/* "adios_mpi.pyx":539
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
- *                          char * method,
- *                          char * parameters = "",
+ *                          str method,
+ *                          str parameters = "",
  */
 struct __pyx_opt_args_9adios_mpi_select_method {
   int __pyx_n;
-  char *parameters;
-  char *base_path;
+  PyObject *parameters;
+  PyObject *base_path;
 };
 
-/* "adios_mpi.pyx":463
+/* "adios_mpi.pyx":553
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -863,34 +929,34 @@ struct __pyx_opt_args_9adios_mpi_adios2npdtype {
   int strlen;
 };
 
-/* "adios_mpi.pyx":591
+/* "adios_mpi.pyx":682
  * 
  * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
+ * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
  *                     MPI.Comm comm = MPI.COMM_WORLD,
- *                     char * parameters = ""):
+ *                     str parameters = ""):
  */
 struct __pyx_opt_args_9adios_mpi_read_init {
   int __pyx_n;
-  char *method_name;
+  PyObject *method_name;
   struct PyMPICommObject *comm;
-  char *parameters;
+  PyObject *parameters;
 };
 
-/* "adios_mpi.pyx":599
+/* "adios_mpi.pyx":692
  * 
  * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):             # <<<<<<<<<<<<<<
+ * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
  *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)
+ *     return adios_read_finalize_method (s2b(method))
  */
 struct __pyx_opt_args_9adios_mpi_read_finalize {
   int __pyx_n;
-  char *method_name;
+  PyObject *method_name;
 };
 
-/* "adios_mpi.pyx":735
- *         printfile(self.fp)
+/* "adios_mpi.pyx":869
+ *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
  *         """
@@ -902,24 +968,53 @@ struct __pyx_opt_args_9adios_mpi_4file_advance {
   float timeout_sec;
 };
 
-/* "adios_mpi.pyx":887
+/* "adios_mpi.pyx":1167
  *         self.nsteps = self.vp.nsteps
  * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):             # <<<<<<<<<<<<<<
- *         """ Perform read.
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform points read.
  * 
  */
+struct __pyx_opt_args_9adios_mpi_3var_read_points {
+  int __pyx_n;
+  PyObject *points;
+  PyObject *from_steps;
+  PyObject *nsteps;
+};
+
+/* "adios_mpi.pyx":1223
+ *         return var
+ * 
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform block read.
+ * 
+ */
+struct __pyx_opt_args_9adios_mpi_3var_read_writeblock {
+  int __pyx_n;
+  PyObject *from_steps;
+  PyObject *nsteps;
+};
+
+/* "adios_mpi.pyx":1264
+ *         return var
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
+ */
 struct __pyx_opt_args_9adios_mpi_3var_read {
   int __pyx_n;
   PyObject *offset;
   PyObject *count;
+  PyObject *scalar;
   PyObject *from_steps;
   PyObject *nsteps;
   PyObject *fill;
+  PyObject *step_scalar;
 };
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":49
- *     ctypedef MPI_Offset Offset "MPI_Offset"
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":28
+ *     ctypedef MPI_Count  Count  "MPI_Count"
  * 
  * ctypedef public api class Status [             # <<<<<<<<<<<<<<
  *     type   PyMPIStatus_Type,
@@ -928,14 +1023,14 @@ struct __pyx_opt_args_9adios_mpi_3var_read {
 struct PyMPIStatusObject {
   PyObject_HEAD
   MPI_Status ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPIStatusObject PyMPIStatusObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIStatus_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":56
- *     cdef int        flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":35
+ *     cdef unsigned   flags
  * 
  * ctypedef public api class Datatype [             # <<<<<<<<<<<<<<
  *     type   PyMPIDatatype_Type,
@@ -944,14 +1039,14 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIStatus_Type;
 struct PyMPIDatatypeObject {
   PyObject_HEAD
   MPI_Datatype ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPIDatatypeObject PyMPIDatatypeObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIDatatype_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":63
- *     cdef int          flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":42
+ *     cdef unsigned     flags
  * 
  * ctypedef public api class Request [             # <<<<<<<<<<<<<<
  *     type   PyMPIRequest_Type,
@@ -960,14 +1055,14 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIDatatype_Type;
 struct PyMPIRequestObject {
   PyObject_HEAD
   MPI_Request ob_mpi;
-  int flags;
+  unsigned int flags;
   PyObject *ob_buf;
 };
 typedef struct PyMPIRequestObject PyMPIRequestObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIRequest_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":71
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":50
  *     cdef object      ob_buf
  * 
  * ctypedef public api class Prequest(Request) [             # <<<<<<<<<<<<<<
@@ -981,7 +1076,7 @@ typedef struct PyMPIPrequestObject PyMPIPrequestObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIPrequest_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":77
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":56
  *     pass
  * 
  * ctypedef public api class Grequest(Request) [             # <<<<<<<<<<<<<<
@@ -996,9 +1091,26 @@ typedef struct PyMPIGrequestObject PyMPIGrequestObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGrequest_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":83
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":62
  *     cdef MPI_Request ob_grequest
  * 
+ * ctypedef public api class Message [             # <<<<<<<<<<<<<<
+ *     type   PyMPIMessage_Type,
+ *     object PyMPIMessageObject,
+ */
+struct PyMPIMessageObject {
+  PyObject_HEAD
+  MPI_Message ob_mpi;
+  unsigned int flags;
+  PyObject *ob_buf;
+};
+typedef struct PyMPIMessageObject PyMPIMessageObject;
+
+__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIMessage_Type;
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":70
+ *     cdef object      ob_buf
+ * 
  * ctypedef public api class Op [             # <<<<<<<<<<<<<<
  *     type   PyMPIOp_Type,
  *     object PyMPIOpObject,
@@ -1014,7 +1126,7 @@ typedef struct PyMPIOpObject PyMPIOpObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIOp_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":92
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":79
  *     cdef int    ob_usrid
  * 
  * ctypedef public api class Group [             # <<<<<<<<<<<<<<
@@ -1024,14 +1136,14 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIOp_Type;
 struct PyMPIGroupObject {
   PyObject_HEAD
   MPI_Group ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPIGroupObject PyMPIGroupObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGroup_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":99
- *     cdef int       flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":86
+ *     cdef unsigned  flags
  * 
  * ctypedef public api class Info [             # <<<<<<<<<<<<<<
  *     type   PyMPIInfo_Type,
@@ -1040,14 +1152,14 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGroup_Type;
 struct PyMPIInfoObject {
   PyObject_HEAD
   MPI_Info ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPIInfoObject PyMPIInfoObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIInfo_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":106
- *     cdef int      flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":93
+ *     cdef unsigned flags
  * 
  * ctypedef public api class Errhandler [             # <<<<<<<<<<<<<<
  *     type   PyMPIErrhandler_Type,
@@ -1056,14 +1168,14 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIInfo_Type;
 struct PyMPIErrhandlerObject {
   PyObject_HEAD
   MPI_Errhandler ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPIErrhandlerObject PyMPIErrhandlerObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIErrhandler_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":113
- *     cdef int            flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":100
+ *     cdef unsigned       flags
  * 
  * ctypedef public api class Comm [             # <<<<<<<<<<<<<<
  *     type   PyMPIComm_Type,
@@ -1072,14 +1184,14 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIErrhandler_Type;
 struct PyMPICommObject {
   PyObject_HEAD
   MPI_Comm ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPICommObject PyMPICommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIComm_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":120
- *     cdef int      flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":107
+ *     cdef unsigned flags
  * 
  * ctypedef public api class Intracomm(Comm) [             # <<<<<<<<<<<<<<
  *     type   PyMPIIntracomm_Type,
@@ -1092,49 +1204,63 @@ typedef struct PyMPIIntracommObject PyMPIIntracommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIIntracomm_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":126
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":113
+ *     pass
+ * 
+ * ctypedef public api class Topocomm(Intracomm) [             # <<<<<<<<<<<<<<
+ *     type   PyMPITopocomm_Type,
+ *     object PyMPITopocommObject,
+ */
+struct PyMPITopocommObject {
+  struct PyMPIIntracommObject __pyx_base;
+};
+typedef struct PyMPITopocommObject PyMPITopocommObject;
+
+__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPITopocomm_Type;
+
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":119
  *     pass
  * 
- * ctypedef public api class Cartcomm(Intracomm) [             # <<<<<<<<<<<<<<
+ * ctypedef public api class Cartcomm(Topocomm) [             # <<<<<<<<<<<<<<
  *     type   PyMPICartcomm_Type,
  *     object PyMPICartcommObject,
  */
 struct PyMPICartcommObject {
-  struct PyMPIIntracommObject __pyx_base;
+  struct PyMPITopocommObject __pyx_base;
 };
 typedef struct PyMPICartcommObject PyMPICartcommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPICartcomm_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":132
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":125
  *     pass
  * 
- * ctypedef public api class Graphcomm(Intracomm) [             # <<<<<<<<<<<<<<
+ * ctypedef public api class Graphcomm(Topocomm) [             # <<<<<<<<<<<<<<
  *     type   PyMPIGraphcomm_Type,
  *     object PyMPIGraphcommObject,
  */
 struct PyMPIGraphcommObject {
-  struct PyMPIIntracommObject __pyx_base;
+  struct PyMPITopocommObject __pyx_base;
 };
 typedef struct PyMPIGraphcommObject PyMPIGraphcommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGraphcomm_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":138
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":131
  *     pass
  * 
- * ctypedef public api class Distgraphcomm(Intracomm) [             # <<<<<<<<<<<<<<
+ * ctypedef public api class Distgraphcomm(Topocomm) [             # <<<<<<<<<<<<<<
  *     type   PyMPIDistgraphcomm_Type,
  *     object PyMPIDistgraphcommObject,
  */
 struct PyMPIDistgraphcommObject {
-  struct PyMPIIntracommObject __pyx_base;
+  struct PyMPITopocommObject __pyx_base;
 };
 typedef struct PyMPIDistgraphcommObject PyMPIDistgraphcommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIDistgraphcomm_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":144
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":137
  *     pass
  * 
  * ctypedef public api class Intercomm(Comm) [             # <<<<<<<<<<<<<<
@@ -1148,7 +1274,7 @@ typedef struct PyMPIIntercommObject PyMPIIntercommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIIntercomm_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":150
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":143
  *     pass
  * 
  * ctypedef public api class Win [             # <<<<<<<<<<<<<<
@@ -1158,14 +1284,15 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIIntercomm_Type;
 struct PyMPIWinObject {
   PyObject_HEAD
   MPI_Win ob_mpi;
-  int flags;
+  unsigned int flags;
+  PyObject *ob_mem;
 };
 typedef struct PyMPIWinObject PyMPIWinObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIWin_Type;
 
-/* "../../../../Library/Python/2.7/lib/python/site-packages/mpi4py/include/mpi4py/MPI.pxd":157
- *     cdef int     flags
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/mpi4py/include/mpi4py/MPI.pxd":151
+ *     cdef object   ob_mem
  * 
  * ctypedef public api class File [             # <<<<<<<<<<<<<<
  *     type   PyMPIFile_Type,
@@ -1174,21 +1301,33 @@ __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIWin_Type;
 struct PyMPIFileObject {
   PyObject_HEAD
   MPI_File ob_mpi;
-  int flags;
+  unsigned int flags;
 };
 typedef struct PyMPIFileObject PyMPIFileObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIFile_Type;
 
-/* "adios_mpi.pyx":604
+/* "adios_mpi.pyx":697
+ * 
+ * ## dict for handling '/' prefix
+ * cdef class softdict(dict):             # <<<<<<<<<<<<<<
+ *     def __getitem__(self, varname):
+ *         if not isinstance(varname, tuple):
+ */
+struct __pyx_obj_9adios_mpi_softdict {
+  PyDictObject __pyx_base;
+};
+
+
+/* "adios_mpi.pyx":721
  * 
  * ## Python class for ADIOS_FILE structure
- * cdef class file:             # <<<<<<<<<<<<<<
+ * cdef class file(dict):             # <<<<<<<<<<<<<<
  *     """
  *     file class for Adios file read and write.
  */
 struct __pyx_obj_9adios_mpi_file {
-  PyObject_HEAD
+  PyDictObject __pyx_base;
   struct __pyx_vtabstruct_9adios_mpi_file *__pyx_vtab;
   ADIOS_FILE *fp;
   PyObject *name;
@@ -1200,20 +1339,38 @@ struct __pyx_obj_9adios_mpi_file {
   int version;
   int file_size;
   int is_stream;
+  struct __pyx_obj_9adios_mpi_softdict *vars;
+  struct __pyx_obj_9adios_mpi_softdict *attrs;
   PyObject *var;
   PyObject *attr;
 };
 
 
-/* "adios_mpi.pyx":797
- *                  self.file_size)
+/* "adios_mpi.pyx":993
+ *         return list(s-set(['']))
+ * 
+ * cdef class blockinfo(object):             # <<<<<<<<<<<<<<
+ *     cpdef tuple start
+ *     cpdef tuple count
+ */
+struct __pyx_obj_9adios_mpi_blockinfo {
+  PyObject_HEAD
+  PyObject *start;
+  PyObject *count;
+  int process_id;
+  int time_index;
+};
+
+
+/* "adios_mpi.pyx":1028
+ *                 self.count)
  * 
- * cdef class var:             # <<<<<<<<<<<<<<
+ * cdef class var(dict):             # <<<<<<<<<<<<<<
  *     """
  *     Adios variable class.
  */
 struct __pyx_obj_9adios_mpi_var {
-  PyObject_HEAD
+  PyDictObject __pyx_base;
   struct __pyx_vtabstruct_9adios_mpi_var *__pyx_vtab;
   struct __pyx_obj_9adios_mpi_file *file;
   ADIOS_VARINFO *vp;
@@ -1223,13 +1380,15 @@ struct __pyx_obj_9adios_mpi_var {
   int ndim;
   PyObject *dims;
   int nsteps;
+  struct __pyx_obj_9adios_mpi_softdict *attrs;
+  PyObject *blockinfo;
 };
 
 
-/* "adios_mpi.pyx":1062
- *                          nsteps=nsteps_)
+/* "adios_mpi.pyx":1493
+ *         return self.attrs.keys()
  * 
- * cdef class attr:             # <<<<<<<<<<<<<<
+ * cdef class attr(object):             # <<<<<<<<<<<<<<
  *     """
  *     Adios attribute class.
  */
@@ -1242,7 +1401,23 @@ struct __pyx_obj_9adios_mpi_attr {
 };
 
 
-/* "adios_mpi.pyx":1140
+/* "adios_mpi.pyx":1579
+ *                (self.name, self.dtype, self.value)
+ * 
+ * cdef class group(dict):             # <<<<<<<<<<<<<<
+ *     """
+ *     Adios group class.
+ */
+struct __pyx_obj_9adios_mpi_group {
+  PyDictObject __pyx_base;
+  struct __pyx_obj_9adios_mpi_file *file;
+  PyObject *name;
+  struct __pyx_obj_9adios_mpi_softdict *vars;
+  struct __pyx_obj_9adios_mpi_softdict *attrs;
+};
+
+
+/* "adios_mpi.pyx":1691
  * 
  * ## Helper dict
  * cdef class smartdict(dict):             # <<<<<<<<<<<<<<
@@ -1255,10 +1430,10 @@ struct __pyx_obj_9adios_mpi_smartdict {
 };
 
 
-/* "adios_mpi.pyx":1152
+/* "adios_mpi.pyx":1703
  *             self.factory(key, value)
  * 
- * cdef class writer:             # <<<<<<<<<<<<<<
+ * cdef class writer(object):             # <<<<<<<<<<<<<<
  *     """
  *     writer class for Adios write.
  */
@@ -1270,17 +1445,18 @@ struct __pyx_obj_9adios_mpi_writer {
   PyObject *method;
   PyObject *method_params;
   int is_noxml;
+  PyObject *mode;
   struct PyMPICommObject *comm;
-  PyObject *var;
-  PyObject *attr;
+  PyObject *vars;
+  PyObject *attrs;
 };
 
 
-/* "adios_mpi.pyx":1346
- *                  self.attr.keys())
+/* "adios_mpi.pyx":1921
+ *         self.close()
  * 
- * cdef class attrinfo:             # <<<<<<<<<<<<<<
- *     cdef bytes name
+ * cdef class attrinfo(object):             # <<<<<<<<<<<<<<
+ *     cdef str name
  *     cdef bint is_static # Use define_byvalue, if True
  */
 struct __pyx_obj_9adios_mpi_attrinfo {
@@ -1292,11 +1468,11 @@ struct __pyx_obj_9adios_mpi_attrinfo {
 };
 
 
-/* "adios_mpi.pyx":1399
+/* "adios_mpi.pyx":1974
  *                  self.dtype)
  * 
- * cdef class varinfo:             # <<<<<<<<<<<<<<
- *     cdef bytes name
+ * cdef class varinfo(object):             # <<<<<<<<<<<<<<
+ *     cdef str name
  *     cdef public ldim
  */
 struct __pyx_obj_9adios_mpi_varinfo {
@@ -1309,60 +1485,11 @@ struct __pyx_obj_9adios_mpi_varinfo {
 };
 
 
-/* "adios_mpi.pyx":1009
- *                 self.nsteps)
- * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
- */
-struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ {
-  PyObject_HEAD
-  PyObject *__pyx_v_dims_;
-  PyObject *__pyx_v_index_;
-  struct __pyx_obj_9adios_mpi_var *__pyx_v_self;
-};
-
-
-/* "adios_mpi.pyx":1030
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
- * 
- */
-struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr {
-  PyObject_HEAD
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *__pyx_outer_scope;
-  PyObject *__pyx_v_x;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-  PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
-/* "adios_mpi.pyx":1038
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
- * 
- */
-struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr {
-  PyObject_HEAD
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *__pyx_outer_scope;
-  PyObject *__pyx_v_x;
-  PyObject *__pyx_t_0;
-  Py_ssize_t __pyx_t_1;
-  PyObject *(*__pyx_t_2)(PyObject *);
-};
-
-
 
-/* "adios_mpi.pyx":604
+/* "adios_mpi.pyx":721
  * 
  * ## Python class for ADIOS_FILE structure
- * cdef class file:             # <<<<<<<<<<<<<<
+ * cdef class file(dict):             # <<<<<<<<<<<<<<
  *     """
  *     file class for Adios file read and write.
  */
@@ -1370,15 +1497,16 @@ struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr {
 struct __pyx_vtabstruct_9adios_mpi_file {
   PyObject *(*close)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch);
   PyObject *(*printself)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch);
+  PyObject *(*release_step)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch);
   PyObject *(*advance)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_4file_advance *__pyx_optional_args);
 };
 static struct __pyx_vtabstruct_9adios_mpi_file *__pyx_vtabptr_9adios_mpi_file;
 
 
-/* "adios_mpi.pyx":797
- *                  self.file_size)
+/* "adios_mpi.pyx":1028
+ *                 self.count)
  * 
- * cdef class var:             # <<<<<<<<<<<<<<
+ * cdef class var(dict):             # <<<<<<<<<<<<<<
  *     """
  *     Adios variable class.
  */
@@ -1386,12 +1514,15 @@ static struct __pyx_vtabstruct_9adios_mpi_file *__pyx_vtabptr_9adios_mpi_file;
 struct __pyx_vtabstruct_9adios_mpi_var {
   PyObject *(*close)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch);
   PyObject *(*advance)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch);
+  PyObject *(*read_points)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_points *__pyx_optional_args);
+  PyObject *(*read_writeblock)(struct __pyx_obj_9adios_mpi_var *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_writeblock *__pyx_optional_args);
   PyObject *(*read)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read *__pyx_optional_args);
   PyObject *(*printself)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch);
 };
 static struct __pyx_vtabstruct_9adios_mpi_var *__pyx_vtabptr_9adios_mpi_var;
 
 /* --- Runtime support code (head) --- */
+/* Refnanny.proto */
 #ifndef CYTHON_REFNANNY
   #define CYTHON_REFNANNY 0
 #endif
@@ -1408,19 +1539,19 @@ static struct __pyx_vtabstruct_9adios_mpi_var *__pyx_vtabptr_9adios_mpi_var;
   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
 #ifdef WITH_THREAD
-  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
-          if (acquire_gil) { \
-              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
-              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
-              PyGILState_Release(__pyx_gilstate_save); \
-          } else { \
-              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
+          if (acquire_gil) {\
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
+              PyGILState_Release(__pyx_gilstate_save);\
+          } else {\
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
           }
 #else
-  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
 #endif
-  #define __Pyx_RefNannyFinishContext() \
+  #define __Pyx_RefNannyFinishContext()\
           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
@@ -1443,17 +1574,18 @@ static struct __pyx_vtabstruct_9adios_mpi_var *__pyx_vtabptr_9adios_mpi_var;
   #define __Pyx_XGOTREF(r)
   #define __Pyx_XGIVEREF(r)
 #endif
-#define __Pyx_XDECREF_SET(r, v) do {                            \
-        PyObject *tmp = (PyObject *) r;                         \
-        r = v; __Pyx_XDECREF(tmp);                              \
+#define __Pyx_XDECREF_SET(r, v) do {\
+        PyObject *tmp = (PyObject *) r;\
+        r = v; __Pyx_XDECREF(tmp);\
     } while (0)
-#define __Pyx_DECREF_SET(r, v) do {                             \
-        PyObject *tmp = (PyObject *) r;                         \
-        r = v; __Pyx_DECREF(tmp);                               \
+#define __Pyx_DECREF_SET(r, v) do {\
+        PyObject *tmp = (PyObject *) r;\
+        r = v; __Pyx_DECREF(tmp);\
     } while (0)
 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
 
+/* PyObjectGetAttrStr.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
     PyTypeObject* tp = Py_TYPE(obj);
@@ -1469,22 +1601,124 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
 #endif
 
+/* GetBuiltinName.proto */
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
-#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
-    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
-    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) : \
-    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) : \
+/* PyObjectCall.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
+#else
+#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
+#endif
+
+/* PyObjectCallMethO.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
+#endif
+
+/* PyObjectCallOneArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+
+/* PyObjectCallNoArg.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+#else
+#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
+#endif
+
+/* PyThreadStateGet.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = PyThreadState_GET();
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* WriteUnraisableException.proto */
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename,
+                                  int full_traceback, int nogil);
+
+/* ArgTypeTest.proto */
+static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact);
+
+/* decode_c_bytes.proto */
+static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
+
+/* decode_bytes.proto */
+static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
+         PyObject* string, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
+    return __Pyx_decode_c_bytes(
+        PyBytes_AS_STRING(string), PyBytes_GET_SIZE(string),
+        start, stop, encoding, errors, decode_func);
+}
+
+/* SliceObject.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
+        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
+        int has_cstart, int has_cstop, int wraparound);
+
+/* PySequenceContains.proto */
+static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
+    int result = PySequence_Contains(seq, item);
+    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
+
+/* ListAppend.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
+    PyListObject* L = (PyListObject*) list;
+    Py_ssize_t len = Py_SIZE(list);
+    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
+        Py_INCREF(x);
+        PyList_SET_ITEM(list, len, x);
+        Py_SIZE(list) = len+1;
+        return 0;
+    }
+    return PyList_Append(list, x);
+}
+#else
+#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
+#endif
+
+/* GetItemInt.proto */
+#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
+    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
                __Pyx_GetItemInt_Generic(o, to_py_func(i))))
-#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
-    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
-    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \
+#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
     (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                               int wraparound, int boundscheck);
-#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
-    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
-    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \
+#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
+    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
+    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
     (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                               int wraparound, int boundscheck);
@@ -1492,13 +1726,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                      int is_list, int wraparound, int boundscheck);
 
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb);
-
-static void __Pyx_WriteUnraisable(const char *name, int clineno,
-                                  int lineno, const char *filename,
-                                  int full_traceback);
-
+/* ListExtend.proto */
 static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject* none = _PyList_Extend((PyListObject*)L, v);
@@ -1511,62 +1739,65 @@ static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
 #endif
 }
 
+/* PyIntBinop.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
-    PyListObject* L = (PyListObject*) list;
-    Py_ssize_t len = Py_SIZE(list);
-    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
-        Py_INCREF(x);
-        PyList_SET_ITEM(list, len, x);
-        Py_SIZE(list) = len+1;
-        return 0;
-    }
-    return PyList_Append(list, x);
-}
+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
 #else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
+#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
+    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
 #endif
 
+/* PyIntBinop.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
+#else
+#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\
+    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
+#endif
+
+/* RaiseArgTupleInvalid.proto */
 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
 
+/* RaiseDoubleKeywords.proto */
 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
 
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
-    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+/* ParseKeywords.proto */
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
     const char* function_name);
 
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact);
-
+/* ExtTypeTest.proto */
 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
 
+/* GetModuleGlobalName.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
-#else
-#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-#include <string.h>
+/* IncludeStringH.proto */
+#include <string.h>
 
+/* BytesEquals.proto */
 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
 
+/* UnicodeEquals.proto */
 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
 
+/* StrEquals.proto */
 #if PY_MAJOR_VERSION >= 3
 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
 #else
 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
 #endif
 
+/* PyIntBinop.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
+#else
+#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
+    PyObject_RichCompare(op1, op2, Py_EQ)
+    #endif
+
+/* ListCompAppend.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
     PyListObject* L = (PyListObject*) list;
@@ -1583,58 +1814,83 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
 #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
 #endif
 
+/* RaiseException.proto */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+
+/* py_dict_keys.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);
+
+/* UnpackUnboundCMethod.proto */
+typedef struct {
+    PyObject *type;
+    PyObject **method_name;
+    PyCFunction func;
+    PyObject *method;
+    int flag;
+} __Pyx_CachedCFunction;
+
+/* CallUnboundCMethod0.proto */
+static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
 #if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+#define __Pyx_CallUnboundCMethod0(cfunc, self)\
+    ((likely((cfunc)->func)) ?\
+        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
+         (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
+             ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) : __Pyx__CallUnboundCMethod0(cfunc, self)))) :\
+        __Pyx__CallUnboundCMethod0(cfunc, self))
 #else
-#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
+#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
 #endif
 
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
+/* dict_getitem_default.proto */
+static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
+/* None.proto */
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
 
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+/* bytes_tailmatch.proto */
+static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg,
+                                         Py_ssize_t start, Py_ssize_t end, int direction);
+static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr,
+                                   Py_ssize_t start, Py_ssize_t end, int direction);
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);
+/* unicode_tailmatch.proto */
+static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr,
+                                     Py_ssize_t start, Py_ssize_t end, int direction);
 
-static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) {
-    int result = PySequence_Contains(seq, item);
-    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
-}
+/* str_tailmatch.proto */
+static CYTHON_INLINE int __Pyx_PyStr_Tailmatch(PyObject* self, PyObject* arg, Py_ssize_t start,
+                                               Py_ssize_t end, int direction);
 
-static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
+/* RaiseTooManyValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
+
+/* RaiseNeedMoreValuesToUnpack.proto */
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+/* IterFinish.proto */
+static CYTHON_INLINE int __Pyx_IterFinish(void);
+
+/* UnpackItemEndCheck.proto */
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
 
-#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound) \
+/* SliceObject.proto */
+#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
     __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
 static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
         PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
         PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
         int has_cstart, int has_cstop, int wraparound);
 
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
-        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
-        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
-        int has_cstart, int has_cstop, int wraparound);
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
-static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
-#else
-#define __Pyx_PyList_GetSlice(seq, start, stop)   PySequence_GetSlice(seq, start, stop)
-#define __Pyx_PyTuple_GetSlice(seq, start, stop)  PySequence_GetSlice(seq, start, stop)
-#endif
-
-#ifndef __PYX_FORCE_INIT_THREADS
-  #define __PYX_FORCE_INIT_THREADS 0
-#endif
-
-static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */
+/* None.proto */
+static CYTHON_INLINE int __Pyx_div_int(int, int);
 
-#define UNARY_NEG_WOULD_OVERFLOW(x)            (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
+/* UnaryNegOverflows.proto */
+#define UNARY_NEG_WOULD_OVERFLOW(x)\
+        (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
 
-#if PY_MAJOR_VERSION >= 3
+/* DictGetItem.proto */
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     PyObject *value;
     value = PyDict_GetItemWithError(d, key);
@@ -1654,6 +1910,26 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
 #endif
 
+/* PyObjectCallMethod0.proto */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
+
+/* RaiseNoneIterError.proto */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+/* UnpackTupleError.proto */
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
+
+/* UnpackTuple2.proto */
+static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
+                                             int is_tuple, int has_known_size, int decref_tuple);
+
+/* dict_iter.proto */
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_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) {
@@ -1671,40 +1947,31 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
 #endif
 
-static CYTHON_INLINE int __Pyx_IterFinish(void);
-
-static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
-
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
-
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
-
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
-
-static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
+/* py_dict_values.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
 
-static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
-                                             int is_tuple, int has_known_size, int decref_tuple);
+/* SetVTable.proto */
+static int __Pyx_SetVtable(PyObject *dict, void *vtable);
 
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
-                                                   Py_ssize_t* p_orig_length, int* p_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);
+/* Import.proto */
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
 
-static int __Pyx_SetVtable(PyObject *dict, void *vtable);
+/* ImportFrom.proto */
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
 
+/* CalculateMetaclass.proto */
 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
 
+/* Py3ClassCreate.proto */
 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                            PyObject *mkw, PyObject *modname, PyObject *doc);
 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                       PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
 
+/* CodeObjectCache.proto */
 typedef struct {
-    int code_line;
     PyCodeObject* code_object;
+    int code_line;
 } __Pyx_CodeObjectCacheEntry;
 struct __Pyx_CodeObjectCache {
     int count;
@@ -1716,37 +1983,35 @@ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int co
 static PyCodeObject *__pyx_find_code_object(int code_line);
 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
 
+/* AddTraceback.proto */
 static void __Pyx_AddTraceback(const char *funcname, int c_line,
                                int py_line, const char *filename);
 
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
-
-static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *);
-
-static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *);
-
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value);
 
-static int __Pyx_Print(PyObject*, PyObject *, int);
-#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3
-static PyObject* __pyx_print = 0;
-static PyObject* __pyx_print_kwargs = 0;
-#endif
-
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value);
 
-static int __Pyx_PrintOne(PyObject* stream, PyObject *o);
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_READ_METHOD(ADIOS_READ_METHOD value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
 
+/* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value);
 
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_DATATYPES(ADIOS_DATATYPES value);
+
+/* None.proto */
 #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     #define __Pyx_CREAL(z) ((z).real())
@@ -1759,7 +2024,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     #define __Pyx_CREAL(z) ((z).real)
     #define __Pyx_CIMAG(z) ((z).imag)
 #endif
-#if (defined(_WIN32) || defined(__clang__)) && defined(__cplusplus) && CYTHON_CCOMPLEX
+#if defined(__cplusplus) && CYTHON_CCOMPLEX         && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
     #define __Pyx_SET_CREAL(z,x) ((z).real(x))
     #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
 #else
@@ -1767,8 +2032,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
 #endif
 
+/* None.proto */
 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
     #define __Pyx_c_eqf(a, b)   ((a)==(b))
     #define __Pyx_c_sumf(a, b)  ((a)+(b))
@@ -1806,8 +2073,10 @@ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(floa
     #endif
 #endif
 
+/* None.proto */
 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
 
+/* None.proto */
 #if CYTHON_CCOMPLEX
     #define __Pyx_c_eq(a, b)   ((a)==(b))
     #define __Pyx_c_sum(a, b)  ((a)+(b))
@@ -1845,41 +2114,34 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do
     #endif
 #endif
 
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);
 
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
+/* CIntFromPy.proto */
+static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *);
 
-#define __Pyx_Generator_USED
-#include <structmember.h>
-#include <frameobject.h>
-typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *);
-typedef struct {
-    PyObject_HEAD
-    __pyx_generator_body_t body;
-    PyObject *closure;
-    PyObject *exc_type;
-    PyObject *exc_value;
-    PyObject *exc_traceback;
-    PyObject *gi_weakreflist;
-    PyObject *classobj;
-    PyObject *yieldfrom;
-    PyObject *gi_name;
-    PyObject *gi_qualname;
-    int resume_label;
-    char is_running;
-} __pyx_GeneratorObject;
-static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
-                                                  PyObject *closure, PyObject *name, PyObject *qualname);
-static int __pyx_Generator_init(void);
-static int __Pyx_Generator_clear(PyObject* self);
-#if 1 || PY_VERSION_HEX < 0x030300B0
-static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue);
-#else
-#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue)
-#endif
+/* CIntFromPy.proto */
+static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
 
+/* CIntFromPy.proto */
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE ADIOS_DATATYPES __Pyx_PyInt_As_ADIOS_DATATYPES(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE ADIOS_LOCKMODE __Pyx_PyInt_As_ADIOS_LOCKMODE(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE ADIOS_READ_METHOD __Pyx_PyInt_As_ADIOS_READ_METHOD(PyObject *);
+
+/* CheckBinaryVersion.proto */
 static int __Pyx_check_binary_version(void);
 
+/* PyIdentifierFromString.proto */
 #if !defined(__Pyx_PyIdentifier_FromString)
 #if PY_MAJOR_VERSION < 3
   #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
@@ -1888,35 +2150,43 @@ static int __Pyx_check_binary_version(void);
 #endif
 #endif
 
+/* ModuleImport.proto */
 static PyObject *__Pyx_ImportModule(const char *name);
 
+/* TypeImport.proto */
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
 
+/* InitStrings.proto */
 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
 
 static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_9adios_mpi_4file_release_step(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_4file_advance *__pyx_optional_args); /* proto*/
 static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_points *__pyx_optional_args); /* proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_v_rank, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_writeblock *__pyx_optional_args); /* proto*/
 static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read *__pyx_optional_args); /* proto*/
 static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
 
 /* Module declarations from 'cpython.buffer' */
 
-/* Module declarations from 'cpython.ref' */
-
 /* Module declarations from 'libc.string' */
 
 /* Module declarations from 'libc.stdio' */
 
-/* Module declarations from 'cpython.object' */
-
 /* Module declarations from '__builtin__' */
 
 /* Module declarations from 'cpython.type' */
 static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
 
+/* Module declarations from 'cpython' */
+
+/* Module declarations from 'cpython.object' */
+
+/* Module declarations from 'cpython.ref' */
+
 /* Module declarations from 'libc.stdlib' */
 
 /* Module declarations from 'numpy' */
@@ -1929,18 +2199,22 @@ static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
 static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
 static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
 
+/* Module declarations from 'mpi4py.libmpi' */
+
 /* Module declarations from 'mpi4py.MPI' */
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Status = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Datatype = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Request = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Prequest = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Grequest = 0;
+static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Message = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Op = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Group = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Info = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Errhandler = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Comm = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Intracomm = 0;
+static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Topocomm = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Cartcomm = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Graphcomm = 0;
 static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Distgraphcomm = 0;
@@ -1952,39 +2226,50 @@ static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_File = 0;
 
 /* Module declarations from 'cpython.string' */
 
+/* Module declarations from 'cpython.bytes' */
+
+/* Module declarations from 'cpython.unicode' */
+
+/* Module declarations from 'cpython.version' */
+
 /* Module declarations from 'libc.stdint' */
 
 /* Module declarations from 'adios_mpi' */
+static PyTypeObject *__pyx_ptype_9adios_mpi_softdict = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_file = 0;
+static PyTypeObject *__pyx_ptype_9adios_mpi_blockinfo = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_var = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_attr = 0;
+static PyTypeObject *__pyx_ptype_9adios_mpi_group = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_smartdict = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_writer = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_attrinfo = 0;
 static PyTypeObject *__pyx_ptype_9adios_mpi_varinfo = 0;
-static PyTypeObject *__pyx_ptype_9adios_mpi___pyx_scope_struct____getitem__ = 0;
-static PyTypeObject *__pyx_ptype_9adios_mpi___pyx_scope_struct_1_genexpr = 0;
-static PyTypeObject *__pyx_ptype_9adios_mpi___pyx_scope_struct_2_genexpr = 0;
+static struct PyMPICommObject *__pyx_v_9adios_mpi_init_comm = 0;
+static struct PyMPICommObject *__pyx_v_9adios_mpi_read_init_comm = 0;
+static void __pyx_f_9adios_mpi_test_str(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_b2s(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_s2b(PyObject *, int __pyx_skip_dispatch); /*proto*/
 static char **__pyx_f_9adios_mpi_to_cstring_array(PyObject *); /*proto*/
 static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_init(char *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init *__pyx_optional_args); /*proto*/
-static int64_t __pyx_f_9adios_mpi_open(char *, char *, char *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_open *__pyx_optional_args); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_init(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init *__pyx_optional_args); /*proto*/
+static int64_t __pyx_f_9adios_mpi_open(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_open *__pyx_optional_args); /*proto*/
 static int64_t __pyx_f_9adios_mpi_set_group_size(int64_t, uint64_t, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_write(int64_t, char *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_write *__pyx_optional_args); /*proto*/
-static int __pyx_f_9adios_mpi_write_int(int64_t, char *, int, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_write_long(int64_t, char *, long, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_write_float(int64_t, char *, float, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_write_double(int64_t, char *, double, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_read(int64_t, char *, PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_write(int64_t, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_write *__pyx_optional_args); /*proto*/
+static int __pyx_f_9adios_mpi_write_int(int64_t, PyObject *, int, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_write_long(int64_t, PyObject *, long, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_write_float(int64_t, PyObject *, float, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_write_double(int64_t, PyObject *, double, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_read(int64_t, PyObject *, PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_9adios_mpi_close(int64_t, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_9adios_mpi_finalize(int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_finalize *__pyx_optional_args); /*proto*/
 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(char *, 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, char *, char *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_define_var *__pyx_optional_args); /*proto*/
-static int __pyx_f_9adios_mpi_define_attribute(int64_t, char *, char *, int, char *, char *, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t, char *, char *, PyObject *, int __pyx_skip_dispatch); /*proto*/
-static int __pyx_f_9adios_mpi_select_method(int64_t, char *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_select_method *__pyx_optional_args); /*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 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 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*/
@@ -1997,440 +2282,332 @@ static int __pyx_f_9adios_mpi_read_finalize(int __pyx_skip_dispatch, struct __py
 int __pyx_module_is_main_adios_mpi = 0;
 
 /* Implementation of 'adios_mpi' */
+static PyObject *__pyx_builtin_print;
 static PyObject *__pyx_builtin_xrange;
 static PyObject *__pyx_builtin_Ellipsis;
 static PyObject *__pyx_builtin_range;
 static PyObject *__pyx_builtin_KeyError;
 static PyObject *__pyx_builtin_TypeError;
 static PyObject *__pyx_builtin_IndexError;
+static PyObject *__pyx_builtin_all;
 static PyObject *__pyx_builtin_zip;
+static PyObject *__pyx_builtin_enumerate;
 static PyObject *__pyx_builtin_NotImplementedError;
 static PyObject *__pyx_builtin_ValueError;
 static PyObject *__pyx_builtin_RuntimeError;
-static PyObject *__pyx_pf_9adios_mpi___parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_2init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_config, struct PyMPICommObject *__pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4open(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_group_name, char *__pyx_v_name, char *__pyx_v_mode, struct PyMPICommObject *__pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_8write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_10write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, int __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_12write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, long __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_14write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, float __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_16write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, double __pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_18read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArrayObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_20close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_22finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_24init_noxml(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_26allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_28declare_group(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, char *__pyx_v_time_index, int __pyx_v_stats); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_30define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_dimensions, char *__pyx_v_global_dimensions, char *__pyx_v_local_offsets); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_32define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_value, char *__pyx_v_var); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_34define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_36select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_method, char *__pyx_v_parameters, char *__pyx_v_base_path); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_38adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_40np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_42adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_44read_init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, char *__pyx_v_parameters); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_46read_finalize(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name); /* 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 */
-static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_10file_sizec___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, char *__pyx_v_fname, char *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_2__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_4close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_6printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_8advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_10__getitem__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_12__repr__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_3var___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_4file_3var_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_9adios_mpi_4file_3var_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4file_4attr___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_4file_4attr_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_9adios_mpi_4file_4attr_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, char *__pyx_v_name); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_4close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_6advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_8read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_10printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_12__repr__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_11__getitem___genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_11__getitem___3genexpr(PyObject *__pyx_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_3var_14__getitem__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, char *__pyx_v_name); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_4attr_2__repr__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_smartdict *__pyx_v_self, PyObject *__pyx_v_factory); /* proto */
-static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_mpi_smartdict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_3var___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_4attr___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, char *__pyx_v_fname, int __pyx_v_is_noxml, struct PyMPICommObject *__pyx_v_comm); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_gname, char *__pyx_v_method, char *__pyx_v_method_params); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__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, char *__pyx_v_attrname); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_attrname, char *__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_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 */
-static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self, char *__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, char *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset); /* 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 */
-static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_7varinfo_4ldim___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo_4ldim_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo_4ldim_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_7varinfo_4gdim___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo_4gdim_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo_4gdim_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_7varinfo_6offset___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo_6offset_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo_6offset_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-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_48readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_50bpls(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_file(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi_var(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi_attr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi_smartdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi_writer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi_attrinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi_varinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi___pyx_scope_struct____getitem__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_9adios_mpi___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static char __pyx_k_B[] = "B";
-static char __pyx_k_H[] = "H";
-static char __pyx_k_I[] = "I";
-static char __pyx_k_L[] = "L";
-static char __pyx_k_O[] = "O";
-static char __pyx_k_Q[] = "Q";
-static char __pyx_k_S[] = "S";
-static char __pyx_k_b[] = "b";
-static char __pyx_k_d[] = "d";
-static char __pyx_k_f[] = "f";
-static char __pyx_k_g[] = "g";
-static char __pyx_k_h[] = "h";
-static char __pyx_k_i[] = "i";
-static char __pyx_k_k[] = "k";
-static char __pyx_k_l[] = "l";
-static char __pyx_k_q[] = "q";
-static char __pyx_k_t[] = "t";
-static char __pyx_k_v[] = "v";
-static char __pyx_k_w[] = "w";
-static char __pyx_k_BP[] = "BP";
-static char __pyx_k_NO[] = "NO";
-static char __pyx_k_Zd[] = "Zd";
-static char __pyx_k_Zf[] = "Zf";
-static char __pyx_k_Zg[] = "Zg";
-static char __pyx_k__7[] = "";
-static char __pyx_k_fh[] = "fh";
-static char __pyx_k_fp[] = "fp";
-static char __pyx_k_np[] = "np";
-static char __pyx_k_vp[] = "vp";
-static char __pyx_k_MPI[] = "MPI";
-static char __pyx_k_NOW[] = "NOW";
-static char __pyx_k_YES[] = "YES";
-static char __pyx_k__11[] = "/";
-static char __pyx_k__31[] = " ";
-static char __pyx_k__33[] = "(,)";
-static char __pyx_k__45[] = "*";
-static char __pyx_k_any[] = "any";
-static char __pyx_k_doc[] = "__doc__";
-static char __pyx_k_end[] = "end";
-static char __pyx_k_get[] = "get";
-static char __pyx_k_str[] = "str_";
-static char __pyx_k_val[] = "val";
-static char __pyx_k_var[] = "var";
-static char __pyx_k_zip[] = "zip";
-static char __pyx_k_FLAG[] = "FLAG";
-static char __pyx_k_ICEE[] = "ICEE";
-static char __pyx_k_args[] = "args";
-static char __pyx_k_bool[] = "bool_";
-static char __pyx_k_bpls[] = "bpls";
-static char __pyx_k_byte[] = "byte";
-static char __pyx_k_char[] = "char";
-static char __pyx_k_comm[] = "comm";
-static char __pyx_k_copy[] = "copy";
-static char __pyx_k_dims[] = "dims";
-static char __pyx_k_fd_p[] = "fd_p";
-static char __pyx_k_file[] = "file";
-static char __pyx_k_fill[] = "fill";
-static char __pyx_k_gdim[] = "gdim";
-static char __pyx_k_init[] = "__init__";
-static char __pyx_k_int8[] = "int8";
-static char __pyx_k_keys[] = "keys";
-static char __pyx_k_last[] = "last";
-static char __pyx_k_ldim[] = "ldim";
-static char __pyx_k_long[] = "long";
-static char __pyx_k_main[] = "__main__";
-static char __pyx_k_mode[] = "mode";
-static char __pyx_k_mype[] = "mype";
-static char __pyx_k_name[] = "name";
-static char __pyx_k_ndim[] = "ndim";
-static char __pyx_k_path[] = "path";
-static char __pyx_k_read[] = "read";
-static char __pyx_k_real[] = "real";
-static char __pyx_k_send[] = "send";
-static char __pyx_k_size[] = "size";
-static char __pyx_k_step[] = "step";
-static char __pyx_k_test[] = "__test__";
-static char __pyx_k_type[] = "type";
-static char __pyx_k_vars[] = "vars";
-static char __pyx_k_when[] = "when";
-static char __pyx_k_15s_d[] = "%15s : %d";
-static char __pyx_k_15s_s[] = "%15s : %s";
-static char __pyx_k_DIMES[] = "DIMES";
-static char __pyx_k_LATER[] = "LATER";
-static char __pyx_k_array[] = "array";
-static char __pyx_k_attrs[] = "attrs";
-static char __pyx_k_atype[] = "atype";
-static char __pyx_k_bytes[] = "(bytes)";
-static char __pyx_k_close[] = "close";
-static char __pyx_k_count[] = "count";
-static char __pyx_k_dtype[] = "dtype";
-static char __pyx_k_flags[] = "flags";
-static char __pyx_k_float[] = "float_";
-static char __pyx_k_fname[] = "fname";
-static char __pyx_k_gname[] = "gname";
-static char __pyx_k_group[] = "group";
-static char __pyx_k_index[] = "index";
-static char __pyx_k_int16[] = "int16";
-static char __pyx_k_int32[] = "int32";
-static char __pyx_k_int64[] = "int64";
-static char __pyx_k_numpy[] = "numpy";
-static char __pyx_k_nvars[] = "nvars";
-static char __pyx_k_print[] = "print";
-static char __pyx_k_range[] = "range";
-static char __pyx_k_shape[] = "shape";
-static char __pyx_k_short[] = "short";
-static char __pyx_k_split[] = "split";
-static char __pyx_k_stats[] = "stats";
-static char __pyx_k_strip[] = "strip";
-static char __pyx_k_throw[] = "throw";
-static char __pyx_k_uint8[] = "uint8";
-static char __pyx_k_value[] = "value";
-static char __pyx_k_varid[] = "varid";
-static char __pyx_k_write[] = "write";
-static char __pyx_k_zeros[] = "zeros";
-static char __pyx_k_15s_lu[] = "%15s : %lu";
-static char __pyx_k_POSIX1[] = "POSIX1";
-static char __pyx_k_config[] = "config";
-static char __pyx_k_define[] = "define";
-static char __pyx_k_double[] = "double";
-static char __pyx_k_import[] = "__import__";
-static char __pyx_k_method[] = "method";
-static char __pyx_k_module[] = "__module__";
-static char __pyx_k_nattrs[] = "nattrs";
-static char __pyx_k_nsteps[] = "nsteps";
-static char __pyx_k_offset[] = "offset";
-static char __pyx_k_string[] = "string";
-static char __pyx_k_strlen[] = "strlen";
-static char __pyx_k_uint16[] = "uint16";
-static char __pyx_k_uint32[] = "uint32";
-static char __pyx_k_uint64[] = "uint64";
-static char __pyx_k_values[] = "values";
-static char __pyx_k_xrange[] = "xrange";
-static char __pyx_k_Reading[] = "Reading ... ";
-static char __pyx_k_UNKNOWN[] = "UNKNOWN";
-static char __pyx_k_advance[] = "advance";
-static char __pyx_k_bytes_2[] = "bytes";
-static char __pyx_k_complex[] = "complex_";
-static char __pyx_k_factory[] = "factory";
-static char __pyx_k_float16[] = "float16";
-static char __pyx_k_float32[] = "float32";
-static char __pyx_k_float64[] = "float64";
-static char __pyx_k_genexpr[] = "genexpr";
-static char __pyx_k_indices[] = "indices";
-static char __pyx_k_integer[] = "integer";
-static char __pyx_k_prepare[] = "__prepare__";
-static char __pyx_k_readvar[] = "readvar";
-static char __pyx_k_replace[] = "replace";
-static char __pyx_k_setitem[] = "__setitem__";
-static char __pyx_k_squeeze[] = "squeeze";
-static char __pyx_k_unknown[] = "unknown";
-static char __pyx_k_varname[] = "varname";
-static char __pyx_k_version[] = "version";
-static char __pyx_k_DATATYPE[] = "DATATYPE";
-static char __pyx_k_Ellipsis[] = "Ellipsis";
-static char __pyx_k_FLEXPATH[] = "FLEXPATH";
-static char __pyx_k_KeyError[] = "KeyError";
-static char __pyx_k_attrname[] = "attrname";
-static char __pyx_k_float128[] = "float128";
-static char __pyx_k_group_id[] = "group_id";
-static char __pyx_k_is_noxml[] = "is_noxml";
-static char __pyx_k_itemsize[] = "itemsize";
-static char __pyx_k_iterkeys[] = "iterkeys";
-static char __pyx_k_qualname[] = "__qualname__";
-static char __pyx_k_subtract[] = "subtract";
-static char __pyx_k_var_dict[] = "var: dict";
-static char __pyx_k_AdiosFile[] = "=== AdiosFile ===";
-static char __pyx_k_COMM_SELF[] = "COMM_SELF";
-static char __pyx_k_TypeError[] = "TypeError";
-static char __pyx_k_adios_mpi[] = "adios_mpi";
-static char __pyx_k_attr_dict[] = "attr: dict";
-static char __pyx_k_base_path[] = "base_path";
-static char __pyx_k_complex64[] = "complex64";
-static char __pyx_k_complex_2[] = "complex";
-static char __pyx_k_data_size[] = "data_size";
-static char __pyx_k_file_size[] = "file_size";
-static char __pyx_k_is_static[] = "is_static";
-static char __pyx_k_is_stream[] = "is_stream";
-static char __pyx_k_iteritems[] = "iteritems";
-static char __pyx_k_last_step[] = "last_step";
-static char __pyx_k_lock_mode[] = "lock_mode";
-static char __pyx_k_metaclass[] = "__metaclass__";
-static char __pyx_k_printself[] = "printself";
-static char __pyx_k_COMM_WORLD[] = "COMM_WORLD";
-static char __pyx_k_DATASPACES[] = "DATASPACES";
-static char __pyx_k_IndexError[] = "IndexError";
-static char __pyx_k_ValueError[] = "ValueError";
-static char __pyx_k_complex128[] = "complex128";
-static char __pyx_k_contiguous[] = "contiguous";
-static char __pyx_k_dimensions[] = "dimensions";
-static char __pyx_k_endianness[] = "endianness";
-static char __pyx_k_from_steps[] = "from_steps";
-static char __pyx_k_group_name[] = "group_name";
-static char __pyx_k_mpi4py_MPI[] = "mpi4py.MPI";
-static char __pyx_k_parameters[] = "parameters";
-static char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
-static char __pyx_k_time_index[] = "time_index";
-static char __pyx_k_time_steps[] = "time_steps";
-static char __pyx_k_READ_METHOD[] = "READ_METHOD";
-static char __pyx_k_buffer_size[] = "buffer_size";
-static char __pyx_k_gdim_object[] = "gdim: object";
-static char __pyx_k_ldim_object[] = "ldim: object";
-static char __pyx_k_long_double[] = "long_double";
-static char __pyx_k_method_name[] = "method_name";
-static char __pyx_k_timeout_sec[] = "timeout_sec";
-static char __pyx_k_BP_AGGREGATE[] = "BP_AGGREGATE";
-static char __pyx_k_RuntimeError[] = "RuntimeError";
-static char __pyx_k_current_step[] = "current_step";
-static char __pyx_k_string_array[] = "string_array";
-static char __pyx_k_value_object[] = "value: object";
-static char __pyx_k_var_namelist[] = "var_namelist";
-static char __pyx_k_AdiosVariable[] = "=== AdiosVariable ===";
-static char __pyx_k_Value_is_none[] = "Value is none";
-static char __pyx_k_attr_namelist[] = "attr_namelist";
-static char __pyx_k_local_offsets[] = "local_offsets";
-static char __pyx_k_method_params[] = "method_params";
-static char __pyx_k_offset_object[] = "offset: object";
-static char __pyx_k_unsigned_byte[] = "unsigned_byte";
-static char __pyx_k_unsigned_long[] = "unsigned_long";
-static char __pyx_k_double_complex[] = "double_complex";
-static char __pyx_k_unsigned_short[] = "unsigned_short";
-static char __pyx_k_Not_a_valid_var[] = "Not a valid var";
-static char __pyx_k_Not_an_open_var[] = "Not an open var";
-static char __pyx_k_Unhashable_type[] = "Unhashable type";
-static char __pyx_k_Not_an_open_file[] = "Not an open file";
-static char __pyx_k_unsigned_integer[] = "unsigned_integer";
-static char __pyx_k_BUFFER_ALLOC_WHEN[] = "BUFFER_ALLOC_WHEN";
-static char __pyx_k_No_valid_variable[] = "No valid variable";
-static char __pyx_k_The_variable_name[] = " The variable name. ";
-static char __pyx_k_global_dimensions[] = "global_dimensions";
-static char __pyx_k_var_read_line_887[] = "var.read (line 887)";
-static char __pyx_k_The_attribute_name[] = " The attribute name ";
-static char __pyx_k_NotImplementedError[] = "NotImplementedError";
-static char __pyx_k_Internal_variable_id[] = " Internal variable id. ";
-static char __pyx_k_Not_an_open_variable[] = "Not an open variable";
-static char __pyx_k_The_version_of_Adios[] = " The version of Adios. ";
-static char __pyx_k_The_attribute_s_value[] = " The attribute's value ";
-static char __pyx_k_The_filename_to_write[] = " The filename to write. ";
-static char __pyx_k_Use_default_BP_method[] = ". Use default BP method";
-static char __pyx_k_The_size_of_Adios_file[] = " The size of Adios file. ";
-static char __pyx_k_The_last_timestep_index[] = " The last timestep index. ";
-static char __pyx_k_The_number_of_variables[] = " The number of variables. ";
-static char __pyx_k_The_number_of_attributes[] = " The number of attributes. ";
-static char __pyx_k_getitem___locals_genexpr[] = "__getitem__.<locals>.genexpr";
-static char __pyx_k_The_shape_of_the_variable[] = " The shape of the variable. ";
-static char __pyx_k_Too_many_indices_for_data[] = "Too many indices for data";
-static char __pyx_k_The_current_timestep_index[] = " The current timestep index. ";
-static char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
-static char __pyx_k_writer_define_var_line_1243[] = "writer.define_var (line 1243)";
-static char __pyx_k_Step_size_d_is_not_supported[] = "Step size (%d) is not supported.";
-static char __pyx_k_Name_index_r_is_not_supported[] = "Name index (%r) is not supported.";
-static char __pyx_k_WARN_Invalid_read_method_name[] = "[WARN] Invalid read method name:";
-static char __pyx_k_Data_type_is_not_supported_yet[] = "Data type is not supported yet";
-static 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 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            from_steps (int, optional): starting step index (default: None)\n            nsteps (int, optional): number of tim [...]
-static char __pyx_k_The_attribute_type_as_in_numpy[] = " The attribute type as in numpy.dtype ";
-static char __pyx_k_writer_declare_group_line_1221[] = "writer.declare_group (line 1221)";
-static char __pyx_k_AdiosVar_varid_r_dtype_r_ndim_r[] = "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)";
-static char __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim[] = "AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)";
-static char __pyx_k_Boolean_to_indicate_using_No_XM[] = " Boolean to indicate using No-XML or not. ";
-static 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.define_var [...]
-static char __pyx_k_Dictionary_of_attributes_to_wri[] = " Dictionary of attributes to write. ";
-static char __pyx_k_Dictionary_of_variables_to_writ[] = " Dictionary of variables to write. ";
-static char __pyx_k_Indicating_reader_type_file_rea[] = " Indicating reader type; file reader or stream reader ";
-static char __pyx_k_Step_index_is_out_of_range_from[] = "Step index is out of range: from_steps=%r, nsteps=%r";
-static char __pyx_k_The_endianness_of_the_stored_da[] = " The endianness of the stored data. ";
-static char __pyx_k_The_filename_or_stream_name_ass[] = " The filename (or stream name) associated with. ";
-static char __pyx_k_The_groupname_associated_with_t[] = " The groupname associated with the file. ";
-static char __pyx_k_The_number_of_dimensions_of_the[] = " The number of dimensions of the variable. ";
-static char __pyx_k_The_number_of_time_steps_of_the[] = " The number of time steps of the variable. ";
-static char __pyx_k_Users_jyc_project_adios_devel_w[] = "/Users/jyc/project/adios-devel/wrappers/numpy/adios_mpi.pyx";
-static char __pyx_k_Variable_type_as_in_numpy_dtype[] = " Variable type as in numpy.dtype. ";
-static char __pyx_k_Warning_No_support_yet_s_type_d[] = "Warning: No support yet: %s (type=%d, bytes=%d)";
-static char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
-static char __pyx_k_ADIOS_ADIOS_python_module_module[] = "ADIOS: ADIOS python module\n\n.. moduleauthor:: Jong Choi <choij at ornl.gov>\n";
-static char __pyx_k_AdiosAttr_name_r_dtype_r_value_r[] = "AdiosAttr (name=%r, dtype=%r, value=%r)";
-static char __pyx_k_AdiosAttrinfo_name_r_is_static_r[] = "AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)";
-static char __pyx_k_AdiosFile_path_r_nvars_r_var_r_n[] = "AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, current_step=%r, last_step=%r, file_size=%r)";
-static char __pyx_k_AdiosWriter_fname_r_gname_r_meth[] = "AdiosWriter (fname=%r, gname=%r, method=%r, method_params=%r, var=%r, attr=%r)";
-static char __pyx_k_Count_dimension_mismatch_count_d[] = "Count dimension mismatch (count dim: %r)";
-static char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
-static char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
-static char __pyx_k_Offset_dimension_mismatch_offset[] = "Offset dimension mismatch (offset dim: %r)";
-static char __pyx_k_Only_contiguous_arrays_are_suppo[] = "Only contiguous arrays are supported.";
-static char __pyx_k_Requested_is_larger_than_the_sha[] = "Requested is larger than the shape.";
-static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
-static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
+static const char __pyx_k_[] = "/";
+static const char __pyx_k_C[] = "C";
+static const char __pyx_k_S[] = "S";
+static const char __pyx_k_U[] = "U";
+static const char __pyx_k_f[] = "f";
+static const char __pyx_k_k[] = "k";
+static const char __pyx_k_l[] = "l";
+static const char __pyx_k_t[] = "t";
+static const char __pyx_k_v[] = "v";
+static const char __pyx_k_w[] = "w";
+static const char __pyx_k_BP[] = "BP";
+static const char __pyx_k_NO[] = "NO";
+static const char __pyx_k_fh[] = "fh";
+static const char __pyx_k_fp[] = "fp";
+static const char __pyx_k_hl[] = "_hl";
+static const char __pyx_k_np[] = "np";
+static const char __pyx_k_os[] = "os";
+static const char __pyx_k_vp[] = "vp";
+static const char __pyx_k_ALL[] = "ALL";
+static const char __pyx_k_MPI[] = "MPI";
+static const char __pyx_k_NOW[] = "NOW";
+static const char __pyx_k_Var[] = "Var";
+static const char __pyx_k_YES[] = "YES";
+static const char __pyx_k__10[] = "";
+static const char __pyx_k__63[] = " ";
+static const char __pyx_k__65[] = "(,)";
+static const char __pyx_k__77[] = "*";
+static const char __pyx_k_all[] = "all";
+static const char __pyx_k_any[] = "any";
+static const char __pyx_k_doc[] = "__doc__";
+static const char __pyx_k_get[] = "get";
+static const char __pyx_k_key[] = "key";
+static const char __pyx_k_sel[] = "sel";
+static const char __pyx_k_val[] = "val";
+static const char __pyx_k_var[] = "var";
+static const char __pyx_k_zip[] = "zip";
+static const char __pyx_k_Attr[] = "Attr";
+static const char __pyx_k_FLAG[] = "FLAG";
+static const char __pyx_k_File[] = "File";
+static const char __pyx_k_ICEE[] = "ICEE";
+static const char __pyx_k_NONE[] = "NONE";
+static const char __pyx_k_axis[] = "axis";
+static const char __pyx_k_bool[] = "bool_";
+static const char __pyx_k_bpls[] = "bpls";
+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_dims[] = "dims";
+static const char __pyx_k_fd_p[] = "fd_p";
+static const char __pyx_k_file[] = "file";
+static const char __pyx_k_fill[] = "fill";
+static const char __pyx_k_gdim[] = "gdim";
+static const char __pyx_k_init[] = "__init__";
+static const char __pyx_k_int8[] = "int8";
+static const char __pyx_k_keys[] = "keys";
+static const char __pyx_k_last[] = "last";
+static const char __pyx_k_ldim[] = "ldim";
+static const char __pyx_k_long[] = "long";
+static const char __pyx_k_main[] = "__main__";
+static const char __pyx_k_mode[] = "mode";
+static const char __pyx_k_mype[] = "mype";
+static const char __pyx_k_name[] = "name";
+static const char __pyx_k_ndim[] = "ndim";
+static const char __pyx_k_path[] = "path";
+static const char __pyx_k_prod[] = "prod";
+static const char __pyx_k_rank[] = "rank";
+static const char __pyx_k_read[] = "read";
+static const char __pyx_k_real[] = "real";
+static const char __pyx_k_size[] = "size";
+static const char __pyx_k_test[] = "__test__";
+static const char __pyx_k_type[] = "type";
+static const char __pyx_k_vars[] = "vars";
+static const char __pyx_k_when[] = "when";
+static const char __pyx_k_15s_d[] = "%15s : %d";
+static const char __pyx_k_15s_s[] = "%15s : %s";
+static const char __pyx_k_Clone[] = "Clone";
+static const char __pyx_k_DIMES[] = "DIMES";
+static const char __pyx_k_LATER[] = "LATER";
+static const char __pyx_k_array[] = "array";
+static const char __pyx_k_attrs[] = "attrs";
+static const char __pyx_k_atype[] = "atype";
+static const char __pyx_k_bytes[] = "(bytes)";
+static const char __pyx_k_close[] = "close";
+static const char __pyx_k_count[] = "count";
+static const char __pyx_k_dtype[] = "dtype";
+static const char __pyx_k_flags[] = "flags";
+static const char __pyx_k_float[] = "float_";
+static const char __pyx_k_fname[] = "fname";
+static const char __pyx_k_gname[] = "gname";
+static const char __pyx_k_group[] = "group";
+static const char __pyx_k_index[] = "index";
+static const char __pyx_k_int16[] = "int16";
+static const char __pyx_k_int32[] = "int32";
+static const char __pyx_k_int64[] = "int64";
+static const char __pyx_k_numpy[] = "numpy";
+static const char __pyx_k_nvars[] = "nvars";
+static const char __pyx_k_order[] = "order";
+static const char __pyx_k_print[] = "print";
+static const char __pyx_k_range[] = "range";
+static const char __pyx_k_shape[] = "shape";
+static const char __pyx_k_short[] = "short";
+static const char __pyx_k_split[] = "split";
+static const char __pyx_k_start[] = "start";
+static const char __pyx_k_stats[] = "stats";
+static const char __pyx_k_strip[] = "strip";
+static const char __pyx_k_uint8[] = "uint8";
+static const char __pyx_k_value[] = "value";
+static const char __pyx_k_varid[] = "varid";
+static const char __pyx_k_write[] = "write";
+static const char __pyx_k_zeros[] = "zeros";
+static const char __pyx_k_15s_lu[] = "%15s : %lu";
+static const char __pyx_k_POSIX1[] = "POSIX1";
+static const char __pyx_k_Writer[] = "Writer";
+static const char __pyx_k_config[] = "config";
+static const char __pyx_k_define[] = "define";
+static const char __pyx_k_double[] = "double";
+static const char __pyx_k_encode[] = "encode";
+static const char __pyx_k_import[] = "__import__";
+static const char __pyx_k_method[] = "method";
+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_nsteps[] = "nsteps";
+static const char __pyx_k_offset[] = "offset";
+static const char __pyx_k_points[] = "points";
+static const char __pyx_k_rstrip[] = "rstrip";
+static const char __pyx_k_scalar[] = "scalar";
+static const char __pyx_k_select[] = "select";
+static const char __pyx_k_string[] = "string";
+static const char __pyx_k_strlen[] = "strlen";
+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_xrange[] = "xrange";
+static const char __pyx_k_CURRENT[] = "CURRENT";
+static const char __pyx_k_Reading[] = "Reading ... ";
+static const char __pyx_k_UNKNOWN[] = "UNKNOWN";
+static const char __pyx_k_Varinfo[] = "Varinfo";
+static const char __pyx_k_advance[] = "advance";
+static const char __pyx_k_complex[] = "complex_";
+static const char __pyx_k_dirname[] = "dirname";
+static const char __pyx_k_factory[] = "factory";
+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_integer[] = "integer";
+static const char __pyx_k_is_open[] = "is_open";
+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_unknown[] = "unknown";
+static const char __pyx_k_varname[] = "varname";
+static const char __pyx_k_version[] = "version";
+static const char __pyx_k_Attrinfo[] = "Attrinfo";
+static const char __pyx_k_DATATYPE[] = "DATATYPE";
+static const char __pyx_k_Ellipsis[] = "Ellipsis";
+static const char __pyx_k_FLEXPATH[] = "FLEXPATH";
+static const char __pyx_k_KeyError[] = "KeyError";
+static const char __pyx_k_LOCKMODE[] = "LOCKMODE";
+static const char __pyx_k_asscalar[] = "asscalar";
+static const char __pyx_k_attrname[] = "attrname";
+static const char __pyx_k_float128[] = "float128";
+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_qualname[] = "__qualname__";
+static const char __pyx_k_readattr[] = "_readattr";
+static const char __pyx_k_string_2[] = "string_";
+static const char __pyx_k_tostring[] = "tostring";
+static const char __pyx_k_AdiosFile[] = "=== AdiosFile ===";
+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_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_is_static[] = "is_static";
+static const char __pyx_k_is_stream[] = "is_stream";
+static const char __pyx_k_iteritems[] = "iteritems";
+static const char __pyx_k_last_step[] = "last_step";
+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_traceback[] = "traceback";
+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_complex128[] = "complex128";
+static const char __pyx_k_contiguous[] = "contiguous";
+static const char __pyx_k_dimensions[] = "dimensions";
+static const char __pyx_k_endianness[] = "endianness";
+static const char __pyx_k_from_steps[] = "from_steps";
+static const char __pyx_k_group_name[] = "group_name";
+static const char __pyx_k_mpi4py_MPI[] = "mpi4py.MPI";
+static const char __pyx_k_parameters[] = "parameters";
+static const char __pyx_k_process_id[] = "process_id";
+static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
+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_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_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_timeout_sec[] = "timeout_sec";
+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";
+static const char __pyx_k_release_step[] = "release_step";
+static const char __pyx_k_string_array[] = "string_array";
+static const char __pyx_k_var_namelist[] = "var_namelist";
+static const char __pyx_k_AdiosVariable[] = "=== AdiosVariable ===";
+static const char __pyx_k_Value_is_none[] = "Value is none";
+static const char __pyx_k_attr_namelist[] = "attr_namelist";
+static const char __pyx_k_declare_group[] = "declare_group";
+static const char __pyx_k_local_offsets[] = "local_offsets";
+static const char __pyx_k_method_params[] = "method_params";
+static const char __pyx_k_normalize_key[] = "normalize_key";
+static const char __pyx_k_unsigned_byte[] = "unsigned_byte";
+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_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";
+static const char __pyx_k_SimpleSelection[] = "SimpleSelection";
+static const char __pyx_k_Unhashable_type[] = "Unhashable type";
+static const char __pyx_k_exception_value[] = "exception_value";
+static const char __pyx_k_read_writeblock[] = "read_writeblock";
+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_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_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_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_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_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)";
+static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
+static const char __pyx_k_ADIOS_ADIOS_python_module_module[] = "ADIOS: ADIOS python module\n\n.. moduleauthor:: Jong Choi <choij at ornl.gov>\n";
+static const char __pyx_k_AdiosAttr_name_r_dtype_r_value_r[] = "AdiosAttr (name=%r, dtype=%r, value=%r)";
+static const char __pyx_k_AdiosAttrinfo_name_r_is_static_r[] = "AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)";
+static const char __pyx_k_AdiosBlockinfo_process_id_r_time[] = "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)";
+static const char __pyx_k_AdiosWriter_fname_r_gname_r_meth[] = "AdiosWriter (fname=%r, gname=%r, method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)";
+static const char __pyx_k_All_points_must_have_the_same_le[] = "All points must have the same length %r";
+static const char __pyx_k_Count_dimension_mismatch_count_d[] = "Count dimension mismatch (count dim: %r)";
+static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
+static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
+static const char __pyx_k_Offset_dimension_mismatch_offset[] = "Offset dimension mismatch (offset dim: %r)";
+static const char __pyx_k_Only_contiguous_arrays_are_suppo[] = "Only contiguous arrays are supported.";
+static const char __pyx_k_Requested_is_larger_than_the_sha[] = "Requested is larger than the shape.";
+static const char __pyx_k_Scalar_dimension_mismatch_scalar[] = "Scalar dimension mismatch (scalar dim: %r)";
+static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
+static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
+static PyObject *__pyx_kp_s_;
 static PyObject *__pyx_kp_s_15s_d;
 static PyObject *__pyx_kp_s_15s_lu;
 static PyObject *__pyx_kp_s_15s_s;
+static PyObject *__pyx_n_s_ALL;
 static PyObject *__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r;
 static PyObject *__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r;
+static PyObject *__pyx_kp_s_AdiosBlockinfo_process_id_r_time;
 static PyObject *__pyx_kp_s_AdiosFile;
-static PyObject *__pyx_kp_s_AdiosFile_path_r_nvars_r_var_r_n;
-static PyObject *__pyx_kp_s_AdiosVar_varid_r_dtype_r_ndim_r;
+static PyObject *__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r;
+static PyObject *__pyx_kp_s_AdiosGroup_vars_r_attrs_r;
+static PyObject *__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r;
 static PyObject *__pyx_kp_s_AdiosVariable;
 static PyObject *__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim;
 static PyObject *__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth;
+static PyObject *__pyx_kp_s_All_points_must_have_the_same_le;
+static PyObject *__pyx_n_s_Attr;
+static PyObject *__pyx_n_s_Attrinfo;
 static PyObject *__pyx_n_s_BP;
 static PyObject *__pyx_n_s_BP_AGGREGATE;
 static PyObject *__pyx_n_s_BUFFER_ALLOC_WHEN;
+static PyObject *__pyx_n_s_C;
 static PyObject *__pyx_n_s_COMM_SELF;
 static PyObject *__pyx_n_s_COMM_WORLD;
+static PyObject *__pyx_n_s_CURRENT;
+static PyObject *__pyx_n_s_Clone;
 static PyObject *__pyx_kp_s_Count_dimension_mismatch_count_d;
 static PyObject *__pyx_n_s_DATASPACES;
 static PyObject *__pyx_n_s_DATATYPE;
@@ -2441,65 +2618,74 @@ static PyObject *__pyx_kp_u_Define_a_variable_associated_wi;
 static PyObject *__pyx_n_s_Ellipsis;
 static PyObject *__pyx_n_s_FLAG;
 static PyObject *__pyx_n_s_FLEXPATH;
+static PyObject *__pyx_n_s_FancySelection;
+static PyObject *__pyx_n_s_File;
 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor;
 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2;
 static PyObject *__pyx_n_s_ICEE;
 static PyObject *__pyx_n_s_IndexError;
 static PyObject *__pyx_n_s_KeyError;
 static PyObject *__pyx_n_s_LATER;
+static PyObject *__pyx_n_s_LOCKMODE;
 static PyObject *__pyx_n_s_MPI;
 static PyObject *__pyx_n_s_NO;
+static PyObject *__pyx_n_s_NONE;
 static PyObject *__pyx_n_s_NOW;
-static PyObject *__pyx_kp_s_Name_index_r_is_not_supported;
-static PyObject *__pyx_kp_s_No_valid_variable;
 static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
 static PyObject *__pyx_n_s_NotImplementedError;
 static PyObject *__pyx_kp_s_Not_a_valid_var;
 static PyObject *__pyx_kp_s_Not_an_open_file;
 static PyObject *__pyx_kp_s_Not_an_open_var;
 static PyObject *__pyx_kp_s_Not_an_open_variable;
+static PyObject *__pyx_kp_s_Not_implemented_yet;
 static PyObject *__pyx_kp_s_Offset_dimension_mismatch_offset;
 static PyObject *__pyx_kp_s_Only_contiguous_arrays_are_suppo;
+static PyObject *__pyx_n_s_POSIX1;
 static PyObject *__pyx_kp_u_Perform_read_Read_data_from_an;
 static PyObject *__pyx_n_s_READ_METHOD;
+static PyObject *__pyx_kp_s_Rank_is_out_of_range_nblock_r;
 static PyObject *__pyx_kp_s_Reading;
 static PyObject *__pyx_kp_s_Requested_is_larger_than_the_sha;
 static PyObject *__pyx_n_s_RuntimeError;
 static PyObject *__pyx_n_s_S;
+static PyObject *__pyx_kp_s_Scalar_dimension_mismatch_scalar;
+static PyObject *__pyx_n_s_SimpleSelection;
 static PyObject *__pyx_kp_s_Step_index_is_out_of_range_from;
-static PyObject *__pyx_kp_s_Step_size_d_is_not_supported;
-static PyObject *__pyx_kp_s_Too_many_indices_for_data;
 static PyObject *__pyx_n_s_TypeError;
+static PyObject *__pyx_n_s_U;
 static PyObject *__pyx_n_s_UNKNOWN;
 static PyObject *__pyx_kp_s_Unhashable_type;
 static PyObject *__pyx_kp_s_Use_default_BP_method;
 static PyObject *__pyx_kp_s_Users_jyc_project_adios_devel_w;
 static PyObject *__pyx_n_s_ValueError;
 static PyObject *__pyx_kp_s_Value_is_none;
+static PyObject *__pyx_n_s_Var;
+static PyObject *__pyx_n_s_Varinfo;
 static PyObject *__pyx_kp_s_WARN_Invalid_read_method_name;
 static PyObject *__pyx_kp_s_Warning_No_support_yet_s_type_d;
+static PyObject *__pyx_n_s_Writer;
 static PyObject *__pyx_n_s_YES;
-static PyObject *__pyx_kp_s__11;
-static PyObject *__pyx_kp_s__31;
-static PyObject *__pyx_kp_s__33;
-static PyObject *__pyx_n_s__45;
-static PyObject *__pyx_kp_s__7;
+static PyObject *__pyx_kp_s__10;
+static PyObject *__pyx_kp_s__63;
+static PyObject *__pyx_kp_s__65;
+static PyObject *__pyx_n_s__77;
 static PyObject *__pyx_n_s_adios_mpi;
 static PyObject *__pyx_n_s_advance;
+static PyObject *__pyx_n_s_all;
 static PyObject *__pyx_n_s_any;
-static PyObject *__pyx_n_s_args;
 static PyObject *__pyx_n_s_array;
+static PyObject *__pyx_n_s_asscalar;
 static PyObject *__pyx_n_s_attr_namelist;
 static PyObject *__pyx_n_s_attrname;
 static PyObject *__pyx_n_s_attrs;
 static PyObject *__pyx_n_s_atype;
+static PyObject *__pyx_n_s_axis;
 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_byte;
 static PyObject *__pyx_kp_s_bytes;
-static PyObject *__pyx_n_s_bytes_2;
 static PyObject *__pyx_n_s_char;
 static PyObject *__pyx_n_s_close;
 static PyObject *__pyx_n_s_comm;
@@ -2507,21 +2693,27 @@ static PyObject *__pyx_n_s_complex;
 static PyObject *__pyx_n_s_complex128;
 static PyObject *__pyx_n_s_complex64;
 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_copy;
 static PyObject *__pyx_n_s_count;
 static PyObject *__pyx_n_s_current_step;
 static PyObject *__pyx_n_s_data_size;
+static PyObject *__pyx_n_s_declare_group;
 static PyObject *__pyx_n_s_define;
 static PyObject *__pyx_n_s_dimensions;
 static PyObject *__pyx_n_s_dims;
+static PyObject *__pyx_n_s_dirname;
 static PyObject *__pyx_n_s_doc;
 static PyObject *__pyx_n_s_double;
 static PyObject *__pyx_n_s_double_complex;
 static PyObject *__pyx_n_s_dtype;
-static PyObject *__pyx_n_s_end;
+static PyObject *__pyx_n_s_encode;
 static PyObject *__pyx_n_s_endianness;
+static PyObject *__pyx_n_s_enumerate;
+static PyObject *__pyx_n_s_exception_type;
+static PyObject *__pyx_n_s_exception_value;
 static PyObject *__pyx_n_s_f;
 static PyObject *__pyx_n_s_factory;
 static PyObject *__pyx_n_s_fd_p;
@@ -2539,17 +2731,16 @@ static PyObject *__pyx_n_s_fname;
 static PyObject *__pyx_n_s_fp;
 static PyObject *__pyx_n_s_from_steps;
 static PyObject *__pyx_n_s_gdim;
-static PyObject *__pyx_n_s_genexpr;
 static PyObject *__pyx_n_s_get;
-static PyObject *__pyx_n_s_getitem___locals_genexpr;
+static PyObject *__pyx_n_s_getitem;
 static PyObject *__pyx_n_s_global_dimensions;
 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_hl;
 static PyObject *__pyx_n_s_import;
 static PyObject *__pyx_n_s_index;
-static PyObject *__pyx_n_s_indices;
 static PyObject *__pyx_n_s_init;
 static PyObject *__pyx_n_s_int16;
 static PyObject *__pyx_n_s_int32;
@@ -2557,13 +2748,16 @@ static PyObject *__pyx_n_s_int64;
 static PyObject *__pyx_n_s_int8;
 static PyObject *__pyx_n_s_integer;
 static PyObject *__pyx_n_s_is_noxml;
+static PyObject *__pyx_n_s_is_open;
 static PyObject *__pyx_n_s_is_static;
 static PyObject *__pyx_n_s_is_stream;
 static PyObject *__pyx_n_s_itemsize;
 static PyObject *__pyx_n_s_iteritems;
 static PyObject *__pyx_n_s_iterkeys;
 static PyObject *__pyx_n_s_k;
+static PyObject *__pyx_n_s_key;
 static PyObject *__pyx_n_s_keys;
+static PyObject *__pyx_n_s_l;
 static PyObject *__pyx_n_s_last;
 static PyObject *__pyx_n_s_last_step;
 static PyObject *__pyx_n_s_ldim;
@@ -2578,51 +2772,71 @@ static PyObject *__pyx_n_s_method_name;
 static PyObject *__pyx_n_s_method_params;
 static PyObject *__pyx_n_s_mode;
 static PyObject *__pyx_n_s_module;
+static PyObject *__pyx_n_s_morder;
 static PyObject *__pyx_n_s_mpi4py_MPI;
+static PyObject *__pyx_n_s_mshape;
 static PyObject *__pyx_n_s_mype;
 static PyObject *__pyx_n_s_name;
 static PyObject *__pyx_n_s_nattrs;
 static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous;
 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_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_os;
 static PyObject *__pyx_n_s_parameters;
 static PyObject *__pyx_n_s_path;
+static PyObject *__pyx_n_s_points;
 static PyObject *__pyx_n_s_prepare;
 static PyObject *__pyx_n_s_print;
 static PyObject *__pyx_n_s_printself;
+static PyObject *__pyx_n_s_process_id;
+static PyObject *__pyx_n_s_prod;
 static PyObject *__pyx_n_s_pyx_vtable;
 static PyObject *__pyx_n_s_qualname;
 static PyObject *__pyx_n_s_range;
+static PyObject *__pyx_n_s_rank;
 static PyObject *__pyx_n_s_read;
+static PyObject *__pyx_n_s_read_points;
+static PyObject *__pyx_n_s_read_writeblock;
+static PyObject *__pyx_n_s_readattr;
 static PyObject *__pyx_n_s_readvar;
+static PyObject *__pyx_n_s_readvar_2;
 static PyObject *__pyx_n_s_real;
+static PyObject *__pyx_n_s_release_step;
 static PyObject *__pyx_n_s_replace;
-static PyObject *__pyx_n_s_send;
+static PyObject *__pyx_n_s_reshape;
+static PyObject *__pyx_n_s_rstrip;
+static PyObject *__pyx_n_s_scalar;
+static PyObject *__pyx_n_s_sel;
+static PyObject *__pyx_n_s_select;
+static PyObject *__pyx_n_s_selections;
 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_split;
-static PyObject *__pyx_n_s_squeeze;
+static PyObject *__pyx_n_s_start;
+static PyObject *__pyx_n_s_startswith;
 static PyObject *__pyx_n_s_stats;
-static PyObject *__pyx_n_s_step;
-static PyObject *__pyx_n_s_str;
+static PyObject *__pyx_n_s_step_scalar;
 static PyObject *__pyx_n_s_string;
+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_subtract;
 static PyObject *__pyx_n_s_t;
 static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_throw;
 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_tostring;
+static PyObject *__pyx_n_s_traceback;
 static PyObject *__pyx_n_s_type;
 static PyObject *__pyx_n_s_uint16;
 static PyObject *__pyx_n_s_uint32;
@@ -2640,580 +2854,557 @@ static PyObject *__pyx_n_s_value;
 static PyObject *__pyx_n_s_values;
 static PyObject *__pyx_n_s_var;
 static PyObject *__pyx_n_s_var_namelist;
-static PyObject *__pyx_kp_u_var_read_line_887;
+static PyObject *__pyx_kp_u_var_read_line_1264;
 static PyObject *__pyx_n_s_varid;
 static PyObject *__pyx_n_s_varname;
 static PyObject *__pyx_n_s_vars;
 static PyObject *__pyx_n_s_version;
 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_1221;
-static PyObject *__pyx_kp_u_writer_define_var_line_1243;
+static PyObject *__pyx_kp_u_writer_declare_group_line_1781;
+static PyObject *__pyx_kp_u_writer_define_var_line_1803;
 static PyObject *__pyx_n_s_xrange;
 static PyObject *__pyx_n_s_zeros;
 static PyObject *__pyx_n_s_zip;
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_3;
-static PyObject *__pyx_int_4;
-static PyObject *__pyx_int_5;
-static PyObject *__pyx_int_6;
-static PyObject *__pyx_int_7;
-static PyObject *__pyx_int_9;
-static PyObject *__pyx_int_10;
-static PyObject *__pyx_int_11;
-static PyObject *__pyx_int_12;
-static PyObject *__pyx_int_50;
-static PyObject *__pyx_int_51;
-static PyObject *__pyx_int_52;
-static PyObject *__pyx_int_54;
-static PyObject *__pyx_int_neg_1;
-static struct PyMPICommObject *__pyx_k__4;
-static struct PyMPICommObject *__pyx_k__5;
-static struct PyMPICommObject *__pyx_k__6;
-static struct PyMPICommObject *__pyx_k__8;
-static struct PyMPICommObject *__pyx_k__9;
-static ADIOS_LOCKMODE __pyx_k__10;
-static struct PyMPICommObject *__pyx_k__22;
-static PyObject *__pyx_k__23;
-static PyObject *__pyx_k__24;
-static PyObject *__pyx_k__25;
-static PyObject *__pyx_k__27;
-static PyObject *__pyx_k__28;
-static PyObject *__pyx_k__29;
-static PyObject *__pyx_slice_;
-static PyObject *__pyx_slice__2;
-static PyObject *__pyx_tuple__3;
-static PyObject *__pyx_slice__16;
-static PyObject *__pyx_slice__19;
-static PyObject *__pyx_slice__20;
-static PyObject *__pyx_slice__21;
-static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__14;
-static PyObject *__pyx_tuple__15;
-static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__40;
-static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__42;
-static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__48;
-static PyObject *__pyx_codeobj__47;
-static PyObject *__pyx_codeobj__49;
-
-/* "adios_mpi.pyx":19
- * from cpython.string cimport PyString_AsString
- * 
- * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):
- */
-
-static char **__pyx_f_9adios_mpi_to_cstring_array(PyObject *__pyx_v_list_str) {
-  char **__pyx_v_ret;
-  Py_ssize_t __pyx_v_i;
-  char **__pyx_r;
-  __Pyx_RefNannyDeclarations
-  Py_ssize_t __pyx_t_1;
-  Py_ssize_t __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("to_cstring_array", 0);
-
-  /* "adios_mpi.pyx":20
- * 
- * cdef char ** to_cstring_array(list_str):
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))             # <<<<<<<<<<<<<<
- *     for i in xrange(len(list_str)):
- *         ret[i] = PyString_AsString(list_str[i])
- */
-  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_ret = ((char **)malloc((__pyx_t_1 * (sizeof(char *)))));
-
-  /* "adios_mpi.pyx":21
- * cdef char ** to_cstring_array(list_str):
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):             # <<<<<<<<<<<<<<
- *         ret[i] = PyString_AsString(list_str[i])
- *     return ret
- */
-  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
-    __pyx_v_i = __pyx_t_2;
-
-    /* "adios_mpi.pyx":22
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):
- *         ret[i] = PyString_AsString(list_str[i])             # <<<<<<<<<<<<<<
- *     return ret
+static PyObject *__pyx_pf_9adios_mpi_test_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_2b2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4s2b(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6normalize_key(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keys); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_8__parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_10init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_config, struct PyMPICommObject *__pyx_v_comm); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_12open(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_group_name, PyObject *__pyx_v_name, PyObject *__pyx_v_mode, struct PyMPICommObject *__pyx_v_comm); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_14set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_16write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_18write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, int __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_20write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, long __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_22write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, float __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_24write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_26read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_28close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_30finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
+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_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 */
+static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_9file_size___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_2__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_4__enter__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_6__exit__(struct __pyx_obj_9adios_mpi_file *__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_4file_8close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_10printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_12release_step(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_14advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_26is_open(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file_28__nonzero__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file_30__bool__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_4vars___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file_4vars_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_4file_4vars_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_5attrs___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file_5attrs_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_4file_5attrs_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_3var___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file_3var_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_4file_3var_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4file_4attr___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4file_4attr_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_4file_4attr_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5start___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5count___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10process_id___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10time_index___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, int __pyx_v_process_id, int __pyx_v_time_index); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_2__repr__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_5shape___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_5attrs___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_4close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_6advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_8read_points(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_10read_writeblock(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_v_rank, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_12read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_scalar, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill, PyObject *__pyx_v_step_scalar); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_14printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_4attr_4__repr__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_4vars___get__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_5group_4vars_2__set__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_5group_4vars_4__del__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_5group_5attrs___get__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_5group_5attrs_2__set__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_5group_5attrs_4__del__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_smartdict *__pyx_v_self, PyObject *__pyx_v_factory); /* proto */
+static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_mpi_smartdict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+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 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_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 */
+static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+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_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 */
+static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_7varinfo_4ldim___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_4ldim_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_4ldim_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_7varinfo_4gdim___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_4gdim_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_4gdim_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_7varinfo_6offset___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_6offset_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_6offset_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+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 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*/
+static PyObject *__pyx_tp_new_9adios_mpi_file(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_blockinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_var(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_attr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_group(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_smartdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_writer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_attrinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_9adios_mpi_varinfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys = {0, &__pyx_n_s_keys, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, &__pyx_n_s_values, 0, 0, 0};
+static PyObject *__pyx_int_0;
+static PyObject *__pyx_int_1;
+static PyObject *__pyx_int_2;
+static PyObject *__pyx_int_3;
+static PyObject *__pyx_int_4;
+static PyObject *__pyx_int_5;
+static PyObject *__pyx_int_6;
+static PyObject *__pyx_int_7;
+static PyObject *__pyx_int_9;
+static PyObject *__pyx_int_10;
+static PyObject *__pyx_int_11;
+static PyObject *__pyx_int_12;
+static PyObject *__pyx_int_50;
+static PyObject *__pyx_int_51;
+static PyObject *__pyx_int_52;
+static PyObject *__pyx_int_54;
+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 PyObject *__pyx_k__55;
+static PyObject *__pyx_k__56;
+static PyObject *__pyx_k__59;
+static PyObject *__pyx_k__60;
+static PyObject *__pyx_k__61;
+static PyObject *__pyx_slice__3;
+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__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_tuple__13;
+static PyObject *__pyx_tuple__17;
+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__25;
+static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__29;
+static PyObject *__pyx_tuple__30;
+static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__33;
+static PyObject *__pyx_tuple__34;
+static PyObject *__pyx_tuple__42;
+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__50;
+static PyObject *__pyx_tuple__52;
+static PyObject *__pyx_tuple__57;
+static PyObject *__pyx_tuple__58;
+static PyObject *__pyx_tuple__62;
+static PyObject *__pyx_tuple__64;
+static PyObject *__pyx_tuple__66;
+static PyObject *__pyx_tuple__67;
+static PyObject *__pyx_tuple__68;
+static PyObject *__pyx_tuple__69;
+static PyObject *__pyx_tuple__70;
+static PyObject *__pyx_tuple__71;
+static PyObject *__pyx_tuple__72;
+static PyObject *__pyx_tuple__73;
+static PyObject *__pyx_tuple__74;
+static PyObject *__pyx_tuple__75;
+static PyObject *__pyx_tuple__76;
+static PyObject *__pyx_tuple__78;
+static PyObject *__pyx_tuple__80;
+static PyObject *__pyx_tuple__82;
+static PyObject *__pyx_codeobj__79;
+static PyObject *__pyx_codeobj__81;
+static PyObject *__pyx_codeobj__83;
+
+/* "adios_mpi.pyx":33
+ * ## To convert a string to bytes: "str".encode()
+ * ## To convert bytes to a String: b"".decode() or str(b"")
+ * cpdef void test_str(str x):             # <<<<<<<<<<<<<<
+ *     cdef char * y = strdup(x.encode())
+ *     print(x, str(y))
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_1test_str(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static void __pyx_f_9adios_mpi_test_str(PyObject *__pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  char *__pyx_v_y;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("test_str", 0);
+
+  /* "adios_mpi.pyx":34
+ * ## To convert bytes to a String: b"".decode() or str(b"")
+ * cpdef void test_str(str x):
+ *     cdef char * y = strdup(x.encode())             # <<<<<<<<<<<<<<
+ *     print(x, str(y))
  * 
  */
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_list_str, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyString_AsString(__pyx_t_3); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    (__pyx_v_ret[__pyx_v_i]) = __pyx_t_4;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (__pyx_t_3) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __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, 34, __pyx_L1_error)
   }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 34, __pyx_L1_error)
+  __pyx_v_y = strdup(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":23
- *     for i in xrange(len(list_str)):
- *         ret[i] = PyString_AsString(list_str[i])
- *     return ret             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":35
+ * cpdef void test_str(str x):
+ *     cdef char * y = strdup(x.encode())
+ *     print(x, str(y))             # <<<<<<<<<<<<<<
  * 
- * ## ====================
+ * from cpython.version cimport PY_MAJOR_VERSION
  */
-  __pyx_r = __pyx_v_ret;
-  goto __pyx_L0;
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __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, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_x);
+  __Pyx_GIVEREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __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, 35, __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":19
- * from cpython.string cimport PyString_AsString
- * 
- * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
- *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
- *     for i in xrange(len(list_str)):
+  /* "adios_mpi.pyx":33
+ * ## To convert a string to bytes: "str".encode()
+ * ## To convert bytes to a String: b"".decode() or str(b"")
+ * cpdef void test_str(str x):             # <<<<<<<<<<<<<<
+ *     cdef char * y = strdup(x.encode())
+ *     print(x, str(y))
  */
 
   /* function exit code */
+  goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_WriteUnraisable("adios_mpi.to_cstring_array", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_r = 0;
+  __Pyx_WriteUnraisable("adios_mpi.test_str", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_1test_str(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_9adios_mpi_test_str[] = "test_str(str x) -> void";
+static PyObject *__pyx_pw_9adios_mpi_1test_str(PyObject *__pyx_self, PyObject *__pyx_v_x) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("test_str (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), (&PyString_Type), 1, "x", 1))) __PYX_ERR(0, 33, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_test_str(__pyx_self, ((PyObject*)__pyx_v_x));
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":277
- * 
- * 
- * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):
+static PyObject *__pyx_pf_9adios_mpi_test_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("test_str", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_void_to_None(__pyx_f_9adios_mpi_test_str(__pyx_v_x, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __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.test_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":46
+ * ## python2: str(b"") return str
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return str(x)
  */
 
-static PyObject *__pyx_pw_9adios_mpi_1__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObject *__pyx_v_ndim, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_v_fixed = NULL;
-  PyObject *__pyx_v_length = NULL;
-  PyObject *__pyx_v_slice_ = NULL;
+static PyObject *__pyx_pw_9adios_mpi_3b2s(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_b2s(PyObject *__pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *(*__pyx_t_5)(PyObject *);
-  PyObject *__pyx_t_6 = NULL;
-  Py_ssize_t __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__parse_index", 0);
-  __Pyx_INCREF(__pyx_v_index);
+  __Pyx_RefNannySetupContext("b2s", 0);
 
-  /* "adios_mpi.pyx":279
- * cpdef __parse_index(index, ndim):
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
- *         index = (index,)
- * 
+  /* "adios_mpi.pyx":47
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return str(x)
+ *     else:
  */
-  __pyx_t_1 = PyTuple_Check(__pyx_v_index); 
-  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = ((PY_MAJOR_VERSION < 3) != 0);
+  if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":280
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):
- *         index = (index,)             # <<<<<<<<<<<<<<
- * 
- *     fixed = []
+    /* "adios_mpi.pyx":48
+ * cpdef str b2s(bytes x):
+ *     if PY_MAJOR_VERSION < 3:
+ *         return str(x)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return x.decode()
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_v_x);
+    __Pyx_GIVEREF(__pyx_v_x);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x);
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_index);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index);
-    __Pyx_GIVEREF(__pyx_v_index);
-    __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 48, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
+    goto __pyx_L0;
 
-  /* "adios_mpi.pyx":282
- *         index = (index,)
- * 
- *     fixed = []             # <<<<<<<<<<<<<<
- *     length = len(index)
- * 
+    /* "adios_mpi.pyx":47
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return str(x)
+ *     else:
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_fixed = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  }
 
-  /* "adios_mpi.pyx":283
- * 
- *     fixed = []
- *     length = len(index)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":50
+ *         return str(x)
+ *     else:
+ *         return x.decode()             # <<<<<<<<<<<<<<
  * 
- *     for slice_ in index:
+ * cpdef bytes s2b(str x):
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_length = __pyx_t_3;
-  __pyx_t_3 = 0;
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    if (unlikely(__pyx_v_x == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
+      __PYX_ERR(0, 50, __pyx_L1_error)
+    }
+    __pyx_t_3 = __Pyx_decode_bytes(__pyx_v_x, 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 50, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+  }
 
-  /* "adios_mpi.pyx":285
- *     length = len(index)
- * 
- *     for slice_ in index:             # <<<<<<<<<<<<<<
- *         if slice_ is Ellipsis:
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- */
-  if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
-    __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_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #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_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      }
-    } else {
-      __pyx_t_6 = __pyx_t_5(__pyx_t_3);
-      if (unlikely(!__pyx_t_6)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_6);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_6);
-    __pyx_t_6 = 0;
-
-    /* "adios_mpi.pyx":286
- * 
- *     for slice_ in index:
- *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- *         elif isinstance(slice_, (int, long)):
- */
-    __pyx_t_2 = (__pyx_v_slice_ == __pyx_builtin_Ellipsis);
-    __pyx_t_1 = (__pyx_t_2 != 0);
-    if (__pyx_t_1) {
-
-      /* "adios_mpi.pyx":287
- *     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_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PyList_GET_SIZE(__pyx_v_fixed); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __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 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_INCREF(__pyx_slice_);
-      PyList_SET_ITEM(__pyx_t_9, 0, __pyx_slice_);
-      __Pyx_GIVEREF(__pyx_slice_);
-      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      goto __pyx_L6;
-    }
-
-    /* "adios_mpi.pyx":288
- *         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))
- *         else:
- */
-    __pyx_t_2 = PyInt_Check(__pyx_v_slice_); 
-    __pyx_t_11 = (__pyx_t_2 != 0);
-    if (!__pyx_t_11) {
-    } else {
-      __pyx_t_1 = __pyx_t_11;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_t_11 = PyLong_Check(__pyx_v_slice_); 
-    __pyx_t_2 = (__pyx_t_11 != 0);
-    __pyx_t_1 = __pyx_t_2;
-    __pyx_L7_bool_binop_done:;
-    __pyx_t_2 = (__pyx_t_1 != 0);
-    if (__pyx_t_2) {
-
-      /* "adios_mpi.pyx":289
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- *         elif isinstance(slice_, (int, long)):
- *             fixed.append(slice(slice_, slice_+1, None))             # <<<<<<<<<<<<<<
- *         else:
- *             fixed.append(slice_)
- */
-      __pyx_t_9 = PyNumber_Add(__pyx_v_slice_, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L6;
-    }
-    /*else*/ {
-
-      /* "adios_mpi.pyx":291
- *             fixed.append(slice(slice_, slice_+1, None))
- *         else:
- *             fixed.append(slice_)             # <<<<<<<<<<<<<<
- *         length -= 1
- * 
- */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_v_slice_); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_L6:;
-
-    /* "adios_mpi.pyx":292
- *         else:
- *             fixed.append(slice_)
- *         length -= 1             # <<<<<<<<<<<<<<
- * 
- *     index = tuple(fixed)
- */
-    __pyx_t_8 = PyNumber_InPlaceSubtract(__pyx_v_length, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF_SET(__pyx_v_length, __pyx_t_8);
-    __pyx_t_8 = 0;
-
-    /* "adios_mpi.pyx":285
- *     length = len(index)
- * 
- *     for slice_ in index:             # <<<<<<<<<<<<<<
- *         if slice_ is Ellipsis:
- *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
- */
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "adios_mpi.pyx":294
- *         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_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
-  __pyx_t_3 = 0;
-
-  /* "adios_mpi.pyx":295
- * 
- *     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_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_v_ndim, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  if (__pyx_t_2) {
-
-    /* "adios_mpi.pyx":296
- *     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_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_3 = PyNumber_Subtract(__pyx_v_ndim, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_8 = PyNumber_Multiply(__pyx_tuple__3, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L9;
-  }
-  __pyx_L9:;
-
-  /* "adios_mpi.pyx":298
- *         index += (slice(None),) * (ndim-len(index))
- * 
- *     return index             # <<<<<<<<<<<<<<
- * 
- * ## ====================
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_index);
-  __pyx_r = __pyx_v_index;
-  goto __pyx_L0;
-
-  /* "adios_mpi.pyx":277
- * 
- * 
- * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
- *     # Fix index, handling ellipsis and incomplete slices.
- *     if not isinstance(index, tuple):
+  /* "adios_mpi.pyx":46
+ * ## python2: str(b"") return str
+ * ## python3: str(b"") return 'b""'. Correct way: b"".decode()
+ * cpdef str b2s(bytes x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return str(x)
  */
 
   /* function exit code */
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.b2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_fixed);
-  __Pyx_XDECREF(__pyx_v_length);
-  __Pyx_XDECREF(__pyx_v_slice_);
-  __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_1__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi___parse_index[] = "__parse_index(index, ndim)";
-static PyObject *__pyx_pw_9adios_mpi_1__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_index = 0;
-  PyObject *__pyx_v_ndim = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_3b2s(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_9adios_mpi_2b2s[] = "b2s(bytes x) -> str";
+static PyObject *__pyx_pw_9adios_mpi_3b2s(PyObject *__pyx_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__parse_index (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_ndim,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_index)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        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_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __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_index = values[0];
-    __pyx_v_ndim = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi___parse_index(__pyx_self, __pyx_v_index, __pyx_v_ndim);
+  __Pyx_RefNannySetupContext("b2s (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), (&PyBytes_Type), 1, "x", 1))) __PYX_ERR(0, 46, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_2b2s(__pyx_self, ((PyObject*)__pyx_v_x));
 
   /* 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___parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim) {
+static PyObject *__pyx_pf_9adios_mpi_2b2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__parse_index", 0);
+  __Pyx_RefNannySetupContext("b2s", 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_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_9adios_mpi_b2s(__pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3222,7 +3413,7 @@ static PyObject *__pyx_pf_9adios_mpi___parse_index(CYTHON_UNUSED PyObject *__pyx
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.b2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -3230,56 +3421,104 @@ static PyObject *__pyx_pf_9adios_mpi___parse_index(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":304
- * ## ====================
- * 
- * cpdef init(char * config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm.ob_mpi)
+/* "adios_mpi.pyx":52
+ *         return x.decode()
  * 
+ * cpdef bytes s2b(str x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return <bytes>x
  */
 
-static PyObject *__pyx_pw_9adios_mpi_3init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_init(char *__pyx_v_config, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init *__pyx_optional_args) {
-  struct PyMPICommObject *__pyx_v_comm = __pyx_k__4;
+static PyObject *__pyx_pw_9adios_mpi_5s2b(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_s2b(PyObject *__pyx_v_x, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("init", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_comm = __pyx_optional_args->comm;
-    }
-  }
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("s2b", 0);
 
-  /* "adios_mpi.pyx":305
+  /* "adios_mpi.pyx":53
  * 
- * cpdef init(char * config, MPI.Comm comm = MPI.COMM_WORLD):
- *     return adios_init(config, comm.ob_mpi)             # <<<<<<<<<<<<<<
- * 
- * cpdef int64_t open(char * group_name,
+ * cpdef bytes s2b(str x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return <bytes>x
+ *     else:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(adios_init(__pyx_v_config, __pyx_v_comm->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __pyx_t_1 = ((PY_MAJOR_VERSION < 3) != 0);
+  if (__pyx_t_1) {
 
-  /* "adios_mpi.pyx":304
- * ## ====================
+    /* "adios_mpi.pyx":54
+ * cpdef bytes s2b(str x):
+ *     if PY_MAJOR_VERSION < 3:
+ *         return <bytes>x             # <<<<<<<<<<<<<<
+ *     else:
+ *         return x.encode()
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject*)__pyx_v_x));
+    __pyx_r = ((PyObject*)__pyx_v_x);
+    goto __pyx_L0;
+
+    /* "adios_mpi.pyx":53
+ * 
+ * cpdef bytes s2b(str x):
+ *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
+ *         return <bytes>x
+ *     else:
+ */
+  }
+
+  /* "adios_mpi.pyx":56
+ *         return <bytes>x
+ *     else:
+ *         return x.encode()             # <<<<<<<<<<<<<<
  * 
- * cpdef init(char * config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm.ob_mpi)
+ * def normalize_key(keys):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __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, 56, __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, 56, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 56, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "adios_mpi.pyx":52
+ *         return x.decode()
  * 
+ * cpdef bytes s2b(str x):             # <<<<<<<<<<<<<<
+ *     if PY_MAJOR_VERSION < 3:
+ *         return <bytes>x
  */
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.s2b", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -3288,65 +3527,14 @@ static PyObject *__pyx_f_9adios_mpi_init(char *__pyx_v_config, CYTHON_UNUSED int
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_2init[] = "init(char *config, Comm comm=MPI.COMM_WORLD)";
-static PyObject *__pyx_pw_9adios_mpi_3init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_config;
-  struct PyMPICommObject *__pyx_v_comm = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_5s2b(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
+static char __pyx_doc_9adios_mpi_4s2b[] = "s2b(str x) -> bytes";
+static PyObject *__pyx_pw_9adios_mpi_5s2b(PyObject *__pyx_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("init (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_config,&__pyx_n_s_comm,0};
-    PyObject* values[2] = {0,0};
-    values[1] = (PyObject *)__pyx_k__4;
-    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_config)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_config = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_config) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_comm = ((struct PyMPICommObject *)values[1]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __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_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_2init(__pyx_self, __pyx_v_config, __pyx_v_comm);
+  __Pyx_RefNannySetupContext("s2b (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), (&PyString_Type), 1, "x", 1))) __PYX_ERR(0, 52, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_4s2b(__pyx_self, ((PyObject*)__pyx_v_x));
 
   /* function exit code */
   goto __pyx_L0;
@@ -3357,19 +3545,13 @@ static PyObject *__pyx_pw_9adios_mpi_3init(PyObject *__pyx_self, PyObject *__pyx
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_2init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_config, struct PyMPICommObject *__pyx_v_comm) {
+static PyObject *__pyx_pf_9adios_mpi_4s2b(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_9adios_mpi_init __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("init", 0);
+  __Pyx_RefNannySetupContext("s2b", 0);
   __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_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_x, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3378,7 +3560,7 @@ static PyObject *__pyx_pf_9adios_mpi_2init(CYTHON_UNUSED PyObject *__pyx_self, c
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.s2b", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -3386,930 +3568,779 @@ static PyObject *__pyx_pf_9adios_mpi_2init(CYTHON_UNUSED PyObject *__pyx_self, c
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":307
- *     return adios_init(config, comm.ob_mpi)
- * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
- */
-
-static PyObject *__pyx_pw_9adios_mpi_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int64_t __pyx_f_9adios_mpi_open(char *__pyx_v_group_name, char *__pyx_v_name, char *__pyx_v_mode, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_open *__pyx_optional_args) {
-  struct PyMPICommObject *__pyx_v_comm = __pyx_k__5;
-  int64_t __pyx_v_fd;
-  CYTHON_UNUSED int __pyx_v_result;
-  int64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("open", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_comm = __pyx_optional_args->comm;
-    }
-  }
-
-  /* "adios_mpi.pyx":313
- *     cdef int64_t fd
- *     cdef int result
- *     result = adios_open(&fd, group_name, name, mode, comm.ob_mpi)             # <<<<<<<<<<<<<<
- *     return fd
- * 
- */
-  __pyx_v_result = adios_open((&__pyx_v_fd), __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm->ob_mpi);
-
-  /* "adios_mpi.pyx":314
- *     cdef int result
- *     result = adios_open(&fd, group_name, name, mode, comm.ob_mpi)
- *     return fd             # <<<<<<<<<<<<<<
- * 
- * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
- */
-  __pyx_r = __pyx_v_fd;
-  goto __pyx_L0;
-
-  /* "adios_mpi.pyx":307
- *     return adios_init(config, comm.ob_mpi)
+/* "adios_mpi.pyx":58
+ *         return x.encode()
  * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
  */
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_4open[] = "open(char *group_name, char *name, char *mode, Comm comm=MPI.COMM_WORLD) -> int64_t";
-static PyObject *__pyx_pw_9adios_mpi_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_group_name;
-  char *__pyx_v_name;
-  char *__pyx_v_mode;
-  struct PyMPICommObject *__pyx_v_comm = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_7normalize_key(PyObject *__pyx_self, PyObject *__pyx_v_keys); /*proto*/
+static char __pyx_doc_9adios_mpi_6normalize_key[] = "normalize_key(keys)";
+static PyMethodDef __pyx_mdef_9adios_mpi_7normalize_key = {"normalize_key", (PyCFunction)__pyx_pw_9adios_mpi_7normalize_key, METH_O, __pyx_doc_9adios_mpi_6normalize_key};
+static PyObject *__pyx_pw_9adios_mpi_7normalize_key(PyObject *__pyx_self, PyObject *__pyx_v_keys) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("open (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_name,&__pyx_n_s_name,&__pyx_n_s_mode,&__pyx_n_s_comm,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[3] = (PyObject *)__pyx_k__5;
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        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_name)) != 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("open", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[3] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_group_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_group_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_mode = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_mode) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __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_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_4open(__pyx_self, __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm);
+  __Pyx_RefNannySetupContext("normalize_key (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_6normalize_key(__pyx_self, ((PyObject *)__pyx_v_keys));
 
   /* 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_4open(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_group_name, char *__pyx_v_name, char *__pyx_v_mode, struct PyMPICommObject *__pyx_v_comm) {
+static PyObject *__pyx_pf_9adios_mpi_6normalize_key(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keys) {
+  PyObject *__pyx_v_l = NULL;
+  PyObject *__pyx_v_key = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_open __pyx_t_2;
+  int __pyx_t_1;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("open", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  __Pyx_RefNannySetupContext("normalize_key", 0);
+  __Pyx_INCREF(__pyx_v_keys);
 
-/* "adios_mpi.pyx":316
- *     return fd
+  /* "adios_mpi.pyx":59
  * 
- * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
- *     cdef uint64_t total_size
- *     cdef int result
+ * def normalize_key(keys):
+ *     if not isinstance(keys, list):             # <<<<<<<<<<<<<<
+ *         keys = [keys,]
+ *     l = list()
  */
+  __pyx_t_1 = PyList_Check(__pyx_v_keys); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-static PyObject *__pyx_pw_9adios_mpi_7set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int64_t __pyx_f_9adios_mpi_set_group_size(int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  uint64_t __pyx_v_total_size;
-  CYTHON_UNUSED int __pyx_v_result;
-  int64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("set_group_size", 0);
-
-  /* "adios_mpi.pyx":319
- *     cdef uint64_t total_size
- *     cdef int result
- *     result = adios_group_size(fd_p, data_size, &total_size)             # <<<<<<<<<<<<<<
- *     return total_size
- * 
+    /* "adios_mpi.pyx":60
+ * def normalize_key(keys):
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]             # <<<<<<<<<<<<<<
+ *     l = list()
+ *     for key in keys:
  */
-  __pyx_v_result = adios_group_size(__pyx_v_fd_p, __pyx_v_data_size, (&__pyx_v_total_size));
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_keys);
+    __Pyx_GIVEREF(__pyx_v_keys);
+    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_keys);
+    __Pyx_DECREF_SET(__pyx_v_keys, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":320
- *     cdef int result
- *     result = adios_group_size(fd_p, data_size, &total_size)
- *     return total_size             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":59
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):
+ * def normalize_key(keys):
+ *     if not isinstance(keys, list):             # <<<<<<<<<<<<<<
+ *         keys = [keys,]
+ *     l = list()
  */
-  __pyx_r = __pyx_v_total_size;
-  goto __pyx_L0;
+  }
 
-  /* "adios_mpi.pyx":316
- *     return fd
- * 
- * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
- *     cdef uint64_t total_size
- *     cdef int result
+  /* "adios_mpi.pyx":61
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ *     l = list()             # <<<<<<<<<<<<<<
+ *     for key in keys:
+ *         if key.startswith('/'):
  */
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_l = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_7set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_6set_group_size[] = "set_group_size(int64_t fd_p, uint64_t data_size) -> int64_t";
-static PyObject *__pyx_pw_9adios_mpi_7set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  uint64_t __pyx_v_data_size;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("set_group_size (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_data_size,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;
+  /* "adios_mpi.pyx":62
+ *         keys = [keys,]
+ *     l = list()
+ *     for key in keys:             # <<<<<<<<<<<<<<
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ */
+  if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) {
+    __pyx_t_3 = __pyx_v_keys; __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_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __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, 62, __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, 62, __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, 62, __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, 62, __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, 62, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        #endif
       }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        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_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_t_6 = __pyx_t_5(__pyx_t_3);
+      if (unlikely(!__pyx_t_6)) {
+        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, 62, __pyx_L1_error)
         }
+        break;
       }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_6);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_6set_group_size(__pyx_self, __pyx_v_fd_p, __pyx_v_data_size);
+    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6);
+    __pyx_t_6 = 0;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":63
+ *     l = list()
+ *     for key in keys:
+ *         if key.startswith('/'):             # <<<<<<<<<<<<<<
+ *             key = key[1:]
+ *         if '/' not in key:
+ */
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_startswith); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 63, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_2) {
 
-static PyObject *__pyx_pf_9adios_mpi_6set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("set_group_size", 0);
+      /* "adios_mpi.pyx":64
+ *     for key in keys:
+ *         if key.startswith('/'):
+ *             key = key[1:]             # <<<<<<<<<<<<<<
+ *         if '/' not in key:
+ *             l.append(key)
+ */
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key, 1, 0, NULL, NULL, &__pyx_slice__3, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 64, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios_mpi.pyx":63
+ *     l = list()
+ *     for key in keys:
+ *         if key.startswith('/'):             # <<<<<<<<<<<<<<
+ *             key = key[1:]
+ *         if '/' not in key:
+ */
+    }
+
+    /* "adios_mpi.pyx":65
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ *         if '/' not in key:             # <<<<<<<<<<<<<<
+ *             l.append(key)
+ *     return (l)
+ */
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_, __pyx_v_key, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 65, __pyx_L1_error)
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":66
+ *             key = key[1:]
+ *         if '/' not in key:
+ *             l.append(key)             # <<<<<<<<<<<<<<
+ *     return (l)
+ * 
+ */
+      __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_l, __pyx_v_key); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 66, __pyx_L1_error)
+
+      /* "adios_mpi.pyx":65
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ *         if '/' not in key:             # <<<<<<<<<<<<<<
+ *             l.append(key)
+ *     return (l)
+ */
+    }
+
+    /* "adios_mpi.pyx":62
+ *         keys = [keys,]
+ *     l = list()
+ *     for key in keys:             # <<<<<<<<<<<<<<
+ *         if key.startswith('/'):
+ *             key = key[1:]
+ */
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios_mpi.pyx":67
+ *         if '/' not in key:
+ *             l.append(key)
+ *     return (l)             # <<<<<<<<<<<<<<
+ * 
+ * cdef char ** to_cstring_array(list_str):
+ */
   __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_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __Pyx_INCREF(__pyx_v_l);
+  __pyx_r = __pyx_v_l;
   goto __pyx_L0;
 
+  /* "adios_mpi.pyx":58
+ *         return x.encode()
+ * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ */
+
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios_mpi.normalize_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_l);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_keys);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":322
- *     return total_size
+/* "adios_mpi.pyx":69
+ *     return (l)
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):             # <<<<<<<<<<<<<<
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
+ * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):
  */
 
-static PyObject *__pyx_pw_9adios_mpi_9write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, char *__pyx_v_name, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_write *__pyx_optional_args) {
-  PyObject *__pyx_v_dtype = ((PyObject *)Py_None);
-  PyArrayObject *__pyx_v_val_ = 0;
-  int __pyx_r;
+static char **__pyx_f_9adios_mpi_to_cstring_array(PyObject *__pyx_v_list_str) {
+  char **__pyx_v_ret;
+  Py_ssize_t __pyx_v_i;
+  PyObject *__pyx_v_bstr = NULL;
+  char **__pyx_r;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
+  Py_ssize_t __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dtype = __pyx_optional_args->dtype;
-    }
-  }
+  char *__pyx_t_5;
+  __Pyx_RefNannySetupContext("to_cstring_array", 0);
 
-  /* "adios_mpi.pyx":324
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
+  /* "adios_mpi.pyx":70
+ * 
+ * cdef char ** to_cstring_array(list_str):
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))             # <<<<<<<<<<<<<<
+ *     for i in xrange(len(list_str)):
+ *         bstr = s2b(list_str[i])
  */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 70, __pyx_L1_error)
+  __pyx_v_ret = ((char **)malloc((__pyx_t_1 * (sizeof(char *)))));
 
-    /* "adios_mpi.pyx":325
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
- *             val_ = val
- *         else:
+  /* "adios_mpi.pyx":71
+ * cdef char ** to_cstring_array(list_str):
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):             # <<<<<<<<<<<<<<
+ *         bstr = s2b(list_str[i])
+ *         ret[i] = PyBytes_AsString(bstr)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_Length(__pyx_v_list_str); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 71, __pyx_L1_error)
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
+
+    /* "adios_mpi.pyx":72
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):
+ *         bstr = s2b(list_str[i])             # <<<<<<<<<<<<<<
+ *         ret[i] = PyBytes_AsString(bstr)
+ *     return ret
+ */
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_list_str, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __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_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 72, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_t_3), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __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_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
-
-      /* "adios_mpi.pyx":326
- *     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_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __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;
-      goto __pyx_L4;
-    }
-    /*else*/ {
-
-      /* "adios_mpi.pyx":328
- *             val_ = val
- *         else:
- *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
- *     else:
- *         val_ = np.array(val, dtype=dtype)
- */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-      __pyx_t_6 = 0;
-    }
-    __pyx_L4:;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+    __Pyx_XDECREF_SET(__pyx_v_bstr, ((PyObject*)__pyx_t_4));
+    __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":330
- *             val_ = np.array(val, copy=True)
- *     else:
- *         val_ = np.array(val, dtype=dtype)             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":73
+ *     for i in xrange(len(list_str)):
+ *         bstr = s2b(list_str[i])
+ *         ret[i] = PyBytes_AsString(bstr)             # <<<<<<<<<<<<<<
+ *     return ret
  * 
- *     return adios_write (fd_p, name, <void *> val_.data)
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_INCREF(__pyx_v_val);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_val);
-    __Pyx_GIVEREF(__pyx_v_val);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_dtype) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_3);
-    __pyx_t_3 = 0;
+    __pyx_t_5 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_5 == NULL)) __PYX_ERR(0, 73, __pyx_L1_error)
+    (__pyx_v_ret[__pyx_v_i]) = __pyx_t_5;
   }
-  __pyx_L3:;
 
-  /* "adios_mpi.pyx":332
- *         val_ = np.array(val, dtype=dtype)
- * 
- *     return adios_write (fd_p, name, <void *> val_.data)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":74
+ *         bstr = s2b(list_str[i])
+ *         ret[i] = PyBytes_AsString(bstr)
+ *     return ret             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):
+ * ## ====================
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, ((void *)__pyx_v_val_->data));
+  __pyx_r = __pyx_v_ret;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":322
- *     return total_size
+  /* "adios_mpi.pyx":69
+ *     return (l)
  * 
- * cpdef int write (int64_t fd_p, char * name, val, dtype=None):             # <<<<<<<<<<<<<<
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
+ * cdef char ** to_cstring_array(list_str):             # <<<<<<<<<<<<<<
+ *     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
+ *     for i in xrange(len(list_str)):
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_WriteUnraisable("adios_mpi.write", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_WriteUnraisable("adios_mpi.to_cstring_array", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_bstr);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_9write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_8write[] = "write(int64_t fd_p, char *name, val, dtype=None) -> int";
-static PyObject *__pyx_pw_9adios_mpi_9write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  PyObject *__pyx_v_val = 0;
-  PyObject *__pyx_v_dtype = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,&__pyx_n_s_dtype,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[3] = ((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  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_fd_p)) != 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("write", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
-          if (value) { values[3] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        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_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __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_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_9adios_mpi_8write(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val, __pyx_v_dtype);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+/* "adios_mpi.pyx":348
+ *     ALL =2
+ * 
+ * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):
+ */
 
-static PyObject *__pyx_pf_9adios_mpi_8write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype) {
+static PyObject *__pyx_pw_9adios_mpi_9__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObject *__pyx_v_ndim, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_v_fixed = NULL;
+  PyObject *__pyx_v_length = NULL;
+  PyObject *__pyx_v_slice_ = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_write __pyx_t_2;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  PyObject *__pyx_t_6 = NULL;
+  Py_ssize_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  __Pyx_RefNannySetupContext("__parse_index", 0);
+  __Pyx_INCREF(__pyx_v_index);
 
-/* "adios_mpi.pyx":334
- *     return adios_write (fd_p, name, <void *> val_.data)
- * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios_mpi.pyx":350
+ * cpdef __parse_index(index, ndim):
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
+ *         index = (index,)
  * 
  */
+  __pyx_t_1 = PyTuple_Check(__pyx_v_index); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-static PyObject *__pyx_pw_9adios_mpi_11write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_write_int(int64_t __pyx_v_fd_p, char *__pyx_v_name, int __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_int", 0);
-
-  /* "adios_mpi.pyx":335
- * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":351
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):
+ *         index = (index,)             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):
+ *     fixed = []
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
-  goto __pyx_L0;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_index);
+    __Pyx_GIVEREF(__pyx_v_index);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index);
+    __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":334
- *     return adios_write (fd_p, name, <void *> val_.data)
- * 
- * cpdef int write_int (int64_t fd_p, char * name, int val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+    /* "adios_mpi.pyx":350
+ * cpdef __parse_index(index, ndim):
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
+ *         index = (index,)
  * 
  */
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_11write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_10write_int[] = "write_int(int64_t fd_p, char *name, int val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_11write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  int __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_int (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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_fd_p)) != 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("write_int", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __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_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_9adios_mpi_10write_int(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_10write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, int __pyx_v_val) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __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.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
 
-/* "adios_mpi.pyx":337
- *     return adios_write (fd_p, name, &val)
+  /* "adios_mpi.pyx":353
+ *         index = (index,)
  * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+ *     fixed = []             # <<<<<<<<<<<<<<
+ *     length = len(index)
  * 
  */
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 353, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_fixed = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
 
-static PyObject *__pyx_pw_9adios_mpi_13write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_write_long(int64_t __pyx_v_fd_p, char *__pyx_v_name, long __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_long", 0);
-
-  /* "adios_mpi.pyx":338
+  /* "adios_mpi.pyx":354
  * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+ *     fixed = []
+ *     length = len(index)             # <<<<<<<<<<<<<<
  * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):
+ *     for slice_ in index:
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
-  goto __pyx_L0;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_v_length = __pyx_t_3;
+  __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":337
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_long (int64_t fd_p, char * name, long val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios_mpi.pyx":356
+ *     length = len(index)
  * 
+ *     for slice_ in index:             # <<<<<<<<<<<<<<
+ *         if slice_ is Ellipsis:
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  */
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_13write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_12write_long[] = "write_long(int64_t fd_p, char *name, long val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_13write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  long __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_long (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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;
+  if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_6);
+        #endif
       }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 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("write_long", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_t_6 = __pyx_t_5(__pyx_t_3);
+      if (unlikely(!__pyx_t_6)) {
+        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)
         }
+        break;
       }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_6);
+    __pyx_t_6 = 0;
+
+    /* "adios_mpi.pyx":357
+ * 
+ *     for slice_ in index:
+ *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ *         elif isinstance(slice_, (int, long)):
+ */
+    __pyx_t_2 = (__pyx_v_slice_ == __pyx_builtin_Ellipsis);
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":358
+ *     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_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_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_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_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_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)
+        __Pyx_GOTREF(__pyx_temp);
+        __Pyx_DECREF(__pyx_t_9);
+        __pyx_t_9 = __pyx_temp;
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
+      __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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+      /* "adios_mpi.pyx":357
+ * 
+ *     for slice_ in index:
+ *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ *         elif isinstance(slice_, (int, long)):
+ */
+      goto __pyx_L6;
+    }
+
+    /* "adios_mpi.pyx":359
+ *         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))
+ *         elif isinstance(slice_, (float)):
+ */
+    __pyx_t_2 = PyInt_Check(__pyx_v_slice_); 
+    __pyx_t_11 = (__pyx_t_2 != 0);
+    if (!__pyx_t_11) {
     } 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_t_1 = __pyx_t_11;
+      goto __pyx_L7_bool_binop_done;
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __Pyx_PyInt_As_long(values[2]); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_9adios_mpi_12write_long(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+    __pyx_t_11 = PyLong_Check(__pyx_v_slice_); 
+    __pyx_t_2 = (__pyx_t_11 != 0);
+    __pyx_t_1 = __pyx_t_2;
+    __pyx_L7_bool_binop_done:;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":360
+ *             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_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_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_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-static PyObject *__pyx_pf_9adios_mpi_12write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, long __pyx_v_val) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+      /* "adios_mpi.pyx":359
+ *         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))
+ *         elif isinstance(slice_, (float)):
+ */
+      goto __pyx_L6;
+    }
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":361
+ *         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))
+ *         else:
+ */
+    __pyx_t_2 = PyFloat_Check(__pyx_v_slice_); 
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
 
-/* "adios_mpi.pyx":340
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+      /* "adios_mpi.pyx":362
+ *             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_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_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_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_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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+      /* "adios_mpi.pyx":361
+ *         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))
+ *         else:
+ */
+      goto __pyx_L6;
+    }
+
+    /* "adios_mpi.pyx":364
+ *             fixed.append(slice(int(slice_), int(slice_)+1, None))
+ *         else:
+ *             fixed.append(slice_)             # <<<<<<<<<<<<<<
+ *         length -= 1
  * 
  */
+    /*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_L6:;
 
-static PyObject *__pyx_pw_9adios_mpi_15write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_write_float(int64_t __pyx_v_fd_p, char *__pyx_v_name, float __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_float", 0);
+    /* "adios_mpi.pyx":365
+ *         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_GOTREF(__pyx_t_9);
+    __Pyx_DECREF_SET(__pyx_v_length, __pyx_t_9);
+    __pyx_t_9 = 0;
 
-  /* "adios_mpi.pyx":341
+    /* "adios_mpi.pyx":356
+ *     length = len(index)
  * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+ *     for slice_ in index:             # <<<<<<<<<<<<<<
+ *         if slice_ is Ellipsis:
+ *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
+ */
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios_mpi.pyx":367
+ *         length -= 1
  * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):
+ *     index = tuple(fixed)             # <<<<<<<<<<<<<<
+ *     if len(index) < ndim:
+ *         index += (slice(None),) * (ndim-len(index))
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
-  goto __pyx_L0;
+  __pyx_t_3 = PyList_AsTuple(__pyx_v_fixed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
+  __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":340
- *     return adios_write (fd_p, name, &val)
+  /* "adios_mpi.pyx":368
  * 
- * cpdef int write_float (int64_t fd_p, char * name, float val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+ *     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_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_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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (__pyx_t_1) {
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":369
+ *     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_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_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_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_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;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_15write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_14write_float[] = "write_float(int64_t fd_p, char *name, float val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_15write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  float __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
+    /* "adios_mpi.pyx":368
+ * 
+ *     index = tuple(fixed)
+ *     if len(index) < ndim:             # <<<<<<<<<<<<<<
+ *         index += (slice(None),) * (ndim-len(index))
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":371
+ *         index += (slice(None),) * (ndim-len(index))
+ * 
+ *     return index             # <<<<<<<<<<<<<<
+ * 
+ * ## ====================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_index);
+  __pyx_r = __pyx_v_index;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":348
+ *     ALL =2
+ * 
+ * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
+ *     # Fix index, handling ellipsis and incomplete slices.
+ *     if not isinstance(index, tuple):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_fixed);
+  __Pyx_XDECREF(__pyx_v_length);
+  __Pyx_XDECREF(__pyx_v_slice_);
+  __Pyx_XDECREF(__pyx_v_index);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_9__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_8__parse_index[] = "__parse_index(index, ndim)";
+static PyObject *__pyx_pw_9adios_mpi_9__parse_index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_index = 0;
+  PyObject *__pyx_v_ndim = 0;
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_float (wrapper)", 0);
+  __Pyx_RefNannySetupContext("__parse_index (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_ndim,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  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;
@@ -4318,58 +4349,48 @@ static PyObject *__pyx_pw_9adios_mpi_15write_float(PyObject *__pyx_self, PyObjec
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index)) != 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("write_float", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ndim)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, 1); __PYX_ERR(0, 348, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) __PYX_ERR(0, 348, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+    } 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);
-      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_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_index = values[0];
+    __pyx_v_ndim = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 348, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_14write_float(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  __pyx_r = __pyx_pf_9adios_mpi_8__parse_index(__pyx_self, __pyx_v_index, __pyx_v_ndim);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_14write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, float __pyx_v_val) {
+static PyObject *__pyx_pf_9adios_mpi_8__parse_index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyObject *__pyx_v_ndim) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write_float", 0);
+  __Pyx_RefNannySetupContext("__parse_index", 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_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __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, 348, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4378,7 +4399,7 @@ static PyObject *__pyx_pf_9adios_mpi_14write_float(CYTHON_UNUSED PyObject *__pyx
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4386,65 +4407,119 @@ static PyObject *__pyx_pf_9adios_mpi_14write_float(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":343
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+/* "adios_mpi.pyx":380
+ * cdef MPI.Comm read_init_comm
  * 
+ * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm.Clone()
  */
 
-static PyObject *__pyx_pw_9adios_mpi_17write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_write_double(int64_t __pyx_v_fd_p, char *__pyx_v_name, double __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
+static PyObject *__pyx_pw_9adios_mpi_11init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_init(PyObject *__pyx_v_config, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init *__pyx_optional_args) {
+  struct PyMPICommObject *__pyx_v_comm = __pyx_k__7;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_double", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  __Pyx_RefNannySetupContext("init", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_comm = __pyx_optional_args->comm;
+    }
+  }
 
-  /* "adios_mpi.pyx":344
- * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):
- *     return adios_write (fd_p, name, &val)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":382
+ * 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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)
+  __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
+ *     global init_comm
+ *     init_comm = comm.Clone()
+ *     return adios_init(s2b(config), init_comm.ob_mpi)             # <<<<<<<<<<<<<<
  * 
+ * cpdef int64_t open(str group_name,
  */
-  __pyx_r = adios_write(__pyx_v_fd_p, __pyx_v_name, (&__pyx_v_val));
+  __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_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_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":343
- *     return adios_write (fd_p, name, &val)
- * 
- * cpdef int write_double (int64_t fd_p, char * name, double val):             # <<<<<<<<<<<<<<
- *     return adios_write (fd_p, name, &val)
+  /* "adios_mpi.pyx":380
+ * cdef MPI.Comm read_init_comm
  * 
+ * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm.Clone()
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_17write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_16write_double[] = "write_double(int64_t fd_p, char *name, double val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_17write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  double __pyx_v_val;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_11init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_10init[] = "init(str config, Comm comm=MPI.COMM_WORLD)";
+static PyObject *__pyx_pw_9adios_mpi_11init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_config = 0;
+  struct PyMPICommObject *__pyx_v_comm = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("write_double (wrapper)", 0);
+  __Pyx_RefNannySetupContext("init (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_config,&__pyx_n_s_comm,0};
+    PyObject* values[2] = {0,0};
+    values[1] = (PyObject *)__pyx_k__7;
     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;
@@ -4453,58 +4528,59 @@ static PyObject *__pyx_pw_9adios_mpi_17write_double(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_fd_p)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_config)) != 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("write_double", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[1] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 380, __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);
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_config = ((PyObject*)values[0]);
+    __pyx_v_comm = ((struct PyMPICommObject *)values[1]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 380, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_16write_double(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  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)
+  __pyx_r = __pyx_pf_9adios_mpi_10init(__pyx_self, __pyx_v_config, __pyx_v_comm);
 
   /* 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_16write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, double __pyx_v_val) {
+static PyObject *__pyx_pf_9adios_mpi_10init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_config, struct PyMPICommObject *__pyx_v_comm) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("write_double", 0);
+  struct __pyx_opt_args_9adios_mpi_init __pyx_t_2;
+  __Pyx_RefNannySetupContext("init", 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_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4513,7 +4589,7 @@ static PyObject *__pyx_pf_9adios_mpi_16write_double(CYTHON_UNUSED PyObject *__py
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4521,114 +4597,79 @@ static PyObject *__pyx_pf_9adios_mpi_16write_double(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":347
+/* "adios_mpi.pyx":385
+ *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
- * 
- * cpdef int read(int64_t fd_p, char * name, np.ndarray val):             # <<<<<<<<<<<<<<
- *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
- *     print "Reading ... ", val.itemsize * val.size, "(bytes)"
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
  */
 
-static PyObject *__pyx_pw_9adios_mpi_19read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_read(int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArrayObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
+static PyObject *__pyx_pw_9adios_mpi_13open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int64_t __pyx_f_9adios_mpi_open(PyObject *__pyx_v_group_name, PyObject *__pyx_v_name, PyObject *__pyx_v_mode, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_open *__pyx_optional_args) {
+  struct PyMPICommObject *__pyx_v_comm = __pyx_k__8;
+  int64_t __pyx_v_fd;
+  CYTHON_UNUSED int __pyx_v_result;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  uint64_t __pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
-
-  /* "adios_mpi.pyx":348
- * 
- * cpdef int read(int64_t fd_p, char * 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, name, <void *> val.data, val.itemsize * val.size)
- */
-  #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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  __Pyx_RefNannySetupContext("open", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_comm = __pyx_optional_args->comm;
     }
   }
-  #endif
 
-  /* "adios_mpi.pyx":349
- * cpdef int read(int64_t fd_p, char * 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, name, <void *> val.data, val.itemsize * val.size)
+  /* "adios_mpi.pyx":391
+ *     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_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_kp_s_Reading);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Reading);
-  __Pyx_GIVEREF(__pyx_kp_s_Reading);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  __Pyx_INCREF(__pyx_kp_s_bytes);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_s_bytes);
-  __Pyx_GIVEREF(__pyx_kp_s_bytes);
-  __pyx_t_4 = 0;
-  if (__Pyx_Print(0, __pyx_t_1, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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_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_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":350
- *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
- *     print "Reading ... ", val.itemsize * val.size, "(bytes)"
- *     return adios_read(fd_p, name, <void *> val.data, val.itemsize * val.size)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":392
+ *     cdef int result
+ *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm.ob_mpi)
+ *     return fd             # <<<<<<<<<<<<<<
  * 
- * cpdef int close(int64_t fd_p):
+ * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_5 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_5 == (uint64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = adios_read(__pyx_v_fd_p, __pyx_v_name, ((void *)__pyx_v_val->data), __pyx_t_5);
+  __pyx_r = __pyx_v_fd;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":347
+  /* "adios_mpi.pyx":385
+ *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
- * 
- * cpdef int read(int64_t fd_p, char * name, np.ndarray val):             # <<<<<<<<<<<<<<
- *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
- *     print "Reading ... ", val.itemsize * val.size, "(bytes)"
+ * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
+ *                    str name,
+ *                    str mode,
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_WriteUnraisable("adios_mpi.read", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("adios_mpi.open", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
@@ -4636,25 +4677,25 @@ static int __pyx_f_9adios_mpi_read(int64_t __pyx_v_fd_p, char *__pyx_v_name, PyA
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_19read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_18read[] = "read(int64_t fd_p, char *name, ndarray val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_19read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_fd_p;
-  char *__pyx_v_name;
-  PyArrayObject *__pyx_v_val = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_13open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_12open[] = "open(str group_name, str name, str mode, Comm comm=MPI.COMM_WORLD) -> int64_t";
+static PyObject *__pyx_pw_9adios_mpi_13open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_group_name = 0;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_mode = 0;
+  struct PyMPICommObject *__pyx_v_comm = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
-    PyObject* values[3] = {0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_name,&__pyx_n_s_name,&__pyx_n_s_mode,&__pyx_n_s_comm,0};
+    PyObject* values[4] = {0,0,0,0};
+    values[3] = (PyObject *)__pyx_k__8;
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        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);
@@ -4664,43 +4705,55 @@ static PyObject *__pyx_pw_9adios_mpi_19read(PyObject *__pyx_self, PyObject *__py
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_name)) != 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("read", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 1); __PYX_ERR(0, 385, __pyx_L3_error)
         }
         case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 2); __PYX_ERR(0, 385, __pyx_L3_error)
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[3] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) __PYX_ERR(0, 385, __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);
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = ((PyArrayObject *)values[2]);
+    __pyx_v_group_name = ((PyObject*)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
+    __pyx_v_mode = ((PyObject*)values[2]);
+    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 385, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_val), __pyx_ptype_5numpy_ndarray, 1, "val", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_18read(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
+  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)
+  __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 */
   goto __pyx_L0;
@@ -4711,25 +4764,27 @@ static PyObject *__pyx_pw_9adios_mpi_19read(PyObject *__pyx_self, PyObject *__py
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_18read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, char *__pyx_v_name, PyArrayObject *__pyx_v_val) {
+static PyObject *__pyx_pf_9adios_mpi_12open(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_group_name, PyObject *__pyx_v_name, PyObject *__pyx_v_mode, struct PyMPICommObject *__pyx_v_comm) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
+  int64_t __pyx_t_1;
+  struct __pyx_opt_args_9adios_mpi_open __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("open", 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_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
   goto __pyx_L0;
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4737,133 +4792,47 @@ static PyObject *__pyx_pf_9adios_mpi_18read(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":352
- *     return adios_read(fd_p, name, <void *> val.data, val.itemsize * val.size)
- * 
- * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
- *     return adios_close(fd_p)
- * 
- */
-
-static PyObject *__pyx_pw_9adios_mpi_21close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
-static int __pyx_f_9adios_mpi_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("close", 0);
-
-  /* "adios_mpi.pyx":353
- * 
- * cpdef int close(int64_t fd_p):
- *     return adios_close(fd_p)             # <<<<<<<<<<<<<<
- * 
- * cpdef int finalize(int mype = 0):
- */
-  __pyx_r = adios_close(__pyx_v_fd_p);
-  goto __pyx_L0;
-
-  /* "adios_mpi.pyx":352
- *     return adios_read(fd_p, name, <void *> val.data, val.itemsize * val.size)
- * 
- * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
- *     return adios_close(fd_p)
+/* "adios_mpi.pyx":394
+ *     return fd
  * 
+ * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
+ *     cdef uint64_t total_size
+ *     cdef int result
  */
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_21close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
-static char __pyx_doc_9adios_mpi_20close[] = "close(int64_t fd_p) -> int";
-static PyObject *__pyx_pw_9adios_mpi_21close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p) {
-  int64_t __pyx_v_fd_p;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_20close(__pyx_self, ((int64_t)__pyx_v_fd_p));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_20close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p) {
-  PyObject *__pyx_r = NULL;
+static PyObject *__pyx_pw_9adios_mpi_15set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int64_t __pyx_f_9adios_mpi_set_group_size(int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  uint64_t __pyx_v_total_size;
+  CYTHON_UNUSED int __pyx_v_result;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __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.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  __Pyx_RefNannySetupContext("set_group_size", 0);
 
-/* "adios_mpi.pyx":355
- *     return adios_close(fd_p)
- * 
- * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
- *     return adios_finalize(mype)
+  /* "adios_mpi.pyx":397
+ *     cdef uint64_t total_size
+ *     cdef int result
+ *     result = adios_group_size(fd_p, data_size, &total_size)             # <<<<<<<<<<<<<<
+ *     return total_size
  * 
  */
+  __pyx_v_result = adios_group_size(__pyx_v_fd_p, __pyx_v_data_size, (&__pyx_v_total_size));
 
-static PyObject *__pyx_pw_9adios_mpi_23finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_finalize *__pyx_optional_args) {
-  int __pyx_v_mype = ((int)0);
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("finalize", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_mype = __pyx_optional_args->mype;
-    }
-  }
-
-  /* "adios_mpi.pyx":356
- * 
- * cpdef int finalize(int mype = 0):
- *     return adios_finalize(mype)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":398
+ *     cdef int result
+ *     result = adios_group_size(fd_p, data_size, &total_size)
+ *     return total_size             # <<<<<<<<<<<<<<
  * 
- * ## ====================
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):
  */
-  __pyx_r = adios_finalize(__pyx_v_mype);
+  __pyx_r = __pyx_v_total_size;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":355
- *     return adios_close(fd_p)
- * 
- * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
- *     return adios_finalize(mype)
+  /* "adios_mpi.pyx":394
+ *     return fd
  * 
+ * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
+ *     cdef uint64_t total_size
+ *     cdef int result
  */
 
   /* function exit code */
@@ -4873,23 +4842,22 @@ static int __pyx_f_9adios_mpi_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, st
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_23finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_22finalize[] = "finalize(int mype=0) -> int";
-static PyObject *__pyx_pw_9adios_mpi_23finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_mype;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_15set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_14set_group_size[] = "set_group_size(int64_t fd_p, uint64_t data_size) -> int64_t";
+static PyObject *__pyx_pw_9adios_mpi_15set_group_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  uint64_t __pyx_v_data_size;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("finalize (wrapper)", 0);
+  __Pyx_RefNannySetupContext("set_group_size (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mype,0};
-    PyObject* values[1] = {0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_data_size,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;
@@ -4897,66 +4865,57 @@ static PyObject *__pyx_pw_9adios_mpi_23finalize(PyObject *__pyx_self, PyObject *
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mype);
-          if (value) { values[0] = value; kw_args--; }
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __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;
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) __PYX_ERR(0, 394, __pyx_L3_error)
       }
-    }
-    if (values[0]) {
-      __pyx_v_mype = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_mype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      __pyx_v_mype = ((int)0);
+      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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 394, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_22finalize(__pyx_self, __pyx_v_mype);
+  __pyx_r = __pyx_pf_9adios_mpi_14set_group_size(__pyx_self, __pyx_v_fd_p, __pyx_v_data_size);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_22finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype) {
+static PyObject *__pyx_pf_9adios_mpi_14set_group_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, uint64_t __pyx_v_data_size) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_finalize __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("finalize", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_group_size", 0);
   __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios_mpi.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -4964,69 +4923,305 @@ static PyObject *__pyx_pf_9adios_mpi_22finalize(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":361
- * ## ADIOS No-XML API
- * ## ====================
- * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm.ob_mpi)
+/* "adios_mpi.pyx":400
+ *     return total_size
  * 
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
  */
 
-static PyObject *__pyx_pw_9adios_mpi_25init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init_noxml *__pyx_optional_args) {
-  struct PyMPICommObject *__pyx_v_comm = __pyx_k__6;
+static PyObject *__pyx_pw_9adios_mpi_17write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_write *__pyx_optional_args) {
+  PyObject *__pyx_v_dtype = ((PyObject *)Py_None);
+  PyArrayObject *__pyx_v_val_ = 0;
+  void *__pyx_v_ptr;
+  PyObject *__pyx_v_bstr = NULL;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("init_noxml", 0);
+  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;
+  __Pyx_RefNannySetupContext("write", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_comm = __pyx_optional_args->comm;
+      __pyx_v_dtype = __pyx_optional_args->dtype;
     }
   }
 
-  /* "adios_mpi.pyx":362
- * ## ====================
- * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):
- *     return adios_init_noxml(comm.ob_mpi)             # <<<<<<<<<<<<<<
- * 
- * cpdef int allocate_buffer(int when,
+  /* "adios_mpi.pyx":402
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
  */
-  __pyx_r = adios_init_noxml(__pyx_v_comm->ob_mpi);
-  goto __pyx_L0;
+  __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":361
- * ## ADIOS No-XML API
- * ## ====================
- * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm.ob_mpi)
- * 
+    /* "adios_mpi.pyx":403
+ *     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_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_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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_2) {
 
-  /* function exit code */
+      /* "adios_mpi.pyx":404
+ *     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)
+      __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
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "adios_mpi.pyx":406
+ *             val_ = val
+ *         else:
+ *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
+ *     else:
+ *         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_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_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_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_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)
+      __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)
+      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
+      __pyx_t_6 = 0;
+    }
+    __pyx_L4:;
+
+    /* "adios_mpi.pyx":402
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":408
+ *             val_ = np.array(val, copy=True)
+ *     else:
+ *         val_ = np.array(val, dtype=dtype)             # <<<<<<<<<<<<<<
+ * 
+ *     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_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_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_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_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)
+    __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)
+    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+  __pyx_L3:;
+
+  /* "adios_mpi.pyx":411
+ * 
+ *     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_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_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)
+  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_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
+ *     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_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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
+ *     if (val_.dtype.char in ('S', 'U')):
+ *         bstr = val_.tostring()
+ *         ptr = <void *> PyBytes_AS_STRING(bstr)             # <<<<<<<<<<<<<<
+ *     else:
+ *         ptr = <void *> val_.data
+ */
+    __pyx_v_ptr = ((void *)PyBytes_AS_STRING(__pyx_v_bstr));
+
+    /* "adios_mpi.pyx":411
+ * 
+ *     cdef void * ptr
+ *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
+ *         bstr = val_.tostring()
+ *         ptr = <void *> PyBytes_AS_STRING(bstr)
+ */
+    goto __pyx_L5;
+  }
+
+  /* "adios_mpi.pyx":415
+ *         ptr = <void *> PyBytes_AS_STRING(bstr)
+ *     else:
+ *         ptr = <void *> val_.data             # <<<<<<<<<<<<<<
+ * 
+ *     return adios_write (fd_p, s2b(name), ptr)
+ */
+  /*else*/ {
+    __pyx_v_ptr = ((void *)__pyx_v_val_->data);
+  }
+  __pyx_L5:;
+
+  /* "adios_mpi.pyx":417
+ *         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_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_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
+ *     return total_size
+ * 
+ * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_WriteUnraisable("adios_mpi.write", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_bstr);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_25init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_24init_noxml[] = "init_noxml(Comm comm=MPI.COMM_WORLD) -> int";
-static PyObject *__pyx_pw_9adios_mpi_25init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct PyMPICommObject *__pyx_v_comm = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_17write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_16write[] = "write(int64_t fd_p, str name, val, dtype=None) -> int";
+static PyObject *__pyx_pw_9adios_mpi_17write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_val = 0;
+  PyObject *__pyx_v_dtype = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("init_noxml (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
-    PyObject* values[1] = {0};
-    values[0] = (PyObject *)__pyx_k__6;
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,&__pyx_n_s_dtype,0};
+    PyObject* values[4] = {0,0,0,0};
+    values[3] = ((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  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;
@@ -5034,33 +5229,52 @@ static PyObject *__pyx_pw_9adios_mpi_25init_noxml(PyObject *__pyx_self, PyObject
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 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("write", 0, 3, 4, 1); __PYX_ERR(0, 400, __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)
+        }
+        case  3:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[0] = value; kw_args--; }
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
+          if (value) { values[3] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 400, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
+    __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_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("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 400, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_24init_noxml(__pyx_self, __pyx_v_comm);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 400, __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 */
   goto __pyx_L0;
@@ -5071,21 +5285,18 @@ static PyObject *__pyx_pw_9adios_mpi_25init_noxml(PyObject *__pyx_self, PyObject
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_24init_noxml(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm) {
+static PyObject *__pyx_pf_9adios_mpi_16write(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyObject *__pyx_v_val, PyObject *__pyx_v_dtype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_init_noxml __pyx_t_2;
+  struct __pyx_opt_args_9adios_mpi_write __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("init_noxml", 0);
+  __Pyx_RefNannySetupContext("write", 0);
   __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_noxml(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -5094,7 +5305,7 @@ static PyObject *__pyx_pf_9adios_mpi_24init_noxml(CYTHON_UNUSED PyObject *__pyx_
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5102,63 +5313,72 @@ static PyObject *__pyx_pf_9adios_mpi_24init_noxml(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":364
- *     return adios_init_noxml(comm.ob_mpi)
+/* "adios_mpi.pyx":419
+ *     return adios_write (fd_p, s2b(name), ptr)
+ * 
+ * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
- *                           uint64_t buffer_size):
- *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
  */
 
-static PyObject *__pyx_pw_9adios_mpi_27allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v_buffer_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_9adios_mpi_19write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_write_int(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, int __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("allocate_buffer", 0);
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_int", 0);
 
-  /* "adios_mpi.pyx":366
- * cpdef int allocate_buffer(int when,
- *                           uint64_t buffer_size):
- *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,             # <<<<<<<<<<<<<<
- *                                  buffer_size)
+  /* "adios_mpi.pyx":420
+ * 
+ * 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_r = adios_allocate_buffer(((ADIOS_BUFFER_ALLOC_WHEN)__pyx_v_when), __pyx_v_buffer_size);
+  __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_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_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":364
- *     return adios_init_noxml(comm.ob_mpi)
+  /* "adios_mpi.pyx":419
+ *     return adios_write (fd_p, s2b(name), ptr)
+ * 
+ * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
- *                           uint64_t buffer_size):
- *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.write_int", __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_27allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_26allocate_buffer[] = "allocate_buffer(int when, uint64_t buffer_size) -> int";
-static PyObject *__pyx_pw_9adios_mpi_27allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_when;
-  uint64_t __pyx_v_buffer_size;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_19write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_18write_int[] = "write_int(int64_t fd_p, str name, int val) -> int";
+static PyObject *__pyx_pw_9adios_mpi_19write_int(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("allocate_buffer (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_int (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_when,&__pyx_n_s_buffer_size,0};
-    PyObject* values[2] = {0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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;
@@ -5167,51 +5387,60 @@ static PyObject *__pyx_pw_9adios_mpi_27allocate_buffer(PyObject *__pyx_self, PyO
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_when)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size)) != 0)) kw_args--;
+        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)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 2); __PYX_ERR(0, 419, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) __PYX_ERR(0, 419, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+    } 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_when = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_when == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __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, 419, __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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 419, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_26allocate_buffer(__pyx_self, __pyx_v_when, __pyx_v_buffer_size);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 419, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_26allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size) {
+static PyObject *__pyx_pf_9adios_mpi_18write_int(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, int __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("allocate_buffer", 0);
+  __Pyx_RefNannySetupContext("write_int", 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_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __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, 419, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5220,7 +5449,7 @@ static PyObject *__pyx_pf_9adios_mpi_26allocate_buffer(CYTHON_UNUSED PyObject *_
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5228,88 +5457,66 @@ static PyObject *__pyx_pf_9adios_mpi_26allocate_buffer(CYTHON_UNUSED PyObject *_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":369
- *                                  buffer_size)
+/* "adios_mpi.pyx":422
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int64_t declare_group(char * name,             # <<<<<<<<<<<<<<
- *                             char * time_index = "",
- *                             int stats = 1):
  */
 
-static PyObject *__pyx_pw_9adios_mpi_29declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int64_t __pyx_f_9adios_mpi_declare_group(char *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_declare_group *__pyx_optional_args) {
-  char *__pyx_v_time_index = ((char *)__pyx_k__7);
-  int __pyx_v_stats = ((int)1);
-  int64_t __pyx_v_id;
-  int64_t __pyx_r;
+static PyObject *__pyx_pw_9adios_mpi_21write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_write_long(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, long __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("declare_group", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_time_index = __pyx_optional_args->time_index;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_stats = __pyx_optional_args->stats;
-      }
-    }
-  }
-
-  /* "adios_mpi.pyx":372
- *                             char * time_index = "",
- *                             int stats = 1):
- *     cdef int64_t id = 0             # <<<<<<<<<<<<<<
- *     adios_declare_group (&id,
- *                          name,
- */
-  __pyx_v_id = 0;
-
-  /* "adios_mpi.pyx":373
- *                             int stats = 1):
- *     cdef int64_t id = 0
- *     adios_declare_group (&id,             # <<<<<<<<<<<<<<
- *                          name,
- *                          time_index,
- */
-  adios_declare_group((&__pyx_v_id), __pyx_v_name, __pyx_v_time_index, ((ADIOS_FLAG)__pyx_v_stats));
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_long", 0);
 
-  /* "adios_mpi.pyx":377
- *                          time_index,
- *                          <ADIOS_FLAG> stats)
- *     return id             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":423
  * 
- * cpdef int define_var(int64_t group_id,
+ * 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_r = __pyx_v_id;
+  __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_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_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":369
- *                                  buffer_size)
+  /* "adios_mpi.pyx":422
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int64_t declare_group(char * name,             # <<<<<<<<<<<<<<
- *                             char * time_index = "",
- *                             int stats = 1):
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.write_long", __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_29declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_28declare_group[] = "declare_group(char *name, char *time_index='', int stats=1) -> int64_t";
-static PyObject *__pyx_pw_9adios_mpi_29declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_name;
-  char *__pyx_v_time_index;
-  int __pyx_v_stats;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_21write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_20write_long[] = "write_long(int64_t fd_p, str name, long val) -> int";
+static PyObject *__pyx_pw_9adios_mpi_21write_long(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  long __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_long (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_time_index,&__pyx_n_s_stats,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,0};
     PyObject* values[3] = {0,0,0};
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
@@ -5324,83 +5531,69 @@ static PyObject *__pyx_pw_9adios_mpi_29declare_group(PyObject *__pyx_self, PyObj
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index);
-          if (value) { values[1] = value; kw_args--; }
+        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)
         }
         case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stats);
-          if (value) { values[2] = value; kw_args--; }
+        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)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __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;
-        default: goto __pyx_L5_argtuple_error;
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) __PYX_ERR(0, 422, __pyx_L3_error)
       }
-    }
-    __pyx_v_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_time_index = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_time_index) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_time_index = ((char *)__pyx_k__7);
-    }
-    if (values[2]) {
-      __pyx_v_stats = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_stats == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      __pyx_v_stats = ((int)1);
+      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_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_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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 422, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_28declare_group(__pyx_self, __pyx_v_name, __pyx_v_time_index, __pyx_v_stats);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 422, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_28declare_group(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, char *__pyx_v_time_index, int __pyx_v_stats) {
+static PyObject *__pyx_pf_9adios_mpi_20write_long(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, long __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_declare_group __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("declare_group", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("write_long", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 2;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios_mpi.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5408,86 +5601,71 @@ static PyObject *__pyx_pf_9adios_mpi_28declare_group(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":379
- *     return id
+/* "adios_mpi.pyx":425
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
- *                      char * name,
- *                      char * path,
  */
 
-static PyObject *__pyx_pw_9adios_mpi_31define_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, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_define_var *__pyx_optional_args) {
-  char *__pyx_v_dimensions = ((char *)__pyx_k__7);
-  char *__pyx_v_global_dimensions = ((char *)__pyx_k__7);
-  char *__pyx_v_local_offsets = ((char *)__pyx_k__7);
+static PyObject *__pyx_pw_9adios_mpi_23write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_write_float(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, float __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_var", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_dimensions = __pyx_optional_args->dimensions;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_global_dimensions = __pyx_optional_args->global_dimensions;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_local_offsets = __pyx_optional_args->local_offsets;
-        }
-      }
-    }
-  }
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_float", 0);
 
-  /* "adios_mpi.pyx":386
- *                      char * global_dimensions = "",
- *                      char * local_offsets = ""):
- *     return adios_define_var(group_id,             # <<<<<<<<<<<<<<
- *                             name, path,
- *                             <ADIOS_DATATYPES> atype,
+  /* "adios_mpi.pyx":426
+ * 
+ * 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_r = adios_define_var(__pyx_v_group_id, __pyx_v_name, __pyx_v_path, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_v_dimensions, __pyx_v_global_dimensions, __pyx_v_local_offsets);
+  __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_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_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":379
- *     return id
+  /* "adios_mpi.pyx":425
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
- *                      char * name,
- *                      char * path,
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.write_float", __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_31define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_30define_var[] = "define_var(int64_t group_id, char *name, char *path, int atype, char *dimensions='', char *global_dimensions='', char *local_offsets='') -> int";
-static PyObject *__pyx_pw_9adios_mpi_31define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group_id;
-  char *__pyx_v_name;
-  char *__pyx_v_path;
-  int __pyx_v_atype;
-  char *__pyx_v_dimensions;
-  char *__pyx_v_global_dimensions;
-  char *__pyx_v_local_offsets;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_23write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_22write_float[] = "write_float(int64_t fd_p, str name, float val) -> int";
+static PyObject *__pyx_pw_9adios_mpi_23write_float(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  float __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_var (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_float (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_dimensions,&__pyx_n_s_global_dimensions,&__pyx_n_s_local_offsets,0};
-    PyObject* values[7] = {0,0,0,0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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  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);
@@ -5497,116 +5675,69 @@ static PyObject *__pyx_pw_9adios_mpi_31define_var(PyObject *__pyx_self, PyObject
       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--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd_p)) != 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_var", 0, 4, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 1); __PYX_ERR(0, 425, __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_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  3:
-        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  4:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions);
-          if (value) { values[4] = value; kw_args--; }
-        }
-        case  5:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_global_dimensions);
-          if (value) { values[5] = value; kw_args--; }
-        }
-        case  6:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_local_offsets);
-          if (value) { values[6] = value; kw_args--; }
+          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); __PYX_ERR(0, 425, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_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);
-        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
-        default: goto __pyx_L5_argtuple_error;
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) __PYX_ERR(0, 425, __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_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_path = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[4]) {
-      __pyx_v_dimensions = __Pyx_PyObject_AsString(values[4]); if (unlikely((!__pyx_v_dimensions) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_dimensions = ((char *)__pyx_k__7);
-    }
-    if (values[5]) {
-      __pyx_v_global_dimensions = __Pyx_PyObject_AsString(values[5]); if (unlikely((!__pyx_v_global_dimensions) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_global_dimensions = ((char *)__pyx_k__7);
-    }
-    if (values[6]) {
-      __pyx_v_local_offsets = __Pyx_PyObject_AsString(values[6]); if (unlikely((!__pyx_v_local_offsets) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      __pyx_v_local_offsets = ((char *)__pyx_k__7);
+      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_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_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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 425, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_30define_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);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 425, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_30define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_dimensions, char *__pyx_v_global_dimensions, char *__pyx_v_local_offsets) {
+static PyObject *__pyx_pf_9adios_mpi_22write_float(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, float __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_var", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("write_float", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 3;
-  __pyx_t_2.dimensions = __pyx_v_dimensions;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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_3);
-  __Pyx_AddTraceback("adios_mpi.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5614,70 +5745,71 @@ static PyObject *__pyx_pf_9adios_mpi_30define_var(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":393
- *                             local_offsets)
+/* "adios_mpi.pyx":428
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             char * name,
- *                             char * path,
  */
 
-static PyObject *__pyx_pw_9adios_mpi_33define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_define_attribute(int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_value, char *__pyx_v_var, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_9adios_mpi_25write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_write_double(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, double __pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  __Pyx_RefNannySetupContext("write_double", 0);
 
-  /* "adios_mpi.pyx":399
- *                             char * value,
- *                             char * var):
- *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
- *                                    name,
- *                                    path,
+  /* "adios_mpi.pyx":429
+ * 
+ * cpdef int write_double (int64_t fd_p, str name, double val):
+ *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
+ * 
+ * 
  */
-  __pyx_r = adios_define_attribute(__pyx_v_group, __pyx_v_name, __pyx_v_path, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_v_value, __pyx_v_var);
+  __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_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_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":393
- *                             local_offsets)
+  /* "adios_mpi.pyx":428
+ *     return adios_write (fd_p, s2b(name), &val)
+ * 
+ * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
+ *     return adios_write (fd_p, s2b(name), &val)
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             char * name,
- *                             char * path,
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.write_double", __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_33define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_32define_attribute[] = "define_attribute(int64_t group, char *name, char *path, int atype, char *value, char *var) -> int";
-static PyObject *__pyx_pw_9adios_mpi_33define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  char *__pyx_v_name;
-  char *__pyx_v_path;
-  int __pyx_v_atype;
-  char *__pyx_v_value;
-  char *__pyx_v_var;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_25write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_24write_double[] = "write_double(int64_t fd_p, str name, double val) -> int";
+static PyObject *__pyx_pw_9adios_mpi_25write_double(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  double __pyx_v_val;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
+  __Pyx_RefNannySetupContext("write_double (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_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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);
@@ -5687,79 +5819,60 @@ static PyObject *__pyx_pw_9adios_mpi_33define_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_fd_p)) != 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_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 1); __PYX_ERR(0, 428, __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_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __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_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 2); __PYX_ERR(0, 428, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) __PYX_ERR(0, 428, __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_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_path = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_value = __Pyx_PyObject_AsString(values[4]); if (unlikely((!__pyx_v_value) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_var = __Pyx_PyObject_AsString(values[5]); if (unlikely((!__pyx_v_var) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __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, 428, __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)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 428, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_32define_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_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 428, __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_32define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, int __pyx_v_atype, char *__pyx_v_value, char *__pyx_v_var) {
+static PyObject *__pyx_pf_9adios_mpi_24write_double(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, double __pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_RefNannySetupContext("write_double", 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_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __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, 428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5768,7 +5881,7 @@ static PyObject *__pyx_pf_9adios_mpi_32define_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.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -5776,376 +5889,143 @@ static PyObject *__pyx_pf_9adios_mpi_32define_attribute(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":406
- *                                    var)
+/* "adios_mpi.pyx":432
  * 
- * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
- *                                     char * name,
- *                                     char * path,
+ * 
+ * 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)")
  */
 
-static PyObject *__pyx_pw_9adios_mpi_35define_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, char *__pyx_v_name, char *__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;
+static PyObject *__pyx_pw_9adios_mpi_27read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
-  char *__pyx_t_7;
-  ADIOS_DATATYPES __pyx_t_8;
-  Py_ssize_t __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
-
-  /* "adios_mpi.pyx":411
- *                                     val):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
- */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-
-    /* "adios_mpi.pyx":412
- *     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_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
-
-      /* "adios_mpi.pyx":413
- *     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_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __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;
-      goto __pyx_L4;
-    }
-    /*else*/ {
-
-      /* "adios_mpi.pyx":415
- *             val_ = val
- *         else:
- *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
- *     else:
- *         val_ = np.array(val)
- */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-      __pyx_t_6 = 0;
-    }
-    __pyx_L4:;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+  uint64_t __pyx_t_7;
+  __Pyx_RefNannySetupContext("read", 0);
 
-    /* "adios_mpi.pyx":417
- *             val_ = np.array(val, copy=True)
- *     else:
- *         val_ = np.array(val)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":433
  * 
- *     atype = np2adiostype(val_.dtype)
+ * 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_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-    } else {
-      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  #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_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_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_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_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_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
   }
-  __pyx_L3:;
+  #endif
 
-  /* "adios_mpi.pyx":419
- *         val_ = np.array(val)
- * 
- *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":434
+ * 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)
  * 
- *     cdef char * pt1
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __pyx_f_9adios_mpi_np2adiostype(((PyArray_Descr *)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __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, 434, __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_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_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_v_atype = __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_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_kp_s_Reading);
+  __Pyx_GIVEREF(__pyx_kp_s_Reading);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Reading);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
+  __Pyx_INCREF(__pyx_kp_s_bytes);
+  __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_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":423
- *     cdef char * pt1
- *     cdef char ** pt2
- *     if (val_.dtype.char == 'S'):             # <<<<<<<<<<<<<<
- *         if (val_.size == 1):
- *             pt1 = PyString_AsString(val)
+  /* "adios_mpi.pyx":435
+ *     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_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_4);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_char); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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_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_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (__pyx_t_2) {
-
-    /* "adios_mpi.pyx":424
- *     cdef char ** pt2
- *     if (val_.dtype.char == 'S'):
- *         if (val_.size == 1):             # <<<<<<<<<<<<<<
- *             pt1 = PyString_AsString(val)
- *             adios_define_attribute_byvalue (group,
- */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
-
-      /* "adios_mpi.pyx":425
- *     if (val_.dtype.char == 'S'):
- *         if (val_.size == 1):
- *             pt1 = PyString_AsString(val)             # <<<<<<<<<<<<<<
- *             adios_define_attribute_byvalue (group,
- *                                             name,
- */
-      __pyx_t_7 = PyString_AsString(__pyx_v_val); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_pt1 = __pyx_t_7;
-
-      /* "adios_mpi.pyx":429
- *                                             name,
- *                                             path,
- *                                             DATATYPE.string,             # <<<<<<<<<<<<<<
- *                                             1,
- *                                             <void *> pt1)
- */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_string); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_t_6)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-
-      /* "adios_mpi.pyx":426
- *         if (val_.size == 1):
- *             pt1 = PyString_AsString(val)
- *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
- *                                             name,
- *                                             path,
- */
-      adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_t_8, 1, ((void *)__pyx_v_pt1));
-      goto __pyx_L6;
-    }
-    /*else*/ {
-
-      /* "adios_mpi.pyx":433
- *                                             <void *> pt1)
- *         else:
- *             pt2 = to_cstring_array(val)             # <<<<<<<<<<<<<<
- *             adios_define_attribute_byvalue (group,
- *                                             name,
- */
-      __pyx_v_pt2 = __pyx_f_9adios_mpi_to_cstring_array(__pyx_v_val);
+  __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":437
- *                                             name,
- *                                             path,
- *                                             DATATYPE.string_array,             # <<<<<<<<<<<<<<
- *                                             len(val),
- *                                             <void *> pt2)
+  /* "adios_mpi.pyx":432
+ * 
+ * 
+ * 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)")
  */
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_string_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_8 = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_t_4)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "adios_mpi.pyx":438
- *                                             path,
- *                                             DATATYPE.string_array,
- *                                             len(val),             # <<<<<<<<<<<<<<
- *                                             <void *> pt2)
- *             free(pt2)
- */
-      __pyx_t_9 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-      /* "adios_mpi.pyx":434
- *         else:
- *             pt2 = to_cstring_array(val)
- *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
- *                                             name,
- *                                             path,
- */
-      adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_t_8, __pyx_t_9, ((void *)__pyx_v_pt2));
-
-      /* "adios_mpi.pyx":440
- *                                             len(val),
- *                                             <void *> pt2)
- *             free(pt2)             # <<<<<<<<<<<<<<
- *     else:
- *         adios_define_attribute_byvalue (group,
- */
-      free(__pyx_v_pt2);
-    }
-    __pyx_L6:;
-    goto __pyx_L5;
-  }
-  /*else*/ {
-
-    /* "adios_mpi.pyx":445
- *                                         name,
- *                                         path,
- *                                         <ADIOS_DATATYPES> atype,             # <<<<<<<<<<<<<<
- *                                         val_.size,
- *                                         <void *> val_.data)
- */
-    __pyx_t_8 = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "adios_mpi.pyx":446
- *                                         path,
- *                                         <ADIOS_DATATYPES> atype,
- *                                         val_.size,             # <<<<<<<<<<<<<<
- *                                         <void *> val_.data)
- * 
- */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
-    /* "adios_mpi.pyx":442
- *             free(pt2)
- *     else:
- *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
- *                                         name,
- *                                         path,
- */
-    adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, ((ADIOS_DATATYPES)__pyx_t_8), __pyx_t_10, ((void *)__pyx_v_val_->data));
-  }
-  __pyx_L5:;
-
-  /* "adios_mpi.pyx":406
- *                                    var)
- * 
- * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
- *                                     char * name,
- *                                     char * path,
- */
-
-  /* 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_WriteUnraisable("adios_mpi.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
-  __Pyx_XDECREF(__pyx_v_atype);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_WriteUnraisable("adios_mpi.read", __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_35define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_34define_attribute_byvalue[] = "define_attribute_byvalue(int64_t group, char *name, char *path, val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_35define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  char *__pyx_v_name;
-  char *__pyx_v_path;
-  PyObject *__pyx_v_val = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_27read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_26read[] = "read(int64_t fd_p, str name, ndarray val) -> int";
+static PyObject *__pyx_pw_9adios_mpi_27read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_v_name = 0;
+  PyArrayObject *__pyx_v_val = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute_byvalue (wrapper)", 0);
+  __Pyx_RefNannySetupContext("read (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_val,0};
-    PyObject* values[4] = {0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd_p,&__pyx_n_s_name,&__pyx_n_s_val,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  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);
@@ -6155,65 +6035,61 @@ static PyObject *__pyx_pw_9adios_mpi_35define_attribute_byvalue(PyObject *__pyx_
       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_fd_p)) != 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_byvalue", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 1); __PYX_ERR(0, 432, __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_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  3:
-        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); __PYX_ERR(0, 432, __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_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 432, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+    } 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);
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_path = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_val = values[3];
+    __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_name = ((PyObject*)values[1]);
+    __pyx_v_val = ((PyArrayObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 432, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_34define_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, 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)
+  __pyx_r = __pyx_pf_9adios_mpi_26read(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* 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_34define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_name, char *__pyx_v_path, PyObject *__pyx_v_val) {
+static PyObject *__pyx_pf_9adios_mpi_26read(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
+  __Pyx_RefNannySetupContext("read", 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_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __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, 432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6222,7 +6098,7 @@ static PyObject *__pyx_pf_9adios_mpi_34define_attribute_byvalue(CYTHON_UNUSED Py
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -6230,46 +6106,127 @@ static PyObject *__pyx_pf_9adios_mpi_34define_attribute_byvalue(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":449
- *                                         <void *> val_.data)
+/* "adios_mpi.pyx":437
+ *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
+ * 
+ * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
+ *     return adios_close(fd_p)
  * 
- * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
- *                          char * method,
- *                          char * parameters = "",
  */
 
-static PyObject *__pyx_pw_9adios_mpi_37select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_select_method(int64_t __pyx_v_group, char *__pyx_v_method, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_select_method *__pyx_optional_args) {
-  char *__pyx_v_parameters = ((char *)__pyx_k__7);
-  char *__pyx_v_base_path = ((char *)__pyx_k__7);
+static PyObject *__pyx_pw_9adios_mpi_29close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
+static int __pyx_f_9adios_mpi_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("select_method", 0);
+  __Pyx_RefNannySetupContext("close", 0);
+
+  /* "adios_mpi.pyx":438
+ * 
+ * cpdef int close(int64_t fd_p):
+ *     return adios_close(fd_p)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int finalize(int mype = 0):
+ */
+  __pyx_r = adios_close(__pyx_v_fd_p);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":437
+ *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
+ * 
+ * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
+ *     return adios_close(fd_p)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_29close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p); /*proto*/
+static char __pyx_doc_9adios_mpi_28close[] = "close(int64_t fd_p) -> int";
+static PyObject *__pyx_pw_9adios_mpi_29close(PyObject *__pyx_self, PyObject *__pyx_arg_fd_p) {
+  int64_t __pyx_v_fd_p;
+  PyObject *__pyx_r = 0;
+  __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)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_28close(__pyx_self, ((int64_t)__pyx_v_fd_p));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_28close(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_fd_p) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_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.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":440
+ *     return adios_close(fd_p)
+ * 
+ * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
+ *     return adios_finalize(mype)
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_31finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_finalize *__pyx_optional_args) {
+  int __pyx_v_mype = ((int)0);
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("finalize", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_parameters = __pyx_optional_args->parameters;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_base_path = __pyx_optional_args->base_path;
-      }
+      __pyx_v_mype = __pyx_optional_args->mype;
     }
   }
 
-  /* "adios_mpi.pyx":453
- *                          char * parameters = "",
- *                          char * base_path = ""):
- *     return adios_select_method (group,             # <<<<<<<<<<<<<<
- *                                 method,
- *                                 parameters,
+  /* "adios_mpi.pyx":441
+ * 
+ * cpdef int finalize(int mype = 0):
+ *     return adios_finalize(mype)             # <<<<<<<<<<<<<<
+ * 
+ * ## ====================
  */
-  __pyx_r = adios_select_method(__pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
+  __pyx_r = adios_finalize(__pyx_v_mype);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":449
- *                                         <void *> val_.data)
+  /* "adios_mpi.pyx":440
+ *     return adios_close(fd_p)
+ * 
+ * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
+ *     return adios_finalize(mype)
  * 
- * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
- *                          char * method,
- *                          char * parameters = "",
  */
 
   /* function exit code */
@@ -6279,29 +6236,20 @@ static int __pyx_f_9adios_mpi_select_method(int64_t __pyx_v_group, char *__pyx_v
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_37select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_36select_method[] = "select_method(int64_t group, char *method, char *parameters='', char *base_path='') -> int";
-static PyObject *__pyx_pw_9adios_mpi_37select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  char *__pyx_v_method;
-  char *__pyx_v_parameters;
-  char *__pyx_v_base_path;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_31finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_30finalize[] = "finalize(int mype=0) -> int";
+static PyObject *__pyx_pw_9adios_mpi_31finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_mype;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("select_method (wrapper)", 0);
+  __Pyx_RefNannySetupContext("finalize (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_method,&__pyx_n_s_parameters,&__pyx_n_s_base_path,0};
-    PyObject* values[4] = {0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mype,0};
+    PyObject* values[1] = {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  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;
@@ -6309,81 +6257,54 @@ static PyObject *__pyx_pw_9adios_mpi_37select_method(PyObject *__pyx_self, PyObj
       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_method)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_base_path);
-          if (value) { values[3] = value; kw_args--; }
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mype);
+          if (value) { values[0] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_method") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) __PYX_ERR(0, 440, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
-        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);
-        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
         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_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_method = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_method) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[2]) {
-      __pyx_v_parameters = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_parameters) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_parameters = ((char *)__pyx_k__7);
-    }
-    if (values[3]) {
-      __pyx_v_base_path = __Pyx_PyObject_AsString(values[3]); if (unlikely((!__pyx_v_base_path) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    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)
     } else {
-      __pyx_v_base_path = ((char *)__pyx_k__7);
+      __pyx_v_mype = ((int)0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 440, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_36select_method(__pyx_self, __pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
+  __pyx_r = __pyx_pf_9adios_mpi_30finalize(__pyx_self, __pyx_v_mype);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_36select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, char *__pyx_v_method, char *__pyx_v_parameters, char *__pyx_v_base_path) {
+static PyObject *__pyx_pf_9adios_mpi_30finalize(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_mype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_select_method __pyx_t_2;
+  struct __pyx_opt_args_9adios_mpi_finalize __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("select_method", 0);
+  __Pyx_RefNannySetupContext("finalize", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 2;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6392,7 +6313,7 @@ static PyObject *__pyx_pf_9adios_mpi_36select_method(CYTHON_UNUSED PyObject *__p
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -6400,590 +6321,419 @@ static PyObject *__pyx_pf_9adios_mpi_36select_method(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":463
+/* "adios_mpi.pyx":447
  * ## ====================
  * 
- * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None
+ * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm.Clone()
  */
 
-static PyObject *__pyx_pw_9adios_mpi_39adios2npdtype(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;
-  PyArray_Descr *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
+static PyObject *__pyx_pw_9adios_mpi_33init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init_noxml *__pyx_optional_args) {
+  struct PyMPICommObject *__pyx_v_comm = __pyx_k__9;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  __Pyx_RefNannySetupContext("init_noxml", 0);
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_strlen = __pyx_optional_args->strlen;
+      __pyx_v_comm = __pyx_optional_args->comm;
     }
   }
 
-  /* "adios_mpi.pyx":465
- * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None             # <<<<<<<<<<<<<<
- *     if t == adios_byte:
- *         ntype = np.dtype(np.int8)
+  /* "adios_mpi.pyx":449
+ * 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_INCREF(Py_None);
-  __pyx_v_ntype = ((PyArray_Descr *)Py_None);
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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)
+  __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":492
- *     elif t == adios_double_complex:
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype((np.str_, strlen))
- *     else:
+  /* "adios_mpi.pyx":450
+ *     global init_comm
+ *     init_comm = comm.Clone()
+ *     return adios_init_noxml(init_comm.ob_mpi)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int allocate_buffer(int when,
  */
-  switch (__pyx_v_t) {
+  __pyx_r = adios_init_noxml(__pyx_v_9adios_mpi_init_comm->ob_mpi);
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":466
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None
- *     if t == adios_byte:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int8)
- *     elif t == adios_short:
+  /* "adios_mpi.pyx":447
+ * ## ====================
+ * 
+ * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     global init_comm
+ *     init_comm = comm.Clone()
  */
-    case adios_byte:
 
-    /* "adios_mpi.pyx":467
- *     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_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":468
- *     if t == adios_byte:
- *         ntype = np.dtype(np.int8)
- *     elif t == adios_short:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int16)
- *     elif t == adios_integer:
- */
-    case adios_short:
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_33init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_32init_noxml[] = "init_noxml(Comm comm=MPI.COMM_WORLD) -> int";
+static PyObject *__pyx_pw_9adios_mpi_33init_noxml(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct PyMPICommObject *__pyx_v_comm = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("init_noxml (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
+    PyObject* values[1] = {0};
+    values[0] = (PyObject *)__pyx_k__9;
+    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_comm);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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_comm = ((struct PyMPICommObject *)values[0]);
+  }
+  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_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)
+  __pyx_r = __pyx_pf_9adios_mpi_32init_noxml(__pyx_self, __pyx_v_comm);
 
-    /* "adios_mpi.pyx":469
- *         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_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":470
- *     elif t == adios_short:
- *         ntype = np.dtype(np.int16)
- *     elif t == adios_integer:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int32)
- *     elif t == adios_long:
- */
-    case adios_integer:
+static PyObject *__pyx_pf_9adios_mpi_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_9adios_mpi_init_noxml __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("init_noxml", 0);
+  __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_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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":471
- *         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_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":472
- *     elif t == adios_integer:
- *         ntype = np.dtype(np.int32)
- *     elif t == adios_long:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.int64)
- *     elif t == adios_unsigned_byte:
+/* "adios_mpi.pyx":452
+ *     return adios_init_noxml(init_comm.ob_mpi)
+ * 
+ * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
+ *                           uint64_t buffer_size):
+ *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
  */
-    case adios_long:
 
-    /* "adios_mpi.pyx":473
- *         ntype = np.dtype(np.int32)
- *     elif t == adios_long:
- *         ntype = np.dtype(np.int64)             # <<<<<<<<<<<<<<
- *     elif t == adios_unsigned_byte:
- *         ntype = np.dtype(np.uint8)
+static PyObject *__pyx_pw_9adios_mpi_35allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v_buffer_size, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("allocate_buffer", 0);
+
+  /* "adios_mpi.pyx":454
+ * cpdef int allocate_buffer(int when,
+ *                           uint64_t buffer_size):
+ *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,             # <<<<<<<<<<<<<<
+ *                                  buffer_size)
+ * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __pyx_r = adios_allocate_buffer(((ADIOS_BUFFER_ALLOC_WHEN)__pyx_v_when), __pyx_v_buffer_size);
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":474
- *     elif t == adios_long:
- *         ntype = np.dtype(np.int64)
- *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint8)
- *     elif t == adios_unsigned_short:
+  /* "adios_mpi.pyx":452
+ *     return adios_init_noxml(init_comm.ob_mpi)
+ * 
+ * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
+ *                           uint64_t buffer_size):
+ *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
  */
-    case adios_unsigned_byte:
 
-    /* "adios_mpi.pyx":475
- *         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_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":476
- *     elif t == adios_unsigned_byte:
- *         ntype = np.dtype(np.uint8)
- *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint16)
- *     elif t == adios_unsigned_integer:
- */
-    case adios_unsigned_short:
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_35allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_34allocate_buffer[] = "allocate_buffer(int when, uint64_t buffer_size) -> int";
+static PyObject *__pyx_pw_9adios_mpi_35allocate_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_when;
+  uint64_t __pyx_v_buffer_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("allocate_buffer (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_when,&__pyx_n_s_buffer_size,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_when)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
+        }
+      }
+      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)
+      }
+    } 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_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)
+  }
+  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_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_34allocate_buffer(__pyx_self, __pyx_v_when, __pyx_v_buffer_size);
 
-    /* "adios_mpi.pyx":477
- *         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_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":478
- *     elif t == adios_unsigned_short:
- *         ntype = np.dtype(np.uint16)
- *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint32)
- *     elif t == adios_unsigned_long:
- */
-    case adios_unsigned_integer:
+static PyObject *__pyx_pf_9adios_mpi_34allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":479
- *         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_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __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;
-    break;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":480
- *     elif t == adios_unsigned_integer:
- *         ntype = np.dtype(np.uint32)
- *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.uint64)
- *     elif t == adios_real:
+/* "adios_mpi.pyx":457
+ *                                  buffer_size)
+ * 
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
+ *                             int stats = 1):
  */
-    case adios_unsigned_long:
 
-    /* "adios_mpi.pyx":481
- *         ntype = np.dtype(np.uint32)
- *     elif t == adios_unsigned_long:
- *         ntype = np.dtype(np.uint64)             # <<<<<<<<<<<<<<
- *     elif t == adios_real:
- *         ntype = np.dtype(np.float32)
+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);
+  int64_t __pyx_v_id;
+  int64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  __Pyx_RefNannySetupContext("declare_group", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_time_index = __pyx_optional_args->time_index;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_stats = __pyx_optional_args->stats;
+      }
+    }
+  }
+
+  /* "adios_mpi.pyx":460
+ *                             str time_index = "",
+ *                             int stats = 1):
+ *     cdef int64_t id = 0             # <<<<<<<<<<<<<<
+ *     adios_declare_group (&id,
+ *                          s2b(name),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __pyx_v_id = 0;
 
-    /* "adios_mpi.pyx":482
- *     elif t == adios_unsigned_long:
- *         ntype = np.dtype(np.uint64)
- *     elif t == adios_real:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.float32)
- *     elif t == adios_double:
+  /* "adios_mpi.pyx":462
+ *     cdef int64_t id = 0
+ *     adios_declare_group (&id,
+ *                          s2b(name),             # <<<<<<<<<<<<<<
+ *                          s2b(time_index),
+ *                          <ADIOS_FLAG> stats)
  */
-    case adios_real:
+  __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_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)
 
-    /* "adios_mpi.pyx":483
- *         ntype = np.dtype(np.uint64)
- *     elif t == adios_real:
- *         ntype = np.dtype(np.float32)             # <<<<<<<<<<<<<<
- *     elif t == adios_double:
- *         ntype = np.dtype(np.float64)
+  /* "adios_mpi.pyx":463
+ *     adios_declare_group (&id,
+ *                          s2b(name),
+ *                          s2b(time_index),             # <<<<<<<<<<<<<<
+ *                          <ADIOS_FLAG> stats)
+ *     return id
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __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_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)
 
-    /* "adios_mpi.pyx":484
- *     elif t == adios_real:
- *         ntype = np.dtype(np.float32)
- *     elif t == adios_double:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.float64)
- *     elif t == adios_long_double:
+  /* "adios_mpi.pyx":461
+ *                             int stats = 1):
+ *     cdef int64_t id = 0
+ *     adios_declare_group (&id,             # <<<<<<<<<<<<<<
+ *                          s2b(name),
+ *                          s2b(time_index),
  */
-    case adios_double:
+  adios_declare_group((&__pyx_v_id), __pyx_t_2, __pyx_t_4, ((ADIOS_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":485
- *         ntype = np.dtype(np.float32)
- *     elif t == adios_double:
- *         ntype = np.dtype(np.float64)             # <<<<<<<<<<<<<<
- *     elif t == adios_long_double:
- *         ntype = np.dtype(np.float128)
+  /* "adios_mpi.pyx":465
+ *                          s2b(time_index),
+ *                          <ADIOS_FLAG> stats)
+ *     return id             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var(int64_t group_id,
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __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;
-    break;
+  __pyx_r = __pyx_v_id;
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":486
- *     elif t == adios_double:
- *         ntype = np.dtype(np.float64)
- *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.float128)
- *     elif t == adios_complex:
- */
-    case adios_long_double:
-
-    /* "adios_mpi.pyx":487
- *         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_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios_mpi.pyx":488
- *     elif t == adios_long_double:
- *         ntype = np.dtype(np.float128)
- *     elif t == adios_complex:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.complex64)
- *     elif t == adios_double_complex:
- */
-    case adios_complex:
-
-    /* "adios_mpi.pyx":489
- *         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_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios_mpi.pyx":490
- *     elif t == adios_complex:
- *         ntype = np.dtype(np.complex64)
- *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:
- */
-    case adios_double_complex:
-
-    /* "adios_mpi.pyx":491
- *         ntype = np.dtype(np.complex64)
- *     elif t == adios_double_complex:
- *         ntype = np.dtype(np.complex128)             # <<<<<<<<<<<<<<
- *     elif t == adios_string:
- *         ntype = np.dtype((np.str_, strlen))
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __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;
-    break;
-
-    /* "adios_mpi.pyx":492
- *     elif t == adios_double_complex:
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:             # <<<<<<<<<<<<<<
- *         ntype = np.dtype((np.str_, strlen))
- *     else:
- */
-    case adios_string:
-
-    /* "adios_mpi.pyx":493
- *         ntype = np.dtype(np.complex128)
- *     elif t == adios_string:
- *         ntype = np.dtype((np.str_, strlen))             # <<<<<<<<<<<<<<
- *     else:
- *         ntype = None
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_1 = 0;
-    __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
-    __Pyx_GIVEREF(__pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5numpy_dtype)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __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;
-    break;
-    default:
-
-    /* "adios_mpi.pyx":495
- *         ntype = np.dtype((np.str_, strlen))
- *     else:
- *         ntype = None             # <<<<<<<<<<<<<<
- * 
- *     return ntype
- */
-    __Pyx_INCREF(Py_None);
-    __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)Py_None));
-    break;
-  }
-
-  /* "adios_mpi.pyx":497
- *         ntype = None
- * 
- *     return ntype             # <<<<<<<<<<<<<<
- * 
- * cdef printfile(ADIOS_FILE * f):
- */
-  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __Pyx_INCREF(((PyObject *)__pyx_v_ntype));
-  __pyx_r = __pyx_v_ntype;
-  goto __pyx_L0;
-
-  /* "adios_mpi.pyx":463
- * ## ====================
+  /* "adios_mpi.pyx":457
+ *                                  buffer_size)
  * 
- * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
- *     """ strlen apply only to string type """
- *     cdef np.dtype ntype = None
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
+ *                             int stats = 1):
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_WriteUnraisable("adios_mpi.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_ntype);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_39adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_38adios2npdtype[] = "adios2npdtype(ADIOS_DATATYPES t, int strlen=1) -> dtype\n strlen apply only to string type ";
-static PyObject *__pyx_pw_9adios_mpi_39adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  ADIOS_DATATYPES __pyx_v_t;
-  int __pyx_v_strlen;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+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 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;
+  int __pyx_v_stats;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("adios2npdtype (wrapper)", 0);
+  __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_strlen,0};
-    PyObject* values[2] = {0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_time_index,&__pyx_n_s_stats,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject*)__pyx_kp_s__10);
     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;
@@ -6992,69 +6742,82 @@ static PyObject *__pyx_pw_9adios_mpi_39adios2npdtype(PyObject *__pyx_self, PyObj
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_strlen);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index);
           if (value) { values[1] = value; kw_args--; }
         }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stats);
+          if (value) { values[2] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 457, __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;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_t = ((ADIOS_DATATYPES)PyInt_AsLong(values[0])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __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)
     } else {
-      __pyx_v_strlen = ((int)1);
+      __pyx_v_stats = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 457, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_38adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
+  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)
+  __pyx_r = __pyx_pf_9adios_mpi_36declare_group(__pyx_self, __pyx_v_name, __pyx_v_time_index, __pyx_v_stats);
 
   /* 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_38adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_9adios_mpi_adios2npdtype __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  int64_t __pyx_t_1;
+  struct __pyx_opt_args_9adios_mpi_declare_group __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("declare_group", 0);
   __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_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __pyx_t_2.__pyx_n = 2;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
   goto __pyx_L0;
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -7062,1432 +6825,1283 @@ static PyObject *__pyx_pf_9adios_mpi_38adios2npdtype(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":499
- *     return ntype
+/* "adios_mpi.pyx":467
+ *     return id
  * 
- * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
- *     print '%15s : %lu' % ('fh', f.fh)
- *     print '%15s : %d' % ('nvars', f.nvars)
+ * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ *                      str name,
+ *                      str path,
  */
 
-static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
-  int __pyx_v_i;
-  PyObject *__pyx_r = NULL;
+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) {
+  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;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printfile", 0);
+  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;
+  __Pyx_RefNannySetupContext("define_var", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_dimensions = __pyx_optional_args->dimensions;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_global_dimensions = __pyx_optional_args->global_dimensions;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_local_offsets = __pyx_optional_args->local_offsets;
+        }
+      }
+    }
+  }
 
-  /* "adios_mpi.pyx":500
- * 
- * 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)])
+  /* "adios_mpi.pyx":475
+ *                      str local_offsets = ""):
+ *     return adios_define_var(group_id,
+ *                             s2b(name),             # <<<<<<<<<<<<<<
+ *                             s2b(path),
+ *                             <ADIOS_DATATYPES> atype,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->fh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_fh);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fh);
-  __Pyx_GIVEREF(__pyx_n_s_fh);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":501
- * 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)
+  /* "adios_mpi.pyx":476
+ *     return adios_define_var(group_id,
+ *                             s2b(name),
+ *                             s2b(path),             # <<<<<<<<<<<<<<
+ *                             <ADIOS_DATATYPES> atype,
+ *                             s2b(dimensions),
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_nvars);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nvars);
-  __Pyx_GIVEREF(__pyx_n_s_nvars);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios_mpi.pyx":502
- *     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_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_var_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_var_namelist);
-  __Pyx_GIVEREF(__pyx_n_s_var_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios_mpi.pyx":503
- *     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_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_nattrs);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nattrs);
-  __Pyx_GIVEREF(__pyx_n_s_nattrs);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios_mpi.pyx":504
- *     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_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_attr_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_attr_namelist);
-  __Pyx_GIVEREF(__pyx_n_s_attr_namelist);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios_mpi.pyx":505
- *     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_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_current_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_current_step);
-  __Pyx_GIVEREF(__pyx_n_s_current_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "adios_mpi.pyx":506
- *     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_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_last_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_last_step);
-  __Pyx_GIVEREF(__pyx_n_s_last_step);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_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)
 
-  /* "adios_mpi.pyx":507
- *     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)
+  /* "adios_mpi.pyx":478
+ *                             s2b(path),
+ *                             <ADIOS_DATATYPES> atype,
+ *                             s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                             s2b(global_dimensions),
+ *                             s2b(local_offsets))
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_f->path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_path);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_path);
-  __Pyx_GIVEREF(__pyx_n_s_path);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_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)
 
-  /* "adios_mpi.pyx":508
- *     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)
+  /* "adios_mpi.pyx":479
+ *                             <ADIOS_DATATYPES> atype,
+ *                             s2b(dimensions),
+ *                             s2b(global_dimensions),             # <<<<<<<<<<<<<<
+ *                             s2b(local_offsets))
+ * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->endianness); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_endianness);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_endianness);
-  __Pyx_GIVEREF(__pyx_n_s_endianness);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_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)
 
-  /* "adios_mpi.pyx":509
- *     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)
+  /* "adios_mpi.pyx":480
+ *                             s2b(dimensions),
+ *                             s2b(global_dimensions),
+ *                             s2b(local_offsets))             # <<<<<<<<<<<<<<
  * 
+ * cpdef int define_attribute (int64_t group,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_version);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_version);
-  __Pyx_GIVEREF(__pyx_n_s_version);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_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)
 
-  /* "adios_mpi.pyx":510
- *     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):
+  /* "adios_mpi.pyx":474
+ *                      str global_dimensions = "",
+ *                      str local_offsets = ""):
+ *     return adios_define_var(group_id,             # <<<<<<<<<<<<<<
+ *                             s2b(name),
+ *                             s2b(path),
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->file_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_file_size);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_file_size);
-  __Pyx_GIVEREF(__pyx_n_s_file_size);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = adios_define_var(__pyx_v_group_id, __pyx_t_2, __pyx_t_4, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_t_6, __pyx_t_8, __pyx_t_10);
   __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;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":499
- *     return ntype
+  /* "adios_mpi.pyx":467
+ *     return id
  * 
- * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
- *     print '%15s : %lu' % ('fh', f.fh)
- *     print '%15s : %d' % ('nvars', f.nvars)
+ * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ *                      str name,
+ *                      str path,
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios_mpi.printfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("adios_mpi.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":512
- *     print '%15s : %lu' % ('file_size', f.file_size)
- * 
- * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
- *     print '%15s : %d' % ('varid', v.varid)
- *     print '%15s : %s' % ('type', adios2npdtype(v.type))
- */
+/* 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 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;
+  PyObject *__pyx_v_path = 0;
+  int __pyx_v_atype;
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_global_dimensions = 0;
+  PyObject *__pyx_v_local_offsets = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_dimensions,&__pyx_n_s_global_dimensions,&__pyx_n_s_local_offsets,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+    values[4] = ((PyObject*)__pyx_kp_s__10);
+    values[5] = ((PyObject*)__pyx_kp_s__10);
+    values[6] = ((PyObject*)__pyx_kp_s__10);
+    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_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--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); __PYX_ERR(0, 467, __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)
+        }
+        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)
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_global_dimensions);
+          if (value) { values[5] = value; kw_args--; }
+        }
+        case  6:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_local_offsets);
+          if (value) { values[6] = 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, 467, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_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);
+        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_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_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_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)
+  __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);
 
-static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
-  int __pyx_v_i;
+  /* 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_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
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printvar", 0);
-
-  /* "adios_mpi.pyx":513
- * 
- * 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_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_varid);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_varid);
-  __Pyx_GIVEREF(__pyx_n_s_varid);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  int __pyx_t_1;
+  struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("define_var", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 3;
+  __pyx_t_2.dimensions = __pyx_v_dimensions;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":514
- * 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)])
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":482
+ *                             s2b(local_offsets))
+ * 
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_v->type, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_type);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_type);
-  __Pyx_GIVEREF(__pyx_n_s_type);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":515
- *     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)
+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) {
+  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":489
+ *                             str var):
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),             # <<<<<<<<<<<<<<
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_ndim);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ndim);
-  __Pyx_GIVEREF(__pyx_n_s_ndim);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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":516
- *     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)
+  /* "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)
+
+  /* "adios_mpi.pyx":492
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),             # <<<<<<<<<<<<<<
+ *                                    s2b(var))
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_dims);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_dims);
-  __Pyx_GIVEREF(__pyx_n_s_dims);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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":517
- *     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)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":493
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
+ *                                    s2b(var))             # <<<<<<<<<<<<<<
  * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
+ * cpdef int define_attribute_byvalue (int64_t group,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_nsteps);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nsteps);
-  __Pyx_GIVEREF(__pyx_n_s_nsteps);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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),
+ */
+  __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":512
- *     print '%15s : %lu' % ('file_size', f.file_size)
+  /* "adios_mpi.pyx":482
+ *                             s2b(local_offsets))
  * 
- * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
- *     print '%15s : %d' % ('varid', v.varid)
- *     print '%15s : %s' % ('type', adios2npdtype(v.type))
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios_mpi.printvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_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;
+  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, 482, __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--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); __PYX_ERR(0, 482, __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)
+      }
+    } 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, 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]);
+  }
+  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_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, 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);
+
+  /* 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_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, 482, __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":519
- *     print '%15s : %d' % ('nsteps', v.nsteps)
+/* "adios_mpi.pyx":495
+ *                                    s2b(var))
  * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):             # <<<<<<<<<<<<<<
- *     if (name == "BP"):
- *         method = READ_METHOD.BP
+ * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
+ *                                     str name,
+ *                                     str path,
  */
 
-static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_v_name) {
-  PyObject *__pyx_v_method = NULL;
-  ADIOS_READ_METHOD __pyx_r;
+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;
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  ADIOS_READ_METHOD __pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("str2adiosreadmethod", 0);
+  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":520
- * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
- *     if (name == "BP"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.BP
- *     elif (name == "BP_AGGREGATE"):
+  /* "adios_mpi.pyx":500
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
  */
-  __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_BP, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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":521
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
- *     if (name == "BP"):
- *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
- *     elif (name == "BP_AGGREGATE"):
- *         method = READ_METHOD.BP_AGGREGATE
+    /* "adios_mpi.pyx":501
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_BP); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L3;
-  }
+    __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":522
- *     if (name == "BP"):
- *         method = READ_METHOD.BP
- *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.BP_AGGREGATE
- *     elif (name == "DATASPACES"):
+      /* "adios_mpi.pyx":502
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:
+ *             val_ = val             # <<<<<<<<<<<<<<
+ *         else:
+ *             val_ = np.array(val, copy=True)
  */
-  __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_BP_AGGREGATE, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+      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;
 
-    /* "adios_mpi.pyx":523
- *         method = READ_METHOD.BP
- *     elif (name == "BP_AGGREGATE"):
- *         method = READ_METHOD.BP_AGGREGATE             # <<<<<<<<<<<<<<
- *     elif (name == "DATASPACES"):
- *         method = READ_METHOD.DATASPACES
+      /* "adios_mpi.pyx":501
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_BP_AGGREGATE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_v_method = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
+      goto __pyx_L4;
+    }
 
-  /* "adios_mpi.pyx":524
- *     elif (name == "BP_AGGREGATE"):
- *         method = READ_METHOD.BP_AGGREGATE
- *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.DATASPACES
- *     elif (name == "DIMES"):
+    /* "adios_mpi.pyx":504
+ *             val_ = val
+ *         else:
+ *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
+ *     else:
+ *         val_ = np.array(val)
  */
-  __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_DATASPACES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+    /*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:;
 
-    /* "adios_mpi.pyx":525
- *         method = READ_METHOD.BP_AGGREGATE
- *     elif (name == "DATASPACES"):
- *         method = READ_METHOD.DATASPACES             # <<<<<<<<<<<<<<
- *     elif (name == "DIMES"):
- *         method = READ_METHOD.DIMES
+    /* "adios_mpi.pyx":500
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DATASPACES); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":526
- *     elif (name == "DATASPACES"):
- *         method = READ_METHOD.DATASPACES
- *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.DIMES
- *     elif (name == "FLEXPATH"):
- */
-  __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_DIMES, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-
-    /* "adios_mpi.pyx":527
- *         method = READ_METHOD.DATASPACES
- *     elif (name == "DIMES"):
- *         method = READ_METHOD.DIMES             # <<<<<<<<<<<<<<
- *     elif (name == "FLEXPATH"):
- *         method = READ_METHOD.FLEXPATH
+  /* "adios_mpi.pyx":506
+ *             val_ = np.array(val, copy=True)
+ *     else:
+ *         val_ = np.array(val)             # <<<<<<<<<<<<<<
+ * 
+ *     atype = np2adiostype(val_.dtype)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*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_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_DIMES); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
+    __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;
-    __pyx_v_method = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
+    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":528
- *     elif (name == "DIMES"):
- *         method = READ_METHOD.DIMES
- *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.FLEXPATH
- *     elif (name == "ICEE"):
+  /* "adios_mpi.pyx":508
+ *         val_ = np.array(val)
+ * 
+ *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef char * pt1
  */
-  __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_FLEXPATH, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_v_atype = __pyx_t_4;
+  __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":529
- *         method = READ_METHOD.DIMES
- *     elif (name == "FLEXPATH"):
- *         method = READ_METHOD.FLEXPATH             # <<<<<<<<<<<<<<
- *     elif (name == "ICEE"):
- *         method = READ_METHOD.ICEE
+  /* "adios_mpi.pyx":512
+ *     cdef char * pt1
+ *     cdef char ** pt2
+ *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
+ *         if (val_.size == 1):
+ *             bstr = s2b(str(val))
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FLEXPATH); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
-    goto __pyx_L3;
+  __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_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_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)
+  if (!__pyx_t_1) {
+  } else {
+    __pyx_t_2 = __pyx_t_1;
+    goto __pyx_L6_bool_binop_done;
   }
-
-  /* "adios_mpi.pyx":530
- *     elif (name == "FLEXPATH"):
- *         method = READ_METHOD.FLEXPATH
- *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.ICEE
- *     else:
- */
-  __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_n_s_ICEE, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __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, 512, __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":531
- *         method = READ_METHOD.FLEXPATH
- *     elif (name == "ICEE"):
- *         method = READ_METHOD.ICEE             # <<<<<<<<<<<<<<
- *     else:
- *         print '[WARN] Invalid read method name:', name, '. Use default BP method'
+    /* "adios_mpi.pyx":513
+ *     cdef char ** pt2
+ *     if (val_.dtype.char in ('S', 'U')):
+ *         if (val_.size == 1):             # <<<<<<<<<<<<<<
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __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, 513, __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_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ICEE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
+    __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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_v_method = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+    if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":533
- *         method = READ_METHOD.ICEE
- *     else:
- *         print '[WARN] Invalid read method name:', name, '. Use default BP method'             # <<<<<<<<<<<<<<
- *         method = READ_METHOD.BP
- * 
+      /* "adios_mpi.pyx":514
+ *     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_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_kp_s_WARN_Invalid_read_method_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_s_WARN_Invalid_read_method_name);
-    __Pyx_GIVEREF(__pyx_kp_s_WARN_Invalid_read_method_name);
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __Pyx_INCREF(__pyx_kp_s_Use_default_BP_method);
-    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_s_Use_default_BP_method);
-    __Pyx_GIVEREF(__pyx_kp_s_Use_default_BP_method);
-    if (__Pyx_Print(0, __pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __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_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)
+      __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":534
- *     else:
- *         print '[WARN] Invalid read method name:', name, '. Use default BP method'
- *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
- * 
- *     return method
+      /* "adios_mpi.pyx":515
+ *         if (val_.size == 1):
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)             # <<<<<<<<<<<<<<
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_v_method = __pyx_t_4;
-    __pyx_t_4 = 0;
-  }
-  __pyx_L3:;
+      __pyx_t_7 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(0, 515, __pyx_L1_error)
+      __pyx_v_pt1 = __pyx_t_7;
 
-  /* "adios_mpi.pyx":536
- *         method = READ_METHOD.BP
- * 
- *     return method             # <<<<<<<<<<<<<<
- * 
- * cpdef np2adiostype(np.dtype nptype):
+      /* "adios_mpi.pyx":517
+ *             pt1 = PyBytes_AsString(bstr)
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),             # <<<<<<<<<<<<<<
+ *                                             s2b(path),
+ *                                             DATATYPE.string,
  */
-  __pyx_t_5 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_t_5;
-  goto __pyx_L0;
+      __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_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)
 
-  /* "adios_mpi.pyx":519
- *     print '%15s : %d' % ('nsteps', v.nsteps)
- * 
- * cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):             # <<<<<<<<<<<<<<
- *     if (name == "BP"):
- *         method = READ_METHOD.BP
+      /* "adios_mpi.pyx":518
+ *             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_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)
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_WriteUnraisable("adios_mpi.str2adiosreadmethod", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":538
- *     return method
- * 
- * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
- *     """ Convert Numpy.dtype to Adios Datatype
- *     """
+      /* "adios_mpi.pyx":519
+ *                                             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_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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-static PyObject *__pyx_pw_9adios_mpi_41np2adiostype(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;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("np2adiostype", 0);
+      /* "adios_mpi.pyx":516
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)
+ *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                             s2b(name),
+ *                                             s2b(path),
+ */
+      adios_define_attribute_byvalue(__pyx_v_group, __pyx_t_7, __pyx_t_8, __pyx_t_9, 1, ((void *)__pyx_v_pt1));
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios_mpi.pyx":542
- *     """
- * 
- *     cdef atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
- * 
- *     if (nptype == np.bool_):
+      /* "adios_mpi.pyx":513
+ *     cdef char ** pt2
+ *     if (val_.dtype.char in ('S', 'U')):
+ *         if (val_.size == 1):             # <<<<<<<<<<<<<<
+ *             bstr = s2b(str(val))
+ *             pt1 = PyBytes_AsString(bstr)
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __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;
+      goto __pyx_L8;
+    }
 
-  /* "adios_mpi.pyx":544
- *     cdef atype = DATATYPE.unknown
- * 
- *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int8):
+    /* "adios_mpi.pyx":523
+ *                                             <void *> pt1)
+ *         else:
+ *             pt2 = to_cstring_array(val)             # <<<<<<<<<<<<<<
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    /*else*/ {
+      __pyx_v_pt2 = __pyx_f_9adios_mpi_to_cstring_array(__pyx_v_val);
 
-    /* "adios_mpi.pyx":545
- * 
- *     if (nptype == np.bool_):
- *         atype = DATATYPE.integer             # <<<<<<<<<<<<<<
- *     elif (nptype == np.int8):
- *         atype = DATATYPE.byte
+      /* "adios_mpi.pyx":525
+ *             pt2 = to_cstring_array(val)
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),             # <<<<<<<<<<<<<<
+ *                                             s2b(path),
+ *                                             DATATYPE.string_array,
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_integer); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+      __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_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)
 
-  /* "adios_mpi.pyx":546
- *     if (nptype == np.bool_):
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.byte
- *     elif (nptype == np.int16):
+      /* "adios_mpi.pyx":526
+ *             adios_define_attribute_byvalue (group,
+ *                                             s2b(name),
+ *                                             s2b(path),             # <<<<<<<<<<<<<<
+ *                                             DATATYPE.string_array,
+ *                                             len(val),
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+      __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_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)
 
-    /* "adios_mpi.pyx":547
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int8):
- *         atype = DATATYPE.byte             # <<<<<<<<<<<<<<
- *     elif (nptype == np.int16):
- *         atype = DATATYPE.short
+      /* "adios_mpi.pyx":527
+ *                                             s2b(name),
+ *                                             s2b(path),
+ *                                             DATATYPE.string_array,             # <<<<<<<<<<<<<<
+ *                                             len(val),
+ *                                             <void *> pt2)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 527, __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":548
- *     elif (nptype == np.int8):
- *         atype = DATATYPE.byte
- *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.short
- *     elif (nptype == np.int32):
+      /* "adios_mpi.pyx":528
+ *                                             s2b(path),
+ *                                             DATATYPE.string_array,
+ *                                             len(val),             # <<<<<<<<<<<<<<
+ *                                             <void *> pt2)
+ *             free(pt2)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+      __pyx_t_10 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 528, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":549
- *         atype = DATATYPE.byte
- *     elif (nptype == np.int16):
- *         atype = DATATYPE.short             # <<<<<<<<<<<<<<
- *     elif (nptype == np.int32):
- *         atype = DATATYPE.integer
+      /* "adios_mpi.pyx":524
+ *         else:
+ *             pt2 = to_cstring_array(val)
+ *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                             s2b(name),
+ *                                             s2b(path),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+      adios_define_attribute_byvalue(__pyx_v_group, __pyx_t_8, __pyx_t_7, __pyx_t_9, __pyx_t_10, ((void *)__pyx_v_pt2));
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":550
- *     elif (nptype == np.int16):
- *         atype = DATATYPE.short
- *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int64):
+      /* "adios_mpi.pyx":530
+ *                                             len(val),
+ *                                             <void *> pt2)
+ *             free(pt2)             # <<<<<<<<<<<<<<
+ *     else:
+ *         adios_define_attribute_byvalue (group,
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+      free(__pyx_v_pt2);
+    }
+    __pyx_L8:;
 
-    /* "adios_mpi.pyx":551
- *         atype = DATATYPE.short
- *     elif (nptype == np.int32):
- *         atype = DATATYPE.integer             # <<<<<<<<<<<<<<
- *     elif (nptype == np.int64):
- *         atype = DATATYPE.long
+    /* "adios_mpi.pyx":512
+ *     cdef char * pt1
+ *     cdef char ** pt2
+ *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
+ *         if (val_.size == 1):
+ *             bstr = s2b(str(val))
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+    goto __pyx_L5;
   }
 
-  /* "adios_mpi.pyx":552
- *     elif (nptype == np.int32):
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.long
- *     elif (nptype == np.uint8):
+  /* "adios_mpi.pyx":532
+ *             free(pt2)
+ *     else:
+ *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                         s2b(name),
+ *                                         s2b(path),
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+  /*else*/ {
 
-    /* "adios_mpi.pyx":553
- *         atype = DATATYPE.integer
- *     elif (nptype == np.int64):
- *         atype = DATATYPE.long             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint8):
- *         atype = DATATYPE.unsigned_byte
+    /* "adios_mpi.pyx":533
+ *     else:
+ *         adios_define_attribute_byvalue (group,
+ *                                         s2b(name),             # <<<<<<<<<<<<<<
+ *                                         s2b(path),
+ *                                         <ADIOS_DATATYPES> atype,
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+    __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_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)
 
-  /* "adios_mpi.pyx":554
- *     elif (nptype == np.int64):
- *         atype = DATATYPE.long
- *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.unsigned_byte
- *     elif (nptype == np.uint16):
+    /* "adios_mpi.pyx":534
+ *         adios_define_attribute_byvalue (group,
+ *                                         s2b(name),
+ *                                         s2b(path),             # <<<<<<<<<<<<<<
+ *                                         <ADIOS_DATATYPES> atype,
+ *                                         val_.size,
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+    __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_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)
 
-    /* "adios_mpi.pyx":555
- *         atype = DATATYPE.long
- *     elif (nptype == np.uint8):
- *         atype = DATATYPE.unsigned_byte             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint16):
- *         atype = DATATYPE.unsigned_short
+    /* "adios_mpi.pyx":535
+ *                                         s2b(name),
+ *                                         s2b(path),
+ *                                         <ADIOS_DATATYPES> atype,             # <<<<<<<<<<<<<<
+ *                                         val_.size,
+ *                                         <void *> val_.data)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+    __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 535, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":556
- *     elif (nptype == np.uint8):
- *         atype = DATATYPE.unsigned_byte
- *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.unsigned_short
- *     elif (nptype == np.uint32):
+    /* "adios_mpi.pyx":536
+ *                                         s2b(path),
+ *                                         <ADIOS_DATATYPES> atype,
+ *                                         val_.size,             # <<<<<<<<<<<<<<
+ *                                         <void *> val_.data)
+ * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+    __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":557
- *         atype = DATATYPE.unsigned_byte
- *     elif (nptype == np.uint16):
- *         atype = DATATYPE.unsigned_short             # <<<<<<<<<<<<<<
- *     elif (nptype == np.uint32):
- *         atype = DATATYPE.unsigned_integer
+    /* "adios_mpi.pyx":532
+ *             free(pt2)
+ *     else:
+ *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
+ *                                         s2b(name),
+ *                                         s2b(path),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+    adios_define_attribute_byvalue(__pyx_v_group, __pyx_t_7, __pyx_t_8, ((ADIOS_DATATYPES)__pyx_t_9), __pyx_t_11, ((void *)__pyx_v_val_->data));
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
+  __pyx_L5:;
 
-  /* "adios_mpi.pyx":558
- *     elif (nptype == np.uint16):
- *         atype = DATATYPE.unsigned_short
- *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.unsigned_integer
- *     elif (nptype == np.uint64):
+  /* "adios_mpi.pyx":495
+ *                                    s2b(var))
+ * 
+ * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
+ *                                     str name,
+ *                                     str path,
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":559
- *         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_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+  /* 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_WriteUnraisable("adios_mpi.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_val_);
+  __Pyx_XDECREF(__pyx_v_atype);
+  __Pyx_XDECREF(__pyx_v_bstr);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  int64_t __pyx_v_group;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_path = 0;
+  PyObject *__pyx_v_val = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_attribute_byvalue (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_val,0};
+    PyObject* values[4] = {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  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_byvalue", 1, 4, 4, 1); __PYX_ERR(0, 495, __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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+      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);
+    }
+    __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_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_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);
 
-  /* "adios_mpi.pyx":560
- *     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_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /* 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_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) {
+  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_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_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":561
- *         atype = DATATYPE.unsigned_integer
- *     elif (nptype == np.uint64):
- *         atype = DATATYPE.unsigned_long             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float_):
- *         atype = DATATYPE.double
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":539
+ *                                         <void *> val_.data)
+ * 
+ * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
+ *                          str method,
+ *                          str parameters = "",
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
+
+static PyObject *__pyx_pw_9adios_mpi_45select_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);
+  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;
+  __Pyx_RefNannySetupContext("select_method", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_parameters = __pyx_optional_args->parameters;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_base_path = __pyx_optional_args->base_path;
+      }
+    }
   }
 
-  /* "adios_mpi.pyx":562
- *     elif (nptype == np.uint64):
- *         atype = DATATYPE.unsigned_long
- *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.double
- *     elif (nptype == np.float16):
+  /* "adios_mpi.pyx":544
+ *                          str base_path = ""):
+ *     return adios_select_method (group,
+ *                                 s2b(method),             # <<<<<<<<<<<<<<
+ *                                 s2b(parameters),
+ *                                 s2b(base_path))
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 544, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":563
- *         atype = DATATYPE.unsigned_long
- *     elif (nptype == np.float_):
- *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float16):
- *         atype = DATATYPE.real
+  /* "adios_mpi.pyx":545
+ *     return adios_select_method (group,
+ *                                 s2b(method),
+ *                                 s2b(parameters),             # <<<<<<<<<<<<<<
+ *                                 s2b(base_path))
+ * 
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+  __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_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)
 
-  /* "adios_mpi.pyx":564
- *     elif (nptype == np.float_):
- *         atype = DATATYPE.double
- *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.real
- *     elif (nptype == np.float32):
+  /* "adios_mpi.pyx":546
+ *                                 s2b(method),
+ *                                 s2b(parameters),
+ *                                 s2b(base_path))             # <<<<<<<<<<<<<<
+ * 
+ * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
+  __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_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)
 
-    /* "adios_mpi.pyx":565
- *         atype = DATATYPE.double
- *     elif (nptype == np.float16):
- *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
- *     elif (nptype == np.float32):
- *         atype = DATATYPE.real
+  /* "adios_mpi.pyx":543
+ *                          str parameters = "",
+ *                          str base_path = ""):
+ *     return adios_select_method (group,             # <<<<<<<<<<<<<<
+ *                                 s2b(method),
+ *                                 s2b(parameters),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
+  __pyx_r = adios_select_method(__pyx_v_group, __pyx_t_2, __pyx_t_4, __pyx_t_6);
+  __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;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":566
- *     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_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios_mpi.pyx":567
- *         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_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-
-  /* "adios_mpi.pyx":568
- *     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_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios_mpi.pyx":569
- *         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_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-
-  /* "adios_mpi.pyx":570
- *     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_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios_mpi.pyx":571
- *         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_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-
-  /* "adios_mpi.pyx":572
- *     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_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios_mpi.pyx":573
- *         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_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-
-  /* "adios_mpi.pyx":574
- *     elif (nptype == np.complex64):
- *         atype = DATATYPE.complex
- *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.double_complex
- *     elif (nptype.char == 'S'):
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios_mpi.pyx":575
- *         atype = DATATYPE.complex
- *     elif (nptype == np.complex128):
- *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
- *     elif (nptype.char == 'S'):
- *         atype = DATATYPE.string
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-
-  /* "adios_mpi.pyx":576
- *     elif (nptype == np.complex128):
- *         atype = DATATYPE.double_complex
- *     elif (nptype.char == 'S'):             # <<<<<<<<<<<<<<
- *         atype = DATATYPE.string
- *     else:
- */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nptype), __pyx_n_s_char); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__pyx_t_3) {
-
-    /* "adios_mpi.pyx":577
- *         atype = DATATYPE.double_complex
- *     elif (nptype.char == 'S'):
- *         atype = DATATYPE.string             # <<<<<<<<<<<<<<
- *     else:
- *         atype = DATATYPE.unknown
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L3;
-  }
-  /*else*/ {
-
-    /* "adios_mpi.pyx":579
- *         atype = DATATYPE.string
- *     else:
- *         atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
- * 
- *     return atype
- */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __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;
-  }
-  __pyx_L3:;
-
-  /* "adios_mpi.pyx":581
- *         atype = DATATYPE.unknown
- * 
- *     return atype             # <<<<<<<<<<<<<<
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_atype);
-  __pyx_r = __pyx_v_atype;
-  goto __pyx_L0;
-
-  /* "adios_mpi.pyx":538
- *     return method
- * 
- * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
- *     """ Convert Numpy.dtype to Adios Datatype
- *     """
+  /* "adios_mpi.pyx":539
+ *                                         <void *> val_.data)
+ * 
+ * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
+ *                          str method,
+ *                          str parameters = "",
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios_mpi.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("adios_mpi.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_atype);
-  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_41np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
-static char __pyx_doc_9adios_mpi_40np2adiostype[] = "np2adiostype(dtype nptype)\n Convert Numpy.dtype to Adios Datatype\n    ";
-static PyObject *__pyx_pw_9adios_mpi_41np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype) {
-  CYTHON_UNUSED int __pyx_lineno = 0;
-  CYTHON_UNUSED const char *__pyx_filename = NULL;
-  CYTHON_UNUSED int __pyx_clineno = 0;
+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) {
+  int64_t __pyx_v_group;
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_parameters = 0;
+  PyObject *__pyx_v_base_path = 0;
   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_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_40np2adiostype(__pyx_self, ((PyArray_Descr *)__pyx_v_nptype));
+  __Pyx_RefNannySetupContext("select_method (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_method,&__pyx_n_s_parameters,&__pyx_n_s_base_path,0};
+    PyObject* values[4] = {0,0,0,0};
+    values[2] = ((PyObject*)__pyx_kp_s__10);
+    values[3] = ((PyObject*)__pyx_kp_s__10);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        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_method)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); __PYX_ERR(0, 539, __pyx_L3_error)
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_base_path);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        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);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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_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_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);
 
   /* function exit code */
   goto __pyx_L0;
@@ -8498,25 +8112,28 @@ static PyObject *__pyx_pw_9adios_mpi_41np2adiostype(PyObject *__pyx_self, PyObje
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_40np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("np2adiostype", 0);
+  int __pyx_t_1;
+  struct __pyx_opt_args_9adios_mpi_select_method __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("select_method", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_np2adiostype(__pyx_v_nptype, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __pyx_t_2.__pyx_n = 2;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -8524,224 +8141,9633 @@ static PyObject *__pyx_pf_9adios_mpi_40np2adiostype(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":583
- *     return atype
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
- *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
+/* "adios_mpi.pyx":553
+ * ## ====================
  * 
+ * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
  */
 
-static PyObject *__pyx_pw_9adios_mpi_43adiostype2string(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;
+static PyObject *__pyx_pw_9adios_mpi_47adios2npdtype(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;
+  PyArray_Descr *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("adiostype2string", 0);
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_strlen = __pyx_optional_args->strlen;
+    }
+  }
 
-  /* "adios_mpi.pyx":584
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):
- *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))             # <<<<<<<<<<<<<<
- * 
- * ## ====================
+  /* "adios_mpi.pyx":555
+ * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None             # <<<<<<<<<<<<<<
+ *     if t == adios_byte:
+ *         ntype = np.dtype(np.int8)
  */
-  __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_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __Pyx_INCREF(Py_None);
+  __pyx_v_ntype = ((PyArray_Descr *)Py_None);
 
-  /* "adios_mpi.pyx":583
- *     return atype
- * 
- * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
- *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
- * 
+  /* "adios_mpi.pyx":556
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
+ *     if t == adios_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:
  */
+  switch (__pyx_v_t) {
+    case adios_byte:
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios_mpi.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_43adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
-static char __pyx_doc_9adios_mpi_42adiostype2string[] = "adiostype2string(ADIOS_DATATYPES type) -> str";
-static PyObject *__pyx_pw_9adios_mpi_43adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
-  ADIOS_DATATYPES __pyx_v_type;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("adiostype2string (wrapper)", 0);
-  assert(__pyx_arg_type); {
-    __pyx_v_type = ((ADIOS_DATATYPES)PyInt_AsLong(__pyx_arg_type)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_42adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
+    /* "adios_mpi.pyx":557
+ *     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_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_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_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_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;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":556
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
+ *     if t == adios_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:
+ */
+    break;
 
-static PyObject *__pyx_pf_9adios_mpi_42adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    /* "adios_mpi.pyx":558
+ *     if t == adios_byte:
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:
+ */
+    case adios_short:
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":559
+ *         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_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_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_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_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":591
- * 
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
- *                     MPI.Comm comm = MPI.COMM_WORLD,
- *                     char * parameters = ""):
+    /* "adios_mpi.pyx":558
+ *     if t == adios_byte:
+ *         ntype = np.dtype(np.int8)
+ *     elif t == adios_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:
  */
+    break;
 
-static PyObject *__pyx_pw_9adios_mpi_45read_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) {
-  char *__pyx_v_method_name = ((char *)__pyx_k_BP);
-  struct PyMPICommObject *__pyx_v_comm = __pyx_k__8;
-  char *__pyx_v_parameters = ((char *)__pyx_k__7);
-  PyObject *__pyx_v_method = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  ADIOS_READ_METHOD __pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_init", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_method_name = __pyx_optional_args->method_name;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_comm = __pyx_optional_args->comm;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_parameters = __pyx_optional_args->parameters;
-        }
-      }
-    }
-  }
+    /* "adios_mpi.pyx":560
+ *     elif t == adios_short:
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:
+ */
+    case adios_integer:
 
-  /* "adios_mpi.pyx":594
- *                     MPI.Comm comm = MPI.COMM_WORLD,
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
- *     return adios_read_init_method (method, comm.ob_mpi, parameters)
- * 
+    /* "adios_mpi.pyx":561
+ *         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_PyBytes_FromString(__pyx_v_method_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyInt_FromLong(__pyx_f_9adios_mpi_str2adiosreadmethod(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_method = __pyx_t_2;
-  __pyx_t_2 = 0;
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __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_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_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_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":595
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_init_method (method, comm.ob_mpi, parameters)             # <<<<<<<<<<<<<<
- * 
- * 
+    /* "adios_mpi.pyx":560
+ *     elif t == adios_short:
+ *         ntype = np.dtype(np.int16)
+ *     elif t == adios_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:
  */
-  __pyx_t_3 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = adios_read_init_method(__pyx_t_3, __pyx_v_comm->ob_mpi, __pyx_v_parameters);
-  goto __pyx_L0;
+    break;
 
-  /* "adios_mpi.pyx":591
- * 
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
- *                     MPI.Comm comm = MPI.COMM_WORLD,
- *                     char * parameters = ""):
+    /* "adios_mpi.pyx":562
+ *     elif t == adios_integer:
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:
  */
+    case adios_long:
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_WriteUnraisable("adios_mpi.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
+    /* "adios_mpi.pyx":563
+ *         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_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_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_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_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
+ *     elif t == adios_integer:
+ *         ntype = np.dtype(np.int32)
+ *     elif t == adios_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:
+ */
+    break;
+
+    /* "adios_mpi.pyx":564
+ *     elif t == adios_long:
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:
+ */
+    case adios_unsigned_byte:
+
+    /* "adios_mpi.pyx":565
+ *         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_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_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_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_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
+ *     elif t == adios_long:
+ *         ntype = np.dtype(np.int64)
+ *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:
+ */
+    break;
+
+    /* "adios_mpi.pyx":566
+ *     elif t == adios_unsigned_byte:
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:
+ */
+    case adios_unsigned_short:
+
+    /* "adios_mpi.pyx":567
+ *         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_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_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_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_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
+ *     elif t == adios_unsigned_byte:
+ *         ntype = np.dtype(np.uint8)
+ *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:
+ */
+    break;
+
+    /* "adios_mpi.pyx":568
+ *     elif t == adios_unsigned_short:
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:
+ */
+    case adios_unsigned_integer:
+
+    /* "adios_mpi.pyx":569
+ *         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_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_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_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_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
+ *     elif t == adios_unsigned_short:
+ *         ntype = np.dtype(np.uint16)
+ *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:
+ */
+    break;
+
+    /* "adios_mpi.pyx":570
+ *     elif t == adios_unsigned_integer:
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:
+ */
+    case adios_unsigned_long:
+
+    /* "adios_mpi.pyx":571
+ *         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_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_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_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_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
+ *     elif t == adios_unsigned_integer:
+ *         ntype = np.dtype(np.uint32)
+ *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:
+ */
+    break;
+
+    /* "adios_mpi.pyx":572
+ *     elif t == adios_unsigned_long:
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:
+ */
+    case adios_real:
+
+    /* "adios_mpi.pyx":573
+ *         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_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_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_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_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
+ *     elif t == adios_unsigned_long:
+ *         ntype = np.dtype(np.uint64)
+ *     elif t == adios_real:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:
+ */
+    break;
+
+    /* "adios_mpi.pyx":574
+ *     elif t == adios_real:
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:
+ */
+    case adios_double:
+
+    /* "adios_mpi.pyx":575
+ *         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_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_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_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_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
+ *     elif t == adios_real:
+ *         ntype = np.dtype(np.float32)
+ *     elif t == adios_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:
+ */
+    break;
+
+    /* "adios_mpi.pyx":576
+ *     elif t == adios_double:
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:
+ */
+    case adios_long_double:
+
+    /* "adios_mpi.pyx":577
+ *         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_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_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_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_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
+ *     elif t == adios_double:
+ *         ntype = np.dtype(np.float64)
+ *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:
+ */
+    break;
+
+    /* "adios_mpi.pyx":578
+ *     elif t == adios_long_double:
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:
+ */
+    case adios_complex:
+
+    /* "adios_mpi.pyx":579
+ *         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_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_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_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_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
+ *     elif t == adios_long_double:
+ *         ntype = np.dtype(np.float128)
+ *     elif t == adios_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:
+ */
+    break;
+
+    /* "adios_mpi.pyx":580
+ *     elif t == adios_complex:
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:
+ */
+    case adios_double_complex:
+
+    /* "adios_mpi.pyx":581
+ *         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_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_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_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_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
+ *     elif t == adios_complex:
+ *         ntype = np.dtype(np.complex64)
+ *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:
+ */
+    break;
+
+    /* "adios_mpi.pyx":582
+ *     elif t == adios_double_complex:
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:             # <<<<<<<<<<<<<<
+ *         ## Use string_ instead of str_ for py3
+ *         ntype = np.dtype((np.string_, strlen))
+ */
+    case adios_string:
+
+    /* "adios_mpi.pyx":584
+ *     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_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_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_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_2);
+    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_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_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
+ *     elif t == adios_double_complex:
+ *         ntype = np.dtype(np.complex128)
+ *     elif t == adios_string:             # <<<<<<<<<<<<<<
+ *         ## Use string_ instead of str_ for py3
+ *         ntype = np.dtype((np.string_, strlen))
+ */
+    break;
+    default:
+
+    /* "adios_mpi.pyx":586
+ *         ntype = np.dtype((np.string_, strlen))
+ *     else:
+ *         ntype = None             # <<<<<<<<<<<<<<
+ * 
+ *     return ntype
+ */
+    __Pyx_INCREF(Py_None);
+    __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)Py_None));
+    break;
+  }
+
+  /* "adios_mpi.pyx":588
+ *         ntype = None
+ * 
+ *     return ntype             # <<<<<<<<<<<<<<
+ * 
+ * cdef printfile(ADIOS_FILE * f):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_ntype));
+  __pyx_r = __pyx_v_ntype;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":553
+ * ## ====================
+ * 
+ * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
+ *     """ strlen apply only to string type """
+ *     cdef np.dtype ntype = None
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_ntype);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  ADIOS_DATATYPES __pyx_v_t;
+  int __pyx_v_strlen;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("adios2npdtype (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_strlen,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_t)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_strlen);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        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)
+    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)
+    } 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_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);
+
+  /* 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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  struct __pyx_opt_args_9adios_mpi_adios2npdtype __pyx_t_2;
+  __Pyx_RefNannySetupContext("adios2npdtype", 0);
+  __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_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.adios2npdtype", __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 ntype
+ * 
+ * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %lu' % ('fh', f.fh))
+ *     print ('%15s : %d' % ('nvars', f.nvars))
+ */
+
+static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("printfile", 0);
+
+  /* "adios_mpi.pyx":591
+ * 
+ * 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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_fh);
+  __Pyx_GIVEREF(__pyx_n_s_fh);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fh);
+  __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_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_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_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
+ * 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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_nvars);
+  __Pyx_GIVEREF(__pyx_n_s_nvars);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nvars);
+  __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_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_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_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
+ *     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_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_GOTREF(__pyx_t_2);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 593, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_var_namelist);
+  __Pyx_GIVEREF(__pyx_n_s_var_namelist);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_var_namelist);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_nattrs);
+  __Pyx_GIVEREF(__pyx_n_s_nattrs);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nattrs);
+  __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_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_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_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
+ *     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_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_GOTREF(__pyx_t_2);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 595, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_attr_namelist);
+  __Pyx_GIVEREF(__pyx_n_s_attr_namelist);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_attr_namelist);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_current_step);
+  __Pyx_GIVEREF(__pyx_n_s_current_step);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_current_step);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_last_step);
+  __Pyx_GIVEREF(__pyx_n_s_last_step);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_last_step);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_path);
+  __Pyx_GIVEREF(__pyx_n_s_path);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_path);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_endianness);
+  __Pyx_GIVEREF(__pyx_n_s_endianness);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_endianness);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_version);
+  __Pyx_GIVEREF(__pyx_n_s_version);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_version);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_file_size);
+  __Pyx_GIVEREF(__pyx_n_s_file_size);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_file_size);
+  __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_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_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_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
+ *     return ntype
+ * 
+ * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %lu' % ('fh', f.fh))
+ *     print ('%15s : %d' % ('nvars', f.nvars))
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios_mpi.printfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":603
+ *     print ('%15s : %lu' % ('file_size', f.file_size))
+ * 
+ * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %d' % ('varid', v.varid))
+ *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
+ */
+
+static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("printvar", 0);
+
+  /* "adios_mpi.pyx":604
+ * 
+ * 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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_varid);
+  __Pyx_GIVEREF(__pyx_n_s_varid);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_varid);
+  __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_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_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_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
+ * 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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_type);
+  __Pyx_GIVEREF(__pyx_n_s_type);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_type);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_ndim);
+  __Pyx_GIVEREF(__pyx_n_s_ndim);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ndim);
+  __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_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_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_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
+ *     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_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_GOTREF(__pyx_t_2);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 607, __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_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_dims);
+  __Pyx_GIVEREF(__pyx_n_s_dims);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_dims);
+  __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_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_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_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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_nsteps);
+  __Pyx_GIVEREF(__pyx_n_s_nsteps);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_nsteps);
+  __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_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_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_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
+ *     print ('%15s : %lu' % ('file_size', f.file_size))
+ * 
+ * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
+ *     print ('%15s : %d' % ('varid', v.varid))
+ *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios_mpi.printvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":610
+ *     print ('%15s : %d' % ('nsteps', v.nsteps))
+ * 
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
+ */
+
+static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_v_name) {
+  PyObject *__pyx_v_method = NULL;
+  ADIOS_READ_METHOD __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  ADIOS_READ_METHOD __pyx_t_4;
+  __Pyx_RefNannySetupContext("str2adiosreadmethod", 0);
+
+  /* "adios_mpi.pyx":611
+ * 
+ * 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)
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":612
+ * 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_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_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
+ * 
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
+ *     if (name == "BP"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP
+ *     elif (name == "BP_AGGREGATE"):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":613
+ *     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)
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":614
+ *         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_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_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
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
+ *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP_AGGREGATE
+ *     elif (name == "DATASPACES"):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":615
+ *     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)
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":616
+ *         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_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_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
+ *     elif (name == "BP_AGGREGATE"):
+ *         method = READ_METHOD.BP_AGGREGATE
+ *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.DATASPACES
+ *     elif (name == "DIMES"):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":617
+ *     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)
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":618
+ *         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_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_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
+ *     elif (name == "DATASPACES"):
+ *         method = READ_METHOD.DATASPACES
+ *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.DIMES
+ *     elif (name == "FLEXPATH"):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":619
+ *     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)
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":620
+ *         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_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_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
+ *     elif (name == "DIMES"):
+ *         method = READ_METHOD.DIMES
+ *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.FLEXPATH
+ *     elif (name == "ICEE"):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":621
+ *     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)
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":622
+ *         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_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_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
+ *     elif (name == "FLEXPATH"):
+ *         method = READ_METHOD.FLEXPATH
+ *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.ICEE
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":624
+ *         method = READ_METHOD.ICEE
+ *     else:
+ *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')             # <<<<<<<<<<<<<<
+ *         method = READ_METHOD.BP
+ * 
+ */
+  /*else*/ {
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __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);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_WARN_Invalid_read_method_name);
+    __Pyx_INCREF(__pyx_v_name);
+    __Pyx_GIVEREF(__pyx_v_name);
+    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_name);
+    __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_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
+ *     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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_v_method = __pyx_t_2;
+    __pyx_t_2 = 0;
+  }
+  __pyx_L3:;
+
+  /* "adios_mpi.pyx":627
+ *         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_r = __pyx_t_4;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":610
+ *     print ('%15s : %d' % ('nsteps', v.nsteps))
+ * 
+ * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
+ *     if (name == "BP"):
+ *         method = READ_METHOD.BP
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.str2adiosreadmethod", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = (ADIOS_READ_METHOD) 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":629
+ *     return method
+ * 
+ * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
+ *     """ Convert Numpy.dtype to Adios Datatype
+ *     """
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_49np2adiostype(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;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("np2adiostype", 0);
+
+  /* "adios_mpi.pyx":633
+ *     """
+ * 
+ *     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_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_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
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":636
+ * 
+ *     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_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_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
+ *     cdef atype = DATATYPE.unknown
+ * 
+ *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int8):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":637
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":638
+ *         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_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_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
+ *     if (nptype == np.bool_):
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int16):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":639
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":640
+ *         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_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_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
+ *     elif (nptype == np.int8):
+ *         atype = DATATYPE.byte
+ *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.short
+ *     elif (nptype == np.int32):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":641
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":642
+ *         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_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_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
+ *     elif (nptype == np.int16):
+ *         atype = DATATYPE.short
+ *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":643
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":644
+ *         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_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_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
+ *     elif (nptype == np.int32):
+ *         atype = DATATYPE.integer
+ *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":645
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":646
+ *         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_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_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
+ *     elif (nptype == np.int64):
+ *         atype = DATATYPE.long
+ *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":647
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":648
+ *         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_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_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
+ *     elif (nptype == np.uint8):
+ *         atype = DATATYPE.unsigned_byte
+ *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":649
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":650
+ *         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_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_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
+ *     elif (nptype == np.uint16):
+ *         atype = DATATYPE.unsigned_short
+ *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":651
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":652
+ *         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_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_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
+ *     elif (nptype == np.uint32):
+ *         atype = DATATYPE.unsigned_integer
+ *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.unsigned_long
+ *     elif (nptype == np.float_):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":653
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":654
+ *         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_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_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
+ *     elif (nptype == np.uint64):
+ *         atype = DATATYPE.unsigned_long
+ *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.float16):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":655
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":656
+ *         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_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_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
+ *     elif (nptype == np.float_):
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float32):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":657
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":658
+ *         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_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_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
+ *     elif (nptype == np.float16):
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":659
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":660
+ *         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_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_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
+ *     elif (nptype == np.float32):
+ *         atype = DATATYPE.real
+ *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.complex_):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":661
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":662
+ *         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_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_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
+ *     elif (nptype == np.float64):
+ *         atype = DATATYPE.double
+ *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype == np.complex64):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":663
+ *     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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":664
+ *         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_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_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
+ *     elif (nptype == np.complex_):
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.complex
+ *     elif (nptype == np.complex128):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":665
+ *     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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "adios_mpi.pyx":666
+ *         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_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_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
+ *     elif (nptype == np.complex64):
+ *         atype = DATATYPE.complex
+ *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype.char in ('S', 'U')):
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":667
+ *     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_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)
+  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_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
+ *         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_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_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
+ *     elif (nptype == np.complex128):
+ *         atype = DATATYPE.double_complex
+ *     elif (nptype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
+ *         atype = DATATYPE.string
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":670
+ *         atype = DATATYPE.string
+ *     else:
+ *         atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
+ * 
+ *     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_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_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;
+  }
+  __pyx_L3:;
+
+  /* "adios_mpi.pyx":672
+ *         atype = DATATYPE.unknown
+ * 
+ *     return atype             # <<<<<<<<<<<<<<
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_atype);
+  __pyx_r = __pyx_v_atype;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":629
+ *     return method
+ * 
+ * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
+ *     """ Convert Numpy.dtype to Adios Datatype
+ *     """
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios_mpi.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_atype);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  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));
+
+  /* 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_48np2adiostype(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_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.np2adiostype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":674
+ *     return atype
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
+ *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_51adiostype2string(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
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("adiostype2string", 0);
+
+  /* "adios_mpi.pyx":675
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):
+ *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))             # <<<<<<<<<<<<<<
+ * 
+ * ## ====================
+ */
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __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_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)
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":674
+ *     return atype
+ * 
+ * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
+ *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("adios_mpi.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  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)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_50adiostype2string(__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) {
+  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_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.adiostype2string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":682
+ * 
+ * """ Call adios_read_init_method """
+ * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
+ *                     MPI.Comm comm = MPI.COMM_WORLD,
+ *                     str parameters = ""):
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_53read_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;
+  PyObject *__pyx_v_parameters = ((PyObject*)__pyx_kp_s__10);
+  PyObject *__pyx_v_method = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  ADIOS_READ_METHOD __pyx_t_4;
+  char *__pyx_t_5;
+  __Pyx_RefNannySetupContext("read_init", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_method_name = __pyx_optional_args->method_name;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_comm = __pyx_optional_args->comm;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_parameters = __pyx_optional_args->parameters;
+        }
+      }
+    }
+  }
+
+  /* "adios_mpi.pyx":686
+ *                     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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)
+  __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
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_v_method = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":688
+ *     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_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_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
+ * 
+ * """ Call adios_read_init_method """
+ * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
+ *                     MPI.Comm comm = MPI.COMM_WORLD,
+ *                     str parameters = ""):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  PyObject *__pyx_v_method_name = 0;
+  struct PyMPICommObject *__pyx_v_comm = 0;
+  PyObject *__pyx_v_parameters = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read_init (wrapper)", 0);
+  {
+    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[2] = ((PyObject*)__pyx_kp_s__10);
+    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 (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_method_name = ((PyObject*)values[0]);
+    __pyx_v_comm = ((struct PyMPICommObject *)values[1]);
+    __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, 682, __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);
+
+  /* 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_52read_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;
+  struct __pyx_opt_args_9adios_mpi_read_init __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("read_init", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 3;
+  __pyx_t_2.method_name = __pyx_v_method_name;
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":692
+ * 
+ * """ 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))
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_55read_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;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  ADIOS_READ_METHOD __pyx_t_2;
+  __Pyx_RefNannySetupContext("read_finalize", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_method_name = __pyx_optional_args->method_name;
+    }
+  }
+
+  /* "adios_mpi.pyx":693
+ * """ 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_GOTREF(__pyx_t_1);
+  __pyx_v_method = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":694
+ * 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)
+  __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = adios_read_finalize_method(__pyx_t_2);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":692
+ * 
+ * """ 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))
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* 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) {
+  PyObject *__pyx_v_method_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read_finalize (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_name,0};
+    PyObject* values[1] = {0};
+    values[0] = ((PyObject*)__pyx_n_s_BP);
+    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_method_name);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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_method_name = ((PyObject*)values[0]);
+  }
+  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_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);
+
+  /* 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_54read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_9adios_mpi_read_finalize __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("read_finalize", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __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_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":698
+ * ## dict for handling '/' prefix
+ * cdef class softdict(dict):
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_8softdict_1__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_8softdict_1__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_8softdict___getitem__(((struct __pyx_obj_9adios_mpi_softdict *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adios_mpi_softdict *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_INCREF(__pyx_v_varname);
+
+  /* "adios_mpi.pyx":699
+ * cdef class softdict(dict):
+ *     def __getitem__(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":700
+ *     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_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_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios_mpi.pyx":699
+ * cdef class softdict(dict):
+ *     def __getitem__(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":702
+ *             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_2 = ((__pyx_t_4 > 1) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":703
+ * 
+ *         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_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_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)
+
+    /* "adios_mpi.pyx":702
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":705
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios_mpi.pyx":706
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":707
+ *         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_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)
+
+      /* "adios_mpi.pyx":706
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":709
+ *                 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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":710
+ * 
+ *             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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios_mpi.pyx":709
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":712
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, key_)
+ * 
+ */
+    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_t_7 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
+
+      /* "adios_mpi.pyx":713
+ * 
+ *             if key_ in dict.keys(self):
+ *                 return dict.get(self, key_)             # <<<<<<<<<<<<<<
+ * 
+ *             if '/'+key_ in dict.keys(self):
+ */
+      __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_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_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
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":715
+ *                 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_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_t_3 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 715, __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_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
+ * 
+ *             if '/'+key_ in dict.keys(self):
+ *                 return dict.get(self, '/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *         raise KeyError(key_)
+ */
+      __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_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 716, __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":715
+ *                 return dict.get(self, key_)
+ * 
+ *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
+ *                 return dict.get(self, '/'+key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":705
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios_mpi.pyx":718
+ *                 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)
+  __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_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)
+
+  /* "adios_mpi.pyx":698
+ * ## dict for handling '/' prefix
+ * cdef class softdict(dict):
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios_mpi.softdict.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_varname);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":759
+ *     property name:
+ *         """ The filename (or stream name) associated with. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_4name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_4name___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_4name___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":760
+ *         """ The filename (or stream name) associated with. """
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
+ * 
+ *     property nvars:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":759
+ *     property name:
+ *         """ The filename (or stream name) associated with. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":764
+ *     property nvars:
+ *         """ The number of variables. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nvars
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_5nvars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_5nvars_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_5nvars___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":765
+ *         """ The number of variables. """
+ *         def __get__(self):
+ *             return self.nvars             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":764
+ *     property nvars:
+ *         """ The number of variables. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nvars
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.nvars.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":769
+ *     property nattrs:
+ *         """ The number of attributes. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nattrs
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_6nattrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_6nattrs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_6nattrs___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":770
+ *         """ The number of attributes. """
+ *         def __get__(self):
+ *             return self.nattrs             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":769
+ *     property nattrs:
+ *         """ The number of attributes. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nattrs
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.nattrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":774
+ *     property current_step:
+ *         """ The current timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.current_step
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_12current_step_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_12current_step_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_12current_step___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":775
+ *         """ The current timestep index. """
+ *         def __get__(self):
+ *             return self.current_step             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":774
+ *     property current_step:
+ *         """ The current timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.current_step
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.current_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":779
+ *     property last_step:
+ *         """ The last timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.last_step
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_9last_step_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_9last_step_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_9last_step___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":780
+ *         """ The last timestep index. """
+ *         def __get__(self):
+ *             return self.last_step             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":779
+ *     property last_step:
+ *         """ The last timestep index. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.last_step
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.last_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":784
+ *     property endianness:
+ *         """ The endianness of the stored data. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.endianness
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_10endianness_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_10endianness_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_10endianness___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":785
+ *         """ The endianness of the stored data. """
+ *         def __get__(self):
+ *             return self.endianness             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":784
+ *     property endianness:
+ *         """ The endianness of the stored data. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.endianness
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.endianness.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":789
+ *     property version:
+ *         """ The version of Adios. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.version
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_7version_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_7version___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":790
+ *         """ The version of Adios. """
+ *         def __get__(self):
+ *             return self.version             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":789
+ *     property version:
+ *         """ The version of Adios. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.version
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":794
+ *     property file_size:
+ *         """ The size of Adios file. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.file_size
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_9file_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_9file_size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_9file_size___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_9file_size___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":795
+ *         """ The size of Adios file. """
+ *         def __get__(self):
+ *             return self.file_size             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":794
+ *     property file_size:
+ *         """ The size of Adios file. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.file_size
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.file_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":799
+ *     property is_stream:
+ *         """ Indicating reader type; file reader or stream reader """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.is_stream
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_9is_stream_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_9is_stream_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_9is_stream___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":800
+ *         """ Indicating reader type; file reader or stream reader """
+ *         def __get__(self):
+ *             return self.is_stream             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":799
+ *     property is_stream:
+ *         """ Indicating reader type; file reader or stream reader """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.is_stream
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.is_stream.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":802
+ *             return self.is_stream
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  str method_name = "BP",
+ *                  MPI.Comm comm = MPI.COMM_WORLD,
+ */
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_fname = 0;
+  PyObject *__pyx_v_method_name = 0;
+  struct PyMPICommObject *__pyx_v_comm = 0;
+  PyObject *__pyx_v_is_stream = 0;
+  ADIOS_LOCKMODE __pyx_v_lock_mode;
+  float __pyx_v_timeout_sec;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    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;
+
+    /* "adios_mpi.pyx":805
+ *                  str method_name = "BP",
+ *                  MPI.Comm comm = MPI.COMM_WORLD,
+ *                  is_stream = False,             # <<<<<<<<<<<<<<
+ *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
+ *                  float timeout_sec = 0.0):
+ */
+    values[3] = ((PyObject *)Py_False);
+    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_fname)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_stream);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lock_mode);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
+          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, 802, __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);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_fname = ((PyObject*)values[0]);
+    __pyx_v_method_name = ((PyObject*)values[1]);
+    __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)
+    } else {
+      __pyx_v_lock_mode = __pyx_k__16;
+    }
+    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)
+    } 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_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)
+  __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
+ *             return self.is_stream
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  str method_name = "BP",
+ *                  MPI.Comm comm = MPI.COMM_WORLD,
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec) {
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_name = NULL;
+  int __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  char const *__pyx_t_3;
+  ADIOS_READ_METHOD __pyx_t_4;
+  char const *__pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  uint64_t __pyx_t_8;
+  int __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios_mpi.pyx":808
+ *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
+ *                  float timeout_sec = 0.0):
+ *         self.fp = NULL             # <<<<<<<<<<<<<<
+ *         self.vars = softdict()
+ *         self.attrs = softdict()
+ */
+  __pyx_v_self->fp = NULL;
+
+  /* "adios_mpi.pyx":809
+ *                  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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":810
+ *         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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":811
+ *         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_v_self->is_stream = __pyx_t_2;
+
+  /* "adios_mpi.pyx":812
+ *         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_GOTREF(__pyx_t_1);
+  __pyx_v_method = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":814
+ *         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)
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":815
+ * 
+ *         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_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)
+
+    /* "adios_mpi.pyx":816
+ *         if (is_stream):
+ *             self.fp = adios_read_open(s2b(fname), method, comm.ob_mpi,
+ *                                       lock_mode, timeout_sec)             # <<<<<<<<<<<<<<
+ *         else:
+ *             self.fp = adios_read_open_file(s2b(fname), method, comm.ob_mpi)
+ */
+    __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
+ *         cdef method = str2adiosreadmethod(method_name)
+ * 
+ *         if (is_stream):             # <<<<<<<<<<<<<<
+ *             self.fp = adios_read_open(s2b(fname), method, comm.ob_mpi,
+ *                                       lock_mode, timeout_sec)
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":818
+ *                                       lock_mode, timeout_sec)
+ *         else:
+ *             self.fp = adios_read_open_file(s2b(fname), method, comm.ob_mpi)             # <<<<<<<<<<<<<<
+ * 
+ *         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_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_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
+ *             self.fp = adios_read_open_file(s2b(fname), method, comm.ob_mpi)
+ * 
+ *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
+ * 
+ *         self.name = fname.split('/')[-1]  ## basename
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":822
+ *         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_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_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_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)
+  __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
+ * 
+ *         self.name = fname.split('/')[-1]  ## basename
+ *         self.nvars = self.fp.nvars             # <<<<<<<<<<<<<<
+ *         self.nattrs = self.fp.nattrs
+ *         self.current_step = self.fp.current_step
+ */
+  __pyx_t_7 = __pyx_v_self->fp->nvars;
+  __pyx_v_self->nvars = __pyx_t_7;
+
+  /* "adios_mpi.pyx":824
+ *         self.name = fname.split('/')[-1]  ## basename
+ *         self.nvars = self.fp.nvars
+ *         self.nattrs = self.fp.nattrs             # <<<<<<<<<<<<<<
+ *         self.current_step = self.fp.current_step
+ *         self.last_step = self.fp.last_step
+ */
+  __pyx_t_7 = __pyx_v_self->fp->nattrs;
+  __pyx_v_self->nattrs = __pyx_t_7;
+
+  /* "adios_mpi.pyx":825
+ *         self.nvars = self.fp.nvars
+ *         self.nattrs = self.fp.nattrs
+ *         self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
+ *         self.last_step = self.fp.last_step
+ *         self.endianness = self.fp.endianness
+ */
+  __pyx_t_7 = __pyx_v_self->fp->current_step;
+  __pyx_v_self->current_step = __pyx_t_7;
+
+  /* "adios_mpi.pyx":826
+ *         self.nattrs = self.fp.nattrs
+ *         self.current_step = self.fp.current_step
+ *         self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
+ *         self.endianness = self.fp.endianness
+ *         self.version = self.fp.version
+ */
+  __pyx_t_7 = __pyx_v_self->fp->last_step;
+  __pyx_v_self->last_step = __pyx_t_7;
+
+  /* "adios_mpi.pyx":827
+ *         self.current_step = self.fp.current_step
+ *         self.last_step = self.fp.last_step
+ *         self.endianness = self.fp.endianness             # <<<<<<<<<<<<<<
+ *         self.version = self.fp.version
+ *         self.file_size = self.fp.file_size
+ */
+  __pyx_t_7 = __pyx_v_self->fp->endianness;
+  __pyx_v_self->endianness = __pyx_t_7;
+
+  /* "adios_mpi.pyx":828
+ *         self.last_step = self.fp.last_step
+ *         self.endianness = self.fp.endianness
+ *         self.version = self.fp.version             # <<<<<<<<<<<<<<
+ *         self.file_size = self.fp.file_size
+ * 
+ */
+  __pyx_t_7 = __pyx_v_self->fp->version;
+  __pyx_v_self->version = __pyx_t_7;
+
+  /* "adios_mpi.pyx":829
+ *         self.endianness = self.fp.endianness
+ *         self.version = self.fp.version
+ *         self.file_size = self.fp.file_size             # <<<<<<<<<<<<<<
+ * 
+ *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
+ */
+  __pyx_t_8 = __pyx_v_self->fp->file_size;
+  __pyx_v_self->file_size = __pyx_t_8;
+
+  /* "adios_mpi.pyx":831
+ *         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_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_GOTREF(__pyx_t_6);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 831, __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;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  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)
+    #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_GOTREF(__pyx_t_1);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "adios_mpi.pyx":832
+ * 
+ *         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)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 832, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_INCREF(((PyObject *)__pyx_v_self));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_self));
+    __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_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)
+    __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)
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "adios_mpi.pyx":831
+ *         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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "adios_mpi.pyx":834
+ *             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_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_GOTREF(__pyx_t_1);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 834, __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;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  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)
+    #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_GOTREF(__pyx_t_6);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
+    __pyx_t_6 = 0;
+
+    /* "adios_mpi.pyx":835
+ * 
+ *         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)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 835, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_INCREF(((PyObject *)__pyx_v_self));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_self));
+    __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_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)
+    __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)
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+    /* "adios_mpi.pyx":834
+ *             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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":837
+ *             self.vars[b2s(name)] = var(self, b2s(name))
+ * 
+ *         self.var = self.vars             # <<<<<<<<<<<<<<
+ *         self.attr = self.attrs
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->vars);
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->var);
+  __Pyx_DECREF(__pyx_v_self->var);
+  __pyx_v_self->var = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":838
+ * 
+ *         self.var = self.vars
+ *         self.attr = self.attrs             # <<<<<<<<<<<<<<
+ * 
+ *     def __del__(self):
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->attrs);
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attr);
+  __Pyx_DECREF(__pyx_v_self->attr);
+  __pyx_v_self->attr = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":802
+ *             return self.is_stream
+ * 
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
+ *                  str method_name = "BP",
+ *                  MPI.Comm comm = MPI.COMM_WORLD,
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("adios_mpi.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":840
+ *         self.attr = self.attrs
+ * 
+ *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         """ Close file on destruction. """
+ *         self.close()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_2__del__[] = "file.__del__(self)\n Close file on destruction. ";
+static PyObject *__pyx_pw_9adios_mpi_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_2__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_2__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__del__", 0);
+
+  /* "adios_mpi.pyx":842
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":840
+ *         self.attr = self.attrs
+ * 
+ *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         """ Close file on destruction. """
+ *         self.close()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":844
+ *         self.close()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         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 PyObject *__pyx_pw_9adios_mpi_4file_5__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_4file_4__enter__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_4__enter__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "adios_mpi.pyx":846
+ *     def __enter__(self):
+ *         """ Enter for with statemetn """
+ *         return self             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":844
+ *         self.close()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         return self
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":848
+ *         return self
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_7__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_6__exit__[] = "file.__exit__(self, exception_type, exception_value, traceback)\n Close file on exit. ";
+static PyObject *__pyx_pw_9adios_mpi_4file_7__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;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_type,&__pyx_n_s_exception_value,&__pyx_n_s_traceback,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_exception_type)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } 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_exception_type = values[0];
+    __pyx_v_exception_value = values[1];
+    __pyx_v_traceback = values[2];
+  }
+  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_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.file.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_4file_6__exit__(((struct __pyx_obj_9adios_mpi_file *)__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_4file_6__exit__(struct __pyx_obj_9adios_mpi_file *__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;
+  __Pyx_RefNannySetupContext("__exit__", 0);
+
+  /* "adios_mpi.pyx":850
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":848
+ *         return self
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":852
+ *         self.close()
+ * 
+ *     cpdef close(self):             # <<<<<<<<<<<<<<
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_4file_9close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("close", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 852, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "adios_mpi.pyx":854
+ *     cpdef close(self):
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
+ *         adios_read_close(self.fp)
+ *         self.fp = NULL
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":855
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'
+ *         adios_read_close(self.fp)             # <<<<<<<<<<<<<<
+ *         self.fp = NULL
+ * 
+ */
+  adios_read_close(__pyx_v_self->fp);
+
+  /* "adios_mpi.pyx":856
+ *         assert self.fp != NULL, 'Not an open file'
+ *         adios_read_close(self.fp)
+ *         self.fp = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef printself(self):
+ */
+  __pyx_v_self->fp = NULL;
+
+  /* "adios_mpi.pyx":852
+ *         self.close()
+ * 
+ *     cpdef close(self):             # <<<<<<<<<<<<<<
+ *         """ Close the open file. """
+ *         assert self.fp != NULL, 'Not an open file'
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_9close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_8close[] = "file.close(self)\n Close the open file. ";
+static PyObject *__pyx_pw_9adios_mpi_4file_9close(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_4file_8close(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_8close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_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.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":858
+ *         self.fp = NULL
+ * 
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_FILE structure. """
+ *         assert self.fp != NULL, 'Not an open file'
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_4file_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("printself", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 858, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "adios_mpi.pyx":860
+ *     cpdef printself(self):
+ *         """ Print native ADIOS_FILE structure. """
+ *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
+ *         print ('=== AdiosFile ===')
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":861
+ *         """ 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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":862
+ *         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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_fp);
+  __Pyx_GIVEREF(__pyx_n_s_fp);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
+  __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_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_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_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
+ *         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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":858
+ *         self.fp = NULL
+ * 
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_FILE structure. """
+ *         assert self.fp != NULL, 'Not an open file'
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_10printself[] = "file.printself(self)\n Print native ADIOS_FILE structure. ";
+static PyObject *__pyx_pw_9adios_mpi_4file_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_10printself(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_10printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_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.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":865
+ *         printfile(self.fp)
+ * 
+ *     cpdef release_step(self):             # <<<<<<<<<<<<<<
+ *         """ Release the current step lock and let the writer code to progress """
+ *         adios_release_step(self.fp)
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_4file_13release_step(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_4file_release_step(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("release_step", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 865, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "adios_mpi.pyx":867
+ *     cpdef release_step(self):
+ *         """ Release the current step lock and let the writer code to progress """
+ *         adios_release_step(self.fp)             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):
+ */
+  adios_release_step(__pyx_v_self->fp);
+
+  /* "adios_mpi.pyx":865
+ *         printfile(self.fp)
+ * 
+ *     cpdef release_step(self):             # <<<<<<<<<<<<<<
+ *         """ Release the current step lock and let the writer code to progress """
+ *         adios_release_step(self.fp)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.file.release_step", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_13release_step(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_12release_step[] = "file.release_step(self)\n Release the current step lock and let the writer code to progress ";
+static PyObject *__pyx_pw_9adios_mpi_4file_13release_step(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("release_step (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_12release_step(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_12release_step(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  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_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.file.release_step", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":869
+ *         adios_release_step(self.fp)
+ * 
+ *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
+ *         """
+ *         Advance a timestep for stream reader.
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_4file_15advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_4file_advance *__pyx_optional_args) {
+  int __pyx_v_last = ((int)0);
+  float __pyx_v_timeout_sec = ((float)0.0);
+  int __pyx_v_val;
+  PyObject *__pyx_v_v = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  Py_ssize_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *(*__pyx_t_11)(PyObject *);
+  __Pyx_RefNannySetupContext("advance", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_last = __pyx_optional_args->last;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_timeout_sec = __pyx_optional_args->timeout_sec;
+      }
+    }
+  }
+  /* Check if called by wrapper */
+  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_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_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_GOTREF(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
+      __pyx_t_7 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
+        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+        if (likely(__pyx_t_6)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_6);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_5, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_4);
+      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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "adios_mpi.pyx":880
+ *             int: 0 if successful, non-zero otherwise.
+ *         """
+ *         val = adios_advance_step(self.fp, last, timeout_sec)             # <<<<<<<<<<<<<<
+ *         if (val >= 0):
+ *             self.current_step = self.fp.current_step
+ */
+  __pyx_v_val = adios_advance_step(__pyx_v_self->fp, __pyx_v_last, __pyx_v_timeout_sec);
+
+  /* "adios_mpi.pyx":881
+ *         """
+ *         val = adios_advance_step(self.fp, last, timeout_sec)
+ *         if (val >= 0):             # <<<<<<<<<<<<<<
+ *             self.current_step = self.fp.current_step
+ *             self.last_step = self.fp.last_step
+ */
+  __pyx_t_9 = ((__pyx_v_val >= 0) != 0);
+  if (__pyx_t_9) {
+
+    /* "adios_mpi.pyx":882
+ *         val = adios_advance_step(self.fp, last, timeout_sec)
+ *         if (val >= 0):
+ *             self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
+ *             self.last_step = self.fp.last_step
+ * 
+ */
+    __pyx_t_10 = __pyx_v_self->fp->current_step;
+    __pyx_v_self->current_step = __pyx_t_10;
+
+    /* "adios_mpi.pyx":883
+ *         if (val >= 0):
+ *             self.current_step = self.fp.current_step
+ *             self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
+ * 
+ *             for v in self.vars.values():
+ */
+    __pyx_t_10 = __pyx_v_self->fp->last_step;
+    __pyx_v_self->last_step = __pyx_t_10;
+
+    /* "adios_mpi.pyx":885
+ *             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_GOTREF(__pyx_t_2);
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+      __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_11)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_1);
+          #endif
+        }
+      } else {
+        __pyx_t_1 = __pyx_t_11(__pyx_t_2);
+        if (unlikely(!__pyx_t_1)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_1);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
+      __pyx_t_1 = 0;
+
+      /* "adios_mpi.pyx":886
+ * 
+ *             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_GOTREF(__pyx_t_5);
+      __pyx_t_8 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
+        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
+        if (likely(__pyx_t_8)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_5, function);
+        }
+      }
+      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_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_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
+ *             self.last_step = self.fp.last_step
+ * 
+ *             for v in self.vars.values():             # <<<<<<<<<<<<<<
+ *                 v.advance()
+ * 
+ */
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "adios_mpi.pyx":881
+ *         """
+ *         val = adios_advance_step(self.fp, last, timeout_sec)
+ *         if (val >= 0):             # <<<<<<<<<<<<<<
+ *             self.current_step = self.fp.current_step
+ *             self.last_step = self.fp.last_step
+ */
+  }
+
+  /* "adios_mpi.pyx":888
+ *                 v.advance()
+ * 
+ *         return val             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":869
+ *         adios_release_step(self.fp)
+ * 
+ *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
+ *         """
+ *         Advance a timestep for stream reader.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios_mpi.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_v);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_15advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_14advance[] = "file.advance(self, int last=0, float timeout_sec=0.0)\n\n        Advance a timestep for stream reader.\n\n        Args:\n            last (int, optional): last timestep index (default: 0).\n            timeout_sec (float, optional): timeout seconds (default: 0.0).\n\n        Returns:\n            int: 0 if successful, non-zero otherwise.\n        ";
+static PyObject *__pyx_pw_9adios_mpi_4file_15advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_last;
+  float __pyx_v_timeout_sec;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_last,&__pyx_n_s_timeout_sec,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 (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_last);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_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;
+      }
+    }
+    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)
+    } 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)
+    } 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_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_4file_14advance(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), __pyx_v_last, __pyx_v_timeout_sec);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_14advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  struct __pyx_opt_args_9adios_mpi_4file_advance __pyx_t_2;
+  __Pyx_RefNannySetupContext("advance", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __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_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.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":890
+ *         return val
+ * 
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_17__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_16__getitem__[] = "\n        Return Adios variable, attribute, or group.\n\n        Args:\n            varname (str): variable or attribute name.\n\n        Raises:\n            KeyError: If no name exists.\n\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_9adios_mpi_4file_16__getitem__;
+#endif
+static PyObject *__pyx_pw_9adios_mpi_4file_17__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_16__getitem__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_INCREF(__pyx_v_varname);
+
+  /* "adios_mpi.pyx":901
+ * 
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":902
+ *         """
+ *         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_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_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios_mpi.pyx":901
+ * 
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":904
+ *             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_2 = ((__pyx_t_4 > 1) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":905
+ * 
+ *         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_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_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)
+
+    /* "adios_mpi.pyx":904
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":907
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios_mpi.pyx":908
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":909
+ *         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_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)
+
+      /* "adios_mpi.pyx":908
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":911
+ *                 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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":912
+ * 
+ *             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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios_mpi.pyx":911
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":914
+ *                 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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 914, __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
+
+      /* "adios_mpi.pyx":915
+ * 
+ *             if key_ in self.vars.keys():
+ *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 915, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":914
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get(key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":917
+ *                 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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":918
+ * 
+ *             if key_ in self.attrs.keys():
+ *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_GOTREF(__pyx_t_3);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":917
+ *                 return self.vars.get(key_)
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":920
+ *                 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_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_GOTREF(__pyx_t_8);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+      }
+    }
+    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_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_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_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
+ * 
+ *             if '/'+key_ in self.vars.keys():
+ *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_r = __pyx_t_3;
+      __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":920
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get('/'+key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":923
+ *                 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_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_GOTREF(__pyx_t_10);
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_10, function);
+      }
+    }
+    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_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_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_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
+ * 
+ *             if '/'+key_ in self.attrs.keys():
+ *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_GOTREF(__pyx_t_10);
+      __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":923
+ *                 return self.vars.get('/'+key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":926
+ *                 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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+      __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_12(__pyx_t_3);
+        if (unlikely(!__pyx_t_7)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios_mpi.pyx":928
+ *             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_GOTREF(__pyx_t_9);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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
+ *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
+ *                 if name.startswith(key_) or name.startswith('/'+key_):
+ *                     return group(self, key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_GOTREF(__pyx_t_7);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+        PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_self));
+        __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_GOTREF(__pyx_t_9);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_r = __pyx_t_9;
+        __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        goto __pyx_L0;
+
+        /* "adios_mpi.pyx":928
+ *             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_)
+ * 
+ */
+      }
+
+      /* "adios_mpi.pyx":926
+ *                 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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "adios_mpi.pyx":931
+ *                     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_GOTREF(__pyx_t_9);
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+      __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_12(__pyx_t_9);
+        if (unlikely(!__pyx_t_3)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "adios_mpi.pyx":933
+ *             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_GOTREF(__pyx_t_7);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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
+ *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
+ *                 if name.startswith(key_) or name.startswith('/'+key_):
+ *                     return group(self, key_)             # <<<<<<<<<<<<<<
+ * 
+ *         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_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
+        __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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __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;
+        goto __pyx_L0;
+
+        /* "adios_mpi.pyx":933
+ *             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_)
+ * 
+ */
+      }
+
+      /* "adios_mpi.pyx":931
+ *                     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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "adios_mpi.pyx":907
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios_mpi.pyx":936
+ *                     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)
+  __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_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)
+
+  /* "adios_mpi.pyx":890
+ *         return val
+ * 
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios_mpi.file.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_varname);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":939
+ * 
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_19__repr__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_18__repr__[] = " Return string representation. ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_9adios_mpi_4file_18__repr__;
+#endif
+static PyObject *__pyx_pw_9adios_mpi_4file_19__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_18__repr__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios_mpi.pyx":941
+ *     def __repr__(self):
+ *         """ 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,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios_mpi.pyx":943
+ *         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(),
+ */
+  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_GOTREF(__pyx_t_2);
+    __pyx_t_1 = __pyx_t_2;
+    __pyx_t_2 = 0;
+  } else {
+    __Pyx_INCREF(Py_None);
+    __pyx_t_1 = Py_None;
+  }
+
+  /* "adios_mpi.pyx":944
+ *                 "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_GOTREF(__pyx_t_2);
+
+  /* "adios_mpi.pyx":945
+ *                 (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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 945, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "adios_mpi.pyx":946
+ *                  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_GOTREF(__pyx_t_4);
+
+  /* "adios_mpi.pyx":947
+ *                  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_GOTREF(__pyx_t_6);
+  __pyx_t_7 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_7)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_7);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "adios_mpi.pyx":948
+ *                  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_GOTREF(__pyx_t_6);
+
+  /* "adios_mpi.pyx":949
+ *                  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_GOTREF(__pyx_t_7);
+
+  /* "adios_mpi.pyx":950
+ *                  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_GOTREF(__pyx_t_8);
+
+  /* "adios_mpi.pyx":943
+ *         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_GOTREF(__pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_8);
+  PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_t_8);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_7 = 0;
+  __pyx_t_8 = 0;
+
+  /* "adios_mpi.pyx":942
+ *         """ 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_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
+ * 
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("adios_mpi.file.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":953
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_21__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_21__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_20__getattr__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__getattr__", 0);
+
+  /* "adios_mpi.pyx":954
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):
+ *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":953
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.file.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":957
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_23__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_22__dir__[] = "file.__dir__(self)";
+static PyObject *__pyx_pw_9adios_mpi_4file_23__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dir__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_22__dir__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_v_k0 = NULL;
+  PyObject *__pyx_v_k1 = NULL;
+  PyObject *__pyx_v_k2 = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__dir__", 0);
+
+  /* "adios_mpi.pyx":958
+ *     ## 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_GOTREF(__pyx_t_1);
+  __pyx_v_k0 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":961
+ *         ## 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_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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 961, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k1 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":962
+ *         ## 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_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_GOTREF(__pyx_t_3);
+  __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_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k2 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":963
+ *         k1 = normalize_key(self.vars.keys())
+ *         k2 = normalize_key(self.attrs.keys())
+ *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_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_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
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios_mpi.file.__dir__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_k0);
+  __Pyx_XDECREF(__pyx_v_k1);
+  __Pyx_XDECREF(__pyx_v_k2);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":966
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_25keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_24keys[] = "file.keys(self)";
+static PyObject *__pyx_pw_9adios_mpi_4file_25keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_24keys(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("keys", 0);
+
+  /* "adios_mpi.pyx":967
+ *     ## Require for dictionary key completion
+ *     def keys(self):
+ *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_3);
+  __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, 967, __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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":966
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.file.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":969
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ *     def is_open(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return True if self.fp != NULL else False
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_27is_open(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_26is_open[] = "file.is_open(self)\n Check whether file is open or closed ";
+static PyObject *__pyx_pw_9adios_mpi_4file_27is_open(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_open (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_26is_open(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_26is_open(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("is_open", 0);
+
+  /* "adios_mpi.pyx":971
+ *     def is_open(self):
+ *         """ Check whether file is open or closed """
+ *         return True if self.fp != NULL else False             # <<<<<<<<<<<<<<
+ * 
+ *     ## for py2
+ */
+  __Pyx_XDECREF(__pyx_r);
+  if (((__pyx_v_self->fp != NULL) != 0)) {
+    __Pyx_INCREF(Py_True);
+    __pyx_t_1 = Py_True;
+  } else {
+    __Pyx_INCREF(Py_False);
+    __pyx_t_1 = Py_False;
+  }
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":969
+ *         return self.vars.keys() + self.attrs.keys()
+ * 
+ *     def is_open(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return True if self.fp != NULL else False
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":974
+ * 
+ *     ## for py2
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.is_open()
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_29__nonzero__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_29__nonzero__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_28__nonzero__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_28__nonzero__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("__nonzero__", 0);
+
+  /* "adios_mpi.pyx":975
+ *     ## 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_4;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":974
+ * 
+ *     ## for py2
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.is_open()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.file.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":978
+ * 
+ *     ## for py3
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return self.is_open()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_31__bool__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_31__bool__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_30__bool__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_30__bool__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  __Pyx_RefNannySetupContext("__bool__", 0);
+
+  /* "adios_mpi.pyx":980
+ *     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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_4;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":978
+ * 
+ *     ## for py3
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         """ Check whether file is open or closed """
+ *         return self.is_open()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.file.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":982
+ *         return self.is_open()
+ * 
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_33dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_4file_32dirs[] = "file.dirs(self)\n Return child dir names ";
+static PyObject *__pyx_pw_9adios_mpi_4file_33dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("dirs (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_32dirs(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_v_s = NULL;
+  PyObject *__pyx_v_k = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  __Pyx_RefNannySetupContext("dirs", 0);
+
+  /* "adios_mpi.pyx":984
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_v_s = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":985
+ *         """ 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "adios_mpi.pyx":986
+ *         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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "adios_mpi.pyx":987
+ *         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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "adios_mpi.pyx":985
+ *         """ 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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":988
+ *             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_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_2);
+        #endif
+      }
+    } else {
+      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "adios_mpi.pyx":989
+ *             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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "adios_mpi.pyx":990
+ *         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_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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "adios_mpi.pyx":988
+ *             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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":991
+ *             if k.startswith('/'): k = k[1:]
+ *             s.add(os.path.dirname(k).split('/')[0])
+ *         return list(s-set(['']))             # <<<<<<<<<<<<<<
+ * 
+ * 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_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)
+  __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_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
+ *         return self.is_open()
+ * 
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios_mpi.file.dirs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_s);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":752
+ * 
+ *     ## Public Memeber
+ *     cpdef public softdict vars             # <<<<<<<<<<<<<<
+ *     cpdef public softdict attrs
+ *     cpdef public var
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_4vars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_4vars_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_4vars___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_4vars___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_r = ((PyObject *)__pyx_v_self->vars);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_4vars_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_4vars_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_4file_4vars_2__set__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_4vars_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.vars.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_4vars_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_4vars_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_4vars_4__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_4vars_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None);
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":753
+ *     ## Public Memeber
+ *     cpdef public softdict vars
+ *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
+ *     cpdef public var
+ *     cpdef public attr
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_5attrs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_5attrs___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_5attrs___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_r = ((PyObject *)__pyx_v_self->attrs);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_5attrs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_5attrs_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_4file_5attrs_2__set__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_5attrs_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.file.attrs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_5attrs_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_5attrs_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_5attrs_4__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_5attrs_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None);
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":754
+ *     cpdef public softdict vars
+ *     cpdef public softdict attrs
+ *     cpdef public var             # <<<<<<<<<<<<<<
+ *     cpdef public attr
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_3var_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_3var_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_3var___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_3var___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->var);
+  __pyx_r = __pyx_v_self->var;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_3var_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_4file_3var_2__set__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_3var_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->var);
+  __Pyx_DECREF(__pyx_v_self->var);
+  __pyx_v_self->var = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_3var_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_3var_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_3var_4__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_3var_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->var);
+  __Pyx_DECREF(__pyx_v_self->var);
+  __pyx_v_self->var = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":755
+ *     cpdef public softdict attrs
+ *     cpdef public var
+ *     cpdef public attr             # <<<<<<<<<<<<<<
+ * 
+ *     property name:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4file_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4file_4attr_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_4attr___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4file_4attr___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->attr);
+  __pyx_r = __pyx_v_self->attr;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_4attr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_4attr_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_4file_4attr_2__set__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_4attr_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->attr);
+  __Pyx_DECREF(__pyx_v_self->attr);
+  __pyx_v_self->attr = __pyx_v_value;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4file_4attr_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_4file_4attr_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4file_4attr_4__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4file_4attr_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->attr);
+  __Pyx_DECREF(__pyx_v_self->attr);
+  __pyx_v_self->attr = Py_None;
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1000
+ * 
+ *     property start:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.start
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_5start_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_9blockinfo_5start___get__(((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5start___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1001
+ *     property start:
+ *         def __get__(self):
+ *             return self.start             # <<<<<<<<<<<<<<
+ * 
+ *     property count:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->start);
+  __pyx_r = __pyx_v_self->start;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1000
+ * 
+ *     property start:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.start
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1004
+ * 
+ *     property count:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.count
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_5count_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_5count_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_9blockinfo_5count___get__(((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5count___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1005
+ *     property count:
+ *         def __get__(self):
+ *             return self.count             # <<<<<<<<<<<<<<
+ * 
+ *     property process_id:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->count);
+  __pyx_r = __pyx_v_self->count;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1004
+ * 
+ *     property count:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.count
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1008
+ * 
+ *     property process_id:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.process_id
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_10process_id_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_10process_id_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_9blockinfo_10process_id___get__(((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10process_id___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1009
+ *     property process_id:
+ *         def __get__(self):
+ *             return self.process_id             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1008
+ * 
+ *     property process_id:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.process_id
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.blockinfo.process_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1012
+ * 
+ *     property time_index:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.time_index
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_10time_index_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_10time_index_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_9blockinfo_10time_index___get__(((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10time_index___get__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1013
+ *     property time_index:
+ *         def __get__(self):
+ *             return self.time_index             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1012
+ * 
+ *     property time_index:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.time_index
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.blockinfo.time_index.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1015
+ *             return self.time_index
+ * 
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
+ *         self.start = start
+ *         self.count = count
+ */
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_9blockinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_9adios_mpi_9blockinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_start = 0;
+  PyObject *__pyx_v_count = 0;
+  int __pyx_v_process_id;
+  int __pyx_v_time_index;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_count,&__pyx_n_s_process_id,&__pyx_n_s_time_index,0};
+    PyObject* values[4] = {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  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_start)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
+        }
+        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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+      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);
+    }
+    __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)
+  }
+  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_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)
+  __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, int __pyx_v_process_id, int __pyx_v_time_index) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios_mpi.pyx":1016
+ * 
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
+ *         self.start = start             # <<<<<<<<<<<<<<
+ *         self.count = count
+ *         self.process_id = process_id
+ */
+  __Pyx_INCREF(__pyx_v_start);
+  __Pyx_GIVEREF(__pyx_v_start);
+  __Pyx_GOTREF(__pyx_v_self->start);
+  __Pyx_DECREF(__pyx_v_self->start);
+  __pyx_v_self->start = __pyx_v_start;
+
+  /* "adios_mpi.pyx":1017
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
+ *         self.start = start
+ *         self.count = count             # <<<<<<<<<<<<<<
+ *         self.process_id = process_id
+ *         self.time_index = time_index
+ */
+  __Pyx_INCREF(__pyx_v_count);
+  __Pyx_GIVEREF(__pyx_v_count);
+  __Pyx_GOTREF(__pyx_v_self->count);
+  __Pyx_DECREF(__pyx_v_self->count);
+  __pyx_v_self->count = __pyx_v_count;
+
+  /* "adios_mpi.pyx":1018
+ *         self.start = start
+ *         self.count = count
+ *         self.process_id = process_id             # <<<<<<<<<<<<<<
+ *         self.time_index = time_index
+ * 
+ */
+  __pyx_v_self->process_id = __pyx_v_process_id;
+
+  /* "adios_mpi.pyx":1019
+ *         self.count = count
+ *         self.process_id = process_id
+ *         self.time_index = time_index             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  __pyx_v_self->time_index = __pyx_v_time_index;
+
+  /* "adios_mpi.pyx":1015
+ *             return self.time_index
+ * 
+ *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
+ *         self.start = start
+ *         self.count = count
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1021
+ *         self.time_index = time_index
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_3__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_9blockinfo_3__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_9blockinfo_2__repr__(((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_9blockinfo_2__repr__(struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios_mpi.pyx":1022
+ * 
+ *     def __repr__(self):
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.process_id,
+ *                 self.time_index,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios_mpi.pyx":1023
+ *     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_GOTREF(__pyx_t_1);
+
+  /* "adios_mpi.pyx":1024
+ *         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_GOTREF(__pyx_t_2);
+
+  /* "adios_mpi.pyx":1023
+ *     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_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->start);
+  __Pyx_GIVEREF(__pyx_v_self->start);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->start);
+  __Pyx_INCREF(__pyx_v_self->count);
+  __Pyx_GIVEREF(__pyx_v_self->count);
+  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->count);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":1022
+ * 
+ *     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_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
+ *         self.time_index = time_index
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+ *                (self.process_id,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.blockinfo.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1058
+ *     property name:
+ *         """ The variable name. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_4name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_4name___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1059
+ *         """ The variable name. """
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
+ * 
+ *     property varid:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1058
+ *     property name:
+ *         """ The variable name. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1063
+ *     property varid:
+ *         """ Internal variable id. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.varid
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_5varid_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_5varid_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_5varid___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1064
+ *         """ Internal variable id. """
+ *         def __get__(self):
+ *             return self.varid             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1063
+ *     property varid:
+ *         """ Internal variable id. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.varid
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.var.varid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1068
+ *     property dtype:
+ *         """ Variable type as in numpy.dtype. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_5dtype___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1069
+ *         """ Variable type as in numpy.dtype. """
+ *         def __get__(self):
+ *             return self.dtype             # <<<<<<<<<<<<<<
+ * 
+ *     property ndim:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1068
+ *     property dtype:
+ *         """ Variable type as in numpy.dtype. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1073
+ *     property ndim:
+ *         """ The number of dimensions of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.ndim
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_4ndim_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_4ndim___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1074
+ *         """ The number of dimensions of the variable. """
+ *         def __get__(self):
+ *             return self.ndim             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1073
+ *     property ndim:
+ *         """ The number of dimensions of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.ndim
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.var.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1078
+ *     property dims:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_4dims_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_4dims_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_4dims___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1079
+ *         """ The shape of the variable. """
+ *         def __get__(self):
+ *             return self.dims             # <<<<<<<<<<<<<<
+ * 
+ *     property shape:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->dims);
+  __pyx_r = __pyx_v_self->dims;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1078
+ *     property dims:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1083
+ *     property shape:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_5shape_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_5shape___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_5shape___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1084
+ *         """ The shape of the variable. """
+ *         def __get__(self):
+ *             return self.dims             # <<<<<<<<<<<<<<
+ * 
+ *     property size:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->dims);
+  __pyx_r = __pyx_v_self->dims;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1083
+ *     property shape:
+ *         """ The shape of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dims
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1088
+ *     property size:
+ *         """ The number of elements in the array. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return np.prod(self.dims)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_4size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_4size___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1089
+ *         """ The number of elements in the array. """
+ *         def __get__(self):
+ *             return np.prod(self.dims)             # <<<<<<<<<<<<<<
+ * 
+ *     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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1088
+ *     property size:
+ *         """ The number of elements in the array. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return np.prod(self.dims)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.var.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios_mpi.pyx":1093
+ *     property nsteps:
+ *         """ The number of time steps of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nsteps
+ * 
+ */
+
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_45read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_44read_init[] = "read_init(char *method_name='BP', Comm comm=MPI.COMM_WORLD, char *parameters='') -> int";
-static PyObject *__pyx_pw_9adios_mpi_45read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_method_name;
-  struct PyMPICommObject *__pyx_v_comm = 0;
-  char *__pyx_v_parameters;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_3var_6nsteps_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_6nsteps_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read_init (wrapper)", 0);
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_6nsteps___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1094
+ *         """ The number of time steps of the variable. """
+ *         def __get__(self):
+ *             return self.nsteps             # <<<<<<<<<<<<<<
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1093
+ *     property nsteps:
+ *         """ The number of time steps of the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.nsteps
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.var.nsteps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1098
+ *     property attrs:
+ *         """ Attributes associated with the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.attrs
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_5attrs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_5attrs___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_5attrs___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1099
+ *         """ Attributes associated with the variable. """
+ *         def __get__(self):
+ *             return self.attrs             # <<<<<<<<<<<<<<
+ * 
+ *     property blockinfo:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_r = ((PyObject *)__pyx_v_self->attrs);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1098
+ *     property attrs:
+ *         """ Attributes associated with the variable. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.attrs
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1103
+ *     property blockinfo:
+ *         """ Block information. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if self.blockinfo is None:
+ *                 ll = list()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_9blockinfo_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_9blockinfo_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_9blockinfo___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_v_ll = NULL;
+  PyObject *__pyx_v_k = NULL;
+  int __pyx_v_t;
+  PyObject *__pyx_v_l = NULL;
+  CYTHON_UNUSED int __pyx_v_i;
+  PyObject *__pyx_v_start = NULL;
+  PyObject *__pyx_v_count = NULL;
+  PyObject *__pyx_v_process_id = NULL;
+  PyObject *__pyx_v_time_index = NULL;
+  struct __pyx_obj_9adios_mpi_blockinfo *__pyx_v_binfo = NULL;
+  int __pyx_v_d;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  Py_ssize_t __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1104
+ *         """ Block information. """
+ *         def __get__(self):
+ *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
+ *                 ll = list()
+ *                 k = 0
+ */
+  __pyx_t_1 = (__pyx_v_self->blockinfo == ((PyObject*)Py_None));
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":1105
+ *         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_GOTREF(__pyx_t_3);
+    __pyx_v_ll = ((PyObject*)__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "adios_mpi.pyx":1106
+ *             if self.blockinfo is None:
+ *                 ll = list()
+ *                 k = 0             # <<<<<<<<<<<<<<
+ *                 for t in range(self.vp.nsteps):
+ *                     l = list()
+ */
+    __Pyx_INCREF(__pyx_int_0);
+    __pyx_v_k = __pyx_int_0;
+
+    /* "adios_mpi.pyx":1107
+ *                 ll = list()
+ *                 k = 0
+ *                 for t in range(self.vp.nsteps):             # <<<<<<<<<<<<<<
+ *                     l = list()
+ *                     if self.vp.nblocks[t] == 0:
+ */
+    __pyx_t_4 = __pyx_v_self->vp->nsteps;
+    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
+ *                 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_GOTREF(__pyx_t_3);
+      __Pyx_XDECREF_SET(__pyx_v_l, ((PyObject*)__pyx_t_3));
+      __pyx_t_3 = 0;
+
+      /* "adios_mpi.pyx":1109
+ *                 for t in range(self.vp.nsteps):
+ *                     l = list()
+ *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
+ *                         l.append(None)
+ *                     for i in range(self.vp.nblocks[t]):
+ */
+      __pyx_t_2 = (((__pyx_v_self->vp->nblocks[__pyx_v_t]) == 0) != 0);
+      if (__pyx_t_2) {
+
+        /* "adios_mpi.pyx":1110
+ *                     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)
+
+        /* "adios_mpi.pyx":1109
+ *                 for t in range(self.vp.nsteps):
+ *                     l = list()
+ *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
+ *                         l.append(None)
+ *                     for i in range(self.vp.nblocks[t]):
+ */
+      }
+
+      /* "adios_mpi.pyx":1111
+ *                     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)])
+ *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
+ */
+      __pyx_t_7 = (__pyx_v_self->vp->nblocks[__pyx_v_t]);
+      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
+ *                         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_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_GOTREF(__pyx_t_12);
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 1112, __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_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
+ *                     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_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_GOTREF(__pyx_t_3);
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1113, __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_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
+ *                         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_GOTREF(__pyx_t_3);
+        __Pyx_XDECREF_SET(__pyx_v_process_id, __pyx_t_3);
+        __pyx_t_3 = 0;
+
+        /* "adios_mpi.pyx":1115
+ *                         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_GOTREF(__pyx_t_3);
+        __Pyx_XDECREF_SET(__pyx_v_time_index, __pyx_t_3);
+        __pyx_t_3 = 0;
+
+        /* "adios_mpi.pyx":1116
+ *                         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_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(__pyx_v_start);
+        __Pyx_GIVEREF(__pyx_v_start);
+        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_start);
+        __Pyx_INCREF(__pyx_v_count);
+        __Pyx_GIVEREF(__pyx_v_count);
+        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_count);
+        __Pyx_INCREF(__pyx_v_process_id);
+        __Pyx_GIVEREF(__pyx_v_process_id);
+        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_process_id);
+        __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_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
+ *                         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)
+
+        /* "adios_mpi.pyx":1118
+ *                         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_GOTREF(__pyx_t_12);
+        __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_12);
+        __pyx_t_12 = 0;
+      }
+
+      /* "adios_mpi.pyx":1119
+ *                         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)
+    }
+
+    /* "adios_mpi.pyx":1120
+ *                         k += 1
+ *                     ll.append(l)
+ *                 self.blockinfo = ll             # <<<<<<<<<<<<<<
+ *             return (self.blockinfo)
+ * 
+ */
+    __Pyx_INCREF(__pyx_v_ll);
+    __Pyx_GIVEREF(__pyx_v_ll);
+    __Pyx_GOTREF(__pyx_v_self->blockinfo);
+    __Pyx_DECREF(__pyx_v_self->blockinfo);
+    __pyx_v_self->blockinfo = __pyx_v_ll;
+
+    /* "adios_mpi.pyx":1104
+ *         """ Block information. """
+ *         def __get__(self):
+ *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
+ *                 ll = list()
+ *                 k = 0
+ */
+  }
+
+  /* "adios_mpi.pyx":1121
+ *                     ll.append(l)
+ *                 self.blockinfo = ll
+ *             return (self.blockinfo)             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, file file, str name):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->blockinfo);
+  __pyx_r = __pyx_v_self->blockinfo;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1103
+ *     property blockinfo:
+ *         """ Block information. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if self.blockinfo is None:
+ *                 ll = list()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("adios_mpi.var.blockinfo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_ll);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XDECREF(__pyx_v_l);
+  __Pyx_XDECREF(__pyx_v_start);
+  __Pyx_XDECREF(__pyx_v_count);
+  __Pyx_XDECREF(__pyx_v_process_id);
+  __Pyx_XDECREF(__pyx_v_time_index);
+  __Pyx_XDECREF((PyObject *)__pyx_v_binfo);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1123
+ *             return (self.blockinfo)
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.vp = NULL
+ */
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_9adios_mpi_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_9adios_mpi_file *__pyx_v_file = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    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[1] = (PyObject *)__pyx_k__8;
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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  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;
@@ -8750,372 +17776,751 @@ static PyObject *__pyx_pw_9adios_mpi_45read_init(PyObject *__pyx_self, PyObject
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
-          if (value) { values[0] = value; kw_args--; }
-        }
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_file)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
         case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters);
-          if (value) { values[2] = value; kw_args--; }
+        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)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error)
       }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_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);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_file = ((struct __pyx_obj_9adios_mpi_file *)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
+  }
+  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_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)
+  __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, PyObject *__pyx_v_name) {
+  int __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  size_t __pyx_t_8;
+  struct __pyx_opt_args_9adios_mpi_adios2npdtype __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  PyObject *(*__pyx_t_11)(PyObject *);
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  Py_ssize_t __pyx_t_15;
+  PyObject *__pyx_t_16 = NULL;
+  __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_INCREF(__pyx_v_name);
+
+  /* "adios_mpi.pyx":1124
+ * 
+ *     def __init__(self, file file, str name):
+ *         self.file = file             # <<<<<<<<<<<<<<
+ *         self.vp = NULL
+ * 
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_v_file));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
+  __Pyx_GOTREF(__pyx_v_self->file);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
+  __pyx_v_self->file = __pyx_v_file;
+
+  /* "adios_mpi.pyx":1125
+ *     def __init__(self, file file, str name):
+ *         self.file = file
+ *         self.vp = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         assert self.file.fp != NULL, 'Not an open file'
+ */
+  __pyx_v_self->vp = NULL;
+
+  /* "adios_mpi.pyx":1127
+ *         self.vp = NULL
+ * 
+ *         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'
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":1128
+ * 
+ *         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_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_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
+ *         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'             # <<<<<<<<<<<<<<
+ * 
+ *         ## Further populate vp.blockinfo
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":1132
+ * 
+ *         ## Further populate vp.blockinfo
+ *         adios_inq_var_blockinfo(self.file.fp, self.vp)             # <<<<<<<<<<<<<<
+ * 
+ *         self.name = name
+ */
+  adios_inq_var_blockinfo(__pyx_v_self->file->fp, __pyx_v_self->vp);
+
+  /* "adios_mpi.pyx":1134
+ *         adios_inq_var_blockinfo(self.file.fp, self.vp)
+ * 
+ *         self.name = name             # <<<<<<<<<<<<<<
+ *         self.varid = self.vp.varid
+ *         self.ndim = self.vp.ndim
+ */
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
+  __Pyx_GOTREF(__pyx_v_self->name);
+  __Pyx_DECREF(__pyx_v_self->name);
+  __pyx_v_self->name = __pyx_v_name;
+
+  /* "adios_mpi.pyx":1135
+ * 
+ *         self.name = name
+ *         self.varid = self.vp.varid             # <<<<<<<<<<<<<<
+ *         self.ndim = self.vp.ndim
+ *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
+ */
+  __pyx_t_3 = __pyx_v_self->vp->varid;
+  __pyx_v_self->varid = __pyx_t_3;
+
+  /* "adios_mpi.pyx":1136
+ *         self.name = name
+ *         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_3 = __pyx_v_self->vp->ndim;
+  __pyx_v_self->ndim = __pyx_t_3;
+
+  /* "adios_mpi.pyx":1137
+ *         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_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_GOTREF(__pyx_t_5);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1137, __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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_5);
+  __Pyx_GOTREF(__pyx_v_self->dims);
+  __Pyx_DECREF(__pyx_v_self->dims);
+  __pyx_v_self->dims = ((PyObject*)__pyx_t_5);
+  __pyx_t_5 = 0;
+
+  /* "adios_mpi.pyx":1138
+ *         self.ndim = self.vp.ndim
+ *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
+ *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
+ * 
+ *         if self.vp.type == DATATYPE.string:
+ */
+  __pyx_t_3 = __pyx_v_self->vp->nsteps;
+  __pyx_v_self->nsteps = __pyx_t_3;
+
+  /* "adios_mpi.pyx":1140
+ *         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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_7) {
+
+    /* "adios_mpi.pyx":1141
+ * 
+ *         if self.vp.type == DATATYPE.string:
+ *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))             # <<<<<<<<<<<<<<
+ *         else:
+ *             self.dtype = adios2npdtype(self.vp.type)
+ */
+    __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_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->dtype);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
+    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "adios_mpi.pyx":1140
+ *         self.nsteps = self.vp.nsteps
+ * 
+ *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
+ *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
+ *         else:
+ */
+    goto __pyx_L5;
+  }
+
+  /* "adios_mpi.pyx":1143
+ *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
+ *         else:
+ *             self.dtype = adios2npdtype(self.vp.type)             # <<<<<<<<<<<<<<
+ * 
+ *         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_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->dtype);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
+    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
+    __pyx_t_1 = 0;
+  }
+  __pyx_L5:;
+
+  /* "adios_mpi.pyx":1145
+ *             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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":1146
+ * 
+ *         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_GOTREF(__pyx_t_6);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_11)) {
+      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)
+        #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_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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
       }
-    }
-    if (values[0]) {
-      __pyx_v_method_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_method_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_name = ((char *)__pyx_k_BP);
-    }
-    __pyx_v_comm = ((struct PyMPICommObject *)values[1]);
-    if (values[2]) {
-      __pyx_v_parameters = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_parameters) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
-      __pyx_v_parameters = ((char *)__pyx_k__7);
+      __pyx_t_1 = __pyx_t_11(__pyx_t_6);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
     }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __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_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_44read_init(__pyx_self, __pyx_v_method_name, __pyx_v_comm, __pyx_v_parameters);
+    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)
+    __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
+    __pyx_t_1 = 0;
 
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1147
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    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_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if ((__pyx_t_7 != 0)) {
 
-static PyObject *__pyx_pf_9adios_mpi_44read_init(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, char *__pyx_v_parameters) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_read_init __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_init", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 3;
-  __pyx_t_2.method_name = __pyx_v_method_name;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
+      /* "adios_mpi.pyx":1148
+ *         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_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_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_GOTREF(__pyx_t_13);
+      __pyx_t_14 = NULL;
+      __pyx_t_15 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
+        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12);
+        if (likely(__pyx_t_14)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+          __Pyx_INCREF(__pyx_t_14);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_12, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_13);
+      PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_15, __pyx_t_13);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1147
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    }
 
-/* "adios_mpi.pyx":599
+    /* "adios_mpi.pyx":1149
+ *             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]
  * 
- * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):             # <<<<<<<<<<<<<<
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)
  */
-
-static PyObject *__pyx_pw_9adios_mpi_47read_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) {
-  char *__pyx_v_method_name = ((char *)__pyx_k_BP);
-  PyObject *__pyx_v_method = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  ADIOS_READ_METHOD __pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_finalize", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_method_name = __pyx_optional_args->method_name;
+    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_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if ((__pyx_t_7 != 0)) {
 
-  /* "adios_mpi.pyx":600
- * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):
- *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
- *     return adios_read_finalize_method (method)
+      /* "adios_mpi.pyx":1150
+ *                 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_1 = __Pyx_PyBytes_FromString(__pyx_v_method_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyInt_FromLong(__pyx_f_9adios_mpi_str2adiosreadmethod(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_method = __pyx_t_2;
-  __pyx_t_2 = 0;
+      __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_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_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_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_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+      __pyx_t_16 = NULL;
+      __pyx_t_15 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
+        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_12);
+        if (likely(__pyx_t_16)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+          __Pyx_INCREF(__pyx_t_16);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_12, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_13);
+      PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_15, __pyx_t_13);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":601
- * cpdef int read_finalize(char * method_name = "BP"):
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)             # <<<<<<<<<<<<<<
+      /* "adios_mpi.pyx":1149
+ *             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]
  * 
- * ## Python class for ADIOS_FILE structure
  */
-  __pyx_t_3 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = adios_read_finalize_method(__pyx_t_3);
-  goto __pyx_L0;
+    }
 
-  /* "adios_mpi.pyx":599
+    /* "adios_mpi.pyx":1146
  * 
- * """ Call adios_read_finalize_method """
- * cpdef int read_finalize(char * method_name = "BP"):             # <<<<<<<<<<<<<<
- *     cdef method = str2adiosreadmethod(method_name)
- *     return adios_read_finalize_method (method)
+ *         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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "adios_mpi.pyx":1123
+ *             return (self.blockinfo)
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.vp = NULL
  */
 
   /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_WriteUnraisable("adios_mpi.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename, 0);
-  __pyx_r = 0;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_XDECREF(__pyx_t_16);
+  __Pyx_AddTraceback("adios_mpi.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_XDECREF(__pyx_v_name);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios_mpi.pyx":1152
+ *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
+ * 
+ *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         self.close()
+ * 
+ */
+
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_47read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_46read_finalize[] = "read_finalize(char *method_name='BP') -> int";
-static PyObject *__pyx_pw_9adios_mpi_47read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_method_name;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+static PyObject *__pyx_pw_9adios_mpi_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_2__del__[] = "var.__del__(self)";
+static PyObject *__pyx_pw_9adios_mpi_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read_finalize (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_name,0};
-    PyObject* values[1] = {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  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_method_name);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_finalize") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __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;
-      }
-    }
-    if (values[0]) {
-      __pyx_v_method_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_method_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_name = ((char *)__pyx_k_BP);
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __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:;
-  __pyx_r = __pyx_pf_9adios_mpi_46read_finalize(__pyx_self, __pyx_v_method_name);
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_2__del__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_46read_finalize(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_method_name) {
+static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_read_finalize __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read_finalize", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__del__", 0);
 
-/* "adios_mpi.pyx":640
- *     property name:
- *         """ The filename (or stream name) associated with. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+  /* "adios_mpi.pyx":1153
+ * 
+ *     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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_4name_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_4name___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  /* "adios_mpi.pyx":1152
+ *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
+ * 
+ *     def __del__(self):             # <<<<<<<<<<<<<<
+ *         self.close()
+ * 
+ */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.var.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_4name___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+/* "adios_mpi.pyx":1155
+ *         self.close()
+ * 
+ *     cpdef close(self):             # <<<<<<<<<<<<<<
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("close", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 1155, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
 
-  /* "adios_mpi.pyx":641
- *         """ The filename (or stream name) associated with. """
- *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1157
+ *     cpdef close(self):
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'             # <<<<<<<<<<<<<<
+ *         adios_free_varinfo(self.vp)
+ *         self.vp = NULL
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":1158
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'
+ *         adios_free_varinfo(self.vp)             # <<<<<<<<<<<<<<
+ *         self.vp = NULL
  * 
- *     property nvars:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
-  goto __pyx_L0;
+  adios_free_varinfo(__pyx_v_self->vp);
 
-  /* "adios_mpi.pyx":640
- *     property name:
- *         """ The filename (or stream name) associated with. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+  /* "adios_mpi.pyx":1159
+ *         assert self.vp != NULL, 'Not an open var'
+ *         adios_free_varinfo(self.vp)
+ *         self.vp = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef advance(self):
+ */
+  __pyx_v_self->vp = NULL;
+
+  /* "adios_mpi.pyx":1155
+ *         self.close()
  * 
+ *     cpdef close(self):             # <<<<<<<<<<<<<<
+ *         """ Close and free variable information """
+ *         assert self.vp != NULL, 'Not an open var'
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":645
- *     property nvars:
- *         """ The number of variables. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nvars
- * 
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_5nvars_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_5nvars_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_4close[] = "var.close(self)\n Close and free variable information ";
+static PyObject *__pyx_pw_9adios_mpi_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_5nvars___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("close (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_4close(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_4close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios_mpi.pyx":646
- *         """ The number of variables. """
- *         def __get__(self):
- *             return self.nvars             # <<<<<<<<<<<<<<
- * 
- *     property nattrs:
- */
+  __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":645
- *     property nvars:
- *         """ The number of variables. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nvars
- * 
- */
-
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.nvars.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -9123,125 +18528,150 @@ static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":650
- *     property nattrs:
- *         """ The number of attributes. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nattrs
+/* "adios_mpi.pyx":1161
+ *         self.vp = NULL
  * 
+ *     cpdef advance(self):             # <<<<<<<<<<<<<<
+ *         """ Update variable information after the stream advanced """
+ *         self.vp = adios_inq_var(self.file.fp, self.name)
  */
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_6nattrs_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_6nattrs_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_6nattrs___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  char const *__pyx_t_5;
+  int __pyx_t_6;
+  __Pyx_RefNannySetupContext("advance", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 1161, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
 
-  /* "adios_mpi.pyx":651
- *         """ The number of attributes. """
- *         def __get__(self):
- *             return self.nattrs             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1163
+ *     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_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_5);
+
+  /* "adios_mpi.pyx":1164
+ *         """ 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
  * 
- *     property current_step:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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)
+    }
+  }
+  #endif
 
-  /* "adios_mpi.pyx":650
- *     property nattrs:
- *         """ The number of attributes. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nattrs
+  /* "adios_mpi.pyx":1165
+ *         self.vp = adios_inq_var(self.file.fp, self.name)
+ *         assert self.vp != NULL, 'Not a valid var'
+ *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):
+ */
+  __pyx_t_6 = __pyx_v_self->vp->nsteps;
+  __pyx_v_self->nsteps = __pyx_t_6;
+
+  /* "adios_mpi.pyx":1161
+ *         self.vp = NULL
  * 
+ *     cpdef advance(self):             # <<<<<<<<<<<<<<
+ *         """ Update variable information after the stream advanced """
+ *         self.vp = adios_inq_var(self.file.fp, self.name)
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.nattrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":655
- *     property current_step:
- *         """ The current timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.current_step
- * 
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_12current_step_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_12current_step_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_6advance[] = "var.advance(self)\n Update variable information after the stream advanced ";
+static PyObject *__pyx_pw_9adios_mpi_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_12current_step___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_6advance(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_6advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
-
-  /* "adios_mpi.pyx":656
- *         """ The current timestep index. """
- *         def __get__(self):
- *             return self.current_step             # <<<<<<<<<<<<<<
- * 
- *     property last_step:
- */
+  __Pyx_RefNannySetupContext("advance", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":655
- *     property current_step:
- *         """ The current timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.current_step
- * 
- */
-
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.current_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -9249,364 +18679,605 @@ static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":660
- *     property last_step:
- *         """ The last timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.last_step
+/* "adios_mpi.pyx":1167
+ *         self.nsteps = self.vp.nsteps
+ * 
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform points read.
  * 
  */
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_9last_step_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_9last_step_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_9last_step___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_9read_points(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_points *__pyx_optional_args) {
+  PyObject *__pyx_v_points = ((PyObject*)__pyx_empty_tuple);
+  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
+  Py_ssize_t __pyx_v_plen;
+  uint64_t __pyx_v_ndim;
+  uint64_t __pyx_v_npoints;
+  PyArrayObject *__pyx_v_nppoints = 0;
+  PyArrayObject *__pyx_v_var = 0;
+  ADIOS_SELECTION *__pyx_v_sel;
+  PyObject *__pyx_v_x = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  Py_ssize_t __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  __Pyx_RefNannySetupContext("read_points", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_points = __pyx_optional_args->points;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_from_steps = __pyx_optional_args->from_steps;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_nsteps = __pyx_optional_args->nsteps;
+        }
+      }
+    }
+  }
+  __Pyx_INCREF(__pyx_v_points);
+  __Pyx_INCREF(__pyx_v_from_steps);
+  __Pyx_INCREF(__pyx_v_nsteps);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      __pyx_t_5 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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);
+          __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_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;
+      }
+      __Pyx_INCREF(__pyx_v_points);
+      __Pyx_GIVEREF(__pyx_v_points);
+      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_points);
+      __Pyx_INCREF(__pyx_v_from_steps);
+      __Pyx_GIVEREF(__pyx_v_from_steps);
+      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_from_steps);
+      __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
 
-  /* "adios_mpi.pyx":661
- *         """ The last timestep index. """
- *         def __get__(self):
- *             return self.last_step             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1183
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
  * 
- *     property endianness:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __pyx_t_7 = (__pyx_v_from_steps == Py_None);
+  __pyx_t_8 = (__pyx_t_7 != 0);
+  if (__pyx_t_8) {
 
-  /* "adios_mpi.pyx":660
- *     property last_step:
- *         """ The last timestep index. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.last_step
+    /* "adios_mpi.pyx":1184
+ *         """
+ *         if from_steps is None:
+ *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
  * 
+ *         if nsteps is None:
  */
+    __Pyx_INCREF(__pyx_int_0);
+    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.last_step.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1183
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ */
+  }
 
-/* "adios_mpi.pyx":665
- *     property endianness:
- *         """ The endianness of the stored data. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.endianness
+  /* "adios_mpi.pyx":1186
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
  */
+  __pyx_t_8 = (__pyx_v_nsteps == Py_None);
+  __pyx_t_7 = (__pyx_t_8 != 0);
+  if (__pyx_t_7) {
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_10endianness_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_10endianness_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_10endianness___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+    /* "adios_mpi.pyx":1187
+ * 
+ *         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_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_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_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;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1186
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ */
+  }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  /* "adios_mpi.pyx":1189
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
+ * 
+ *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!Py_OptimizeFlag)) {
+    __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)
+    }
+  }
+  #endif
+
+  /* "adios_mpi.pyx":1191
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
+ */
+  __pyx_t_8 = ((__pyx_v_self->nsteps > 0) != 0);
+  if (__pyx_t_8) {
+  } else {
+    __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_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_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_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_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
+ * 
+ *         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_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_from_steps);
+    __Pyx_GIVEREF(__pyx_v_from_steps);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_steps);
+    __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_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_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_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)
 
-  /* "adios_mpi.pyx":666
- *         """ The endianness of the stored data. """
- *         def __get__(self):
- *             return self.endianness             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1191
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
  * 
- *     property version:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  }
 
-  /* "adios_mpi.pyx":665
- *     property endianness:
- *         """ The endianness of the stored data. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.endianness
+  /* "adios_mpi.pyx":1194
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
+ * 
+ *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
+ *             points = (points,)
  * 
  */
+  __pyx_t_7 = PyTuple_Check(__pyx_v_points); 
+  __pyx_t_8 = ((!(__pyx_t_7 != 0)) != 0);
+  if (__pyx_t_8) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.endianness.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":670
- *     property version:
- *         """ The version of Adios. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.version
+    /* "adios_mpi.pyx":1195
+ * 
+ *         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_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_DECREF_SET(__pyx_v_points, ((PyObject*)__pyx_t_2));
+    __pyx_t_2 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_7version_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_7version___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1194
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
+ * 
+ *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
+ *             points = (points,)
+ * 
+ */
+  }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  /* "adios_mpi.pyx":1197
+ *             points = (points,)
+ * 
+ *         if len(points) > 1:             # <<<<<<<<<<<<<<
+ *             plen = len(points[0])
+ *             if not all([len(x) == plen for x in points]):
+ */
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1197, __pyx_L1_error)
+  __pyx_t_8 = ((__pyx_t_5 > 1) != 0);
+  if (__pyx_t_8) {
 
-  /* "adios_mpi.pyx":671
- *         """ The version of Adios. """
- *         def __get__(self):
- *             return self.version             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1198
  * 
- *     property file_sizec:
+ *         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_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+    if (unlikely(__pyx_v_points == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __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, 1198, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_plen = __pyx_t_5;
 
-  /* "adios_mpi.pyx":670
- *     property version:
- *         """ The version of Adios. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.version
+    /* "adios_mpi.pyx":1199
+ *         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_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_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)
+      #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_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_GOTREF(__pyx_t_1);
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1199, __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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_7 = ((!__pyx_t_8) != 0);
+    if (__pyx_t_7) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1200
+ *             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_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_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_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_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)
 
-/* "adios_mpi.pyx":675
- *     property file_sizec:
- *         """ The size of Adios file. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.file_size
+      /* "adios_mpi.pyx":1199
+ *         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,))
  * 
  */
+    }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_10file_sizec_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_10file_sizec_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_10file_sizec___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+    /* "adios_mpi.pyx":1197
+ *             points = (points,)
+ * 
+ *         if len(points) > 1:             # <<<<<<<<<<<<<<
+ *             plen = len(points[0])
+ *             if not all([len(x) == plen for x in points]):
+ */
+  }
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios_mpi.pyx":1202
+ *                 raise IndexError('All points must have the same length %r' % (points,))
+ * 
+ *         cpdef uint64_t ndim = self.ndim             # <<<<<<<<<<<<<<
+ *         cpdef uint64_t npoints = len(points)
+ *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
+ */
+  __pyx_t_10 = __pyx_v_self->ndim;
+  __pyx_v_ndim = __pyx_t_10;
 
-static PyObject *__pyx_pf_9adios_mpi_4file_10file_sizec___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  /* "adios_mpi.pyx":1203
+ * 
+ *         cpdef uint64_t ndim = self.ndim
+ *         cpdef uint64_t npoints = len(points)             # <<<<<<<<<<<<<<
+ *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
+ * 
+ */
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1203, __pyx_L1_error)
+  __pyx_v_npoints = __pyx_t_5;
 
-  /* "adios_mpi.pyx":676
- *         """ The size of Adios file. """
- *         def __get__(self):
- *             return self.file_size             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1206
+ *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
  * 
- *     property is_stream:
+ *         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_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1206, __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_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_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_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1206, __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_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)
+  __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)
+  __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)
+  __pyx_v_nppoints = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":675
- *     property file_sizec:
- *         """ The size of Adios file. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.file_size
+  /* "adios_mpi.pyx":1210
+ *         ##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_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_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_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_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_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_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_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)
+  __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)
+  __pyx_v_var = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.file_sizec.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":680
- *     property is_stream:
- *         """ Indicating reader type; file reader or stream reader """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_stream
+  /* "adios_mpi.pyx":1215
+ * 
+ *         cdef ADIOS_SELECTION * sel
+ *         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)
  */
+  __pyx_v_sel = adios_selection_points(__pyx_v_ndim, __pyx_v_npoints, ((uint64_t *)__pyx_v_nppoints->data));
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_9is_stream_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_9is_stream_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_9is_stream___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios_mpi.pyx":1217
+ *         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)
+  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));
 
-static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+  /* "adios_mpi.pyx":1218
+ * 
+ *         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)
+ * 
+ */
+  adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios_mpi.pyx":681
- *         """ Indicating reader type; file reader or stream reader """
- *         def __get__(self):
- *             return self.is_stream             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1219
+ *         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)             # <<<<<<<<<<<<<<
+ * 
+ *         return var
+ */
+  adios_selection_delete(__pyx_v_sel);
+
+  /* "adios_mpi.pyx":1221
+ *         adios_selection_delete(sel)
+ * 
+ *         return var             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, char * fname,
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __Pyx_INCREF(((PyObject *)__pyx_v_var));
+  __pyx_r = ((PyObject *)__pyx_v_var);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":680
- *     property is_stream:
- *         """ Indicating reader type; file reader or stream reader """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.is_stream
+  /* "adios_mpi.pyx":1167
+ *         self.nsteps = self.vp.nsteps
+ * 
+ *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform points read.
  * 
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.is_stream.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios_mpi.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_nppoints);
+  __Pyx_XDECREF((PyObject *)__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_x);
+  __Pyx_XDECREF(__pyx_v_points);
+  __Pyx_XDECREF(__pyx_v_from_steps);
+  __Pyx_XDECREF(__pyx_v_nsteps);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":683
- *             return self.is_stream
- * 
- *     def __init__(self, char * fname,             # <<<<<<<<<<<<<<
- *                  char * method_name = 'BP',
- *                  MPI.Comm comm = MPI.COMM_WORLD,
- */
-
 /* Python wrapper */
-static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_fname;
-  char *__pyx_v_method_name;
-  struct PyMPICommObject *__pyx_v_comm = 0;
-  PyObject *__pyx_v_is_stream = 0;
-  ADIOS_LOCKMODE __pyx_v_lock_mode;
-  float __pyx_v_timeout_sec;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
+static PyObject *__pyx_pw_9adios_mpi_3var_9read_points(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_8read_points[] = "var.read_points(self, tuple points=(), from_steps=None, nsteps=None)\n Perform points read.\n\n        Read data from an ADIOS BP file based on the given list of point index.\n\n        Args:\n            points (tuple of int, optional): points index defined by ((o1,o2,...,oN),...) (default: ())\n            from_steps (int, optional): starting step index (default: None)\n            nsteps (int, optional): number of time dimensions [...]
+static PyObject *__pyx_pw_9adios_mpi_3var_9read_points(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_points = 0;
+  PyObject *__pyx_v_from_steps = 0;
+  PyObject *__pyx_v_nsteps = 0;
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  __Pyx_RefNannySetupContext("read_points (wrapper)", 0);
   {
-    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[2] = (PyObject *)__pyx_k__9;
-
-    /* "adios_mpi.pyx":686
- *                  char * method_name = 'BP',
- *                  MPI.Comm comm = MPI.COMM_WORLD,
- *                  is_stream = False,             # <<<<<<<<<<<<<<
- *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
- *                  float timeout_sec = 0.0):
- */
-    values[3] = ((PyObject *)Py_False);
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,0};
+    PyObject* values[3] = {0,0,0};
+    values[0] = ((PyObject*)__pyx_empty_tuple);
+    values[1] = ((PyObject *)Py_None);
+    values[2] = ((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);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -9616,686 +19287,587 @@ static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_points);
+          if (value) { values[0] = value; kw_args--; }
+        }
         case  1:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method_name);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
           if (value) { values[1] = value; kw_args--; }
         }
         case  2:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
           if (value) { values[2] = value; kw_args--; }
         }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_is_stream);
-          if (value) { values[3] = value; kw_args--; }
-        }
-        case  4:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lock_mode);
-          if (value) { values[4] = value; kw_args--; }
-        }
-        case  5:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
-          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_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_points") < 0)) __PYX_ERR(0, 1167, __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);
         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;
       }
     }
-    __pyx_v_fname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_fname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_method_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_method_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_name = ((char *)__pyx_k_BP);
-    }
-    __pyx_v_comm = ((struct PyMPICommObject *)values[2]);
-    __pyx_v_is_stream = values[3];
-    if (values[4]) {
-      __pyx_v_lock_mode = ((ADIOS_LOCKMODE)PyInt_AsLong(values[4])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_lock_mode = __pyx_k__10;
-    }
-    if (values[5]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_timeout_sec = ((float)0.0);
-    }
+    __pyx_v_points = ((PyObject*)values[0]);
+    __pyx_v_from_steps = values[1];
+    __pyx_v_nsteps = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("read_points", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1167, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
-  return -1;
+  return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __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":683
- *             return self.is_stream
- * 
- *     def __init__(self, char * fname,             # <<<<<<<<<<<<<<
- *                  char * method_name = 'BP',
- *                  MPI.Comm comm = MPI.COMM_WORLD,
- */
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyTuple_Type), 1, "points", 1))) __PYX_ERR(0, 1167, __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 */
   goto __pyx_L0;
   __pyx_L1_error:;
-  __pyx_r = -1;
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, char *__pyx_v_fname, char *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_is_stream, ADIOS_LOCKMODE __pyx_v_lock_mode, float __pyx_v_timeout_sec) {
-  PyObject *__pyx_v_method = 0;
-  PyObject *__pyx_v_name = NULL;
-  int __pyx_v_i;
-  int __pyx_r;
+static PyObject *__pyx_pf_9adios_mpi_3var_8read_points(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps) {
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  ADIOS_READ_METHOD __pyx_t_4;
-  int __pyx_t_5;
-  uint64_t __pyx_t_6;
-  int __pyx_t_7;
-  Py_ssize_t __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
-
-  /* "adios_mpi.pyx":689
- *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
- *                  float timeout_sec = 0.0):
- *         self.fp = NULL             # <<<<<<<<<<<<<<
- *         self.var = {}
- *         self.attr = {}
- */
-  __pyx_v_self->fp = NULL;
-
-  /* "adios_mpi.pyx":690
- *                  float timeout_sec = 0.0):
- *         self.fp = NULL
- *         self.var = {}             # <<<<<<<<<<<<<<
- *         self.attr = {}
- *         self.is_stream = is_stream
- */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "adios_mpi.pyx":691
- *         self.fp = NULL
- *         self.var = {}
- *         self.attr = {}             # <<<<<<<<<<<<<<
- *         self.is_stream = is_stream
- *         cdef method = str2adiosreadmethod(method_name)
- */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  struct __pyx_opt_args_9adios_mpi_3var_read_points __pyx_t_2;
+  __Pyx_RefNannySetupContext("read_points", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 3;
+  __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_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":692
- *         self.var = {}
- *         self.attr = {}
- *         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_filename = __pyx_f[0]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_self->is_stream = __pyx_t_2;
-
-  /* "adios_mpi.pyx":693
- *         self.attr = {}
- *         self.is_stream = is_stream
- *         cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
- * 
- *         if (is_stream):
- */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_method_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyInt_FromLong(__pyx_f_9adios_mpi_str2adiosreadmethod(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_method = __pyx_t_3;
-  __pyx_t_3 = 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios_mpi.pyx":695
- *         cdef method = str2adiosreadmethod(method_name)
+/* "adios_mpi.pyx":1223
+ *         return var
  * 
- *         if (is_stream):             # <<<<<<<<<<<<<<
- *             self.fp = adios_read_open(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_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__pyx_t_2) {
-
-    /* "adios_mpi.pyx":696
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform block read.
  * 
- *         if (is_stream):
- *             self.fp = adios_read_open(fname, method, comm.ob_mpi,             # <<<<<<<<<<<<<<
- *                                       lock_mode, timeout_sec)
- *         else:
- */
-    __pyx_t_4 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "adios_mpi.pyx":697
- *         if (is_stream):
- *             self.fp = adios_read_open(fname, method, comm.ob_mpi,
- *                                       lock_mode, timeout_sec)             # <<<<<<<<<<<<<<
- *         else:
- *             self.fp = adios_read_open_file(fname, method, comm.ob_mpi)
  */
-    __pyx_v_self->fp = adios_read_open(__pyx_v_fname, __pyx_t_4, __pyx_v_comm->ob_mpi, __pyx_v_lock_mode, __pyx_v_timeout_sec);
-    goto __pyx_L3;
-  }
-  /*else*/ {
 
-    /* "adios_mpi.pyx":699
- *                                       lock_mode, timeout_sec)
- *         else:
- *             self.fp = adios_read_open_file(fname, method, comm.ob_mpi)             # <<<<<<<<<<<<<<
- * 
- *         assert self.fp != NULL, 'Not an open file'
- */
-    __pyx_t_4 = ((ADIOS_READ_METHOD)PyInt_AsLong(__pyx_v_method)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_self->fp = adios_read_open_file(__pyx_v_fname, __pyx_t_4, __pyx_v_comm->ob_mpi);
+static PyObject *__pyx_pw_9adios_mpi_3var_11read_writeblock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_v_rank, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_writeblock *__pyx_optional_args) {
+  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_shape = NULL;
+  PyArrayObject *__pyx_v_var = 0;
+  ADIOS_SELECTION *__pyx_v_sel;
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  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_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  __Pyx_RefNannySetupContext("read_writeblock", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_from_steps = __pyx_optional_args->from_steps;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_nsteps = __pyx_optional_args->nsteps;
+      }
+    }
   }
-  __pyx_L3:;
-
-  /* "adios_mpi.pyx":701
- *             self.fp = adios_read_open_file(fname, method, comm.ob_mpi)
- * 
- *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- * 
- *         self.name = fname.split('/')[-1]  ## basename
- */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_v_from_steps);
+  __Pyx_INCREF(__pyx_v_nsteps);
+  /* Check if called by wrapper */
+  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_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_GOTREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+      __pyx_t_6 = 0;
+      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);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
+      __Pyx_INCREF(__pyx_v_from_steps);
+      __Pyx_GIVEREF(__pyx_v_from_steps);
+      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_from_steps);
+      __Pyx_INCREF(__pyx_v_nsteps);
+      __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
     }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  #endif
-
-  /* "adios_mpi.pyx":703
- *         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_3 = __Pyx_PyBytes_FromString(__pyx_v_fname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __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__12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __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, -1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __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":704
+  /* "adios_mpi.pyx":1239
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
  * 
- *         self.name = fname.split('/')[-1]  ## basename
- *         self.nvars = self.fp.nvars             # <<<<<<<<<<<<<<
- *         self.nattrs = self.fp.nattrs
- *         self.current_step = self.fp.current_step
- */
-  __pyx_t_5 = __pyx_v_self->fp->nvars;
-  __pyx_v_self->nvars = __pyx_t_5;
-
-  /* "adios_mpi.pyx":705
- *         self.name = fname.split('/')[-1]  ## basename
- *         self.nvars = self.fp.nvars
- *         self.nattrs = self.fp.nattrs             # <<<<<<<<<<<<<<
- *         self.current_step = self.fp.current_step
- *         self.last_step = self.fp.last_step
- */
-  __pyx_t_5 = __pyx_v_self->fp->nattrs;
-  __pyx_v_self->nattrs = __pyx_t_5;
-
-  /* "adios_mpi.pyx":706
- *         self.nvars = self.fp.nvars
- *         self.nattrs = self.fp.nattrs
- *         self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
- *         self.last_step = self.fp.last_step
- *         self.endianness = self.fp.endianness
- */
-  __pyx_t_5 = __pyx_v_self->fp->current_step;
-  __pyx_v_self->current_step = __pyx_t_5;
-
-  /* "adios_mpi.pyx":707
- *         self.nattrs = self.fp.nattrs
- *         self.current_step = self.fp.current_step
- *         self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
- *         self.endianness = self.fp.endianness
- *         self.version = self.fp.version
- */
-  __pyx_t_5 = __pyx_v_self->fp->last_step;
-  __pyx_v_self->last_step = __pyx_t_5;
-
-  /* "adios_mpi.pyx":708
- *         self.current_step = self.fp.current_step
- *         self.last_step = self.fp.last_step
- *         self.endianness = self.fp.endianness             # <<<<<<<<<<<<<<
- *         self.version = self.fp.version
- *         self.file_size = self.fp.file_size
  */
-  __pyx_t_5 = __pyx_v_self->fp->endianness;
-  __pyx_v_self->endianness = __pyx_t_5;
+  __pyx_t_8 = (__pyx_v_from_steps == Py_None);
+  __pyx_t_9 = (__pyx_t_8 != 0);
+  if (__pyx_t_9) {
 
-  /* "adios_mpi.pyx":709
- *         self.last_step = self.fp.last_step
- *         self.endianness = self.fp.endianness
- *         self.version = self.fp.version             # <<<<<<<<<<<<<<
- *         self.file_size = self.fp.file_size
+    /* "adios_mpi.pyx":1240
+ *         """
+ *         if from_steps is None:
+ *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
  * 
+ *         if nsteps is None:
  */
-  __pyx_t_5 = __pyx_v_self->fp->version;
-  __pyx_v_self->version = __pyx_t_5;
+    __Pyx_INCREF(__pyx_int_0);
+    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-  /* "adios_mpi.pyx":710
- *         self.endianness = self.fp.endianness
- *         self.version = self.fp.version
- *         self.file_size = self.fp.file_size             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1239
+ *             IndexError: If dimension is mismatched or out of the boundary.
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
  * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
  */
-  __pyx_t_6 = __pyx_v_self->fp->file_size;
-  __pyx_v_self->file_size = __pyx_t_6;
+  }
 
-  /* "adios_mpi.pyx":712
- *         self.file_size = self.fp.file_size
+  /* "adios_mpi.pyx":1242
+ *             from_steps = 0 ##self.file.current_step
  * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
- *             self.var[name] = var(self, name)
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __pyx_v_self->nvars;
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_5; __pyx_t_7+=1) {
-    __pyx_v_i = __pyx_t_7;
-    __pyx_t_3 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  }
-  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  for (;;) {
-    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
-    #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #else
-    __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #endif
-    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
-    __pyx_t_1 = 0;
+  __pyx_t_9 = (__pyx_v_nsteps == Py_None);
+  __pyx_t_8 = (__pyx_t_9 != 0);
+  if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":713
+    /* "adios_mpi.pyx":1243
  * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
- *             self.var[name] = var(self, name)             # <<<<<<<<<<<<<<
+ *         if nsteps is None:
+ *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
+ *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_var)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
+    __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_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_v_name, __pyx_t_9) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 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_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":712
- *         self.file_size = self.fp.file_size
+    /* "adios_mpi.pyx":1242
+ *             from_steps = 0 ##self.file.current_step
  * 
- *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
- *             self.var[name] = var(self, name)
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
  */
   }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":715
- *             self.var[name] = var(self, name)
+  /* "adios_mpi.pyx":1245
+ *             nsteps = self.file.last_step - from_steps + 1
  * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
- *             self.attr[name] = attr(self, name)
+ *         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)
  * 
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = __pyx_v_self->nattrs;
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_5; __pyx_t_7+=1) {
-    __pyx_v_i = __pyx_t_7;
-    __pyx_t_9 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_9))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!Py_OptimizeFlag)) {
+    __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_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_8 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  for (;;) {
-    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_9)) break;
-    #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #else
-    __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    #endif
-    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
-    __pyx_t_3 = 0;
+  #endif
 
-    /* "adios_mpi.pyx":716
+  /* "adios_mpi.pyx":1246
  * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
- *             self.attr[name] = attr(self, name)             # <<<<<<<<<<<<<<
+ *         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)             # <<<<<<<<<<<<<<
  * 
- *     def __del__(self):
+ *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_attr)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #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_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_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)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->attr, __pyx_v_name, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  #endif
 
-    /* "adios_mpi.pyx":715
- *             self.var[name] = var(self, name)
+  /* "adios_mpi.pyx":1248
+ *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)
  * 
- *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
- *             self.attr[name] = attr(self, name)
+ *         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))
  * 
  */
+  __pyx_t_9 = ((__pyx_v_self->nsteps > 0) != 0);
+  if (__pyx_t_9) {
+  } else {
+    __pyx_t_8 = __pyx_t_9;
+    goto __pyx_L6_bool_binop_done;
   }
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __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_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_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_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_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":683
- *             return self.is_stream
+    /* "adios_mpi.pyx":1249
  * 
- *     def __init__(self, char * fname,             # <<<<<<<<<<<<<<
- *                  char * method_name = 'BP',
- *                  MPI.Comm comm = MPI.COMM_WORLD,
+ *         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_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_v_from_steps);
+    __Pyx_GIVEREF(__pyx_v_from_steps);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_from_steps);
+    __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_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_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_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)
 
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("adios_mpi.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_method);
-  __Pyx_XDECREF(__pyx_v_name);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":718
- *             self.attr[name] = attr(self, name)
+    /* "adios_mpi.pyx":1248
+ *         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):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
- *     def __del__(self):             # <<<<<<<<<<<<<<
- *         """ Close file on destruction. """
- *         self.close()
  */
+  }
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_2__del__[] = "file.__del__(self)\n Close file on destruction. ";
-static PyObject *__pyx_pw_9adios_mpi_4file_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_2__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_4file_2__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__del__", 0);
-
-  /* "adios_mpi.pyx":720
- *     def __del__(self):
- *         """ Close file on destruction. """
- *         self.close()             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1251
+ *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
- *     cpdef close(self):
+ *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]             # <<<<<<<<<<<<<<
+ *         if (nsteps>1):
+ *             shape.insert(0, nsteps)
  */
-  __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_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1251, __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_GOTREF(__pyx_t_4);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 1251, __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
+ * 
+ *         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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_8) {
 
-  /* "adios_mpi.pyx":718
- *             self.attr[name] = attr(self, name)
+    /* "adios_mpi.pyx":1253
+ *         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)
  * 
- *     def __del__(self):             # <<<<<<<<<<<<<<
- *         """ Close file on destruction. """
- *         self.close()
  */
+    __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)
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1252
+ * 
+ *         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)
+ */
+  }
 
-/* "adios_mpi.pyx":722
- *         self.close()
+  /* "adios_mpi.pyx":1254
+ *         if (nsteps>1):
+ *             shape.insert(0, nsteps)
+ *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
- *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'
+ *         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_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_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_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_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)
+  __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)
+  __pyx_v_var = ((PyArrayObject *)__pyx_t_7);
+  __pyx_t_7 = 0;
 
-static PyObject *__pyx_pw_9adios_mpi_4file_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __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_5close)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
+  /* "adios_mpi.pyx":1257
+ * 
+ *         cdef ADIOS_SELECTION * sel
+ *         sel = adios_selection_writeblock (rank)             # <<<<<<<<<<<<<<
+ * 
+ *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
+ */
+  __pyx_v_sel = adios_selection_writeblock(__pyx_v_rank);
 
-  /* "adios_mpi.pyx":724
- *     cpdef close(self):
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- *         adios_read_close(self.fp)
- *         self.fp = NULL
+  /* "adios_mpi.pyx":1259
+ *         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)
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+  __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)
+  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":725
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'
- *         adios_read_close(self.fp)             # <<<<<<<<<<<<<<
- *         self.fp = NULL
+  /* "adios_mpi.pyx":1260
  * 
+ *         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)
+ *         return var
  */
-  adios_read_close(__pyx_v_self->fp);
+  adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios_mpi.pyx":726
- *         assert self.fp != NULL, 'Not an open file'
- *         adios_read_close(self.fp)
- *         self.fp = NULL             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1261
+ *         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)             # <<<<<<<<<<<<<<
+ *         return var
  * 
- *     cpdef printself(self):
  */
-  __pyx_v_self->fp = NULL;
+  adios_selection_delete(__pyx_v_sel);
 
-  /* "adios_mpi.pyx":722
- *         self.close()
+  /* "adios_mpi.pyx":1262
+ *         adios_perform_reads(self.file.fp, 1)
+ *         adios_selection_delete(sel)
+ *         return var             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_var));
+  __pyx_r = ((PyObject *)__pyx_v_var);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1223
+ *         return var
+ * 
+ *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
+ *         """ Perform block read.
  * 
- *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close the open file. """
- *         assert self.fp != NULL, 'Not an open file'
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios_mpi.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("adios_mpi.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_from_steps);
+  __Pyx_XDECREF(__pyx_v_nsteps);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_4close[] = "file.close(self)\n Close the open file. ";
-static PyObject *__pyx_pw_9adios_mpi_4file_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_9adios_mpi_3var_11read_writeblock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_10read_writeblock[] = "var.read_writeblock(self, int rank, from_steps=None, nsteps=None)\n Perform block read.\n\n        Read data from an ADIOS BP file based on the rank id.\n\n        Args:\n            rank (int): rank id\n            from_steps (int, optional): starting step index (default: None)\n            nsteps (int, optional): number of time dimensions (default: None)\n\n        Returns:\n            NumPy 1-D ndarray\n\n        Raises:\n  [...]
+static PyObject *__pyx_pw_9adios_mpi_3var_11read_writeblock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_rank;
+  PyObject *__pyx_v_from_steps = 0;
+  PyObject *__pyx_v_nsteps = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("close (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_4close(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("read_writeblock (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject *)Py_None);
+    values[2] = ((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  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_rank)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } 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;
+        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_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_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_3var_10read_writeblock(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), __pyx_v_rank, __pyx_v_from_steps, __pyx_v_nsteps);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_4close(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_10read_writeblock(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_v_rank, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
+  struct __pyx_opt_args_9adios_mpi_3var_read_writeblock __pyx_t_2;
+  __Pyx_RefNannySetupContext("read_writeblock", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_4file_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -10304,7 +19876,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4close(struct __pyx_obj_9adios_mpi_fi
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -10312,36 +19884,105 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4close(struct __pyx_obj_9adios_mpi_fi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":728
- *         self.fp = NULL
+/* "adios_mpi.pyx":1264
+ *         return var
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_3var_13read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read *__pyx_optional_args) {
+  PyObject *__pyx_v_offset = ((PyObject*)__pyx_empty_tuple);
+  PyObject *__pyx_v_count = ((PyObject*)__pyx_empty_tuple);
+  PyObject *__pyx_v_scalar = ((PyObject*)__pyx_empty_tuple);
+
+  /* "adios_mpi.pyx":1265
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
+ *         """ Perform read.
+ * 
+ */
+  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
+  PyObject *__pyx_v_fill = ((PyObject *)__pyx_int_0);
+  PyObject *__pyx_v_step_scalar = ((PyObject *)Py_True);
+  PyObject *__pyx_v_lshape = 0;
+  PyArrayObject *__pyx_v_npshape = 0;
+  PyArrayObject *__pyx_v_npoffset = 0;
+  PyArrayObject *__pyx_v_npcount = 0;
+  PyObject *__pyx_v_shape = NULL;
+  PyArrayObject *__pyx_v_var = 0;
+  ADIOS_SELECTION *__pyx_v_sel;
+  int __pyx_v_i;
+  PyObject *__pyx_v_x = NULL;
+  PyObject *__pyx_v_y = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *(*__pyx_t_14)(PyObject *);
+  int __pyx_t_15;
+  int __pyx_t_16;
+  __Pyx_RefNannySetupContext("read", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_offset = __pyx_optional_args->offset;
+      if (__pyx_optional_args->__pyx_n > 1) {
+        __pyx_v_count = __pyx_optional_args->count;
+        if (__pyx_optional_args->__pyx_n > 2) {
+          __pyx_v_scalar = __pyx_optional_args->scalar;
+          if (__pyx_optional_args->__pyx_n > 3) {
+            __pyx_v_from_steps = __pyx_optional_args->from_steps;
+            if (__pyx_optional_args->__pyx_n > 4) {
+              __pyx_v_nsteps = __pyx_optional_args->nsteps;
+              if (__pyx_optional_args->__pyx_n > 5) {
+                __pyx_v_fill = __pyx_optional_args->fill;
+                if (__pyx_optional_args->__pyx_n > 6) {
+                  __pyx_v_step_scalar = __pyx_optional_args->step_scalar;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  __Pyx_INCREF(__pyx_v_scalar);
+  __Pyx_INCREF(__pyx_v_from_steps);
+  __Pyx_INCREF(__pyx_v_nsteps);
+
+  /* "adios_mpi.pyx":1264
+ *         return var
  * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_FILE structure. """
- *         assert self.fp != NULL, 'Not an open file'
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
  */
-
-static PyObject *__pyx_pw_9adios_mpi_4file_7printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printself", 0);
   /* Check if called by wrapper */
   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_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __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, 1264, __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_7printself)) {
+    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_13read)) {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      __pyx_t_5 = 0;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
         __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
         if (likely(__pyx_t_4)) {
@@ -10349,15 +19990,38 @@ static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_
           __Pyx_INCREF(__pyx_t_4);
           __Pyx_INCREF(function);
           __Pyx_DECREF_SET(__pyx_t_3, function);
+          __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_GOTREF(__pyx_t_6);
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
       }
+      __Pyx_INCREF(__pyx_v_offset);
+      __Pyx_GIVEREF(__pyx_v_offset);
+      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_offset);
+      __Pyx_INCREF(__pyx_v_count);
+      __Pyx_GIVEREF(__pyx_v_count);
+      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_count);
+      __Pyx_INCREF(__pyx_v_scalar);
+      __Pyx_GIVEREF(__pyx_v_scalar);
+      PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_scalar);
+      __Pyx_INCREF(__pyx_v_from_steps);
+      __Pyx_GIVEREF(__pyx_v_from_steps);
+      PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_from_steps);
+      __Pyx_INCREF(__pyx_v_nsteps);
+      __Pyx_GIVEREF(__pyx_v_nsteps);
+      PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_5, __pyx_v_nsteps);
+      __Pyx_INCREF(__pyx_v_fill);
+      __Pyx_GIVEREF(__pyx_v_fill);
+      PyTuple_SET_ITEM(__pyx_t_6, 5+__pyx_t_5, __pyx_v_fill);
+      __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -10367,1941 +20031,3206 @@ 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":730
- *     cpdef printself(self):
- *         """ Print native ADIOS_FILE structure. """
- *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- *         print '=== AdiosFile ==='
- *         print '%15s : %lu' % ('fp', <unsigned long> self.fp)
+  /* "adios_mpi.pyx":1314
+ * 
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ */
+  __pyx_t_7 = (__pyx_v_from_steps == Py_None);
+  __pyx_t_8 = (__pyx_t_7 != 0);
+  if (__pyx_t_8) {
+
+    /* "adios_mpi.pyx":1315
+ *         """
+ *         if from_steps is None:
+ *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
+ * 
+ *         if nsteps is None:
+ */
+    __Pyx_INCREF(__pyx_int_0);
+    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
+
+    /* "adios_mpi.pyx":1314
+ * 
+ *         """
+ *         if from_steps is None:             # <<<<<<<<<<<<<<
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":1317
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ */
+  __pyx_t_8 = (__pyx_v_nsteps == Py_None);
+  __pyx_t_7 = (__pyx_t_8 != 0);
+  if (__pyx_t_7) {
+
+    /* "adios_mpi.pyx":1318
+ * 
+ *         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_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_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_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
+ *             from_steps = 0 ##self.file.current_step
+ * 
+ *         if nsteps is None:             # <<<<<<<<<<<<<<
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":1320
+ *             nsteps = self.file.last_step - from_steps + 1
+ * 
+ *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
+ * 
+ *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":731
- *         """ 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)
+  /* "adios_mpi.pyx":1322
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
+ */
+  __pyx_t_8 = ((__pyx_v_self->nsteps > 0) != 0);
+  if (__pyx_t_8) {
+  } else {
+    __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_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_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_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_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
+ * 
+ *         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_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_from_steps);
+    __Pyx_GIVEREF(__pyx_v_from_steps);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_steps);
+    __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_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_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_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)
+
+    /* "adios_mpi.pyx":1322
+ *         assert self.dtype is not None, 'Data type is not supported yet'
+ * 
+ *         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))
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":1325
+ *             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_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_GOTREF(__pyx_t_3);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1325, __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
+ * 
+ *         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_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_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_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_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_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_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)
+  __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_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)
+  __pyx_v_npshape = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "adios_mpi.pyx":1329
+ * 
+ *         cdef np.ndarray npoffset
+ *         if len(offset) == 0:             # <<<<<<<<<<<<<<
+ *             npoffset = npshape.copy()
+ *             npoffset.fill(0)
+ */
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1329, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
+  if (__pyx_t_7) {
+
+    /* "adios_mpi.pyx":1330
+ *         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_GOTREF(__pyx_t_1);
+    __pyx_t_2 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+      }
+    }
+    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_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_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)
+    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "adios_mpi.pyx":1331
+ *         if len(offset) == 0:
+ *             npoffset = npshape.copy()
+ *             npoffset.fill(0)             # <<<<<<<<<<<<<<
+ *         else:
+ *             npoffset = np.array(offset, dtype=np.int64)
  */
-  if (__Pyx_PrintOne(0, __pyx_kp_s_AdiosFile) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __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, 1331, __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_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":732
- *         assert self.fp != NULL, 'Not an open file'
- *         print '=== AdiosFile ==='
- *         print '%15s : %lu' % ('fp', <unsigned long> self.fp)             # <<<<<<<<<<<<<<
- *         printfile(self.fp)
+    /* "adios_mpi.pyx":1329
  * 
+ *         cdef np.ndarray npoffset
+ *         if len(offset) == 0:             # <<<<<<<<<<<<<<
+ *             npoffset = npshape.copy()
+ *             npoffset.fill(0)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->fp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
-  __Pyx_GIVEREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L10;
+  }
 
-  /* "adios_mpi.pyx":733
- *         print '=== AdiosFile ==='
- *         print '%15s : %lu' % ('fp', <unsigned long> self.fp)
- *         printfile(self.fp)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1333
+ *             npoffset.fill(0)
+ *         else:
+ *             npoffset = np.array(offset, dtype=np.int64)             # <<<<<<<<<<<<<<
  * 
- *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):
+ *         cdef np.ndarray npcount
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_printfile(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*else*/ {
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __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_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_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_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_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_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)
+    __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_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)
+    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
+  }
+  __pyx_L10:;
 
-  /* "adios_mpi.pyx":728
- *         self.fp = NULL
+  /* "adios_mpi.pyx":1336
  * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_FILE structure. """
- *         assert self.fp != NULL, 'Not an open file'
+ *         cdef np.ndarray npcount
+ *         if len(count) == 0:             # <<<<<<<<<<<<<<
+ *             npcount = npshape - npoffset
+ *         else:
  */
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1336, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
+  if (__pyx_t_7) {
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios_mpi.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_7printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_6printself[] = "file.printself(self)\n Print native ADIOS_FILE structure. ";
-static PyObject *__pyx_pw_9adios_mpi_4file_7printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_6printself(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_4file_6printself(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __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.file.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1337
+ *         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_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)
+    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
 
-/* "adios_mpi.pyx":735
- *         printfile(self.fp)
+    /* "adios_mpi.pyx":1336
  * 
- *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
- *         """
- *         Advance a timestep for stream reader.
+ *         cdef np.ndarray npcount
+ *         if len(count) == 0:             # <<<<<<<<<<<<<<
+ *             npcount = npshape - npoffset
+ *         else:
  */
-
-static PyObject *__pyx_pw_9adios_mpi_4file_9advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_4file_advance *__pyx_optional_args) {
-  int __pyx_v_last = ((int)0);
-  float __pyx_v_timeout_sec = ((float)0.0);
-  int __pyx_v_val;
-  PyObject *__pyx_v_v = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  Py_ssize_t __pyx_t_7;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  PyObject *(*__pyx_t_11)(PyObject *);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_last = __pyx_optional_args->last;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_timeout_sec = __pyx_optional_args->timeout_sec;
-      }
-    }
+    goto __pyx_L11;
   }
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "adios_mpi.pyx":1339
+ *             npcount = npshape - npoffset
+ *         else:
+ *             npcount = np.array(count, dtype=np.int64)             # <<<<<<<<<<<<<<
+ * 
+ *         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_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_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_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_GOTREF(__pyx_t_1);
-    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_4file_9advance)) {
-      __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_last); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_timeout_sec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
-      __pyx_t_7 = 0;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_6)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_6);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-          __pyx_t_7 = 1;
-        }
-      }
-      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      if (__pyx_t_6) {
-        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
-      }
-      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
-      __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
-      __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __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;
-      __pyx_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __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_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)
+    __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_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)
+    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
   }
+  __pyx_L11:;
 
-  /* "adios_mpi.pyx":746
- *             int: 0 if successful, non-zero otherwise.
- *         """
- *         val = adios_advance_step(self.fp, last, timeout_sec)             # <<<<<<<<<<<<<<
- *         if (val >= 0):
- *             self.current_step = self.fp.current_step
+  /* "adios_mpi.pyx":1341
+ *             npcount = np.array(count, dtype=np.int64)
+ * 
+ *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
+ *             scalar = tuple((False,) * len(npshape))
+ * 
  */
-  __pyx_v_val = adios_advance_step(__pyx_v_self->fp, __pyx_v_last, __pyx_v_timeout_sec);
+  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_t_5 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1341, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
+  if (__pyx_t_7) {
 
-  /* "adios_mpi.pyx":747
- *         """
- *         val = adios_advance_step(self.fp, last, timeout_sec)
- *         if (val >= 0):             # <<<<<<<<<<<<<<
- *             self.current_step = self.fp.current_step
- *             self.last_step = self.fp.last_step
+    /* "adios_mpi.pyx":1342
+ * 
+ *         if len(scalar) == 0:
+ *             scalar = tuple((False,) * len(npshape))             # <<<<<<<<<<<<<<
+ * 
+ *         if len(npshape) != len(npoffset):
  */
-  __pyx_t_9 = ((__pyx_v_val >= 0) != 0);
-  if (__pyx_t_9) {
+    __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_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_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":748
- *         val = adios_advance_step(self.fp, last, timeout_sec)
- *         if (val >= 0):
- *             self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
- *             self.last_step = self.fp.last_step
+    /* "adios_mpi.pyx":1341
+ *             npcount = np.array(count, dtype=np.int64)
+ * 
+ *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
+ *             scalar = tuple((False,) * len(npshape))
  * 
  */
-    __pyx_t_10 = __pyx_v_self->fp->current_step;
-    __pyx_v_self->current_step = __pyx_t_10;
+  }
 
-    /* "adios_mpi.pyx":749
- *         if (val >= 0):
- *             self.current_step = self.fp.current_step
- *             self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1344
+ *             scalar = tuple((False,) * len(npshape))
+ * 
+ *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
- *             for v in self.var.values():
  */
-    __pyx_t_10 = __pyx_v_self->fp->last_step;
-    __pyx_v_self->last_step = __pyx_t_10;
+  __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_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
+  if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":751
- *             self.last_step = self.fp.last_step
+    /* "adios_mpi.pyx":1345
  * 
- *             for v in self.var.values():             # <<<<<<<<<<<<<<
- *                 v.advance()
+ *         if len(npshape) != len(npoffset):
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))             # <<<<<<<<<<<<<<
  * 
+ *         if len(npshape) != len(npcount):
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_self->var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __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_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
-      __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_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __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, 1345, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    for (;;) {
-      if (likely(!__pyx_t_11)) {
-        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_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #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_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          #endif
-        }
-      } else {
-        __pyx_t_1 = __pyx_t_11(__pyx_t_2);
-        if (unlikely(!__pyx_t_1)) {
-          PyObject* exc_type = PyErr_Occurred();
-          if (exc_type) {
-            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          }
-          break;
-        }
-        __Pyx_GOTREF(__pyx_t_1);
-      }
-      __Pyx_XDECREF_SET(__pyx_v_v, __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_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_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)
 
-      /* "adios_mpi.pyx":752
+    /* "adios_mpi.pyx":1344
+ *             scalar = tuple((False,) * len(npshape))
  * 
- *             for v in self.var.values():
- *                 v.advance()             # <<<<<<<<<<<<<<
+ *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
- *         return val
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_advance); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_8 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_8)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_8);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
-        }
-      }
-      if (__pyx_t_8) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __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":751
- *             self.last_step = self.fp.last_step
+  /* "adios_mpi.pyx":1347
+ *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
- *             for v in self.var.values():             # <<<<<<<<<<<<<<
- *                 v.advance()
+ *         if len(npshape) != len(npcount):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  */
-    }
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
+  __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_7 = ((__pyx_t_11 != __pyx_t_5) != 0);
+  if (__pyx_t_7) {
 
-  /* "adios_mpi.pyx":754
- *                 v.advance()
+    /* "adios_mpi.pyx":1348
  * 
- *         return val             # <<<<<<<<<<<<<<
+ *         if len(npshape) != len(npcount):
+ *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))             # <<<<<<<<<<<<<<
  * 
- *     def __getitem__(self, varname):
+ *         if len(npshape) != len(scalar):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
+    __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_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_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_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_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)
 
-  /* "adios_mpi.pyx":735
- *         printfile(self.fp)
+    /* "adios_mpi.pyx":1347
+ *             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))
  * 
- *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
- *         """
- *         Advance a timestep for stream reader.
  */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("adios_mpi.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_v);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_9advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_8advance[] = "file.advance(self, int last=0, float timeout_sec=0.0)\n\n        Advance a timestep for stream reader.\n\n        Args:\n            last (int, optional): last timestep index (default: 0).\n            timeout_sec (float, optional): timeout seconds (default: 0.0).\n\n        Returns:\n            int: 0 if successful, non-zero otherwise.\n        ";
-static PyObject *__pyx_pw_9adios_mpi_4file_9advance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_last;
-  float __pyx_v_timeout_sec;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_last,&__pyx_n_s_timeout_sec,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 (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_last);
-          if (value) { values[0] = value; kw_args--; }
-        }
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeout_sec);
-          if (value) { values[1] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_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;
-      }
-    }
-    if (values[0]) {
-      __pyx_v_last = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_last == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_4file_8advance(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), __pyx_v_last, __pyx_v_timeout_sec);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_4file_8advance(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, int __pyx_v_last, float __pyx_v_timeout_sec) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_9adios_mpi_4file_advance __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __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_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __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.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
 
-/* "adios_mpi.pyx":756
- *         return val
+  /* "adios_mpi.pyx":1350
+ *             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))
  * 
- *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
- *         """
- *         Return Adios variable.
  */
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1350, __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_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1350, __pyx_L1_error)
+  __pyx_t_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
+  if (__pyx_t_7) {
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_10__getitem__[] = "\n        Return Adios variable.\n\n        Args:\n            varname (str): variable name.\n\n        Raises:\n            KeyError: If no varname exists.\n\n        ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_9adios_mpi_4file_10__getitem__;
-#endif
-static PyObject *__pyx_pw_9adios_mpi_4file_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_10__getitem__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_4file_10__getitem__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_varname) {
-  PyObject *__pyx_v_key_ = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *(*__pyx_t_6)(PyObject *);
-  PyObject *__pyx_t_7 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__getitem__", 0);
-  __Pyx_INCREF(__pyx_v_varname);
+    /* "adios_mpi.pyx":1351
+ * 
+ *         if len(npshape) != len(scalar):
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))             # <<<<<<<<<<<<<<
+ * 
+ *         if (npshape < npcount + npoffset).any():
+ */
+    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_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_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_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_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_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)
 
-  /* "adios_mpi.pyx":767
+    /* "adios_mpi.pyx":1350
+ *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
- *         """
- *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
- *             varname = (varname,)
+ *         if len(npshape) != len(scalar):             # <<<<<<<<<<<<<<
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  */
-  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
-  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-  if (__pyx_t_2) {
+  }
 
-    /* "adios_mpi.pyx":768
- *         """
- *         if not isinstance(varname, tuple):
- *             varname = (varname,)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1353
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
+ * 
+ *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
+ *             raise IndexError('Requested is larger than the shape.')
  * 
- *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_varname);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __Pyx_GIVEREF(__pyx_v_varname);
-    __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
-    __pyx_t_3 = 0;
-    goto __pyx_L3;
+  __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_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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
   }
-  __pyx_L3:;
+  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_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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (__pyx_t_7) {
 
-  /* "adios_mpi.pyx":770
- *             varname = (varname,)
+    /* "adios_mpi.pyx":1354
  * 
- *         if len(varname) > 1:             # <<<<<<<<<<<<<<
- *             raise KeyError(varname)
+ *         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_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
-  if (__pyx_t_2) {
+    __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_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)
 
-    /* "adios_mpi.pyx":771
+    /* "adios_mpi.pyx":1353
+ *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
- *         if len(varname) > 1:
- *             raise KeyError(varname)             # <<<<<<<<<<<<<<
+ *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
+ *             raise IndexError('Requested is larger than the shape.')
  * 
- *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_varname);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __Pyx_GIVEREF(__pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "adios_mpi.pyx":773
- *             raise KeyError(varname)
+  /* "adios_mpi.pyx":1356
+ *             raise IndexError('Requested is larger than the shape.')
  * 
- *         for key_ in varname:             # <<<<<<<<<<<<<<
- *             if not isinstance(key_, str):
- *                 raise TypeError("Unhashable type")
+ *         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)
  */
-  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
-    __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
-    __pyx_t_6 = NULL;
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1356, __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_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_npcount));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_npcount));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_npcount));
+  __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_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_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   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 (likely(!__pyx_t_12)) {
+      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_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __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, 1356, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __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, 1356, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
         #endif
       } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+        if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_1)) 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_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __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, 1356, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __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, 1356, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
         #endif
       }
     } else {
-      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
-      if (unlikely(!__pyx_t_3)) {
+      __pyx_t_6 = __pyx_t_12(__pyx_t_1);
+      if (unlikely(!__pyx_t_6)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 1356, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GOTREF(__pyx_t_6);
     }
-    __pyx_v_key_ = __pyx_t_3;
-    __pyx_t_3 = 0;
+    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
+      PyObject* sequence = __pyx_t_6;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      Py_ssize_t size = Py_SIZE(sequence);
+      #else
+      Py_ssize_t size = PySequence_Size(sequence);
+      #endif
+      if (unlikely(size != 2)) {
+        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+        __PYX_ERR(0, 1356, __pyx_L1_error)
+      }
+      #if CYTHON_COMPILING_IN_CPYTHON
+      if (likely(PyTuple_CheckExact(sequence))) {
+        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
+      } else {
+        __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
+      }
+      __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_GOTREF(__pyx_t_2);
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1356, __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_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
+      index = 0; __pyx_t_2 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_2)) goto __pyx_L19_unpacking_failed;
+      __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)
+      __pyx_t_14 = NULL;
+      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+      goto __pyx_L20_unpacking_done;
+      __pyx_L19_unpacking_failed:;
+      __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_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_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)
+    }
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_shape = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":774
+  /* "adios_mpi.pyx":1357
  * 
- *         for key_ in varname:
- *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
- *                 raise TypeError("Unhashable type")
+ *         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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!__pyx_t_7) {
+  } else {
+    __pyx_t_8 = __pyx_t_7;
+    goto __pyx_L23_bool_binop_done;
+  }
+  __pyx_t_7 = ((__pyx_v_self->nsteps > 1) != 0);
+  if (__pyx_t_7) {
+  } else {
+    __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_15 = ((!__pyx_t_7) != 0);
+  __pyx_t_8 = __pyx_t_15;
+  __pyx_L23_bool_binop_done:;
+  if (__pyx_t_8) {
+
+    /* "adios_mpi.pyx":1358
+ *         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_2 = PyString_Check(__pyx_v_key_); 
-    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
-    if (__pyx_t_1) {
+    __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)
 
-      /* "adios_mpi.pyx":775
- *         for key_ in varname:
- *             if not isinstance(key_, str):
- *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1357
  * 
- *             if key_ in self.var.keys():
+ *         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 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+  }
 
-    /* "adios_mpi.pyx":777
- *                 raise TypeError("Unhashable type")
+  /* "adios_mpi.pyx":1359
+ *         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 key_ in self.var.keys():             # <<<<<<<<<<<<<<
- *                 return self.var.get(key_)
- *             elif key_ in self.attr.keys():
+ *         if len(shape) > 0:
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->var); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_key_, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = (__pyx_t_1 != 0);
-    if (__pyx_t_2) {
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __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_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_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_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)
+  __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)
+  __pyx_v_var = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-      /* "adios_mpi.pyx":778
+  /* "adios_mpi.pyx":1361
+ *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
+ * 
+ *         if len(shape) > 0:             # <<<<<<<<<<<<<<
+ *             var[:] = fill
  * 
- *             if key_ in self.var.keys():
- *                 return self.var.get(key_)             # <<<<<<<<<<<<<<
- *             elif key_ in self.attr.keys():
- *                 return self.attr.get(key_)
  */
-      __Pyx_XDECREF(__pyx_r);
-      if (unlikely(__pyx_v_self->var == Py_None)) {
-        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->var, __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_r = __pyx_t_3;
-      __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      goto __pyx_L0;
-    }
+  __pyx_t_11 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1361, __pyx_L1_error)
+  __pyx_t_8 = ((__pyx_t_11 > 0) != 0);
+  if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":779
- *             if key_ in self.var.keys():
- *                 return self.var.get(key_)
- *             elif key_ in self.attr.keys():             # <<<<<<<<<<<<<<
- *                 return self.attr.get(key_)
- *             else:
+    /* "adios_mpi.pyx":1362
+ * 
+ *         if len(shape) > 0:
+ *             var[:] = fill             # <<<<<<<<<<<<<<
+ * 
+ *         cdef ADIOS_SELECTION * sel
  */
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
-      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->attr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_key_, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__pyx_t_2 != 0);
-    if (__pyx_t_1) {
+    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)
 
-      /* "adios_mpi.pyx":780
- *                 return self.var.get(key_)
- *             elif key_ in self.attr.keys():
- *                 return self.attr.get(key_)             # <<<<<<<<<<<<<<
- *             else:
- *                 raise KeyError(key_)
+    /* "adios_mpi.pyx":1361
+ *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
+ * 
+ *         if len(shape) > 0:             # <<<<<<<<<<<<<<
+ *             var[:] = fill
+ * 
  */
-      __Pyx_XDECREF(__pyx_r);
-      if (unlikely(__pyx_v_self->attr == Py_None)) {
-        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+
+  /* "adios_mpi.pyx":1365
+ * 
+ *         cdef ADIOS_SELECTION * sel
+ *         sel = adios_selection_boundingbox (self.vp.ndim, <uint64_t *> npoffset.data, <uint64_t *> npcount.data)             # <<<<<<<<<<<<<<
+ * 
+ *         ##print 'npoffset', npoffset
+ */
+  __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
+ *         ##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)
+  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_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)
+ * 
+ */
+  adios_perform_reads(__pyx_v_self->file->fp, 1);
+
+  /* "adios_mpi.pyx":1372
+ *         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)             # <<<<<<<<<<<<<<
+ * 
+ *         if (var.ndim == 0):
+ */
+  adios_selection_delete(__pyx_v_sel);
+
+  /* "adios_mpi.pyx":1374
+ *         adios_selection_delete(sel)
+ * 
+ *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(var)
+ *         else:
+ */
+  __pyx_t_8 = ((__pyx_v_var->nd == 0) != 0);
+  if (__pyx_t_8) {
+
+    /* "adios_mpi.pyx":1375
+ * 
+ *         if (var.ndim == 0):
+ *             return np.asscalar(var)             # <<<<<<<<<<<<<<
+ *         else:
+ *             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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
       }
-      __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->attr, __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_r = __pyx_t_3;
-      __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      goto __pyx_L0;
     }
-    /*else*/ {
+    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_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_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_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
 
-      /* "adios_mpi.pyx":782
- *                 return self.attr.get(key_)
- *             else:
- *                 raise KeyError(key_)             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1374
+ *         adios_selection_delete(sel)
  * 
- *     def __repr__(self):
+ *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(var)
+ *         else:
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_INCREF(__pyx_v_key_);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key_);
-      __Pyx_GIVEREF(__pyx_v_key_);
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+  }
 
-    /* "adios_mpi.pyx":773
- *             raise KeyError(varname)
+  /* "adios_mpi.pyx":1377
+ *             return np.asscalar(var)
+ *         else:
+ *             return var             # <<<<<<<<<<<<<<
  * 
- *         for key_ in varname:             # <<<<<<<<<<<<<<
- *             if not isinstance(key_, str):
- *                 raise TypeError("Unhashable type")
+ *     cpdef printself(self):
  */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_var));
+    __pyx_r = ((PyObject *)__pyx_v_var);
+    goto __pyx_L0;
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":756
- *         return val
+  /* "adios_mpi.pyx":1264
+ *         return var
  * 
- *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
- *         """
- *         Return Adios variable.
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_AddTraceback("adios_mpi.file.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios_mpi.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_key_);
-  __Pyx_XDECREF(__pyx_v_varname);
+  __Pyx_XDECREF(__pyx_v_lshape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_npshape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_npoffset);
+  __Pyx_XDECREF((PyObject *)__pyx_v_npcount);
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XDECREF((PyObject *)__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_x);
+  __Pyx_XDECREF(__pyx_v_y);
+  __Pyx_XDECREF(__pyx_v_scalar);
+  __Pyx_XDECREF(__pyx_v_from_steps);
+  __Pyx_XDECREF(__pyx_v_nsteps);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":784
- *                 raise KeyError(key_)
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_13__repr__(PyObject *__pyx_v_self); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_12__repr__[] = " Return string representation. ";
-#if CYTHON_COMPILING_IN_CPYTHON
-struct wrapperbase __pyx_wrapperbase_9adios_mpi_4file_12__repr__;
-#endif
-static PyObject *__pyx_pw_9adios_mpi_4file_13__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_13read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_12read[] = "var.read(self, tuple offset=(), tuple count=(), tuple scalar=(), from_steps=None, nsteps=None, fill=0, step_scalar=True)\n 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           [...]
+static PyObject *__pyx_pw_9adios_mpi_3var_13read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_offset = 0;
+  PyObject *__pyx_v_count = 0;
+  PyObject *__pyx_v_scalar = 0;
+  PyObject *__pyx_v_from_steps = 0;
+  PyObject *__pyx_v_nsteps = 0;
+  PyObject *__pyx_v_fill = 0;
+  PyObject *__pyx_v_step_scalar = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_12__repr__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_count,&__pyx_n_s_scalar,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,&__pyx_n_s_fill,&__pyx_n_s_step_scalar,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+    values[0] = ((PyObject*)__pyx_empty_tuple);
+    values[1] = ((PyObject*)__pyx_empty_tuple);
+    values[2] = ((PyObject*)__pyx_empty_tuple);
+
+    /* "adios_mpi.pyx":1265
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
+ *         """ Perform read.
+ * 
+ */
+    values[3] = ((PyObject *)Py_None);
+    values[4] = ((PyObject *)Py_None);
+    values[5] = ((PyObject *)__pyx_int_0);
+    values[6] = ((PyObject *)Py_True);
+    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 (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scalar);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
+          if (value) { values[5] = value; kw_args--; }
+        }
+        case  6:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_step_scalar);
+          if (value) { values[6] = value; kw_args--; }
+        }
+      }
+      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)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_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;
+      }
+    }
+    __pyx_v_offset = ((PyObject*)values[0]);
+    __pyx_v_count = ((PyObject*)values[1]);
+    __pyx_v_scalar = ((PyObject*)values[2]);
+    __pyx_v_from_steps = values[3];
+    __pyx_v_nsteps = values[4];
+    __pyx_v_fill = values[5];
+    __pyx_v_step_scalar = values[6];
+  }
+  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_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)
+  __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
+ *         return var
+ * 
+ *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
+ *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):
+ *         """ Perform read.
+ */
 
   /* 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_4file_12__repr__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_12read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_scalar, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill, PyObject *__pyx_v_step_scalar) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  PyObject *__pyx_t_9 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios_mpi.pyx":786
- *     def __repr__(self):
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "             # <<<<<<<<<<<<<<
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,
- */
+  struct __pyx_opt_args_9adios_mpi_3var_read __pyx_t_2;
+  __Pyx_RefNannySetupContext("read", 0);
   __Pyx_XDECREF(__pyx_r);
-
-  /* "adios_mpi.pyx":788
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,             # <<<<<<<<<<<<<<
- *                  self.nvars,
- *                  self.var.keys(),
- */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->fp->path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2.__pyx_n = 7;
+  __pyx_t_2.offset = __pyx_v_offset;
+  __pyx_t_2.count = __pyx_v_count;
+  __pyx_t_2.scalar = __pyx_v_scalar;
+  __pyx_t_2.from_steps = __pyx_v_from_steps;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":789
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,
- *                  self.nvars,             # <<<<<<<<<<<<<<
- *                  self.var.keys(),
- *                  self.nattrs,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios_mpi.pyx":790
- *                 (self.fp.path,
- *                  self.nvars,
- *                  self.var.keys(),             # <<<<<<<<<<<<<<
- *                  self.nattrs,
- *                  self.attr.keys(),
+/* "adios_mpi.pyx":1379
+ *             return var
+ * 
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_VARINFO structure. """
+ *         assert self.vp != NULL, 'Not an open variable'
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+static PyObject *__pyx_pw_9adios_mpi_3var_15printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("printself", 0);
+  /* Check if called by wrapper */
+  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_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);
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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, 1379, __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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-  __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_self->var); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-
-  /* "adios_mpi.pyx":791
- *                  self.nvars,
- *                  self.var.keys(),
- *                  self.nattrs,             # <<<<<<<<<<<<<<
- *                  self.attr.keys(),
- *                  self.current_step,
- */
-  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
 
-  /* "adios_mpi.pyx":792
- *                  self.var.keys(),
- *                  self.nattrs,
- *                  self.attr.keys(),             # <<<<<<<<<<<<<<
- *                  self.current_step,
- *                  self.last_step,
+  /* "adios_mpi.pyx":1381
+ *     cpdef printself(self):
+ *         """ Print native ADIOS_VARINFO structure. """
+ *         assert self.vp != NULL, 'Not an open variable'             # <<<<<<<<<<<<<<
+ *         print ('=== AdiosVariable ===')
+ *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  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_t_5 = __Pyx_PyDict_Keys(__pyx_v_self->attr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
+  #endif
 
-  /* "adios_mpi.pyx":793
- *                  self.nattrs,
- *                  self.attr.keys(),
- *                  self.current_step,             # <<<<<<<<<<<<<<
- *                  self.last_step,
- *                  self.file_size)
+  /* "adios_mpi.pyx":1382
+ *         """ 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_6 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
+  __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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":794
- *                  self.attr.keys(),
- *                  self.current_step,
- *                  self.last_step,             # <<<<<<<<<<<<<<
- *                  self.file_size)
- * 
+  /* "adios_mpi.pyx":1383
+ *         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_7 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_vp);
+  __Pyx_GIVEREF(__pyx_n_s_vp);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_vp);
+  __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_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_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_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":795
- *                  self.current_step,
- *                  self.last_step,
- *                  self.file_size)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1384
+ *         print ('=== AdiosVariable ===')
+ *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
+ *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))             # <<<<<<<<<<<<<<
+ *         printvar(self.vp)
  * 
- * cdef class var:
- */
-  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-
-  /* "adios_mpi.pyx":788
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \
- *                 (self.fp.path,             # <<<<<<<<<<<<<<
- *                  self.nvars,
- *                  self.var.keys(),
  */
-  __pyx_t_9 = PyTuple_New(8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_9);
-  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_fp);
+  __Pyx_GIVEREF(__pyx_n_s_fp);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
   __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_5);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_7);
-  PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_t_8);
-  __Pyx_GIVEREF(__pyx_t_8);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 0;
-  __pyx_t_4 = 0;
-  __pyx_t_5 = 0;
-  __pyx_t_6 = 0;
-  __pyx_t_7 = 0;
-  __pyx_t_8 = 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_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_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_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":787
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
- *                 "current_step=%r, last_step=%r, file_size=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.fp.path,
- *                  self.nvars,
+  /* "adios_mpi.pyx":1385
+ *         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_8 = __Pyx_PyString_Format(__pyx_kp_s_AdiosFile_path_r_nvars_r_var_r_n, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __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;
+  __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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":784
- *                 raise KeyError(key_)
+  /* "adios_mpi.pyx":1379
+ *             return var
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         """ Return string representation. """
- *         return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
+ *     cpdef printself(self):             # <<<<<<<<<<<<<<
+ *         """ Print native ADIOS_VARINFO structure. """
+ *         assert self.vp != NULL, 'Not an open variable'
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("adios_mpi.file.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_AddTraceback("adios_mpi.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":635
- * 
- *     ## Public Memeber
- *     cpdef public dict var             # <<<<<<<<<<<<<<
- *     cpdef public dict attr
- * 
- */
-
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_3var_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_3var_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_15printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_14printself[] = "var.printself(self)\n Print native ADIOS_VARINFO structure. ";
+static PyObject *__pyx_pw_9adios_mpi_3var_15printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_3var___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_14printself(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4file_3var___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_14printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("printself", 0);
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->var);
-  __pyx_r = __pyx_v_self->var;
+  __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_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.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios_mpi.pyx":1387
+ *         printvar(self.vp)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
+ *                (self.varid,
+ */
+
 /* Python wrapper */
-static int __pyx_pw_9adios_mpi_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_9adios_mpi_4file_3var_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
+static PyObject *__pyx_pw_9adios_mpi_3var_17__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_17__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_3var_2__set__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_16__repr__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_4file_3var_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
+static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_v_value;
-  __Pyx_INCREF(__pyx_t_1);
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios_mpi.pyx":1388
+ * 
+ *     def __repr__(self):
+ *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.varid,
+ *                 self.name,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios_mpi.pyx":1389
+ *     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_GOTREF(__pyx_t_1);
+
+  /* "adios_mpi.pyx":1392
+ *                 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_GOTREF(__pyx_t_2);
+
+  /* "adios_mpi.pyx":1394
+ *                 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_GOTREF(__pyx_t_3);
+
+  /* "adios_mpi.pyx":1395
+ *                 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_GOTREF(__pyx_t_5);
+  __pyx_t_6 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios_mpi.pyx":1389
+ *     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_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_self->name);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
+  PyTuple_SET_ITEM(__pyx_t_5, 2, ((PyObject *)__pyx_v_self->dtype));
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->dims);
+  __Pyx_GIVEREF(__pyx_v_self->dims);
+  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_self->dims);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_t_4);
   __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
 
-  /* function exit code */
-  __pyx_r = 0;
+  /* "adios_mpi.pyx":1388
+ * 
+ *     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_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
+ *         printvar(self.vp)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
+ *                (self.varid,
+ */
+
+  /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.var.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios_mpi.var.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios_mpi.pyx":1397
+ *                 self.attrs.keys())
+ * 
+ *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
+ */
+
 /* Python wrapper */
-static int __pyx_pw_9adios_mpi_4file_3var_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_9adios_mpi_4file_3var_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
+static PyObject *__pyx_pw_9adios_mpi_3var_19_readattr(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_18_readattr[] = "var._readattr(self, varname)";
+static PyObject *__pyx_pw_9adios_mpi_3var_19_readattr(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_3var_4__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("_readattr (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_18_readattr(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_4file_3var_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  int __pyx_r;
+static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)Py_None);
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("_readattr", 0);
+  __Pyx_INCREF(__pyx_v_varname);
 
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios_mpi.pyx":1398
+ * 
+ *     def _readattr(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-/* "adios_mpi.pyx":636
- *     ## Public Memeber
- *     cpdef public dict var
- *     cpdef public dict attr             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1399
+ *     def _readattr(self, varname):
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
- *     property name:
+ *         if len(varname) > 1:
  */
+    __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_varname);
+    __Pyx_GIVEREF(__pyx_v_varname);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
+    __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4file_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4file_4attr_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_4attr___get__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+    /* "adios_mpi.pyx":1398
+ * 
+ *     def _readattr(self, varname):
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
+ * 
+ */
+  }
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+  /* "adios_mpi.pyx":1401
+ *             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_2 = ((__pyx_t_4 > 1) != 0);
+  if (__pyx_t_2) {
 
-static PyObject *__pyx_pf_9adios_mpi_4file_4attr___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->attr);
-  __pyx_r = __pyx_v_self->attr;
-  goto __pyx_L0;
+    /* "adios_mpi.pyx":1402
+ * 
+ *         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_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_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)
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1401
+ *             varname = (varname,)
+ * 
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
+ * 
+ */
+  }
 
-/* Python wrapper */
-static int __pyx_pw_9adios_mpi_4file_4attr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_9adios_mpi_4file_4attr_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_4file_4attr_2__set__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  /* "adios_mpi.pyx":1404
+ *             raise KeyError(varname)
+ * 
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
+ */
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __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_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)
+  }
+  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)
+        #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_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)
+        #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_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1405
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
 
-static int __pyx_pf_9adios_mpi_4file_4attr_2__set__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self, PyObject *__pyx_v_value) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_v_value;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+      /* "adios_mpi.pyx":1406
+ *         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_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)
 
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.file.attr.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1405
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    }
 
-/* Python wrapper */
-static int __pyx_pw_9adios_mpi_4file_4attr_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_9adios_mpi_4file_4attr_5__del__(PyObject *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4file_4attr_4__del__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self));
+    /* "adios_mpi.pyx":1408
+ *                 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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1409
+ * 
+ *             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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
 
-static int __pyx_pf_9adios_mpi_4file_4attr_4__del__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__", 0);
-  __Pyx_INCREF(Py_None);
-  __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)Py_None);
+      /* "adios_mpi.pyx":1408
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
+ */
+    }
 
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1411
+ *                 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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1411, __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
 
-/* "adios_mpi.pyx":825
- *     property name:
- *         """ The variable name. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+      /* "adios_mpi.pyx":1412
  * 
+ *             if key_ in self.attrs.keys():
+ *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_4name_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_4name___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+      /* "adios_mpi.pyx":1411
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
+ */
+    }
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1414
+ *                 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_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_GOTREF(__pyx_t_9);
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+      }
+    }
+    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_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_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_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) {
 
-static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+      /* "adios_mpi.pyx":1415
+ * 
+ *             if '/'+key_ in self.attrs.keys():
+ *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_GOTREF(__pyx_t_9);
+      __pyx_t_8 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_8)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_r = __pyx_t_3;
+      __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-  /* "adios_mpi.pyx":826
- *         """ The variable name. """
- *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
+      /* "adios_mpi.pyx":1414
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
  * 
- *     property varid:
  */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
-  goto __pyx_L0;
+    }
 
-  /* "adios_mpi.pyx":825
- *     property name:
- *         """ The variable name. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+    /* "adios_mpi.pyx":1417
+ *                 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_GOTREF(__pyx_t_7);
+    __pyx_t_10 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
+      if (likely(__pyx_t_10)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+        __Pyx_INCREF(__pyx_t_10);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_7, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+      __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_12(__pyx_t_7);
+        if (unlikely(!__pyx_t_3)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
+      __pyx_t_3 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1419
+ *             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_GOTREF(__pyx_t_10);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+        }
+      }
+      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_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_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_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_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":830
- *     property varid:
- *         """ Internal variable id. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.varid
+        /* "adios_mpi.pyx":1420
+ *                 #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_)             # <<<<<<<<<<<<<<
  * 
+ *     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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->file));
+        __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_GOTREF(__pyx_t_10);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __pyx_t_10;
+        __pyx_t_10 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_5varid_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_5varid_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_5varid___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+        /* "adios_mpi.pyx":1419
+ *             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_)
+ * 
+ */
+      }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+      /* "adios_mpi.pyx":1417
+ *                 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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "adios_mpi.pyx":831
- *         """ Internal variable id. """
- *         def __get__(self):
- *             return self.varid             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1404
+ *             raise KeyError(varname)
  * 
- *     property dtype:
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  }
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":830
- *     property varid:
- *         """ Internal variable id. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.varid
+  /* "adios_mpi.pyx":1397
+ *                 self.attrs.keys())
  * 
+ *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.varid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios_mpi.var._readattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_varname);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":835
- *     property dtype:
- *         """ Variable type as in numpy.dtype. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
+/* "adios_mpi.pyx":1422
+ *                     return group(self.file, self.name + '/' + key_)
  * 
+ *     def _readvar(self, args):             # <<<<<<<<<<<<<<
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_5dtype_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_3var_21_readvar(PyObject *__pyx_v_self, PyObject *__pyx_v_args); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_20_readvar[] = "var._readvar(self, args)";
+static PyObject *__pyx_pw_9adios_mpi_3var_21_readvar(PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_5dtype___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("_readvar (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_20_readvar(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), ((PyObject *)__pyx_v_args));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_v_shape = NULL;
+  PyObject *__pyx_v_asel = NULL;
+  PyObject *__pyx_v_var = NULL;
+  PyObject *__pyx_v_idx = NULL;
+  PyObject *__pyx_v_obj = NULL;
+  PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  struct __pyx_opt_args_9adios_mpi_3var_read __pyx_t_9;
+  PyObject *(*__pyx_t_10)(PyObject *);
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  __Pyx_RefNannySetupContext("_readvar", 0);
 
-  /* "adios_mpi.pyx":836
- *         """ Variable type as in numpy.dtype. """
- *         def __get__(self):
- *             return self.dtype             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1423
  * 
- *     property ndim:
+ *     def _readvar(self, args):
+ *         shape = list(self.dims)             # <<<<<<<<<<<<<<
+ *         if self.nsteps > 1:
+ *             shape.insert(0, self.nsteps)
  */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
-  goto __pyx_L0;
+  __pyx_t_1 = PySequence_List(__pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_shape = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":835
- *     property dtype:
- *         """ Variable type as in numpy.dtype. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
- * 
+  /* "adios_mpi.pyx":1424
+ *     def _readvar(self, args):
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
+ *             shape.insert(0, self.nsteps)
+ *         asel = sel.select(shape, args)
  */
+  __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
+  if (__pyx_t_2) {
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":840
- *     property ndim:
- *         """ The number of dimensions of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.ndim
+    /* "adios_mpi.pyx":1425
+ *         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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_4ndim_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_4ndim___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+    /* "adios_mpi.pyx":1424
+ *     def _readvar(self, args):
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
+ *             shape.insert(0, self.nsteps)
+ *         asel = sel.select(shape, args)
+ */
+  }
 
-  /* "adios_mpi.pyx":841
- *         """ The number of dimensions of the variable. """
- *         def __get__(self):
- *             return self.ndim             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1426
+ *         if self.nsteps > 1:
+ *             shape.insert(0, self.nsteps)
+ *         asel = sel.select(shape, args)             # <<<<<<<<<<<<<<
  * 
- *     property dims:
+ *         if isinstance(asel, sel.SimpleSelection):
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  __pyx_t_6 = 0;
+  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);
+      __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_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;
+  }
+  __Pyx_INCREF(__pyx_v_shape);
+  __Pyx_GIVEREF(__pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_shape);
+  __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_GOTREF(__pyx_t_1);
-  __pyx_r = __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;
-  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":840
- *     property ndim:
- *         """ The number of dimensions of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.ndim
+  /* "adios_mpi.pyx":1428
+ *         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_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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_8 = (__pyx_t_2 != 0);
+  if (__pyx_t_8) {
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":845
- *     property dims:
- *         """ The shape of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dims
+    /* "adios_mpi.pyx":1429
  * 
+ *         if isinstance(asel, sel.SimpleSelection):
+ *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                 return self.read(offset=asel.sel[0][1:],
+ *                                  count=asel.sel[1][1:],
  */
+    __pyx_t_8 = ((__pyx_v_self->nsteps > 1) != 0);
+    if (__pyx_t_8) {
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_4dims_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_4dims_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_4dims___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+      /* "adios_mpi.pyx":1430
+ *         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_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_GOTREF(__pyx_t_5);
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1430, __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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1431
+ *             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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+      /* "adios_mpi.pyx":1432
+ *                 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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "adios_mpi.pyx":846
- *         """ The shape of the variable. """
- *         def __get__(self):
- *             return self.dims             # <<<<<<<<<<<<<<
- * 
- *     property nsteps:
+      /* "adios_mpi.pyx":1433
+ *                                  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_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->dims);
-  __pyx_r = __pyx_v_self->dims;
-  goto __pyx_L0;
+      __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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "adios_mpi.pyx":845
- *     property dims:
- *         """ The shape of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dims
- * 
+      /* "adios_mpi.pyx":1434
+ *                                  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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1435
+ *                                  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_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_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_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)
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-/* "adios_mpi.pyx":850
- *     property nsteps:
- *         """ The number of time steps of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nsteps
+      /* "adios_mpi.pyx":1430
+ *         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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":1429
  * 
+ *         if isinstance(asel, sel.SimpleSelection):
+ *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                 return self.read(offset=asel.sel[0][1:],
+ *                                  count=asel.sel[1][1:],
+ */
+    }
+
+    /* "adios_mpi.pyx":1437
+ *                                  step_scalar=asel.sel[3][0])
+ *             else:
+ *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
+ *                                  count=asel.sel[1],
+ *                                  scalar=asel.sel[3],
+ */
+    /*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_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_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)
+
+      /* "adios_mpi.pyx":1438
+ *             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_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_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)
 
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_6nsteps_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_6nsteps_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_6nsteps___get__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+      /* "adios_mpi.pyx":1439
+ *                 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_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_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)
 
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1437
+ *                                  step_scalar=asel.sel[3][0])
+ *             else:
+ *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
+ *                                  count=asel.sel[1],
+ *                                  scalar=asel.sel[3],
+ */
+      __pyx_t_9.__pyx_n = 5;
+      __pyx_t_9.offset = ((PyObject*)__pyx_t_1);
+      __pyx_t_9.count = ((PyObject*)__pyx_t_5);
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      goto __pyx_L0;
+    }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__get__", 0);
+    /* "adios_mpi.pyx":1428
+ *         asel = sel.select(shape, args)
+ * 
+ *         if isinstance(asel, sel.SimpleSelection):             # <<<<<<<<<<<<<<
+ *             if (self.nsteps) > 1:
+ *                 return self.read(offset=asel.sel[0][1:],
+ */
+  }
 
-  /* "adios_mpi.pyx":851
- *         """ The number of time steps of the variable. """
- *         def __get__(self):
- *             return self.nsteps             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1443
+ *                                  nsteps=1)
  * 
- *     def __init__(self, file file, char * name):
+ *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
+ *             shape = list(asel.sel[0][1])
+ *             shape[asel.morder[0]] = 0
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1443, __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_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_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_2 = (__pyx_t_8 != 0);
+  if (__pyx_t_2) {
 
-  /* "adios_mpi.pyx":850
- *     property nsteps:
- *         """ The number of time steps of the variable. """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.nsteps
+    /* "adios_mpi.pyx":1444
  * 
+ *         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_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_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_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_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;
 
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.nsteps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1445
+ *         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_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_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)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-/* "adios_mpi.pyx":853
- *             return self.nsteps
- * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.vp = NULL
+    /* "adios_mpi.pyx":1446
+ *             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_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_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)
+    __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;
 
-/* Python wrapper */
-static int __pyx_pw_9adios_mpi_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_9adios_mpi_3var_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct __pyx_obj_9adios_mpi_file *__pyx_v_file = 0;
-  char *__pyx_v_name;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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_file)) != 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("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
+    /* "adios_mpi.pyx":1447
+ *             shape[asel.morder[0]] = 0
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
+ *                 if (self.nsteps) > 1:
+ *                     v = self.read(offset=obj[0][1:],
+ */
+    __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_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 {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      __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_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_v_file = ((struct __pyx_obj_9adios_mpi_file *)values[0]);
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __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);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_10)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_10(__pyx_t_4);
+        if (unlikely(!__pyx_t_7)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_7);
+      __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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_5);
+      __pyx_t_5 = __pyx_t_7;
+      __pyx_t_7 = 0;
 
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+      /* "adios_mpi.pyx":1448
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):
+ *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                     v = self.read(offset=obj[0][1:],
+ *                                   count=obj[1][1:],
+ */
+      __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
+      if (__pyx_t_2) {
 
-static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, char *__pyx_v_name) {
-  int __pyx_v_i;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  int __pyx_t_6;
-  size_t __pyx_t_7;
-  struct __pyx_opt_args_9adios_mpi_adios2npdtype __pyx_t_8;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
+        /* "adios_mpi.pyx":1449
+ *             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_GOTREF(__pyx_t_7);
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1449, __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_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_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)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-  /* "adios_mpi.pyx":854
- * 
- *     def __init__(self, file file, char * name):
- *         self.file = file             # <<<<<<<<<<<<<<
- *         self.vp = NULL
- * 
+        /* "adios_mpi.pyx":1450
+ *                 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_INCREF(((PyObject *)__pyx_v_file));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
-  __Pyx_GOTREF(__pyx_v_self->file);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
-  __pyx_v_self->file = __pyx_v_file;
+        __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_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_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)
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-  /* "adios_mpi.pyx":855
- *     def __init__(self, file file, char * name):
- *         self.file = file
- *         self.vp = NULL             # <<<<<<<<<<<<<<
- * 
- *         assert self.file.fp != NULL, 'Not an open file'
+        /* "adios_mpi.pyx":1451
+ *                     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_v_self->vp = NULL;
+        __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_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_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)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-  /* "adios_mpi.pyx":857
- *         self.vp = NULL
- * 
- *         assert self.file.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
- *         self.vp = adios_inq_var(self.file.fp, name)
- *         assert self.vp != NULL, 'Not a valid var'
+        /* "adios_mpi.pyx":1452
+ *                                   count=obj[1][1:],
+ *                                   scalar=obj[3][1:],
+ *                                   from_steps=obj[0][0],             # <<<<<<<<<<<<<<
+ *                                   nsteps=obj[1][0],
+ *                                   step_scalar=obj[3][0])
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  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_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+        __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_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_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)
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-  /* "adios_mpi.pyx":858
- * 
- *         assert self.file.fp != NULL, 'Not an open file'
- *         self.vp = adios_inq_var(self.file.fp, name)             # <<<<<<<<<<<<<<
- *         assert self.vp != NULL, 'Not a valid var'
- * 
+        /* "adios_mpi.pyx":1453
+ *                                   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_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_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)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+
+        /* "adios_mpi.pyx":1454
+ *                                   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_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_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)
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+        /* "adios_mpi.pyx":1449
+ *             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_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
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):
+ *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
+ *                     v = self.read(offset=obj[0][1:],
+ *                                   count=obj[1][1:],
+ */
+        goto __pyx_L8;
+      }
+
+      /* "adios_mpi.pyx":1456
+ *                                   step_scalar=obj[3][0])
+ *                 else:
+ *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
+ *                                   count=obj[1],
+ *                                   scalar=obj[3],
  */
-  __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_v_name);
+      /*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_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)
 
-  /* "adios_mpi.pyx":859
- *         assert self.file.fp != NULL, 'Not an open file'
- *         self.vp = adios_inq_var(self.file.fp, name)
- *         assert self.vp != NULL, 'Not a valid var'             # <<<<<<<<<<<<<<
- * 
- *         self.name = name
+        /* "adios_mpi.pyx":1457
+ *                 else:
+ *                     v = self.read(offset=obj[0],
+ *                                   count=obj[1],             # <<<<<<<<<<<<<<
+ *                                   scalar=obj[3],
+ *                                   from_steps=0,
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+        __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_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)
 
-  /* "adios_mpi.pyx":861
- *         assert self.vp != NULL, 'Not a valid var'
- * 
- *         self.name = name             # <<<<<<<<<<<<<<
- *         self.varid = self.vp.varid
- *         self.ndim = self.vp.ndim
+        /* "adios_mpi.pyx":1458
+ *                     v = self.read(offset=obj[0],
+ *                                   count=obj[1],
+ *                                   scalar=obj[3],             # <<<<<<<<<<<<<<
+ *                                   from_steps=0,
+ *                                   nsteps=1)
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __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;
+        __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_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)
 
-  /* "adios_mpi.pyx":862
+        /* "adios_mpi.pyx":1456
+ *                                   step_scalar=obj[3][0])
+ *                 else:
+ *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
+ *                                   count=obj[1],
+ *                                   scalar=obj[3],
+ */
+        __pyx_t_9.__pyx_n = 5;
+        __pyx_t_9.offset = ((PyObject*)__pyx_t_11);
+        __pyx_t_9.count = ((PyObject*)__pyx_t_1);
+        __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_GOTREF(__pyx_t_12);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_12);
+        __pyx_t_12 = 0;
+      }
+      __pyx_L8:;
+
+      /* "adios_mpi.pyx":1462
+ *                                   nsteps=1)
  * 
- *         self.name = name
- *         self.varid = self.vp.varid             # <<<<<<<<<<<<<<
- *         self.ndim = self.vp.ndim
- *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
+ *                 var = np.concatenate((var, v), axis=asel.morder[idx])             # <<<<<<<<<<<<<<
+ * 
+ *             var = np.reshape(var, asel.mshape)
  */
-  __pyx_t_2 = __pyx_v_self->vp->varid;
-  __pyx_v_self->varid = __pyx_t_2;
+      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1462, __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_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_GOTREF(__pyx_t_12);
+      __Pyx_INCREF(__pyx_v_var);
+      __Pyx_GIVEREF(__pyx_v_var);
+      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_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, 1462, __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_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_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_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)
+      __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_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __Pyx_DECREF_SET(__pyx_v_var, __pyx_t_13);
+      __pyx_t_13 = 0;
 
-  /* "adios_mpi.pyx":863
- *         self.name = name
- *         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
+      /* "adios_mpi.pyx":1447
+ *             shape[asel.morder[0]] = 0
+ *             var = np.ndarray(shape, dtype=self.dtype)
+ *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
+ *                 if (self.nsteps) > 1:
+ *                     v = self.read(offset=obj[0][1:],
  */
-  __pyx_t_2 = __pyx_v_self->vp->ndim;
-  __pyx_v_self->ndim = __pyx_t_2;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":864
- *         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
+    /* "adios_mpi.pyx":1464
+ *                 var = np.concatenate((var, v), axis=asel.morder[idx])
+ * 
+ *             var = np.reshape(var, asel.mshape)             # <<<<<<<<<<<<<<
  * 
+ *             return var
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_v_self->vp->ndim;
-  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
-    __pyx_v_i = __pyx_t_3;
-    __pyx_t_4 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1464, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_13);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  }
-  __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_GIVEREF(__pyx_t_4);
-  __Pyx_GOTREF(__pyx_v_self->dims);
-  __Pyx_DECREF(__pyx_v_self->dims);
-  __pyx_v_self->dims = ((PyObject*)__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_GOTREF(__pyx_t_4);
+    __pyx_t_12 = NULL;
+    __pyx_t_6 = 0;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_13))) {
+      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+      if (likely(__pyx_t_12)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+        __Pyx_INCREF(__pyx_t_12);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_13, function);
+        __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_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;
+    }
+    __Pyx_INCREF(__pyx_v_var);
+    __Pyx_GIVEREF(__pyx_v_var);
+    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_v_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, 1464, __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":865
- *         self.ndim = self.vp.ndim
- *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
- *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1466
+ *             var = np.reshape(var, asel.mshape)
  * 
- *         if self.vp.type == DATATYPE.string:
- */
-  __pyx_t_2 = __pyx_v_self->vp->nsteps;
-  __pyx_v_self->nsteps = __pyx_t_2;
-
-  /* "adios_mpi.pyx":867
- *         self.nsteps = self.vp.nsteps
+ *             return var             # <<<<<<<<<<<<<<
  * 
- *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
- *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
  *         else:
  */
-  __pyx_t_4 = PyInt_FromLong(__pyx_v_self->vp->type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_6) {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_var);
+    __pyx_r = __pyx_v_var;
+    goto __pyx_L0;
 
-    /* "adios_mpi.pyx":868
+    /* "adios_mpi.pyx":1443
+ *                                  nsteps=1)
  * 
- *         if self.vp.type == DATATYPE.string:
- *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))             # <<<<<<<<<<<<<<
- *         else:
- *             self.dtype = adios2npdtype(self.vp.type)
+ *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
+ *             shape = list(asel.sel[0][1])
+ *             shape[asel.morder[0]] = 0
  */
-    __pyx_t_7 = strlen(((char *)__pyx_v_self->vp->value)); 
-    __pyx_t_8.__pyx_n = 1;
-    __pyx_t_8.strlen = __pyx_t_7;
-    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_self->vp->type, 0, &__pyx_t_8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __Pyx_GOTREF(__pyx_v_self->dtype);
-    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
-    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
-    __pyx_t_1 = 0;
-    goto __pyx_L5;
   }
-  /*else*/ {
 
-    /* "adios_mpi.pyx":870
- *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
+  /* "adios_mpi.pyx":1469
+ * 
  *         else:
- *             self.dtype = adios2npdtype(self.vp.type)             # <<<<<<<<<<<<<<
+ *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
  * 
- *     def __del__(self):
+ *     def __getitem__(self, args):
  */
-    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_self->vp->type, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __Pyx_GOTREF(__pyx_v_self->dtype);
-    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
-    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
-    __pyx_t_1 = 0;
+  /*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_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_L5:;
 
-  /* "adios_mpi.pyx":853
- *             return self.nsteps
+  /* "adios_mpi.pyx":1422
+ *                     return group(self.file, self.name + '/' + key_)
  * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.vp = NULL
+ *     def _readvar(self, args):             # <<<<<<<<<<<<<<
+ *         shape = list(self.dims)
+ *         if self.nsteps > 1:
  */
 
   /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_4);
   __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("adios_mpi.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("adios_mpi.var._readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XDECREF(__pyx_v_asel);
+  __Pyx_XDECREF(__pyx_v_var);
+  __Pyx_XDECREF(__pyx_v_idx);
+  __Pyx_XDECREF(__pyx_v_obj);
+  __Pyx_XDECREF(__pyx_v_v);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":872
- *             self.dtype = adios2npdtype(self.vp.type)
- * 
- *     def __del__(self):             # <<<<<<<<<<<<<<
- *         self.close()
+/* "adios_mpi.pyx":1471
+ *             raise NotImplementedError("Not implemented yet")
  * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         if isinstance(args, str):
+ *             return self._readattr(args)
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_3var_2__del__[] = "var.__del__(self)";
-static PyObject *__pyx_pw_9adios_mpi_3var_3__del__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_9adios_mpi_3var_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_2__del__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_22__getitem__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), ((PyObject *)__pyx_v_args));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_args) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__del__", 0);
+  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("__getitem__", 0);
 
-  /* "adios_mpi.pyx":873
+  /* "adios_mpi.pyx":1472
  * 
- *     def __del__(self):
- *         self.close()             # <<<<<<<<<<<<<<
+ *     def __getitem__(self, args):
+ *         if isinstance(args, str):             # <<<<<<<<<<<<<<
+ *             return self._readattr(args)
+ *         else:
+ */
+  __pyx_t_1 = PyString_Check(__pyx_v_args); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":1473
+ *     def __getitem__(self, args):
+ *         if isinstance(args, str):
+ *             return self._readattr(args)             # <<<<<<<<<<<<<<
+ *         else:
+ *             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_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1473, __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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+    /* "adios_mpi.pyx":1472
  * 
- *     cpdef close(self):
+ *     def __getitem__(self, args):
+ *         if isinstance(args, str):             # <<<<<<<<<<<<<<
+ *             return self._readattr(args)
+ *         else:
  */
-  __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_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
 
-  /* "adios_mpi.pyx":872
- *             self.dtype = adios2npdtype(self.vp.type)
+  /* "adios_mpi.pyx":1475
+ *             return self._readattr(args)
+ *         else:
+ *             return self._readvar(args)             # <<<<<<<<<<<<<<
  * 
- *     def __del__(self):             # <<<<<<<<<<<<<<
- *         self.close()
+ *     ## For access var/attr/group as an attribute
+ */
+  /*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_GOTREF(__pyx_t_4);
+    __pyx_t_6 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "adios_mpi.pyx":1471
+ *             raise NotImplementedError("Not implemented yet")
  * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         if isinstance(args, str):
+ *             return self._readattr(args)
  */
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
+  /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("adios_mpi.var.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -12309,1555 +23238,1373 @@ static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_v
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":875
- *         self.close()
+/* "adios_mpi.pyx":1478
+ * 
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
  * 
- *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'
  */
 
-static PyObject *__pyx_pw_9adios_mpi_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch) {
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_25__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_3var_25__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_24__getattr__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __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);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
+  __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios_mpi.pyx":877
- *     cpdef close(self):
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'             # <<<<<<<<<<<<<<
- *         adios_free_varinfo(self.vp)
- *         self.vp = NULL
+  /* "adios_mpi.pyx":1479
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):
+ *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
+ * 
+ *     ## To support ipython tab completion
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_var);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
   }
-  #endif
-
-  /* "adios_mpi.pyx":878
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'
- *         adios_free_varinfo(self.vp)             # <<<<<<<<<<<<<<
- *         self.vp = NULL
- * 
- */
-  adios_free_varinfo(__pyx_v_self->vp);
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":879
- *         assert self.vp != NULL, 'Not an open var'
- *         adios_free_varinfo(self.vp)
- *         self.vp = NULL             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1478
  * 
- *     cpdef advance(self):
- */
-  __pyx_v_self->vp = NULL;
-
-  /* "adios_mpi.pyx":875
- *         self.close()
+ *     ## For access var/attr/group as an attribute
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
  * 
- *     cpdef close(self):             # <<<<<<<<<<<<<<
- *         """ Close and free variable information """
- *         assert self.vp != NULL, 'Not an open var'
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios_mpi.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
+  __Pyx_AddTraceback("adios_mpi.var.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios_mpi.pyx":1482
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
+
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_3var_4close[] = "var.close(self)\n Close and free variable information ";
-static PyObject *__pyx_pw_9adios_mpi_3var_5close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_9adios_mpi_3var_27__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_26__dir__[] = "var.__dir__(self)";
+static PyObject *__pyx_pw_9adios_mpi_3var_27__dir__(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_3var_4close(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__dir__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_26__dir__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_4close(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+  PyObject *__pyx_v_k0 = NULL;
+  PyObject *__pyx_v_k2 = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("close", 0);
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__dir__", 0);
+
+  /* "adios_mpi.pyx":1483
+ *     ## 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_GOTREF(__pyx_t_1);
+  __pyx_v_k0 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":1486
+ *         ## 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_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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1486, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k2 = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":1487
+ *         ## E.g., f['/attr1'] == f.attr1
+ *         k2 = normalize_key(self.attrs.keys())
+ *         return k0 + k2             # <<<<<<<<<<<<<<
+ * 
+ *     ## Require for dictionary key completion
+ */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_3var_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
+  /* "adios_mpi.pyx":1482
+ * 
+ *     ## To support ipython tab completion
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         ## Normalize to support var starting with '/'
+ */
+
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios_mpi.var.__dir__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_k0);
+  __Pyx_XDECREF(__pyx_v_k2);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":881
- *         self.vp = NULL
+/* "adios_mpi.pyx":1490
+ * 
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.attrs.keys()
  * 
- *     cpdef advance(self):             # <<<<<<<<<<<<<<
- *         """ Update variable information after the stream advanced """
- *         self.vp = adios_inq_var(self.file.fp, self.name)
  */
 
-static PyObject *__pyx_pw_9adios_mpi_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch) {
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_3var_29keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_3var_28keys[] = "var.keys(self)";
+static PyObject *__pyx_pw_9adios_mpi_3var_29keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_3var_28keys(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  char const *__pyx_t_5;
-  int __pyx_t_6;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __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);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "adios_mpi.pyx":883
- *     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_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_5);
+  __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios_mpi.pyx":884
- *         """ 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
+  /* "adios_mpi.pyx":1491
+ *     ## Require for dictionary key completion
+ *     def keys(self):
+ *         return self.attrs.keys()             # <<<<<<<<<<<<<<
  * 
+ * cdef class attr(object):
  */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
     }
   }
-  #endif
+  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_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_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":885
- *         self.vp = adios_inq_var(self.file.fp, self.name)
- *         assert self.vp != NULL, 'Not a valid var'
- *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1490
  * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):
- */
-  __pyx_t_6 = __pyx_v_self->vp->nsteps;
-  __pyx_v_self->nsteps = __pyx_t_6;
-
-  /* "adios_mpi.pyx":881
- *         self.vp = NULL
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.attrs.keys()
  * 
- *     cpdef advance(self):             # <<<<<<<<<<<<<<
- *         """ Update variable information after the stream advanced """
- *         self.vp = adios_inq_var(self.file.fp, self.name)
  */
 
   /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios_mpi.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
+  __Pyx_AddTraceback("adios_mpi.var.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
+/* "adios_mpi.pyx":1515
+ *     property name:
+ *         """ The attribute name """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_3var_6advance[] = "var.advance(self)\n Update variable information after the stream advanced ";
-static PyObject *__pyx_pw_9adios_mpi_3var_7advance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_9adios_mpi_4attr_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4attr_4name_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("advance (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_6advance(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4attr_4name___get__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_6advance(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("advance", 0);
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1516
+ *         """ The attribute name """
+ *         def __get__(self):
+ *             return self.name             # <<<<<<<<<<<<<<
+ * 
+ *     property dtype:
+ */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_3var_advance(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __Pyx_INCREF(__pyx_v_self->name);
+  __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
+  /* "adios_mpi.pyx":1515
+ *     property name:
+ *         """ The attribute name """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.name
+ * 
+ */
+
   /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":887
- *         self.nsteps = self.vp.nsteps
- * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):             # <<<<<<<<<<<<<<
- *         """ Perform read.
+/* "adios_mpi.pyx":1520
+ *     property dtype:
+ *         """ The attribute type as in numpy.dtype """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
  * 
  */
 
-static PyObject *__pyx_pw_9adios_mpi_3var_9read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read *__pyx_optional_args) {
-  PyObject *__pyx_v_offset = ((PyObject*)__pyx_empty_tuple);
-  PyObject *__pyx_v_count = ((PyObject*)__pyx_empty_tuple);
-  PyObject *__pyx_v_from_steps = ((PyObject *)Py_None);
-  PyObject *__pyx_v_nsteps = ((PyObject *)Py_None);
-  PyObject *__pyx_v_fill = ((PyObject *)__pyx_int_0);
-  PyObject *__pyx_v_lshape = 0;
-  PyArrayObject *__pyx_v_npshape = 0;
-  PyArrayObject *__pyx_v_npoffset = 0;
-  PyArrayObject *__pyx_v_npcount = 0;
-  PyObject *__pyx_v_shape = NULL;
-  PyArrayObject *__pyx_v_var = 0;
-  ADIOS_SELECTION *__pyx_v_sel;
-  int __pyx_v_i;
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4attr_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4attr_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4attr_5dtype___get__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  Py_ssize_t __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
-  int __pyx_t_8;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_t_11;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
-  if (__pyx_optional_args) {
-    if (__pyx_optional_args->__pyx_n > 0) {
-      __pyx_v_offset = __pyx_optional_args->offset;
-      if (__pyx_optional_args->__pyx_n > 1) {
-        __pyx_v_count = __pyx_optional_args->count;
-        if (__pyx_optional_args->__pyx_n > 2) {
-          __pyx_v_from_steps = __pyx_optional_args->from_steps;
-          if (__pyx_optional_args->__pyx_n > 3) {
-            __pyx_v_nsteps = __pyx_optional_args->nsteps;
-            if (__pyx_optional_args->__pyx_n > 4) {
-              __pyx_v_fill = __pyx_optional_args->fill;
-            }
-          }
-        }
-      }
-    }
-  }
-  __Pyx_INCREF(__pyx_v_from_steps);
-  __Pyx_INCREF(__pyx_v_nsteps);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __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)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      __pyx_t_5 = 0;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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);
-          __pyx_t_5 = 1;
-        }
-      }
-      __pyx_t_6 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_6);
-      if (__pyx_t_4) {
-        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
-      }
-      __Pyx_INCREF(__pyx_v_offset);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_offset);
-      __Pyx_GIVEREF(__pyx_v_offset);
-      __Pyx_INCREF(__pyx_v_count);
-      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_count);
-      __Pyx_GIVEREF(__pyx_v_count);
-      __Pyx_INCREF(__pyx_v_from_steps);
-      PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_from_steps);
-      __Pyx_GIVEREF(__pyx_v_from_steps);
-      __Pyx_INCREF(__pyx_v_nsteps);
-      PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_nsteps);
-      __Pyx_GIVEREF(__pyx_v_nsteps);
-      __Pyx_INCREF(__pyx_v_fill);
-      PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_5, __pyx_v_fill);
-      __Pyx_GIVEREF(__pyx_v_fill);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __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;
-      __pyx_r = __pyx_t_2;
-      __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
+  __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":934
- * 
- *         """
- *         if from_steps is None:             # <<<<<<<<<<<<<<
- *             from_steps = 0 ##self.file.current_step
+  /* "adios_mpi.pyx":1521
+ *         """ The attribute type as in numpy.dtype """
+ *         def __get__(self):
+ *             return self.dtype             # <<<<<<<<<<<<<<
  * 
+ *     property value:
  */
-  __pyx_t_7 = (__pyx_v_from_steps == Py_None);
-  __pyx_t_8 = (__pyx_t_7 != 0);
-  if (__pyx_t_8) {
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
+  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":935
- *         """
- *         if from_steps is None:
- *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1520
+ *     property dtype:
+ *         """ The attribute type as in numpy.dtype """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.dtype
  * 
- *         if nsteps is None:
  */
-    __Pyx_INCREF(__pyx_int_0);
-    __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
 
-  /* "adios_mpi.pyx":937
- *             from_steps = 0 ##self.file.current_step
- * 
- *         if nsteps is None:             # <<<<<<<<<<<<<<
- *             nsteps = self.file.last_step - from_steps + 1
- * 
- */
-  __pyx_t_8 = (__pyx_v_nsteps == Py_None);
-  __pyx_t_7 = (__pyx_t_8 != 0);
-  if (__pyx_t_7) {
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":938
- * 
- *         if nsteps is None:
- *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
- * 
- *         assert self.dtype is not None, 'Data type is not supported yet'
+/* "adios_mpi.pyx":1525
+ *     property value:
+ *         """ The attribute's value """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if (self.value.ndim == 0):
+ *                 return np.asscalar(self.value)
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L4;
-  }
-  __pyx_L4:;
 
-  /* "adios_mpi.pyx":940
- *             nsteps = self.file.last_step - from_steps + 1
- * 
- *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
- *         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))
- */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    __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_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4attr_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4attr_5value_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4attr_5value___get__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
 
-  /* "adios_mpi.pyx":941
- * 
- *         assert self.dtype is not None, 'Data type is not supported yet'
- *         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))
- * 
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1526
+ *         """ The attribute's value """
+ *         def __get__(self):
+ *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
+ *                 return np.asscalar(self.value)
+ *             else:
  */
-  __pyx_t_8 = ((__pyx_v_self->nsteps > 0) != 0);
-  if (__pyx_t_8) {
-  } else {
-    __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_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __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) {
+  __pyx_t_1 = ((__pyx_v_self->value->nd == 0) != 0);
+  if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":942
- *         assert self.dtype is not None, 'Data type is not supported yet'
- *         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)]
+    /* "adios_mpi.pyx":1527
+ *         def __get__(self):
+ *             if (self.value.ndim == 0):
+ *                 return np.asscalar(self.value)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 return self.value
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_from_steps);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_steps);
-    __Pyx_GIVEREF(__pyx_v_from_steps);
-    __Pyx_INCREF(__pyx_v_nsteps);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_nsteps);
-    __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
+    __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_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_t_3 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __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_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L0;
+
+    /* "adios_mpi.pyx":1526
+ *         """ The attribute's value """
+ *         def __get__(self):
+ *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
+ *                 return np.asscalar(self.value)
+ *             else:
+ */
   }
 
-  /* "adios_mpi.pyx":944
- *             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)
+  /* "adios_mpi.pyx":1529
+ *                 return np.asscalar(self.value)
+ *             else:
+ *                 return self.value             # <<<<<<<<<<<<<<
  * 
+ *     def __init__(self, file file, str name):
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
+    __pyx_r = ((PyObject *)__pyx_v_self->value);
+    goto __pyx_L0;
   }
-  __pyx_v_lshape = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":945
- * 
- *         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
+  /* "adios_mpi.pyx":1525
+ *     property value:
+ *         """ The attribute's value """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if (self.value.ndim == 0):
+ *                 return np.asscalar(self.value)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_v_lshape);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_lshape);
-  __Pyx_GIVEREF(__pyx_v_lshape);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_npshape = ((PyArrayObject *)__pyx_t_4);
-  __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":948
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios_mpi.attr.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1531
+ *                 return self.value
  * 
- *         cdef np.ndarray npoffset
- *         if len(offset) == 0:             # <<<<<<<<<<<<<<
- *             npoffset = npshape.copy()
- *             npoffset.fill(0)
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name
  */
-  if (unlikely(__pyx_v_offset == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
-  if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":949
- *         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_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
-      if (likely(__pyx_t_2)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-        __Pyx_INCREF(__pyx_t_2);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_1, function);
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_9adios_mpi_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_9adios_mpi_file *__pyx_v_file = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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;
       }
-    }
-    if (__pyx_t_2) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_file)) != 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("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1531, __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)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __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_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_4);
-    __pyx_t_4 = 0;
+    __pyx_v_file = ((struct __pyx_obj_9adios_mpi_file *)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
+  }
+  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_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)
+  __pyx_r = __pyx_pf_9adios_mpi_4attr___init__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
-    /* "adios_mpi.pyx":950
- *         if len(offset) == 0:
- *             npoffset = npshape.copy()
- *             npoffset.fill(0)             # <<<<<<<<<<<<<<
- *         else:
- *             npoffset = np.array(offset, dtype=np.int64)
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, PyObject *__pyx_v_name) {
+  int64_t __pyx_v_p;
+  ADIOS_DATATYPES __pyx_v_atype;
+  int __pyx_v_bytes;
+  PyObject *__pyx_v_strlist = 0;
+  int __pyx_v_len;
+  int __pyx_v_err;
+  int __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  char const *__pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  struct __pyx_opt_args_9adios_mpi_adios2npdtype __pyx_t_6;
+  size_t __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "adios_mpi.pyx":1532
+ * 
+ *     def __init__(self, file file, str name):
+ *         self.file = file             # <<<<<<<<<<<<<<
+ *         self.name = name
+ * 
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npoffset), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __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;
-    goto __pyx_L10;
-  }
-  /*else*/ {
+  __Pyx_INCREF(((PyObject *)__pyx_v_file));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
+  __Pyx_GOTREF(__pyx_v_self->file);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
+  __pyx_v_self->file = __pyx_v_file;
 
-    /* "adios_mpi.pyx":952
- *             npoffset.fill(0)
- *         else:
- *             npoffset = np.array(offset, dtype=np.int64)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1533
+ *     def __init__(self, file file, str name):
+ *         self.file = file
+ *         self.name = name             # <<<<<<<<<<<<<<
  * 
- *         cdef np.ndarray npcount
+ *         cdef int64_t p
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_v_offset);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_offset);
-    __Pyx_GIVEREF(__pyx_v_offset);
-    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-  }
-  __pyx_L10:;
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
+  __Pyx_GOTREF(__pyx_v_self->name);
+  __Pyx_DECREF(__pyx_v_self->name);
+  __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":955
+  /* "adios_mpi.pyx":1541
+ *         cdef int len
  * 
- *         cdef np.ndarray npcount
- *         if len(count) == 0:             # <<<<<<<<<<<<<<
- *             npcount = npshape - npoffset
- *         else:
+ *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)             # <<<<<<<<<<<<<<
+ * 
+ *         if err == 0:
  */
-  if (unlikely(__pyx_v_count == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
-  if (__pyx_t_7) {
+  __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_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_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":956
- *         cdef np.ndarray npcount
- *         if len(count) == 0:
- *             npcount = npshape - npoffset             # <<<<<<<<<<<<<<
- *         else:
- *             npcount = np.array(count, dtype=np.int64)
+  /* "adios_mpi.pyx":1543
+ *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
+ * 
+ *         if err == 0:             # <<<<<<<<<<<<<<
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
  */
-    __pyx_t_6 = PyNumber_Subtract(((PyObject *)__pyx_v_npshape), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-    goto __pyx_L11;
-  }
-  /*else*/ {
+  __pyx_t_4 = ((__pyx_v_err == 0) != 0);
+  if (__pyx_t_4) {
 
-    /* "adios_mpi.pyx":958
- *             npcount = npshape - npoffset
- *         else:
- *             npcount = np.array(count, dtype=np.int64)             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1544
  * 
- *         if npshape.ndim != npoffset.ndim:
+ *         if err == 0:
+ *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1544, __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_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_INCREF(__pyx_v_count);
-    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_count);
-    __Pyx_GIVEREF(__pyx_v_count);
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 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_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_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_npcount = ((PyArrayObject *)__pyx_t_3);
-    __pyx_t_3 = 0;
-  }
-  __pyx_L11:;
+    if (__pyx_t_4) {
 
-  /* "adios_mpi.pyx":960
- *             npcount = np.array(count, dtype=np.int64)
- * 
- *         if npshape.ndim != npoffset.ndim:             # <<<<<<<<<<<<<<
- *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))
- * 
+      /* "adios_mpi.pyx":1545
+ *         if err == 0:
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal             # <<<<<<<<<<<<<<
+ *             self.dtype = adios2npdtype(atype, bytes)
+ *             if atype == DATATYPE.string_array:
  */
-  __pyx_t_7 = ((__pyx_v_npshape->nd != __pyx_v_npoffset->nd) != 0);
-  if (__pyx_t_7) {
+      __pyx_v_bytes = (__pyx_v_bytes - 1);
 
-    /* "adios_mpi.pyx":961
+      /* "adios_mpi.pyx":1544
  * 
- *         if npshape.ndim != npoffset.ndim:
- *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))             # <<<<<<<<<<<<<<
- * 
- *         if npshape.ndim != npcount.ndim:
+ *         if err == 0:
+ *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)
  */
-    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_npoffset->nd); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+
+    /* "adios_mpi.pyx":1546
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)             # <<<<<<<<<<<<<<
+ *             if atype == DATATYPE.string_array:
+ *                 strlist = list()
+ */
+    __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_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_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->dtype);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
+    __pyx_v_self->dtype = ((PyArray_Descr *)__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_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-
-  /* "adios_mpi.pyx":963
- *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))
- * 
- *         if npshape.ndim != npcount.ndim:             # <<<<<<<<<<<<<<
- *             raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))
- * 
- */
-  __pyx_t_7 = ((__pyx_v_npshape->nd != __pyx_v_npcount->nd) != 0);
-  if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":964
- * 
- *         if npshape.ndim != npcount.ndim:
- *             raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))             # <<<<<<<<<<<<<<
- * 
- *         if (npshape < npcount + npoffset).any():
+    /* "adios_mpi.pyx":1547
+ *                 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_int(__pyx_v_npcount->nd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1547, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
-    __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1547, __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_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_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_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-
-  /* "adios_mpi.pyx":966
- *             raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))
- * 
- *         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_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (__pyx_t_7) {
+    __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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (__pyx_t_4) {
 
-    /* "adios_mpi.pyx":967
- * 
- *         if (npshape < npcount + npoffset).any():
- *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
- * 
- *         shape = list(npcount)
+      /* "adios_mpi.pyx":1548
+ *             self.dtype = adios2npdtype(atype, bytes)
+ *             if atype == DATATYPE.string_array:
+ *                 strlist = list()             # <<<<<<<<<<<<<<
+ *                 len = <int>(bytes/sizeof(p))
+ *                 for i in range(len):
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
+      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1548, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_v_strlist = ((PyObject*)__pyx_t_5);
+      __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":969
- *             raise IndexError('Requested is larger than the shape.')
- * 
- *         shape = list(npcount)             # <<<<<<<<<<<<<<
- *         if (nsteps > 1):
- *             shape.insert(0, nsteps)
+      /* "adios_mpi.pyx":1549
+ *             if atype == DATATYPE.string_array:
+ *                 strlist = list()
+ *                 len = <int>(bytes/sizeof(p))             # <<<<<<<<<<<<<<
+ *                 for i in range(len):
+ *                     strlist.append((<char **>p)[i])
  */
-  __pyx_t_3 = PySequence_List(((PyObject *)__pyx_v_npcount)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_shape = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+      __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_v_len = ((int)(__pyx_v_bytes / __pyx_t_7));
 
-  /* "adios_mpi.pyx":970
- * 
- *         shape = list(npcount)
- *         if (nsteps > 1):             # <<<<<<<<<<<<<<
- *             shape.insert(0, nsteps)
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
+      /* "adios_mpi.pyx":1550
+ *                 strlist = list()
+ *                 len = <int>(bytes/sizeof(p))
+ *                 for i in range(len):             # <<<<<<<<<<<<<<
+ *                     strlist.append((<char **>p)[i])
+ *                 self.value = np.array(strlist)
  */
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (__pyx_t_7) {
+      __pyx_t_8 = __pyx_v_len;
+      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
+        __pyx_v_i = __pyx_t_9;
 
-    /* "adios_mpi.pyx":971
- *         shape = list(npcount)
- *         if (nsteps > 1):
- *             shape.insert(0, nsteps)             # <<<<<<<<<<<<<<
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
- * 
+        /* "adios_mpi.pyx":1551
+ *                 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_11 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L15;
-  }
-  __pyx_L15:;
+        __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_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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
 
-  /* "adios_mpi.pyx":972
- *         if (nsteps > 1):
- *             shape.insert(0, nsteps)
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
+      /* "adios_mpi.pyx":1552
+ *                 for i in range(len):
+ *                     strlist.append((<char **>p)[i])
+ *                 self.value = np.array(strlist)             # <<<<<<<<<<<<<<
+ *                 self.dtype = self.value.dtype
  * 
- *         if len(shape) > 0:
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_INCREF(__pyx_v_shape);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
-  __Pyx_GIVEREF(__pyx_v_shape);
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __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_6); __pyx_t_6 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_var = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
+      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1552, __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_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
+        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+        if (likely(__pyx_t_2)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_1, function);
+        }
+      }
+      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_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_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_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)
+      __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":974
- *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
- * 
- *         if len(shape) > 0:             # <<<<<<<<<<<<<<
- *             var[:] = fill
+      /* "adios_mpi.pyx":1553
+ *                     strlist.append((<char **>p)[i])
+ *                 self.value = np.array(strlist)
+ *                 self.dtype = self.value.dtype             # <<<<<<<<<<<<<<
  * 
+ *             elif self.dtype is None:
  */
-  __pyx_t_5 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((__pyx_t_5 > 0) != 0);
-  if (__pyx_t_7) {
+      __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_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)
+      __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":975
- * 
- *         if len(shape) > 0:
- *             var[:] = fill             # <<<<<<<<<<<<<<
- * 
- *         cdef ADIOS_SELECTION * sel
+      /* "adios_mpi.pyx":1547
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ *             self.dtype = adios2npdtype(atype, bytes)
+ *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
+ *                 strlist = list()
+ *                 len = <int>(bytes/sizeof(p))
  */
-    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_var), __pyx_v_fill, 0, 0, NULL, NULL, &__pyx_slice__16, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L16;
-  }
-  __pyx_L16:;
+      goto __pyx_L5;
+    }
 
-  /* "adios_mpi.pyx":978
- * 
- *         cdef ADIOS_SELECTION * sel
- *         sel = adios_selection_boundingbox (self.vp.ndim, <uint64_t *> npoffset.data, <uint64_t *> npcount.data)             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1555
+ *                 self.dtype = self.value.dtype
  * 
- *         ##print 'npoffset', npoffset
+ *             elif self.dtype is None:             # <<<<<<<<<<<<<<
+ *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
+ *                       (self.name, atype, bytes))
  */
-  __pyx_v_sel = adios_selection_boundingbox(__pyx_v_self->vp->ndim, ((uint64_t *)__pyx_v_npoffset->data), ((uint64_t *)__pyx_v_npcount->data));
+    __pyx_t_4 = (((PyObject *)__pyx_v_self->dtype) == Py_None);
+    __pyx_t_12 = (__pyx_t_4 != 0);
+    if (__pyx_t_12) {
 
-  /* "adios_mpi.pyx":983
- *         ##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_mpi.pyx":1557
+ *             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_9 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __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));
+      __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1557, __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_GOTREF(__pyx_t_1);
+      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_INCREF(__pyx_v_self->name);
+      __Pyx_GIVEREF(__pyx_v_self->name);
+      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_self->name);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_1);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":984
- * 
- *         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_mpi.pyx":1556
  * 
- *         ## Try not to return as scalar to be consistent
+ *             elif self.dtype is None:
+ *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \             # <<<<<<<<<<<<<<
+ *                       (self.name, atype, bytes))
+ *             else:
  */
-  adios_perform_reads(__pyx_v_self->file->fp, 1);
+      __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_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_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_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":991
- *         ##else:
- *         ##    return var
- *         return np.squeeze(var)             # <<<<<<<<<<<<<<
+      /* "adios_mpi.pyx":1555
+ *                 self.dtype = self.value.dtype
  * 
- *     cpdef printself(self):
+ *             elif self.dtype is None:             # <<<<<<<<<<<<<<
+ *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
+ *                       (self.name, atype, bytes))
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_3, function);
+      goto __pyx_L5;
     }
-  }
-  if (!__pyx_t_6) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_var)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
-    __Pyx_INCREF(((PyObject *)__pyx_v_var));
-    PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_var));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_var));
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __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_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":887
- *         self.nsteps = self.vp.nsteps
- * 
- *     cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):             # <<<<<<<<<<<<<<
- *         """ Perform read.
- * 
+    /* "adios_mpi.pyx":1559
+ *                       (self.name, atype, bytes))
+ *             else:
+ *                 len = <int>(bytes/self.dtype.itemsize)             # <<<<<<<<<<<<<<
+ *                 if len == 1:
+ *                     self.value = np.array(len, dtype=self.dtype)
  */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("adios_mpi.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_lshape);
-  __Pyx_XDECREF((PyObject *)__pyx_v_npshape);
-  __Pyx_XDECREF((PyObject *)__pyx_v_npoffset);
-  __Pyx_XDECREF((PyObject *)__pyx_v_npcount);
-  __Pyx_XDECREF(__pyx_v_shape);
-  __Pyx_XDECREF((PyObject *)__pyx_v_var);
-  __Pyx_XDECREF(__pyx_v_from_steps);
-  __Pyx_XDECREF(__pyx_v_nsteps);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_9read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_3var_8read[] = "var.read(self, tuple offset=(), tuple count=(), from_steps=None, nsteps=None, fill=0)\n 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            from_steps (int, optional): starti [...]
-static PyObject *__pyx_pw_9adios_mpi_3var_9read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_offset = 0;
-  PyObject *__pyx_v_count = 0;
-  PyObject *__pyx_v_from_steps = 0;
-  PyObject *__pyx_v_nsteps = 0;
-  PyObject *__pyx_v_fill = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("read (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_count,&__pyx_n_s_from_steps,&__pyx_n_s_nsteps,&__pyx_n_s_fill,0};
-    PyObject* values[5] = {0,0,0,0,0};
-    values[0] = ((PyObject*)__pyx_empty_tuple);
-    values[1] = ((PyObject*)__pyx_empty_tuple);
-    values[2] = ((PyObject *)Py_None);
-    values[3] = ((PyObject *)Py_None);
-    values[4] = ((PyObject *)__pyx_int_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;
+    /*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)
       }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
-          if (value) { values[0] = value; kw_args--; }
-        }
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_from_steps);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsteps);
-          if (value) { values[3] = value; kw_args--; }
-        }
-        case  4:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
-          if (value) { values[4] = value; kw_args--; }
-        }
+      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)
       }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_len = ((int)__Pyx_div_int(__pyx_v_bytes, __pyx_v_self->dtype->elsize));
+
+      /* "adios_mpi.pyx":1560
+ *             else:
+ *                 len = <int>(bytes/self.dtype.itemsize)
+ *                 if len == 1:             # <<<<<<<<<<<<<<
+ *                     self.value = np.array(len, dtype=self.dtype)
+ *                 else:
+ */
+      __pyx_t_12 = ((__pyx_v_len == 1) != 0);
+      if (__pyx_t_12) {
+
+        /* "adios_mpi.pyx":1561
+ *                 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_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_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_GOTREF(__pyx_t_1);
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1561, __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_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)
+        __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)
+        __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
+ *             else:
+ *                 len = <int>(bytes/self.dtype.itemsize)
+ *                 if len == 1:             # <<<<<<<<<<<<<<
+ *                     self.value = np.array(len, dtype=self.dtype)
+ *                 else:
+ */
+        goto __pyx_L8;
       }
-    } 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);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
+
+      /* "adios_mpi.pyx":1563
+ *                     self.value = np.array(len, dtype=self.dtype)
+ *                 else:
+ *                     self.value = np.zeros(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
+ *                 self.value.data = <char *> p
+ *         else:
+ */
+      /*else*/ {
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __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_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_GOTREF(__pyx_t_2);
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1563, __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_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)
+        __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)
+        __Pyx_GIVEREF(__pyx_t_11);
+        __Pyx_GOTREF(__pyx_v_self->value);
+        __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
+        __pyx_v_self->value = ((PyArrayObject *)__pyx_t_11);
+        __pyx_t_11 = 0;
       }
+      __pyx_L8:;
+
+      /* "adios_mpi.pyx":1564
+ *                 else:
+ *                     self.value = np.zeros(len, dtype=self.dtype)
+ *                 self.value.data = <char *> p             # <<<<<<<<<<<<<<
+ *         else:
+ *             raise KeyError(name)
+ */
+      __pyx_v_self->value->data = ((char *)__pyx_v_p);
     }
-    __pyx_v_offset = ((PyObject*)values[0]);
-    __pyx_v_count = ((PyObject*)values[1]);
-    __pyx_v_from_steps = values[2];
-    __pyx_v_nsteps = values[3];
-    __pyx_v_fill = values[4];
+    __pyx_L5:;
+
+    /* "adios_mpi.pyx":1543
+ *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
+ * 
+ *         if err == 0:             # <<<<<<<<<<<<<<
+ *             if atype == DATATYPE.string:
+ *                 bytes = bytes - 1 ## Remove the NULL terminal
+ */
+    goto __pyx_L3;
   }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_9adios_mpi_3var_8read(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), __pyx_v_offset, __pyx_v_count, __pyx_v_from_steps, __pyx_v_nsteps, __pyx_v_fill);
+
+  /* "adios_mpi.pyx":1566
+ *                 self.value.data = <char *> p
+ *         else:
+ *             raise KeyError(name)             # <<<<<<<<<<<<<<
+ * 
+ *     def __getitem__(self, args):
+ */
+  /*else*/ {
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1566, __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_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_L3:;
+
+  /* "adios_mpi.pyx":1531
+ *                 return self.value
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name
+ */
 
   /* function exit code */
+  __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __pyx_r = NULL;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("adios_mpi.attr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_strlist);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_8read(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_count, PyObject *__pyx_v_from_steps, PyObject *__pyx_v_nsteps, PyObject *__pyx_v_fill) {
-  PyObject *__pyx_r = NULL;
+/* "adios_mpi.pyx":1568
+ *             raise KeyError(name)
+ * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         val = self.value[args]
+ *         if (val.ndim == 0):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_4attr_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4attr_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  struct __pyx_opt_args_9adios_mpi_3var_read __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("read", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2.__pyx_n = 5;
-  __pyx_t_2.offset = __pyx_v_offset;
-  __pyx_t_2.count = __pyx_v_count;
-  __pyx_t_2.from_steps = __pyx_v_from_steps;
-  __pyx_t_2.nsteps = __pyx_v_nsteps;
-  __pyx_t_2.fill = __pyx_v_fill;
-  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_4attr_2__getitem__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self), ((PyObject *)__pyx_v_args));
 
   /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":993
- *         return np.squeeze(var)
- * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_VARINFO structure. """
- *         assert self.vp != NULL, 'Not an open variable'
- */
-
-static PyObject *__pyx_pw_9adios_mpi_3var_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, int __pyx_skip_dispatch) {
+static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self, PyObject *__pyx_v_args) {
+  PyObject *__pyx_v_val = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("printself", 0);
-  /* Check if called by wrapper */
-  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_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __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_11printself)) {
-      __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_t_1);
-      __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(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_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __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;
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      goto __pyx_L0;
-    }
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  }
-
-  /* "adios_mpi.pyx":995
- *     cpdef printself(self):
- *         """ Print native ADIOS_VARINFO structure. """
- *         assert self.vp != NULL, 'Not an open variable'             # <<<<<<<<<<<<<<
- *         print '=== AdiosVariable ==='
- *         print '%15s : %lu' % ('vp', <unsigned long> self.vp)
- */
-  #ifndef CYTHON_WITHOUT_ASSERTIONS
-  if (unlikely(!Py_OptimizeFlag)) {
-    if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
-      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_variable);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
-
-  /* "adios_mpi.pyx":996
- *         """ 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)
- */
-  if (__Pyx_PrintOne(0, __pyx_kp_s_AdiosVariable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios_mpi.pyx":997
- *         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_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_vp);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_vp);
-  __Pyx_GIVEREF(__pyx_n_s_vp);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__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_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios_mpi.pyx":998
- *         print '=== AdiosVariable ==='
- *         print '%15s : %lu' % ('vp', <unsigned long> self.vp)
- *         print '%15s : %lu' % ('fp', <unsigned long> self.file.fp)             # <<<<<<<<<<<<<<
- *         printvar(self.vp)
+  /* "adios_mpi.pyx":1569
  * 
+ *     def __getitem__(self, args):
+ *         val = self.value[args]             # <<<<<<<<<<<<<<
+ *         if (val.ndim == 0):
+ *             return np.asscalar(val)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->file->fp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_fp);
-  __Pyx_GIVEREF(__pyx_n_s_fp);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_v_val = __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_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PrintOne(0, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":999
- *         print '%15s : %lu' % ('vp', <unsigned long> self.vp)
- *         print '%15s : %lu' % ('fp', <unsigned long> self.file.fp)
- *         printvar(self.vp)             # <<<<<<<<<<<<<<
- * 
- *     def __repr__(self):
+  /* "adios_mpi.pyx":1570
+ *     def __getitem__(self, args):
+ *         val = self.value[args]
+ *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(val)
+ *         else:
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_printvar(__pyx_v_self->vp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
 
-  /* "adios_mpi.pyx":993
- *         return np.squeeze(var)
- * 
- *     cpdef printself(self):             # <<<<<<<<<<<<<<
- *         """ Print native ADIOS_VARINFO structure. """
- *         assert self.vp != NULL, 'Not an open variable'
+    /* "adios_mpi.pyx":1571
+ *         val = self.value[args]
+ *         if (val.ndim == 0):
+ *             return np.asscalar(val)             # <<<<<<<<<<<<<<
+ *         else:
+ *             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_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_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    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_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_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_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
 
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios_mpi.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_3var_10printself[] = "var.printself(self)\n Print native ADIOS_VARINFO structure. ";
-static PyObject *__pyx_pw_9adios_mpi_3var_11printself(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("printself (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_10printself(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
+    /* "adios_mpi.pyx":1570
+ *     def __getitem__(self, args):
+ *         val = self.value[args]
+ *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
+ *             return np.asscalar(val)
+ *         else:
+ */
+  }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_10printself(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __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_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
+  /* "adios_mpi.pyx":1573
+ *             return np.asscalar(val)
+ *         else:
+ *             return val             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_val);
+    __pyx_r = __pyx_v_val;
+    goto __pyx_L0;
+  }
+
+  /* "adios_mpi.pyx":1568
+ *             raise KeyError(name)
+ * 
+ *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
+ *         val = self.value[args]
+ *         if (val.ndim == 0):
+ */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.var.printself", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios_mpi.attr.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_val);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1001
- *         printvar(self.vp)
+/* "adios_mpi.pyx":1575
+ *             return val
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
+ *                (self.name, self.dtype, self.value)
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_13__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_13__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_4attr_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_4attr_5__repr__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_12__repr__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self));
+  __pyx_r = __pyx_pf_9adios_mpi_4attr_4__repr__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_3var_12__repr__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_4attr_4__repr__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1002
+  /* "adios_mpi.pyx":1576
  * 
  *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \             # <<<<<<<<<<<<<<
- *                (self.varid,
- *                 self.dtype,
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.name, self.dtype, self.value)
+ * 
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1003
+  /* "adios_mpi.pyx":1577
  *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,             # <<<<<<<<<<<<<<
- *                 self.dtype,
- *                 self.ndim,
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios_mpi.pyx":1005
- *                (self.varid,
- *                 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_filename = __pyx_f[0]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "adios_mpi.pyx":1007
- *                 self.ndim,
- *                 self.dims,
- *                 self.nsteps)             # <<<<<<<<<<<<<<
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
+ *                (self.name, self.dtype, self.value)             # <<<<<<<<<<<<<<
  * 
- *     def __getitem__(self, index):
- */
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-
-  /* "adios_mpi.pyx":1003
- *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,             # <<<<<<<<<<<<<<
- *                 self.dtype,
- *                 self.ndim,
+ * cdef class group(dict):
  */
-  __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->name);
+  __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->dtype));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
-  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_v_self->dims);
-  PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_self->dims);
-  __Pyx_GIVEREF(__pyx_v_self->dims);
-  PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 0;
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->dtype));
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
+  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->value));
 
-  /* "adios_mpi.pyx":1002
+  /* "adios_mpi.pyx":1576
  * 
  *     def __repr__(self):
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \             # <<<<<<<<<<<<<<
- *                (self.varid,
- *                 self.dtype,
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
+ *                (self.name, self.dtype, self.value)
+ * 
  */
-  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVar_varid_r_dtype_r_ndim_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __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_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":1001
- *         printvar(self.vp)
+  /* "adios_mpi.pyx":1575
+ *             return val
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
- *                (self.varid,
+ *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
+ *                (self.name, self.dtype, self.value)
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("adios_mpi.var.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.attr.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -13865,2002 +24612,2845 @@ static PyObject *__pyx_pf_9adios_mpi_3var_12__repr__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1009
- *                 self.nsteps)
+/* "adios_mpi.pyx":1593
+ *     cpdef public softdict attrs
  * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name.rstrip('/')
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_3var_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_3var_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_3var_14__getitem__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), ((PyObject *)__pyx_v_index));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static PyObject *__pyx_gb_9adios_mpi_3var_11__getitem___2generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "adios_mpi.pyx":1030
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
- * 
- */
-
-static PyObject *__pyx_pf_9adios_mpi_3var_11__getitem___genexpr(PyObject *__pyx_self) {
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
+static int __pyx_pw_9adios_mpi_5group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_9adios_mpi_5group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_9adios_mpi_file *__pyx_v_file = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_r;
   __Pyx_RefNannyDeclarations
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("genexpr", 0);
-  __pyx_cur_scope = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *)__pyx_tp_new_9adios_mpi___pyx_scope_struct_1_genexpr(__pyx_ptype_9adios_mpi___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __Pyx_GOTREF(__pyx_cur_scope);
-  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *) __pyx_self;
-  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_9adios_mpi_3var_11__getitem___2generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_getitem___locals_genexpr); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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_file)) != 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("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1593, __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)
+      }
+    } 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_file = ((struct __pyx_obj_9adios_mpi_file *)values[0]);
+    __pyx_v_name = ((PyObject*)values[1]);
   }
+  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_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)
+  __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 */
+  goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_AddTraceback("adios_mpi.var.__getitem__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_gb_9adios_mpi_3var_11__getitem___2generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
+static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, PyObject *__pyx_v_name) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
-  PyObject *(*__pyx_t_4)(PyObject *);
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("None", 0);
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_RefNannyFinishContext();
-    return NULL;
+  PyObject *__pyx_t_9 = NULL;
+  Py_ssize_t __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_INCREF(__pyx_v_name);
+
+  /* "adios_mpi.pyx":1594
+ * 
+ *     def __init__(self, file file, str name):
+ *         self.file = file             # <<<<<<<<<<<<<<
+ *         self.name = name.rstrip('/')
+ * 
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_v_file));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
+  __Pyx_GOTREF(__pyx_v_self->file);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
+  __pyx_v_self->file = __pyx_v_file;
+
+  /* "adios_mpi.pyx":1595
+ *     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_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_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)
+  __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
+ *         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_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":1598
+ * 
+ *         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_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  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_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_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_)) { __Pyx_RaiseClosureNameError("index_"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_)) { __Pyx_RaiseClosureNameError("dims_"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_dims_);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
-    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
-    __pyx_t_4 = NULL;
+    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
+    __pyx_t_5 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
-    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1598, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
-    if (likely(!__pyx_t_4)) {
+    if (likely(!__pyx_t_5)) {
       if (likely(PyList_CheckExact(__pyx_t_1))) {
-        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
+        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_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __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, 1598, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __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, 1598, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
-        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        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_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __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, 1598, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __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, 1598, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
     } else {
-      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
+      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
       if (unlikely(!__pyx_t_2)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 1598, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_2);
     }
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_x, __pyx_t_2);
-    __Pyx_GIVEREF(__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)
+    __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_indices); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
+
+    /* "adios_mpi.pyx":1599
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    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_t_2 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios_mpi.pyx":1600
+ *         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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
       }
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_8);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "adios_mpi.pyx":1599
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
     }
-    if (!__pyx_t_7) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_2);
-    } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "adios_mpi.pyx":1601
+ *             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]
+ * 
+ */
+    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_t_2 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1601, __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios_mpi.pyx":1602
+ *                 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_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_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_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_GOTREF(__pyx_t_8);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_11 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
+      }
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_8);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __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)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "adios_mpi.pyx":1601
+ *             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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_r = __pyx_t_2;
-    __pyx_t_2 = 0;
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_RefNannyFinishContext();
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_1);
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
-    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "adios_mpi.pyx":1598
+ * 
+ *         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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Generator_clear((PyObject*)__pyx_generator);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-}
-static PyObject *__pyx_gb_9adios_mpi_3var_11__getitem___5generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
-
-/* "adios_mpi.pyx":1038
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+  /* "adios_mpi.pyx":1604
+ *                 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_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
 
-static PyObject *__pyx_pf_9adios_mpi_3var_11__getitem___3genexpr(PyObject *__pyx_self) {
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *__pyx_cur_scope;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("genexpr", 0);
-  __pyx_cur_scope = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *)__pyx_tp_new_9adios_mpi___pyx_scope_struct_2_genexpr(__pyx_ptype_9adios_mpi___pyx_scope_struct_2_genexpr, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __Pyx_GOTREF(__pyx_cur_scope);
-  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *) __pyx_self;
-  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
-  {
-    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_9adios_mpi_3var_11__getitem___5generator1, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_getitem___locals_genexpr); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_cur_scope);
-    __Pyx_RefNannyFinishContext();
-    return (PyObject *) gen;
+  /* "adios_mpi.pyx":1605
+ * 
+ *         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_GOTREF(__pyx_t_3);
+  __pyx_t_2 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
   }
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("adios_mpi.var.__getitem__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_gb_9adios_mpi_3var_11__getitem___5generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
-{
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *)__pyx_generator->closure);
-  PyObject *__pyx_r = NULL;
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
-  PyObject *(*__pyx_t_4)(PyObject *);
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("None", 0);
-  switch (__pyx_generator->resume_label) {
-    case 0: goto __pyx_L3_first_run;
-    case 1: goto __pyx_L6_resume_from_yield;
-    default: /* CPython raises the right error here */
-    __Pyx_RefNannyFinishContext();
-    return NULL;
+  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_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_L3_first_run:;
-  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_)) { __Pyx_RaiseClosureNameError("index_"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index_);
-  __Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dims);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dims);
-  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dims);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
-    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
-    __pyx_t_4 = NULL;
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
+    __pyx_t_5 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
-    if (likely(!__pyx_t_4)) {
-      if (likely(PyList_CheckExact(__pyx_t_1))) {
-        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
+    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_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __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, 1605, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __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, 1605, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
-        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __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, 1605, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __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, 1605, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
     } else {
-      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
-      if (unlikely(!__pyx_t_2)) {
+      __pyx_t_1 = __pyx_t_5(__pyx_t_3);
+      if (unlikely(!__pyx_t_1)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 1605, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_GOTREF(__pyx_t_1);
     }
-    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x);
-    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_x, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    __pyx_t_2 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_indices); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
-      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-      if (likely(__pyx_t_7)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-        __Pyx_INCREF(__pyx_t_7);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_6, function);
+    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)
+    __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
+    __pyx_t_1 = 0;
+
+    /* "adios_mpi.pyx":1606
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
+    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_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios_mpi.pyx":1607
+ *         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_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_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_GOTREF(__pyx_t_9);
+      __pyx_t_8 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_8)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_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;
       }
+      __Pyx_GIVEREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_9);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+      /* "adios_mpi.pyx":1606
+ *         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]
+ *             if name.startswith('/' + self.name + '/'):
+ */
     }
-    if (!__pyx_t_7) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "adios_mpi.pyx":1608
+ *             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]
+ * 
+ */
+    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_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1608, __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if ((__pyx_t_6 != 0)) {
+
+      /* "adios_mpi.pyx":1609
+ *                 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_GOTREF(__pyx_t_2);
-    } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_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_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_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_11 = NULL;
+      __pyx_t_10 = 0;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __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_GOTREF(__pyx_t_8);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
+      if (__pyx_t_11) {
+        __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_t_9);
+      __Pyx_INCREF(__pyx_kp_s__10);
+      __Pyx_GIVEREF(__pyx_kp_s__10);
+      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_kp_s__10);
+      __Pyx_INCREF(__pyx_int_1);
+      __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_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)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "adios_mpi.pyx":1608
+ *             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_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_r = __pyx_t_2;
-    __pyx_t_2 = 0;
-    __Pyx_XGIVEREF(__pyx_t_1);
-    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
-    __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
-    __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
-    __Pyx_XGIVEREF(__pyx_r);
-    __Pyx_RefNannyFinishContext();
-    /* return from generator, yielding value */
-    __pyx_generator->resume_label = 1;
-    return __pyx_r;
-    __pyx_L6_resume_from_yield:;
-    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
-    __pyx_cur_scope->__pyx_t_0 = 0;
-    __Pyx_XGOTREF(__pyx_t_1);
-    __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
-    __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
-    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "adios_mpi.pyx":1605
+ * 
+ *         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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios_mpi.pyx":1593
+ *     cpdef public softdict attrs
+ * 
+ *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
+ *         self.file = file
+ *         self.name = name.rstrip('/')
+ */
 
   /* function exit code */
-  PyErr_SetNone(PyExc_StopIteration);
+  __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_7);
   __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("adios_mpi.group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_generator->resume_label = -1;
-  __Pyx_Generator_clear((PyObject*)__pyx_generator);
+  __Pyx_XDECREF(__pyx_v_name);
   __Pyx_RefNannyFinishContext();
-  return NULL;
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1611
+ *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
+ * 
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_5group_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static char __pyx_doc_9adios_mpi_5group_2__getitem__[] = "\n        Return Adios variable, attribute, or group.\n\n        Args:\n            varname (str): variable or attribute name.\n\n        Raises:\n            KeyError: If no name exists.\n\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_9adios_mpi_5group_2__getitem__;
+#endif
+static PyObject *__pyx_pw_9adios_mpi_5group_3__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_2__getitem__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1009
- *                 self.nsteps)
- * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
- */
-
-static PyObject *__pyx_pf_9adios_mpi_3var_14__getitem__(struct __pyx_obj_9adios_mpi_var *__pyx_v_self, PyObject *__pyx_v_index) {
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *__pyx_cur_scope;
-  PyObject *__pyx_v_ndim_ = NULL;
-  PyObject *__pyx_v_slice_ = NULL;
-  PyObject *__pyx_v_indices = NULL;
-  PyObject *__pyx_v_z = NULL;
-  PyObject *__pyx_v_from_steps_ = NULL;
-  PyObject *__pyx_v_nsteps_ = NULL;
-  PyObject *__pyx_v_offset_ = NULL;
-  PyObject *__pyx_v_count_ = NULL;
+static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_varname) {
+  PyObject *__pyx_v_key_ = NULL;
+  PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_1;
   int __pyx_t_2;
-  int __pyx_t_3;
+  PyObject *__pyx_t_3 = NULL;
   Py_ssize_t __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   PyObject *(*__pyx_t_6)(PyObject *);
-  int __pyx_t_7;
-  int __pyx_t_8;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_ssize_t __pyx_t_11;
+  PyObject *(*__pyx_t_12)(PyObject *);
   PyObject *__pyx_t_13 = NULL;
-  struct __pyx_opt_args_9adios_mpi_3var_read __pyx_t_14;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getitem__", 0);
-  __pyx_cur_scope = (struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)__pyx_tp_new_9adios_mpi___pyx_scope_struct____getitem__(__pyx_ptype_9adios_mpi___pyx_scope_struct____getitem__, __pyx_empty_tuple, NULL);
-  if (unlikely(!__pyx_cur_scope)) {
-    __Pyx_RefNannyFinishContext();
-    return NULL;
-  }
-  __Pyx_GOTREF(__pyx_cur_scope);
-  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
-  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
-  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios_mpi.pyx":1010
+  /* "adios_mpi.pyx":1622
  * 
- *     def __getitem__(self, index):
- *         ndim_ = self.ndim             # <<<<<<<<<<<<<<
- *         if (self.nsteps) > 1: ndim_ += 1
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_ndim_ = __pyx_t_1;
-  __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_Check(__pyx_v_varname); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
 
-  /* "adios_mpi.pyx":1011
- *     def __getitem__(self, index):
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1623
+ *         """
+ *         if not isinstance(varname, tuple):
+ *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
- *         index_ = __parse_index(index, ndim_)
+ *         if len(varname) > 1:
  */
-  __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_self->nsteps > 1) != 0);
-  if (__pyx_t_2) {
-    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_ndim_, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF_SET(__pyx_v_ndim_, __pyx_t_1);
-    __pyx_t_1 = 0;
-    goto __pyx_L3;
-  }
-  __pyx_L3:;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1623, __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_DECREF_SET(__pyx_v_varname, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1013
- *         if (self.nsteps) > 1: ndim_ += 1
+    /* "adios_mpi.pyx":1622
  * 
- *         index_ = __parse_index(index, ndim_)             # <<<<<<<<<<<<<<
+ *         """
+ *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
+ *             varname = (varname,)
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi___parse_index(__pyx_v_index, __pyx_v_ndim_, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_cur_scope->__pyx_v_index_ = __pyx_t_1;
-  __pyx_t_1 = 0;
+  }
 
-  /* "adios_mpi.pyx":1015
- *         index_ = __parse_index(index, ndim_)
+  /* "adios_mpi.pyx":1625
+ *             varname = (varname,)
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):             # <<<<<<<<<<<<<<
- *             raise IndexError("Too many indices for data")
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
  * 
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_ndim_, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_3) {
-  } else {
-    __pyx_t_2 = __pyx_t_3;
-    goto __pyx_L5_bool_binop_done;
-  }
-  __pyx_t_1 = __pyx_cur_scope->__pyx_v_index_;
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_v_ndim_, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_2 = __pyx_t_3;
-  __pyx_L5_bool_binop_done:;
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1625, __pyx_L1_error)
+  __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1016
+    /* "adios_mpi.pyx":1626
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *         if len(varname) > 1:
+ *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
+ *         for key_ in varname:
  */
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1626, __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_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_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-
-  /* "adios_mpi.pyx":1018
- *             raise IndexError("Too many indices for data")
- * 
- *         if (ndim_ == 0) and (len(index_) > 1):             # <<<<<<<<<<<<<<
- *             raise IndexError("Too many indices for data")
- * 
- */
-  __pyx_t_5 = PyObject_RichCompare(__pyx_v_ndim_, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (__pyx_t_3) {
-  } else {
-    __pyx_t_2 = __pyx_t_3;
-    goto __pyx_L8_bool_binop_done;
-  }
-  __pyx_t_5 = __pyx_cur_scope->__pyx_v_index_;
-  __Pyx_INCREF(__pyx_t_5);
-  __pyx_t_4 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = ((__pyx_t_4 > 1) != 0);
-  __pyx_t_2 = __pyx_t_3;
-  __pyx_L8_bool_binop_done:;
-  if (__pyx_t_2) {
+    __PYX_ERR(0, 1626, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1019
+    /* "adios_mpi.pyx":1625
+ *             varname = (varname,)
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *         if len(varname) > 1:             # <<<<<<<<<<<<<<
+ *             raise KeyError(varname)
  * 
- *         for slice_ in index_:
  */
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "adios_mpi.pyx":1021
- *             raise IndexError("Too many indices for data")
+  /* "adios_mpi.pyx":1628
+ *             raise KeyError(varname)
  * 
- *         for slice_ in index_:             # <<<<<<<<<<<<<<
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
-  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_index_)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_index_)) {
-    __pyx_t_5 = __pyx_cur_scope->__pyx_v_index_; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
+  if (likely(PyList_CheckExact(__pyx_v_varname)) || PyTuple_CheckExact(__pyx_v_varname)) {
+    __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_cur_scope->__pyx_v_index_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1628, __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_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __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, 1628, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __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, 1628, __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_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __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, 1628, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __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, 1628, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
     } else {
-      __pyx_t_1 = __pyx_t_6(__pyx_t_5);
-      if (unlikely(!__pyx_t_1)) {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_5);
+      if (unlikely(!__pyx_t_3)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 1628, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_GOTREF(__pyx_t_3);
     }
-    __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_1);
-    __pyx_t_1 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
+    __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1022
+    /* "adios_mpi.pyx":1629
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
+ * 
+ */
+    __pyx_t_2 = PyString_Check(__pyx_v_key_); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":1630
+ *         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_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)
+
+      /* "adios_mpi.pyx":1629
+ * 
+ *         for key_ in varname:
+ *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Unhashable type")
  * 
- *         for slice_ in index_:
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):             # <<<<<<<<<<<<<<
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- *             if isinstance(slice_, str):
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice_, __pyx_n_s_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = PyInt_Check(__pyx_t_1); 
-    __pyx_t_8 = (__pyx_t_7 != 0);
-    if (!__pyx_t_8) {
-    } else {
-      __pyx_t_3 = __pyx_t_8;
-      goto __pyx_L15_bool_binop_done;
     }
-    __pyx_t_8 = PyLong_Check(__pyx_t_1); 
-    __pyx_t_7 = (__pyx_t_8 != 0);
-    __pyx_t_3 = __pyx_t_7;
-    __pyx_L15_bool_binop_done:;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = (__pyx_t_3 != 0);
-    if (__pyx_t_7) {
+
+    /* "adios_mpi.pyx":1632
+ *                 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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":1633
+ * 
+ *             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_GOTREF(__pyx_t_7);
+      __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
+      __pyx_t_7 = 0;
+
+      /* "adios_mpi.pyx":1632
+ *                 raise TypeError("Unhashable type")
+ * 
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":1635
+ *                 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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1635, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_2 = __pyx_t_7;
-      goto __pyx_L13_bool_binop_done;
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1635, __pyx_L1_error)
     }
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice_, __pyx_n_s_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = PyObject_RichCompare(__pyx_t_1, __pyx_int_1, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_2 = __pyx_t_7;
-    __pyx_L13_bool_binop_done:;
+    __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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":1023
- *         for slice_ in index_:
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))             # <<<<<<<<<<<<<<
- *             if isinstance(slice_, str):
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))
+      /* "adios_mpi.pyx":1636
+ * 
+ *             if key_ in self.vars.keys():
+ *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":1635
+ *                 key_ = key_[1:]
+ * 
+ *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get(key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":1638
+ *                 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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":1639
+ * 
+ *             if key_ in self.attrs.keys():
+ *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
+ * 
+ *             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_GOTREF(__pyx_t_3);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
+
+      /* "adios_mpi.pyx":1638
+ *                 return self.vars.get(key_)
+ * 
+ *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get(key_)
+ * 
+ */
+    }
+
+    /* "adios_mpi.pyx":1641
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get('/'+key_)
+ * 
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice_, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Step_size_d_is_not_supported, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1641, __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_GOTREF(__pyx_t_8);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+      }
+    }
+    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_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    } else {
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __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_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":1024
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- *             if isinstance(slice_, str):             # <<<<<<<<<<<<<<
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))
+      /* "adios_mpi.pyx":1642
+ * 
+ *             if '/'+key_ in self.vars.keys():
+ *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
  * 
+ *             if '/'+key_ in self.attrs.keys():
  */
-    __pyx_t_2 = PyString_Check(__pyx_v_slice_); 
-    __pyx_t_7 = (__pyx_t_2 != 0);
-    if (__pyx_t_7) {
+      __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_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_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_r = __pyx_t_3;
+      __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1025
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- *             if isinstance(slice_, str):
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))             # <<<<<<<<<<<<<<
+      /* "adios_mpi.pyx":1641
+ *                 return self.attrs.get(key_)
+ * 
+ *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
+ *                 return self.vars.get('/'+key_)
  * 
- *         if (self.nsteps) > 1:
  */
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Name_index_r_is_not_supported, __pyx_v_slice_); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "adios_mpi.pyx":1021
- *             raise IndexError("Too many indices for data")
+    /* "adios_mpi.pyx":1644
+ *                 return self.vars.get('/'+key_)
  * 
- *         for slice_ in index_:             # <<<<<<<<<<<<<<
- *             if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
- *                 raise IndexError("Step size (%d) is not supported." % (slice_.step))
- */
-  }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
-  /* "adios_mpi.pyx":1027
- *                 raise IndexError("Name index (%r) is not supported." % (slice_))
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
  * 
- *         if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
  */
-  __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_self->nsteps > 1) != 0);
-  if (__pyx_t_7) {
+    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1644, __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_GOTREF(__pyx_t_10);
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_10, function);
+      }
+    }
+    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_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_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_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":1028
+      /* "adios_mpi.pyx":1645
+ * 
+ *             if '/'+key_ in self.attrs.keys():
+ *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
  * 
- *         if (self.nsteps) > 1:
- *             dims_ = list(self.dims)             # <<<<<<<<<<<<<<
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
+ *             for name in self.vars.keys():
  */
-    __pyx_t_5 = PySequence_List(__pyx_cur_scope->__pyx_v_self->dims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_5);
-    __pyx_cur_scope->__pyx_v_dims_ = ((PyObject*)__pyx_t_5);
-    __pyx_t_5 = 0;
+      __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_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_GOTREF(__pyx_t_10);
+      __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_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1645, __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_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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1029
- *         if (self.nsteps) > 1:
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)             # <<<<<<<<<<<<<<
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
- *             z = zip(*indices)
+      /* "adios_mpi.pyx":1644
+ *                 return self.vars.get('/'+key_)
+ * 
+ *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
+ *                 return self.attrs.get('/'+key_)
+ * 
  */
-    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_10 = PyList_Insert(__pyx_cur_scope->__pyx_v_dims_, 0, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
 
-    /* "adios_mpi.pyx":1030
- *             dims_ = list(self.dims)
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+    /* "adios_mpi.pyx":1647
+ *                 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_5 = __pyx_pf_9adios_mpi_3var_11__getitem___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_indices = ((PyObject*)__pyx_t_1);
-    __pyx_t_1 = 0;
+    __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_GOTREF(__pyx_t_3);
+    __pyx_t_9 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    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_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_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+      __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_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_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_12(__pyx_t_3);
+        if (unlikely(!__pyx_t_7)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
+      __pyx_t_7 = 0;
 
-    /* "adios_mpi.pyx":1031
- *             dims_.insert(0, self.nsteps)
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
- *             z = zip(*indices)             # <<<<<<<<<<<<<<
+      /* "adios_mpi.pyx":1649
+ *             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_)
  * 
- *             from_steps_ = z[0][0]
  */
-    __pyx_t_1 = PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_v_z = __pyx_t_5;
-    __pyx_t_5 = 0;
+      __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_GOTREF(__pyx_t_9);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+        }
+      }
+      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_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_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_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_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":1033
- *             z = zip(*indices)
+        /* "adios_mpi.pyx":1650
+ *                 #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_)             # <<<<<<<<<<<<<<
  * 
- *             from_steps_ = z[0][0]             # <<<<<<<<<<<<<<
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]
+ *             for name in self.attrs.keys():
  */
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_from_steps_ = __pyx_t_1;
-    __pyx_t_1 = 0;
+        __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_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_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_GOTREF(__pyx_t_7);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
+        PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_self->file));
+        __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_GOTREF(__pyx_t_9);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_r = __pyx_t_9;
+        __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1034
+        /* "adios_mpi.pyx":1649
+ *             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_)
  * 
- *             from_steps_ = z[0][0]
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1             # <<<<<<<<<<<<<<
- *             offset_ = z[0][1:]
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
  */
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Subtract(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = PyNumber_Subtract(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyNumber_Remainder(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_nsteps_ = __pyx_t_1;
-    __pyx_t_1 = 0;
+      }
 
-    /* "adios_mpi.pyx":1035
- *             from_steps_ = z[0][0]
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]             # <<<<<<<<<<<<<<
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
+      /* "adios_mpi.pyx":1647
+ *                 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_1 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__19, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_v_offset_ = __pyx_t_5;
-    __pyx_t_5 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1036
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)             # <<<<<<<<<<<<<<
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
+    /* "adios_mpi.pyx":1652
+ *                     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_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_subtract); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __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, 1652, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__20, 1, 0, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_11);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__21, 1, 0, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = NULL;
-    __pyx_t_4 = 0;
-    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
-      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
-      if (likely(__pyx_t_1)) {
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_7)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
         __Pyx_INCREF(function);
         __Pyx_DECREF_SET(__pyx_t_9, function);
-        __pyx_t_4 = 1;
       }
-    }
-    __pyx_t_13 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    if (__pyx_t_1) {
-      PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
-    }
-    PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_4, __pyx_t_11);
-    __Pyx_GIVEREF(__pyx_t_11);
-    PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_4, __pyx_t_12);
-    __Pyx_GIVEREF(__pyx_t_12);
-    __pyx_t_11 = 0;
-    __pyx_t_12 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = PyNumber_Subtract(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_9);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyList_GetSlice(__pyx_cur_scope->__pyx_v_dims_, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_13 = PyNumber_Remainder(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyNumber_Add(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_t_13 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_count_ = ((PyObject*)__pyx_t_13);
-    __pyx_t_13 = 0;
-    goto __pyx_L18;
-  }
-  /*else*/ {
+    }
+    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_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_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+      __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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    for (;;) {
+      if (likely(!__pyx_t_12)) {
+        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)
+          #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_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)
+          #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_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_12(__pyx_t_9);
+        if (unlikely(!__pyx_t_3)) {
+          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)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
+      __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1038
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))             # <<<<<<<<<<<<<<
- *             z = zip(*indices)
+      /* "adios_mpi.pyx":1654
+ *             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_13 = __pyx_pf_9adios_mpi_3var_11__getitem___3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_5 = PySequence_Tuple(__pyx_t_13); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-    __pyx_v_indices = ((PyObject*)__pyx_t_5);
-    __pyx_t_5 = 0;
+      __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_GOTREF(__pyx_t_7);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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_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_GOTREF(__pyx_t_8);
+      __pyx_t_13 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_7, function);
+        }
+      }
+      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_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_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_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_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":1039
- *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
- *             z = zip(*indices)             # <<<<<<<<<<<<<<
+        /* "adios_mpi.pyx":1655
+ *                 #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_)             # <<<<<<<<<<<<<<
  * 
- *             if len(z) == 0:
+ *         raise KeyError(key_)
  */
-    __pyx_t_5 = PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_13);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_v_z = __pyx_t_13;
-    __pyx_t_13 = 0;
+        __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_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_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_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->file));
+        __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_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __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;
+        goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1041
- *             z = zip(*indices)
+        /* "adios_mpi.pyx":1654
+ *             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_)
  * 
- *             if len(z) == 0:             # <<<<<<<<<<<<<<
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps
  */
-    __pyx_t_4 = PyObject_Length(__pyx_v_z); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_7 = ((__pyx_t_4 == 0) != 0);
-    if (__pyx_t_7) {
+      }
 
-      /* "adios_mpi.pyx":1042
+      /* "adios_mpi.pyx":1652
+ *                     return group(self.file, self.name + '/' + key_)
  * 
- *             if len(z) == 0:
- *                 from_steps_ = 0             # <<<<<<<<<<<<<<
- *                 nsteps_ = self.nsteps
- *                 offset_ = ()
+ *             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_INCREF(__pyx_int_0);
-      __pyx_v_from_steps_ = __pyx_int_0;
-
-      /* "adios_mpi.pyx":1043
- *             if len(z) == 0:
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps             # <<<<<<<<<<<<<<
- *                 offset_ = ()
- *                 count_ = ()
- */
-      __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_v_nsteps_ = __pyx_t_13;
-      __pyx_t_13 = 0;
-
-      /* "adios_mpi.pyx":1044
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps
- *                 offset_ = ()             # <<<<<<<<<<<<<<
- *                 count_ = ()
- *             else:
- */
-      __Pyx_INCREF(__pyx_empty_tuple);
-      __pyx_v_offset_ = __pyx_empty_tuple;
-
-      /* "adios_mpi.pyx":1045
- *                 nsteps_ = self.nsteps
- *                 offset_ = ()
- *                 count_ = ()             # <<<<<<<<<<<<<<
- *             else:
- *                 from_steps_ = 0
- */
-      __Pyx_INCREF(__pyx_empty_tuple);
-      __pyx_v_count_ = __pyx_empty_tuple;
-      goto __pyx_L19;
     }
-    /*else*/ {
-
-      /* "adios_mpi.pyx":1047
- *                 count_ = ()
- *             else:
- *                 from_steps_ = 0             # <<<<<<<<<<<<<<
- *                 nsteps_ = self.nsteps
- *                 offset_ = z[0]
- */
-      __Pyx_INCREF(__pyx_int_0);
-      __pyx_v_from_steps_ = __pyx_int_0;
-
-      /* "adios_mpi.pyx":1048
- *             else:
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps             # <<<<<<<<<<<<<<
- *                 offset_ = z[0]
- *                 count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)
- */
-      __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->nsteps); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_v_nsteps_ = __pyx_t_13;
-      __pyx_t_13 = 0;
-
-      /* "adios_mpi.pyx":1049
- *                 from_steps_ = 0
- *                 nsteps_ = self.nsteps
- *                 offset_ = z[0]             # <<<<<<<<<<<<<<
- *                 count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)
- * 
- */
-      __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_v_offset_ = __pyx_t_13;
-      __pyx_t_13 = 0;
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "adios_mpi.pyx":1050
- *                 nsteps_ = self.nsteps
- *                 offset_ = z[0]
- *                 count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1628
+ *             raise KeyError(varname)
  * 
- *         ##print "from_steps", from_steps_
+ *         for key_ in varname:             # <<<<<<<<<<<<<<
+ *             if not isinstance(key_, str):
+ *                 raise TypeError("Unhashable type")
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_subtract); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_z, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_z, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_11 = NULL;
-      __pyx_t_4 = 0;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
-        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
-        if (likely(__pyx_t_11)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-          __Pyx_INCREF(__pyx_t_11);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_9, function);
-          __pyx_t_4 = 1;
-        }
-      }
-      __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      if (__pyx_t_11) {
-        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL;
-      }
-      PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_12);
-      __pyx_t_5 = 0;
-      __pyx_t_12 = 0;
-      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyNumber_Subtract(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = PyNumber_Remainder(__pyx_t_9, __pyx_cur_scope->__pyx_v_self->dims); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyNumber_Add(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = PySequence_Tuple(__pyx_t_9); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_v_count_ = ((PyObject*)__pyx_t_13);
-      __pyx_t_13 = 0;
-    }
-    __pyx_L19:;
   }
-  __pyx_L18:;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1057
- *         ##print "count", count_
+  /* "adios_mpi.pyx":1657
+ *                     return group(self.file, self.name + '/' + key_)
  * 
- *         return self.read(offset=offset_,             # <<<<<<<<<<<<<<
- *                          count=count_,
- *                          from_steps=from_steps_,
+ *         raise KeyError(key_)             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
  */
-  __Pyx_XDECREF(__pyx_r);
-  if (!(likely(PyTuple_CheckExact(__pyx_v_offset_))||((__pyx_v_offset_) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_offset_)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-  /* "adios_mpi.pyx":1060
- *                          count=count_,
- *                          from_steps=from_steps_,
- *                          nsteps=nsteps_)             # <<<<<<<<<<<<<<
- * 
- * cdef class attr:
- */
-  __pyx_t_14.__pyx_n = 4;
-  __pyx_t_14.offset = ((PyObject*)__pyx_v_offset_);
-  __pyx_t_14.count = __pyx_v_count_;
-  __pyx_t_14.from_steps = __pyx_v_from_steps_;
-  __pyx_t_14.nsteps = __pyx_v_nsteps_;
-  __pyx_t_13 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->read(__pyx_cur_scope->__pyx_v_self, 0, &__pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_r = __pyx_t_13;
-  __pyx_t_13 = 0;
-  goto __pyx_L0;
+  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)
+  __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_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)
 
-  /* "adios_mpi.pyx":1009
- *                 self.nsteps)
+  /* "adios_mpi.pyx":1611
+ *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  * 
- *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
- *         ndim_ = self.ndim
- *         if (self.nsteps) > 1: ndim_ += 1
+ *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
+ *         """
+ *         Return Adios variable, attribute, or group.
  */
 
   /* 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_8);
   __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_10);
   __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_AddTraceback("adios_mpi.var.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.group.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_ndim_);
-  __Pyx_XDECREF(__pyx_v_slice_);
-  __Pyx_XDECREF(__pyx_v_indices);
-  __Pyx_XDECREF(__pyx_v_z);
-  __Pyx_XDECREF(__pyx_v_from_steps_);
-  __Pyx_XDECREF(__pyx_v_nsteps_);
-  __Pyx_XDECREF(__pyx_v_offset_);
-  __Pyx_XDECREF(__pyx_v_count_);
-  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
+  __Pyx_XDECREF(__pyx_v_key_);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_varname);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1084
- *     property name:
- *         """ The attribute name """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+/* "adios_mpi.pyx":1659
+ *         raise KeyError(key_)
  * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4attr_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4attr_4name_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_5group_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_9adios_mpi_5group_4__repr__[] = " Return string representation. ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_9adios_mpi_5group_4__repr__;
+#endif
+static PyObject *__pyx_pw_9adios_mpi_5group_5__repr__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4attr_4name___get__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_4__repr__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1085
- *         """ The attribute name """
- *         def __get__(self):
- *             return self.name             # <<<<<<<<<<<<<<
- * 
- *     property dtype:
+  /* "adios_mpi.pyx":1661
+ *     def __repr__(self):
+ *         """ Return string representation. """
+ *         return ("AdiosGroup (vars=%r, attrs=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.vars.keys(),
+ *                  self.attrs.keys())
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->name);
-  __pyx_r = __pyx_v_self->name;
+
+  /* "adios_mpi.pyx":1662
+ *         """ 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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":1663
+ *         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_GOTREF(__pyx_t_3);
+  __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, 1663, __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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "adios_mpi.pyx":1662
+ *         """ 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_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":1661
+ *     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_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":1084
- *     property name:
- *         """ The attribute name """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.name
+  /* "adios_mpi.pyx":1659
+ *         raise KeyError(key_)
  * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         """ Return string representation. """
+ *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.group.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1089
- *     property dtype:
- *         """ The attribute type as in numpy.dtype """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
+/* "adios_mpi.pyx":1666
+ * 
+ *     ## To support ipython tab completion
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4attr_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4attr_5dtype_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_5group_7__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_5group_7__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4attr_5dtype___get__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_6__getattr__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self), ((PyObject *)__pyx_v_varname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_varname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios_mpi.pyx":1090
- *         """ The attribute type as in numpy.dtype """
- *         def __get__(self):
- *             return self.dtype             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1667
+ *     ## To support ipython tab completion
+ *     def __getattr__(self, varname):
+ *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
  * 
- *     property value:
+ *     def __dir__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  __pyx_r = ((PyObject *)__pyx_v_self->dtype);
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1089
- *     property dtype:
- *         """ The attribute type as in numpy.dtype """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.dtype
+  /* "adios_mpi.pyx":1666
+ * 
+ *     ## To support ipython tab completion
+ *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
+ *         return self.__getitem__(varname)
  * 
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.group.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1094
- *     property value:
- *         """ The attribute's value """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.value
+/* "adios_mpi.pyx":1669
+ *         return self.__getitem__(varname)
  * 
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         k1 = normalize_key(self.vars.keys())
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4attr_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4attr_5value_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_5group_9__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_5group_8__dir__[] = "group.__dir__(self)";
+static PyObject *__pyx_pw_9adios_mpi_5group_9__dir__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4attr_5value___get__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__dir__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_8__dir__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
+  PyObject *__pyx_v_k0 = NULL;
+  PyObject *__pyx_v_k1 = NULL;
+  PyObject *__pyx_v_k2 = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios_mpi.pyx":1095
- *         """ The attribute's value """
- *         def __get__(self):
- *             return self.value             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1670
  * 
- *     def __init__(self, file file, char * name):
+ *     def __dir__(self):
+ *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
+ *         k1 = normalize_key(self.vars.keys())
+ *         k2 = normalize_key(self.attrs.keys())
  */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
-  __pyx_r = ((PyObject *)__pyx_v_self->value);
-  goto __pyx_L0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_v_k0 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1094
- *     property value:
- *         """ The attribute's value """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.value
- * 
+  /* "adios_mpi.pyx":1671
+ *     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_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_GOTREF(__pyx_t_4);
+  __pyx_t_5 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(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_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1671, __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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k1 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":1097
- *             return self.value
+  /* "adios_mpi.pyx":1672
+ *         k0 = dir(type(self))
+ *         k1 = normalize_key(self.vars.keys())
+ *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
+ *         return k0 + k1 + k2
  * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.name = name
  */
-
-/* Python wrapper */
-static int __pyx_pw_9adios_mpi_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_9adios_mpi_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct __pyx_obj_9adios_mpi_file *__pyx_v_file = 0;
-  char *__pyx_v_name;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,&__pyx_n_s_name,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_file)) != 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("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __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_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __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_GOTREF(__pyx_t_3);
+  __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);
     }
-    __pyx_v_file = ((struct __pyx_obj_9adios_mpi_file *)values[0]);
-    __pyx_v_name = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __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);
+  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_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_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_k2 = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* function exit code */
+  /* "adios_mpi.pyx":1673
+ *         k1 = normalize_key(self.vars.keys())
+ *         k2 = normalize_key(self.attrs.keys())
+ *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
+ * 
+ *     ## 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_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_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
+ *         return self.__getitem__(varname)
+ * 
+ *     def __dir__(self):             # <<<<<<<<<<<<<<
+ *         k0 = dir(type(self))
+ *         k1 = normalize_key(self.vars.keys())
+ */
+
+  /* function exit code */
   __pyx_L1_error:;
-  __pyx_r = -1;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("adios_mpi.group.__dir__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_k0);
+  __Pyx_XDECREF(__pyx_v_k1);
+  __Pyx_XDECREF(__pyx_v_k2);
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self, struct __pyx_obj_9adios_mpi_file *__pyx_v_file, char *__pyx_v_name) {
-  int64_t __pyx_v_p;
-  ADIOS_DATATYPES __pyx_v_atype;
-  int __pyx_v_bytes;
-  PyObject *__pyx_v_strlist = 0;
-  int __pyx_v_len;
-  int __pyx_v_err;
-  int __pyx_v_i;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  char const *__pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  struct __pyx_opt_args_9adios_mpi_adios2npdtype __pyx_t_6;
-  size_t __pyx_t_7;
-  int __pyx_t_8;
-  int __pyx_t_9;
-  int __pyx_t_10;
-  PyObject *__pyx_t_11 = NULL;
-  int __pyx_t_12;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
+  return __pyx_r;
+}
 
-  /* "adios_mpi.pyx":1098
+/* "adios_mpi.pyx":1676
  * 
- *     def __init__(self, file file, char * name):
- *         self.file = file             # <<<<<<<<<<<<<<
- *         self.name = name
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
  * 
  */
-  __Pyx_INCREF(((PyObject *)__pyx_v_file));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_file));
-  __Pyx_GOTREF(__pyx_v_self->file);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
-  __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios_mpi.pyx":1099
- *     def __init__(self, file file, char * name):
- *         self.file = file
- *         self.name = name             # <<<<<<<<<<<<<<
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_5group_11keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_5group_10keys[] = "group.keys(self)";
+static PyObject *__pyx_pw_9adios_mpi_5group_11keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_10keys(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("keys", 0);
+
+  /* "adios_mpi.pyx":1677
+ *     ## Require for dictionary key completion
+ *     def keys(self):
+ *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
  * 
- *         cdef int64_t p
+ *     def dirs(self):
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
-  __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;
+  __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_GOTREF(__pyx_t_3);
+  __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, 1677, __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_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_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1107
- *         cdef int len
+  /* "adios_mpi.pyx":1676
  * 
- *         err = adios_get_attr(self.file.fp, self.name, &atype, &bytes, <void **> &p)             # <<<<<<<<<<<<<<
+ *     ## Require for dictionary key completion
+ *     def keys(self):             # <<<<<<<<<<<<<<
+ *         return self.vars.keys() + self.attrs.keys()
  * 
- *         if err == 0:
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_err = adios_get_attr(__pyx_v_self->file->fp, __pyx_t_2, (&__pyx_v_atype), (&__pyx_v_bytes), ((void **)(&__pyx_v_p)));
 
-  /* "adios_mpi.pyx":1109
- *         err = adios_get_attr(self.file.fp, self.name, &atype, &bytes, <void **> &p)
- * 
- *         if err == 0:             # <<<<<<<<<<<<<<
- *             if atype == DATATYPE.string:
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- */
-  __pyx_t_3 = ((__pyx_v_err == 0) != 0);
-  if (__pyx_t_3) {
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("adios_mpi.group.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":1110
+/* "adios_mpi.pyx":1679
+ *         return self.vars.keys() + self.attrs.keys()
  * 
- *         if err == 0:
- *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- *             self.dtype = adios2npdtype(atype, bytes)
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
  */
-    __pyx_t_1 = PyInt_FromLong(__pyx_v_atype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_3) {
 
-      /* "adios_mpi.pyx":1111
- *         if err == 0:
- *             if atype == DATATYPE.string:
- *                 bytes = bytes - 1 ## Remove the NULL terminal             # <<<<<<<<<<<<<<
- *             self.dtype = adios2npdtype(atype, bytes)
- *             if atype == DATATYPE.string_array:
- */
-      __pyx_v_bytes = (__pyx_v_bytes - 1);
-      goto __pyx_L4;
-    }
-    __pyx_L4:;
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_5group_13dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_5group_12dirs[] = "group.dirs(self)\n Return child dir names ";
+static PyObject *__pyx_pw_9adios_mpi_5group_13dirs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("dirs (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_12dirs(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
 
-    /* "adios_mpi.pyx":1112
- *             if atype == DATATYPE.string:
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- *             self.dtype = adios2npdtype(atype, bytes)             # <<<<<<<<<<<<<<
- *             if atype == DATATYPE.string_array:
- *                 strlist = list()
- */
-    __pyx_t_6.__pyx_n = 1;
-    __pyx_t_6.strlen = __pyx_v_bytes;
-    __pyx_t_4 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_atype, 0, &__pyx_t_6)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_4);
-    __Pyx_GOTREF(__pyx_v_self->dtype);
-    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
-    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
-    __pyx_t_4 = 0;
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":1113
- *                 bytes = bytes - 1 ## Remove the NULL terminal
- *             self.dtype = adios2npdtype(atype, bytes)
- *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
- *                 strlist = list()
- *                 len = bytes/sizeof(p)
- */
-    __pyx_t_4 = PyInt_FromLong(__pyx_v_atype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (__pyx_t_3) {
+static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
+  PyObject *__pyx_v_s = NULL;
+  PyObject *__pyx_v_k = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  __Pyx_RefNannySetupContext("dirs", 0);
 
-      /* "adios_mpi.pyx":1114
- *             self.dtype = adios2npdtype(atype, bytes)
- *             if atype == DATATYPE.string_array:
- *                 strlist = list()             # <<<<<<<<<<<<<<
- *                 len = bytes/sizeof(p)
- *                 for i in range(len):
+  /* "adios_mpi.pyx":1681
+ *     def dirs(self):
+ *         """ Return child dir names """
+ *         s = set()             # <<<<<<<<<<<<<<
+ *         for k in self.vars.keys():
+ *             if k.startswith('/'): k = k[1:]
  */
-      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_v_strlist = ((PyObject*)__pyx_t_5);
-      __pyx_t_5 = 0;
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1681, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_s = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1115
- *             if atype == DATATYPE.string_array:
- *                 strlist = list()
- *                 len = bytes/sizeof(p)             # <<<<<<<<<<<<<<
- *                 for i in range(len):
- *                     strlist.append((<char **>p)[i])
+  /* "adios_mpi.pyx":1682
+ *         """ 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_7 = (sizeof(__pyx_v_p));
-      if (unlikely(__pyx_t_7 == 0)) {
-        #ifdef WITH_THREAD
-        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
-        #endif
-        PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        #ifdef WITH_THREAD
-        PyGILState_Release(__pyx_gilstate_save);
+  __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_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  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_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_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
+    __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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_GOTREF(__pyx_t_1);
         #endif
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      }
-      __pyx_v_len = (__pyx_v_bytes / __pyx_t_7);
-
-      /* "adios_mpi.pyx":1116
- *                 strlist = list()
- *                 len = bytes/sizeof(p)
- *                 for i in range(len):             # <<<<<<<<<<<<<<
- *                     strlist.append((<char **>p)[i])
- *                 self.value = np.array(strlist)
- */
-      __pyx_t_8 = __pyx_v_len;
-      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
-        __pyx_v_i = __pyx_t_9;
-
-        /* "adios_mpi.pyx":1117
- *                 len = 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_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      }
-
-      /* "adios_mpi.pyx":1118
- *                 for i in range(len):
- *                     strlist.append((<char **>p)[i])
- *                 self.value = np.array(strlist)             # <<<<<<<<<<<<<<
- *                 self.dtype = self.value.dtype
- * 
- */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
-        if (likely(__pyx_t_1)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_1);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
-        }
-      }
-      if (!__pyx_t_1) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_strlist); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_11);
-        PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
-        __Pyx_INCREF(__pyx_v_strlist);
-        PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_strlist);
-        __Pyx_GIVEREF(__pyx_v_strlist);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        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)
+        #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_GOTREF(__pyx_t_1);
+        #endif
       }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __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;
+    } else {
+      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
+      if (unlikely(!__pyx_t_1)) {
+        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)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
+    __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1119
- *                     strlist.append((<char **>p)[i])
- *                 self.value = np.array(strlist)
- *                 self.dtype = self.value.dtype             # <<<<<<<<<<<<<<
- * 
- *             elif self.dtype is None:
+    /* "adios_mpi.pyx":1683
+ *         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_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->value), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __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;
-      goto __pyx_L5;
+    __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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
     }
 
-    /* "adios_mpi.pyx":1121
- *                 self.dtype = self.value.dtype
- * 
- *             elif self.dtype is None:             # <<<<<<<<<<<<<<
- *                 print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \
- *                       (self.name, atype, bytes)
+    /* "adios_mpi.pyx":1684
+ *         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_3 = (((PyObject *)__pyx_v_self->dtype) == Py_None);
-    __pyx_t_12 = (__pyx_t_3 != 0);
-    if (__pyx_t_12) {
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __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_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_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+      }
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1123
- *             elif self.dtype is None:
- *                 print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \
- *                       (self.name, atype, bytes)             # <<<<<<<<<<<<<<
- *             else:
- *                 len = bytes/self.dtype.itemsize
+    /* "adios_mpi.pyx":1682
+ *         """ 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_5 = PyInt_FromLong(__pyx_v_atype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_bytes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_11);
-      __Pyx_INCREF(__pyx_v_self->name);
-      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_self->name);
-      __Pyx_GIVEREF(__pyx_v_self->name);
-      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
-      __Pyx_GIVEREF(__pyx_t_5);
-      PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_4);
-      __pyx_t_5 = 0;
-      __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1122
- * 
- *             elif self.dtype is None:
- *                 print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \             # <<<<<<<<<<<<<<
- *                       (self.name, atype, bytes)
- *             else:
+  /* "adios_mpi.pyx":1685
+ *             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_4 = __Pyx_PyString_Format(__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      if (__Pyx_PrintOne(0, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      goto __pyx_L5;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
     }
-    /*else*/ {
-
-      /* "adios_mpi.pyx":1125
- *                       (self.name, atype, bytes)
- *             else:
- *                 len = bytes/self.dtype.itemsize             # <<<<<<<<<<<<<<
- *                 if len == 1:
- *                     self.value = np.array(len, dtype=self.dtype)
- */
-      if (unlikely(__pyx_v_self->dtype->elsize == 0)) {
-        #ifdef WITH_THREAD
-        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
+  }
+  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_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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_5)) {
+      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)
+        #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_GOTREF(__pyx_t_2);
         #endif
-        PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        #ifdef WITH_THREAD
-        PyGILState_Release(__pyx_gilstate_save);
+      } 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)
+        #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_GOTREF(__pyx_t_2);
         #endif
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __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))) {
-        #ifdef WITH_THREAD
-        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
-        #endif
-        PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
-        #ifdef WITH_THREAD
-        PyGILState_Release(__pyx_gilstate_save);
-        #endif
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    } else {
+      __pyx_t_2 = __pyx_t_5(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        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)
+        }
+        break;
       }
-      __pyx_v_len = __Pyx_div_int(__pyx_v_bytes, __pyx_v_self->dtype->elsize);
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1126
- *             else:
- *                 len = bytes/self.dtype.itemsize
- *                 if len == 1:             # <<<<<<<<<<<<<<
- *                     self.value = np.array(len, dtype=self.dtype)
- *                 else:
+    /* "adios_mpi.pyx":1686
+ *             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_12 = ((__pyx_v_len == 1) != 0);
-      if (__pyx_t_12) {
+    __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_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_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_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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
 
-        /* "adios_mpi.pyx":1127
- *                 len = bytes/self.dtype.itemsize
- *                 if len == 1:
- *                     self.value = np.array(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
- *                 else:
- *                     self.value = np.zeros(len, dtype=self.dtype)
+    /* "adios_mpi.pyx":1687
+ *         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_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_11);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
-        __Pyx_GIVEREF(__pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GIVEREF(__pyx_t_1);
-        __Pyx_GOTREF(__pyx_v_self->value);
-        __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
-        __pyx_v_self->value = ((PyArrayObject *)__pyx_t_1);
-        __pyx_t_1 = 0;
-        goto __pyx_L8;
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __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_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_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
       }
-      /*else*/ {
+    }
+    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_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_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_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_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_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_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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-        /* "adios_mpi.pyx":1129
- *                     self.value = np.array(len, dtype=self.dtype)
- *                 else:
- *                     self.value = np.zeros(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
- *                 self.value.data = <char *> p
- *         else:
+    /* "adios_mpi.pyx":1685
+ *             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_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __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_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
-        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_1);
-        __pyx_t_1 = 0;
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_11);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GIVEREF(__pyx_t_11);
-        __Pyx_GOTREF(__pyx_v_self->value);
-        __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
-        __pyx_v_self->value = ((PyArrayObject *)__pyx_t_11);
-        __pyx_t_11 = 0;
-      }
-      __pyx_L8:;
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1130
- *                 else:
- *                     self.value = np.zeros(len, dtype=self.dtype)
- *                 self.value.data = <char *> p             # <<<<<<<<<<<<<<
- *         else:
- *             raise KeyError(name)
+  /* "adios_mpi.pyx":1688
+ *             if k.startswith('/'): k = k[1:]
+ *             s.add(os.path.dirname(k).split('/')[0])
+ *         return list(s-set(['']))             # <<<<<<<<<<<<<<
+ * 
+ * ## Helper dict
  */
-      __pyx_v_self->value->data = ((char *)__pyx_v_p);
-    }
-    __pyx_L5:;
-    goto __pyx_L3;
-  }
-  /*else*/ {
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1688, __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)
+  __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_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":1132
- *                 self.value.data = <char *> p
- *         else:
- *             raise KeyError(name)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1679
+ *         return self.vars.keys() + self.attrs.keys()
  * 
- *     def __repr__(self):
+ *     def dirs(self):             # <<<<<<<<<<<<<<
+ *         """ Return child dir names """
+ *         s = set()
  */
-    __pyx_t_11 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_11);
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11);
-    __Pyx_GIVEREF(__pyx_t_11);
-    __pyx_t_11 = 0;
-    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_11);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_Raise(__pyx_t_11, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_L3:;
 
-  /* "adios_mpi.pyx":1097
- *             return self.value
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios_mpi.group.dirs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_s);
+  __Pyx_XDECREF(__pyx_v_k);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1590
+ * 
+ *     ## Public Memeber
+ *     cpdef public softdict vars             # <<<<<<<<<<<<<<
+ *     cpdef public softdict attrs
  * 
- *     def __init__(self, file file, char * name):             # <<<<<<<<<<<<<<
- *         self.file = file
- *         self.name = name
  */
 
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_5group_4vars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_5group_4vars_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_4vars___get__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_5group_4vars___get__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_r = ((PyObject *)__pyx_v_self->vars);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_5group_4vars_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_5group_4vars_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_5group_4vars_2__set__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_5group_4vars_2__set__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
   /* function exit code */
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_AddTraceback("adios_mpi.attr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.group.vars.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_strlist);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1134
- *             raise KeyError(name)
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_5group_4vars_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_5group_4vars_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_4vars_4__del__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_5group_4vars_4__del__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->vars));
+  __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None);
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1591
+ *     ## Public Memeber
+ *     cpdef public softdict vars
+ *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
- *                (self.name, self.dtype, self.value)
+ *     def __init__(self, file file, str name):
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_4attr_3__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_4attr_3__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_5group_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_5group_5attrs_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_4attr_2__repr__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self));
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_5attrs___get__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_4attr_2__repr__(struct __pyx_obj_9adios_mpi_attr *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_5group_5attrs___get__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios_mpi.pyx":1135
- * 
- *     def __repr__(self):
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
- *                (self.name, self.dtype, self.value)
- * 
- */
+  __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_r = ((PyObject *)__pyx_v_self->attrs);
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1136
- *     def __repr__(self):
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
- *                (self.name, self.dtype, self.value)             # <<<<<<<<<<<<<<
- * 
- * 
- */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
-  __Pyx_GIVEREF(__pyx_v_self->name);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->dtype));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->dtype));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dtype));
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
-  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->value));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "adios_mpi.pyx":1135
- * 
- *     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_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __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;
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_5group_5attrs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_5group_5attrs_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_5group_5attrs_2__set__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
-  /* "adios_mpi.pyx":1134
- *             raise KeyError(name)
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
- *                (self.name, self.dtype, self.value)
- */
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_5group_5attrs_2__set__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __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)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
+  __pyx_t_1 = 0;
 
   /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("adios_mpi.attr.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __Pyx_AddTraceback("adios_mpi.group.attrs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1142
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_5group_5attrs_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_9adios_mpi_5group_5attrs_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_5group_5attrs_4__del__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_5group_5attrs_4__del__(struct __pyx_obj_9adios_mpi_group *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->attrs));
+  __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None);
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1693
  * cdef class smartdict(dict):
  *     cdef factory
  *     def __init__(self, factory):             # <<<<<<<<<<<<<<
@@ -15872,9 +27462,6 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__repr__(struct __pyx_obj_9adios_mpi
 static int __pyx_pw_9adios_mpi_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_pw_9adios_mpi_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_factory = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
@@ -15896,7 +27483,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_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1693, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -15907,7 +27494,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_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1693, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15927,19 +27514,16 @@ static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_s
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1143
+  /* "adios_mpi.pyx":1694
  *     cdef factory
  *     def __init__(self, factory):
  *         dict.__init__(self)             # <<<<<<<<<<<<<<
  *         self.factory = factory
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)((PyObject*)(&PyDict_Type))), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15952,23 +27536,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_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1694, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
+    __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));
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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_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":1144
+  /* "adios_mpi.pyx":1695
  *     def __init__(self, factory):
  *         dict.__init__(self)
  *         self.factory = factory             # <<<<<<<<<<<<<<
@@ -15981,7 +27565,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":1142
+  /* "adios_mpi.pyx":1693
  * cdef class smartdict(dict):
  *     cdef factory
  *     def __init__(self, factory):             # <<<<<<<<<<<<<<
@@ -16004,7 +27588,7 @@ static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_s
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1146
+/* "adios_mpi.pyx":1697
  *         self.factory = factory
  * 
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -16035,12 +27619,9 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
   PyObject *__pyx_t_5 = NULL;
   Py_ssize_t __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "adios_mpi.pyx":1147
+  /* "adios_mpi.pyx":1698
  * 
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -16049,23 +27630,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_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1698, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_key, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __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, 1698, __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":1148
+    /* "adios_mpi.pyx":1699
  *     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 *)((PyObject*)(&PyDict_Type))), __pyx_n_s_setitem); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -16079,36 +27660,44 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1699, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
+      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
     }
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
-    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
     __Pyx_INCREF(__pyx_v_key);
-    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_key);
     __Pyx_GIVEREF(__pyx_v_key);
+    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_key);
     __Pyx_INCREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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_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
+ * 
+ *     def __setitem__(self, key, value):
+ *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
+ *             dict.__setitem__(self, key, value)
+ *         else:
+ */
     goto __pyx_L3;
   }
-  /*else*/ {
 
-    /* "adios_mpi.pyx":1150
+  /* "adios_mpi.pyx":1701
  *             dict.__setitem__(self, key, value)
  *         else:
  *             self.factory(key, value)             # <<<<<<<<<<<<<<
  * 
- * cdef class writer:
+ * cdef class writer(object):
  */
+  /*else*/ {
     __Pyx_INCREF(__pyx_v_self->factory);
     __pyx_t_4 = __pyx_v_self->factory; __pyx_t_7 = NULL;
     __pyx_t_6 = 0;
@@ -16122,18 +27711,18 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_7) {
-      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
+      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
     }
     __Pyx_INCREF(__pyx_v_key);
-    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_key);
     __Pyx_GIVEREF(__pyx_v_key);
+    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_key);
     __Pyx_INCREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -16141,7 +27730,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":1146
+  /* "adios_mpi.pyx":1697
  *         self.factory = factory
  * 
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -16164,7 +27753,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1181
+/* "adios_mpi.pyx":1733
  *     property fname:
  *         """ The filename to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16190,7 +27779,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9ad
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1182
+  /* "adios_mpi.pyx":1734
  *         """ The filename to write. """
  *         def __get__(self):
  *             return self.fname             # <<<<<<<<<<<<<<
@@ -16202,7 +27791,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":1181
+  /* "adios_mpi.pyx":1733
  *     property fname:
  *         """ The filename to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16217,7 +27806,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1186
+/* "adios_mpi.pyx":1738
  *     property gname:
  *         """ The groupname associated with the file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16243,7 +27832,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9ad
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1187
+  /* "adios_mpi.pyx":1739
  *         """ The groupname associated with the file. """
  *         def __get__(self):
  *             return self.gname             # <<<<<<<<<<<<<<
@@ -16255,7 +27844,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":1186
+  /* "adios_mpi.pyx":1738
  *     property gname:
  *         """ The groupname associated with the file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16270,7 +27859,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1191
+/* "adios_mpi.pyx":1743
  *     property is_noxml:
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16295,26 +27884,23 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1192
+  /* "adios_mpi.pyx":1744
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):
  *             return self.is_noxml             # <<<<<<<<<<<<<<
  * 
- *     property var:
+ *     property mode:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1744, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1191
+  /* "adios_mpi.pyx":1743
  *     property is_noxml:
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16323,59 +27909,112 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_
  */
 
   /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.writer.is_noxml.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.writer.is_noxml.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1748
+ *     property mode:
+ *         """ Writing mode: overwrite or append. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.mode
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_6writer_4mode_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_6writer_4mode_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_4mode___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_4mode___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1749
+ *         """ Writing mode: overwrite or append. """
+ *         def __get__(self):
+ *             return self.mode             # <<<<<<<<<<<<<<
+ * 
+ *     property vars:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->mode);
+  __pyx_r = __pyx_v_self->mode;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1748
+ *     property mode:
+ *         """ Writing mode: overwrite or append. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.mode
+ * 
+ */
+
+  /* function exit code */
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1196
- *     property var:
+/* "adios_mpi.pyx":1753
+ *     property vars:
  *         """ Dictionary of variables to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.var
+ *             return self.vars
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_3var_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_6writer_3var_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_4vars_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_6writer_4vars_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_3var___get__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_4vars___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_3var___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_4vars___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1197
+  /* "adios_mpi.pyx":1754
  *         """ Dictionary of variables to write. """
  *         def __get__(self):
- *             return self.var             # <<<<<<<<<<<<<<
+ *             return self.vars             # <<<<<<<<<<<<<<
  * 
- *     property attr:
+ *     property attrs:
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->var);
-  __pyx_r = __pyx_v_self->var;
+  __Pyx_INCREF(__pyx_v_self->vars);
+  __pyx_r = __pyx_v_self->vars;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1196
- *     property var:
+  /* "adios_mpi.pyx":1753
+ *     property vars:
  *         """ Dictionary of variables to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.var
+ *             return self.vars
  * 
  */
 
@@ -16386,49 +28025,49 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_3var___get__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1201
- *     property attr:
+/* "adios_mpi.pyx":1758
+ *     property attrs:
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.attr
+ *             return self.attrs
  * 
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_6writer_4attr_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_6writer_5attrs_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_4attr___get__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_5attrs___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_4attr___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_5attrs___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1202
+  /* "adios_mpi.pyx":1759
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):
- *             return self.attr             # <<<<<<<<<<<<<<
+ *             return self.attrs             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self,char * fname,
+ *     def __init__(self, str fname,
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->attr);
-  __pyx_r = __pyx_v_self->attr;
+  __Pyx_INCREF(__pyx_v_self->attrs);
+  __pyx_r = __pyx_v_self->attrs;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1201
- *     property attr:
+  /* "adios_mpi.pyx":1758
+ *     property attrs:
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self.attr
+ *             return self.attrs
  * 
  */
 
@@ -16439,34 +28078,34 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4attr___get__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1204
- *             return self.attr
+/* "adios_mpi.pyx":1761
+ *             return self.attrs
  * 
- *     def __init__(self,char * fname,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
- *                  MPI.Comm comm = MPI.COMM_WORLD):
+ *                  str mode = "w",
  */
 
 /* Python wrapper */
 static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_fname;
+  PyObject *__pyx_v_fname = 0;
   int __pyx_v_is_noxml;
+  PyObject *__pyx_v_mode = 0;
   struct PyMPICommObject *__pyx_v_comm = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fname,&__pyx_n_s_is_noxml,&__pyx_n_s_comm,0};
-    PyObject* values[3] = {0,0,0};
-    values[2] = (PyObject *)__pyx_k__22;
+    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;
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        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);
@@ -16485,15 +28124,21 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
         }
         case  2:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode);
           if (value) { values[2] = value; kw_args--; }
         }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_comm);
+          if (value) { values[3] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1761, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
+        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);
@@ -16501,39 +28146,42 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_fname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_fname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __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_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __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, 1762, __pyx_L3_error)
     } else {
 
-      /* "adios_mpi.pyx":1205
+      /* "adios_mpi.pyx":1762
  * 
- *     def __init__(self,char * fname,
+ *     def __init__(self, str fname,
  *                  bint is_noxml = True,             # <<<<<<<<<<<<<<
+ *                  str mode = "w",
  *                  MPI.Comm comm = MPI.COMM_WORLD):
- *         self.fname = fname
  */
       __pyx_v_is_noxml = ((int)1);
     }
-    __pyx_v_comm = ((struct PyMPICommObject *)values[2]);
+    __pyx_v_mode = ((PyObject*)values[2]);
+    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1761, __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_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __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_comm);
+  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)
+  __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":1204
- *             return self.attr
+  /* "adios_mpi.pyx":1761
+ *             return self.attrs
  * 
- *     def __init__(self,char * fname,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
- *                  MPI.Comm comm = MPI.COMM_WORLD):
+ *                  str mode = "w",
  */
 
   /* function exit code */
@@ -16545,75 +28193,80 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_fname, int __pyx_v_is_noxml, struct PyMPICommObject *__pyx_v_comm) {
+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) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  struct __pyx_opt_args_9adios_mpi_init_noxml __pyx_t_2;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1207
- *                  bint is_noxml = True,
+  /* "adios_mpi.pyx":1765
+ *                  str mode = "w",
  *                  MPI.Comm comm = MPI.COMM_WORLD):
  *         self.fname = fname             # <<<<<<<<<<<<<<
- *         self.method = <bytes>""
- *         self.method_params = <bytes>""
+ *         self.method = ""
+ *         self.method_params = ""
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_fname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_fname);
+  __Pyx_GIVEREF(__pyx_v_fname);
   __Pyx_GOTREF(__pyx_v_self->fname);
   __Pyx_DECREF(__pyx_v_self->fname);
-  __pyx_v_self->fname = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __pyx_v_self->fname = __pyx_v_fname;
 
-  /* "adios_mpi.pyx":1208
+  /* "adios_mpi.pyx":1766
  *                  MPI.Comm comm = MPI.COMM_WORLD):
  *         self.fname = fname
- *         self.method = <bytes>""             # <<<<<<<<<<<<<<
- *         self.method_params = <bytes>""
+ *         self.method = ""             # <<<<<<<<<<<<<<
+ *         self.method_params = ""
  *         self.is_noxml = is_noxml
  */
-  __pyx_t_1 = __pyx_kp_s__7;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_kp_s__10);
+  __Pyx_GIVEREF(__pyx_kp_s__10);
   __Pyx_GOTREF(__pyx_v_self->method);
   __Pyx_DECREF(__pyx_v_self->method);
-  __pyx_v_self->method = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __pyx_v_self->method = __pyx_kp_s__10;
 
-  /* "adios_mpi.pyx":1209
+  /* "adios_mpi.pyx":1767
  *         self.fname = fname
- *         self.method = <bytes>""
- *         self.method_params = <bytes>""             # <<<<<<<<<<<<<<
+ *         self.method = ""
+ *         self.method_params = ""             # <<<<<<<<<<<<<<
  *         self.is_noxml = is_noxml
- *         self.comm = comm
+ *         self.mode = mode
  */
-  __pyx_t_1 = __pyx_kp_s__7;
-  __Pyx_INCREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_kp_s__10);
+  __Pyx_GIVEREF(__pyx_kp_s__10);
   __Pyx_GOTREF(__pyx_v_self->method_params);
   __Pyx_DECREF(__pyx_v_self->method_params);
-  __pyx_v_self->method_params = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __pyx_v_self->method_params = __pyx_kp_s__10;
 
-  /* "adios_mpi.pyx":1210
- *         self.method = <bytes>""
- *         self.method_params = <bytes>""
+  /* "adios_mpi.pyx":1768
+ *         self.method = ""
+ *         self.method_params = ""
  *         self.is_noxml = is_noxml             # <<<<<<<<<<<<<<
+ *         self.mode = mode
  *         self.comm = comm
- *         self.var = dict()
  */
   __pyx_v_self->is_noxml = __pyx_v_is_noxml;
 
-  /* "adios_mpi.pyx":1211
- *         self.method_params = <bytes>""
+  /* "adios_mpi.pyx":1769
+ *         self.method_params = ""
+ *         self.is_noxml = is_noxml
+ *         self.mode = mode             # <<<<<<<<<<<<<<
+ *         self.comm = comm
+ *         self.vars = dict()
+ */
+  __Pyx_INCREF(__pyx_v_mode);
+  __Pyx_GIVEREF(__pyx_v_mode);
+  __Pyx_GOTREF(__pyx_v_self->mode);
+  __Pyx_DECREF(__pyx_v_self->mode);
+  __pyx_v_self->mode = __pyx_v_mode;
+
+  /* "adios_mpi.pyx":1770
  *         self.is_noxml = is_noxml
+ *         self.mode = mode
  *         self.comm = comm             # <<<<<<<<<<<<<<
- *         self.var = dict()
- *         self.attr = dict()
+ *         self.vars = dict()
+ *         self.attrs = dict()
  */
   __Pyx_INCREF(((PyObject *)__pyx_v_comm));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_comm));
@@ -16621,42 +28274,53 @@ 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":1212
- *         self.is_noxml = is_noxml
+  /* "adios_mpi.pyx":1771
+ *         self.mode = mode
  *         self.comm = comm
- *         self.var = dict()             # <<<<<<<<<<<<<<
- *         self.attr = dict()
+ *         self.vars = dict()             # <<<<<<<<<<<<<<
+ *         self.attrs = dict()
  * 
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1771, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->var);
-  __Pyx_DECREF(__pyx_v_self->var);
-  __pyx_v_self->var = ((PyObject*)__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->vars);
+  __Pyx_DECREF(__pyx_v_self->vars);
+  __pyx_v_self->vars = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1213
+  /* "adios_mpi.pyx":1772
  *         self.comm = comm
- *         self.var = dict()
- *         self.attr = dict()             # <<<<<<<<<<<<<<
+ *         self.vars = dict()
+ *         self.attrs = dict()             # <<<<<<<<<<<<<<
  * 
- *     ##def __var_factory__(self, name, value):
+ *         init_noxml(comm)
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1772, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
-  __Pyx_GOTREF(__pyx_v_self->attr);
-  __Pyx_DECREF(__pyx_v_self->attr);
-  __pyx_v_self->attr = ((PyObject*)__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->attrs);
+  __Pyx_DECREF(__pyx_v_self->attrs);
+  __pyx_v_self->attrs = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1204
- *             return self.attr
+  /* "adios_mpi.pyx":1774
+ *         self.attrs = dict()
+ * 
+ *         init_noxml(comm)             # <<<<<<<<<<<<<<
+ *     ##def __var_factory__(self, name, value):
+ *     ##    print "var_factory:", name, value
+ */
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.comm = __pyx_v_comm;
+  __pyx_f_9adios_mpi_init_noxml(0, &__pyx_t_2); 
+
+  /* "adios_mpi.pyx":1761
+ *             return self.attrs
  * 
- *     def __init__(self,char * fname,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
- *                  MPI.Comm comm = MPI.COMM_WORLD):
+ *                  str mode = "w",
  */
 
   /* function exit code */
@@ -16671,30 +28335,29 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1221
+/* "adios_mpi.pyx":1781
  *     ##    print "attr_factory:", name, value
  * 
- *     def declare_group(self, char * gname,             # <<<<<<<<<<<<<<
- *                       char * method = "POSIX1",
- *                       char * method_params = ""):
+ *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *                       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, char *gname, char *method='POSIX1', char *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='M [...]
+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 PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_gname;
-  char *__pyx_v_method;
-  char *__pyx_v_method_params;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_v_gname = 0;
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_method_params = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("declare_group (wrapper)", 0);
   {
     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[1] = ((PyObject*)__pyx_n_s_POSIX1);
+    values[2] = ((PyObject*)__pyx_kp_s__10);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -16722,7 +28385,7 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 1781, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -16733,48 +28396,43 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_se
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_gname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_gname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    if (values[1]) {
-      __pyx_v_method = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_method) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method = ((char *)__pyx_k_POSIX1);
-    }
-    if (values[2]) {
-      __pyx_v_method_params = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_method_params) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    } else {
-      __pyx_v_method_params = ((char *)__pyx_k__7);
-    }
+    __pyx_v_gname = ((PyObject*)values[0]);
+    __pyx_v_method = ((PyObject*)values[1]);
+    __pyx_v_method_params = ((PyObject*)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1781, __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)
   __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 */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_gname, char *__pyx_v_method, char *__pyx_v_method_params) {
+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;
   PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  char *__pyx_t_5;
-  struct __pyx_opt_args_9adios_mpi_select_method __pyx_t_6;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_t_4 = NULL;
+  struct __pyx_opt_args_9adios_mpi_select_method __pyx_t_5;
   __Pyx_RefNannySetupContext("declare_group", 0);
 
-  /* "adios_mpi.pyx":1237
+  /* "adios_mpi.pyx":1797
  * 
  *         """
  *         self.gid = declare_group(gname, "", 1)             # <<<<<<<<<<<<<<
@@ -16782,119 +28440,108 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9ad
  *         self.method = method
  */
   __pyx_t_2.__pyx_n = 2;
-  __pyx_t_2.time_index = __pyx_k__7;
+  __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;
 
-  /* "adios_mpi.pyx":1238
+  /* "adios_mpi.pyx":1798
  *         """
  *         self.gid = declare_group(gname, "", 1)
  *         self.gname = gname             # <<<<<<<<<<<<<<
  *         self.method = method
  *         self.method_params = method_params
  */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_gname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
+  __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 = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_v_self->gname = __pyx_v_gname;
 
-  /* "adios_mpi.pyx":1239
+  /* "adios_mpi.pyx":1799
  *         self.gid = declare_group(gname, "", 1)
  *         self.gname = gname
  *         self.method = method             # <<<<<<<<<<<<<<
  *         self.method_params = method_params
  *         select_method(self.gid, self.method, self.method_params, "")
  */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_method); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_v_method);
   __Pyx_GOTREF(__pyx_v_self->method);
   __Pyx_DECREF(__pyx_v_self->method);
-  __pyx_v_self->method = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_v_self->method = __pyx_v_method;
 
-  /* "adios_mpi.pyx":1240
+  /* "adios_mpi.pyx":1800
  *         self.gname = gname
  *         self.method = method
  *         self.method_params = method_params             # <<<<<<<<<<<<<<
  *         select_method(self.gid, self.method, self.method_params, "")
  * 
  */
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_method_params); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_method_params);
+  __Pyx_GIVEREF(__pyx_v_method_params);
   __Pyx_GOTREF(__pyx_v_self->method_params);
   __Pyx_DECREF(__pyx_v_self->method_params);
-  __pyx_v_self->method_params = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_v_self->method_params = __pyx_v_method_params;
 
-  /* "adios_mpi.pyx":1241
+  /* "adios_mpi.pyx":1801
  *         self.method = method
  *         self.method_params = method_params
  *         select_method(self.gid, self.method, self.method_params, "")             # <<<<<<<<<<<<<<
  * 
- *     def define_var(self, char * varname,
+ *     def define_var(self, str varname,
  */
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_self->method); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->method_params); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6.__pyx_n = 2;
-  __pyx_t_6.parameters = __pyx_t_5;
-  __pyx_t_6.base_path = __pyx_k__7;
-  __pyx_f_9adios_mpi_select_method(__pyx_v_self->gid, __pyx_t_4, 0, &__pyx_t_6); 
+  __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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1221
+  /* "adios_mpi.pyx":1781
  *     ##    print "attr_factory:", name, value
  * 
- *     def declare_group(self, char * gname,             # <<<<<<<<<<<<<<
- *                       char * method = "POSIX1",
- *                       char * method_params = ""):
+ *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *                       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_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":1243
+/* "adios_mpi.pyx":1803
  *         select_method(self.gid, self.method, self.method_params, "")
  * 
- *     def define_var(self, char * varname,             # <<<<<<<<<<<<<<
+ *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
  *                    ldim = tuple(),
  *                    gdim = tuple(),
  */
 
 /* 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, char *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        Exa [...]
+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) {
-  char *__pyx_v_varname;
+  PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_ldim = 0;
   PyObject *__pyx_v_gdim = 0;
   PyObject *__pyx_v_offset = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 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__23;
-    values[2] = __pyx_k__24;
-    values[3] = __pyx_k__25;
+    values[1] = __pyx_k__54;
+    values[2] = __pyx_k__55;
+    values[3] = __pyx_k__56;
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -16928,7 +28575,7 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 1803, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -16940,76 +28587,73 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self,
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_varname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_varname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_varname = ((PyObject*)values[0]);
     __pyx_v_ldim = values[1];
     __pyx_v_gdim = values[2];
     __pyx_v_offset = values[3];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1803, __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);
 
   /* 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_6writer_4define_var(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("define_var", 0);
 
-  /* "adios_mpi.pyx":1263
+  /* "adios_mpi.pyx":1823
  * 
  *         """
- *         self.var[varname] = varinfo(varname, ldim, gdim, offset)             # <<<<<<<<<<<<<<
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)             # <<<<<<<<<<<<<<
  * 
- *     def define_attr(self, char * attrname):
+ *     def define_attr(self, str attrname):
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_varname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_varname);
+  __Pyx_GIVEREF(__pyx_v_varname);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_varname);
   __Pyx_INCREF(__pyx_v_ldim);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ldim);
   __Pyx_GIVEREF(__pyx_v_ldim);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ldim);
   __Pyx_INCREF(__pyx_v_gdim);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_gdim);
   __Pyx_GIVEREF(__pyx_v_gdim);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_gdim);
   __Pyx_INCREF(__pyx_v_offset);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_offset);
   __Pyx_GIVEREF(__pyx_v_offset);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_varinfo)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(__pyx_v_self->var == Py_None)) {
+  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_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1823, __pyx_L1_error)
   }
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_varname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_t_2, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __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;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1243
+  /* "adios_mpi.pyx":1803
  *         select_method(self.gid, self.method, self.method_params, "")
  * 
- *     def define_var(self, char * varname,             # <<<<<<<<<<<<<<
+ *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
  *                    ldim = tuple(),
  *                    gdim = tuple(),
  */
@@ -17028,87 +28672,71 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1265
- *         self.var[varname] = varinfo(varname, ldim, gdim, offset)
+/* "adios_mpi.pyx":1825
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
  * 
- *     def define_attr(self, char * attrname):             # <<<<<<<<<<<<<<
+ *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
  *         """
  *         Define attribute in the file.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_7define_attr(PyObject *__pyx_v_self, PyObject *__pyx_arg_attrname); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_6define_attr[] = "writer.define_attr(self, char *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_arg_attrname) {
-  char *__pyx_v_attrname;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+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) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define_attr (wrapper)", 0);
-  assert(__pyx_arg_attrname); {
-    __pyx_v_attrname = __Pyx_PyObject_AsString(__pyx_arg_attrname); if (unlikely((!__pyx_v_attrname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.writer.define_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_6define_attr(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((char *)__pyx_v_attrname));
+  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));
 
   /* 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_6writer_6define_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_attrname) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_6define_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;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("define_attr", 0);
 
-  /* "adios_mpi.pyx":1273
+  /* "adios_mpi.pyx":1833
  *         """
  * 
- *         self.attr[attrname] = attrinfo(attrname, is_static=True)             # <<<<<<<<<<<<<<
+ *         self.attrs[attrname] = attrinfo(attrname, is_static=True)             # <<<<<<<<<<<<<<
  * 
- *     def define_dynamic_attr(self, char * attrname,
+ *     def define_dynamic_attr(self, str attrname,
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_is_static, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_attrinfo)), __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
+  __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_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1833, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attr, __pyx_t_1, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1833, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1265
- *         self.var[varname] = varinfo(varname, ldim, gdim, offset)
+  /* "adios_mpi.pyx":1825
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
  * 
- *     def define_attr(self, char * attrname):             # <<<<<<<<<<<<<<
+ *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
  *         """
  *         Define attribute in the file.
  */
@@ -17128,24 +28756,21 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_6define_attr(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1275
- *         self.attr[attrname] = attrinfo(attrname, is_static=True)
+/* "adios_mpi.pyx":1835
+ *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
  * 
- *     def define_dynamic_attr(self, char * attrname,             # <<<<<<<<<<<<<<
- *                             char * varname,
+ *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
+ *                             str varname,
  *                             dtype):
  */
 
 /* 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, char *attrname, char *varname, dtype)";
+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) {
-  char *__pyx_v_attrname;
-  char *__pyx_v_varname;
+  PyObject *__pyx_v_attrname = 0;
+  PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_dtype = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define_dynamic_attr (wrapper)", 0);
@@ -17170,16 +28795,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_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 1); __PYX_ERR(0, 1835, __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_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 2); __PYX_ERR(0, 1835, __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_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_dynamic_attr") < 0)) __PYX_ERR(0, 1835, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -17188,80 +28813,76 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr(PyObject *__py
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_attrname = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_attrname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_varname = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_varname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_attrname = ((PyObject*)values[0]);
+    __pyx_v_varname = ((PyObject*)values[1]);
     __pyx_v_dtype = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1835, __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);
 
   /* 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_6writer_8define_dynamic_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, char *__pyx_v_attrname, char *__pyx_v_varname, PyObject *__pyx_v_dtype) {
+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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("define_dynamic_attr", 0);
 
-  /* "adios_mpi.pyx":1278
- *                             char * varname,
+  /* "adios_mpi.pyx":1838
+ *                             str varname,
  *                             dtype):
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)             # <<<<<<<<<<<<<<
+ *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)             # <<<<<<<<<<<<<<
  *     def __setitem__(self, name, val):
- *         if self.var.has_key(name):
+ *         if self.vars.has_key(name):
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_varname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_attrname);
+  __Pyx_GIVEREF(__pyx_v_attrname);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_attrname);
+  __Pyx_INCREF(__pyx_v_varname);
+  __Pyx_GIVEREF(__pyx_v_varname);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_varname);
   __Pyx_INCREF(__pyx_v_dtype);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_dtype);
   __Pyx_GIVEREF(__pyx_v_dtype);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_attrinfo)), __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  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)
+  __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->attr == Py_None)) {
+  if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1838, __pyx_L1_error)
   }
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_attrname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attr, __pyx_t_2, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1838, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1275
- *         self.attr[attrname] = attrinfo(attrname, is_static=True)
+  /* "adios_mpi.pyx":1835
+ *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
  * 
- *     def define_dynamic_attr(self, char * attrname,             # <<<<<<<<<<<<<<
- *                             char * varname,
+ *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
+ *                             str varname,
  *                             dtype):
  */
 
@@ -17280,12 +28901,12 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_o
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1279
+/* "adios_mpi.pyx":1839
  *                             dtype):
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+ *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
  *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             self.var[name].value = val
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val
  */
 
 /* Python wrapper */
@@ -17306,107 +28927,112 @@ static int __pyx_pf_9adios_mpi_6writer_10__setitem__(struct __pyx_obj_9adios_mpi
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "adios_mpi.pyx":1280
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+  /* "adios_mpi.pyx":1840
+ *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
  *     def __setitem__(self, name, val):
- *         if self.var.has_key(name):             # <<<<<<<<<<<<<<
- *             self.var[name].value = val
- *         elif self.attr.has_key(name):
+ *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
+  if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1840, __pyx_L1_error)
   }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __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_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1281
+    /* "adios_mpi.pyx":1841
  *     def __setitem__(self, name, val):
- *         if self.var.has_key(name):
- *             self.var[name].value = val             # <<<<<<<<<<<<<<
- *         elif self.attr.has_key(name):
- *             self.attr[name].value = val
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val             # <<<<<<<<<<<<<<
+ *         elif self.attrs.has_key(name):
+ *             self.attrs[name] = val
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1841, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_value, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1841, __pyx_L1_error)
+
+    /* "adios_mpi.pyx":1840
+ *         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
+ *         elif self.attrs.has_key(name):
+ */
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":1282
- *         if self.var.has_key(name):
- *             self.var[name].value = val
- *         elif self.attr.has_key(name):             # <<<<<<<<<<<<<<
- *             self.attr[name].value = val
+  /* "adios_mpi.pyx":1842
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             self.attrs[name] = val
  *         else:
  */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
+  if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1842, __pyx_L1_error)
   }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __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) {
 
-    /* "adios_mpi.pyx":1283
- *             self.var[name].value = val
- *         elif self.attr.has_key(name):
- *             self.attr[name].value = val             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1843
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):
+ *             self.attrs[name] = val             # <<<<<<<<<<<<<<
  *         else:
- *             self.var[name] = val
+ *             self.vars[name] = val
  */
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
+    if (unlikely(__pyx_v_self->attrs == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1843, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_value, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1843, __pyx_L1_error)
+
+    /* "adios_mpi.pyx":1842
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             self.attrs[name] = val
+ *         else:
+ */
     goto __pyx_L3;
   }
-  /*else*/ {
 
-    /* "adios_mpi.pyx":1285
- *             self.attr[name].value = val
+  /* "adios_mpi.pyx":1845
+ *             self.attrs[name] = val
  *         else:
- *             self.var[name] = val             # <<<<<<<<<<<<<<
+ *             self.vars[name] = val             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, name):
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
+  /*else*/ {
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1845, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_v_name, __pyx_v_val) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __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_L3:;
 
-  /* "adios_mpi.pyx":1279
+  /* "adios_mpi.pyx":1839
  *                             dtype):
- *         self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+ *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
  *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             self.var[name].value = val
+ *         if self.vars.has_key(name):
+ *             self.vars[name] = val
  */
 
   /* function exit code */
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_AddTraceback("adios_mpi.writer.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
@@ -17414,12 +29040,12 @@ static int __pyx_pf_9adios_mpi_6writer_10__setitem__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1287
- *             self.var[name] = val
+/* "adios_mpi.pyx":1847
+ *             self.vars[name] = val
  * 
  *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             return self.var[name].value
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
  */
 
 /* Python wrapper */
@@ -17442,112 +29068,119 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios_mpi.pyx":1288
+  /* "adios_mpi.pyx":1848
  * 
  *     def __getitem__(self, name):
- *         if self.var.has_key(name):             # <<<<<<<<<<<<<<
- *             return self.var[name].value
- *         elif self.attr.has_key(name):
+ *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
+  if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1848, __pyx_L1_error)
   }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __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_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1289
+    /* "adios_mpi.pyx":1849
  *     def __getitem__(self, name):
- *         if self.var.has_key(name):
- *             return self.var[name].value             # <<<<<<<<<<<<<<
- *         elif self.attr.has_key(name):
- *             return self.attr[name].value
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]             # <<<<<<<<<<<<<<
+ *         elif self.attrs.has_key(name):
+ *             return self.attrs[name]
  */
     __Pyx_XDECREF(__pyx_r);
-    if (unlikely(__pyx_v_self->var == Py_None)) {
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1849, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->var, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_r = __pyx_t_4;
-    __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
     goto __pyx_L0;
+
+    /* "adios_mpi.pyx":1848
+ * 
+ *     def __getitem__(self, name):
+ *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):
+ */
   }
 
-  /* "adios_mpi.pyx":1290
- *         if self.var.has_key(name):
- *             return self.var[name].value
- *         elif self.attr.has_key(name):             # <<<<<<<<<<<<<<
- *             return self.attr[name].value
+  /* "adios_mpi.pyx":1850
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.attrs[name]
  *         else:
  */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
+  if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1850, __pyx_L1_error)
   }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __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_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":1291
- *             return self.var[name].value
- *         elif self.attr.has_key(name):
- *             return self.attr[name].value             # <<<<<<<<<<<<<<
+    /* "adios_mpi.pyx":1851
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):
+ *             return self.attrs[name]             # <<<<<<<<<<<<<<
  *         else:
  *             raise KeyError(name)
  */
     __Pyx_XDECREF(__pyx_r);
-    if (unlikely(__pyx_v_self->attr == Py_None)) {
+    if (unlikely(__pyx_v_self->attrs == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1851, __pyx_L1_error)
     }
-    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->attr, __pyx_v_name); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
+
+    /* "adios_mpi.pyx":1850
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
+ *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
+ *             return self.attrs[name]
+ *         else:
+ */
   }
-  /*else*/ {
 
-    /* "adios_mpi.pyx":1293
- *             return self.attr[name].value
+  /* "adios_mpi.pyx":1853
+ *             return self.attrs[name]
  *         else:
  *             raise KeyError(name)             # <<<<<<<<<<<<<<
  * 
  *     def close(self):
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*else*/ {
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1853, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    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_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_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1853, __pyx_L1_error)
   }
 
-  /* "adios_mpi.pyx":1287
- *             self.var[name] = val
+  /* "adios_mpi.pyx":1847
+ *             self.vars[name] = val
  * 
  *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
- *         if self.var.has_key(name):
- *             return self.var[name].value
+ *         if self.vars.has_key(name):
+ *             return self.vars[name]
  */
 
   /* function exit code */
@@ -17562,7 +29195,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1295
+/* "adios_mpi.pyx":1855
  *             raise KeyError(name)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -17586,757 +29219,684 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_15close(PyObject *__pyx_v_self, CYT
 
 static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
   int64_t __pyx_v_fd;
-  PyObject *__pyx_v_extra_var = NULL;
-  PyObject *__pyx_v_extra_attr = NULL;
+  PyObject *__pyx_v_extra_vars = NULL;
+  PyObject *__pyx_v_extra_attrs = NULL;
   PyObject *__pyx_v_key = NULL;
   PyObject *__pyx_v_val = NULL;
   PyObject *__pyx_v_n = NULL;
-  PyObject *__pyx_v_groupsize = NULL;
   PyObject *__pyx_v_var = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  char *__pyx_t_1;
-  char *__pyx_t_2;
+  int __pyx_t_1;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  Py_ssize_t __pyx_t_4;
-  Py_ssize_t __pyx_t_5;
-  int __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_6;
+  Py_ssize_t __pyx_t_7;
+  int __pyx_t_8;
   int __pyx_t_9;
-  int __pyx_t_10;
-  int __pyx_t_11;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *(*__pyx_t_15)(PyObject *);
-  uint64_t __pyx_t_16;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "adios_mpi.pyx":1299
+  /* "adios_mpi.pyx":1859
  *         Write variables and attributes to a file and close the writer.
  *         """
- *         fd = open(self.gname, self.fname, "w")             # <<<<<<<<<<<<<<
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.declare_group("group")
  * 
- *         extra_var = dict()
  */
-  __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_self->gname); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->fname); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_fd = __pyx_f_9adios_mpi_open(__pyx_t_1, __pyx_t_2, __pyx_k_w, 0, NULL);
+  __pyx_t_1 = (__pyx_v_self->gname == ((PyObject*)Py_None));
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
 
-  /* "adios_mpi.pyx":1301
- *         fd = open(self.gname, self.fname, "w")
+    /* "adios_mpi.pyx":1860
+ *         """
+ *         if self.gname is None:
+ *             self.declare_group("group")             # <<<<<<<<<<<<<<
  * 
- *         extra_var = dict()             # <<<<<<<<<<<<<<
- *         extra_attr = dict()
+ *         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_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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "adios_mpi.pyx":1859
+ *         Write variables and attributes to a file and close the writer.
+ *         """
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.declare_group("group")
  * 
  */
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_extra_var = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  }
 
-  /* "adios_mpi.pyx":1302
+  /* "adios_mpi.pyx":1862
+ *             self.declare_group("group")
  * 
- *         extra_var = dict()
- *         extra_attr = dict()             # <<<<<<<<<<<<<<
+ *         fd = open(self.gname, self.fname, self.mode)             # <<<<<<<<<<<<<<
  * 
- *         for key, val in self.var.iteritems():
+ *         extra_vars = dict()
  */
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_extra_attr = ((PyObject*)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_t_4 = __pyx_v_self->gname;
+  __Pyx_INCREF(__pyx_t_4);
+  __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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "adios_mpi.pyx":1864
+ *         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;
+
+  /* "adios_mpi.pyx":1865
+ * 
+ *         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;
 
-  /* "adios_mpi.pyx":1304
- *         extra_attr = dict()
+  /* "adios_mpi.pyx":1867
+ *         extra_attrs = dict()
  * 
- *         for key, val in self.var.iteritems():             # <<<<<<<<<<<<<<
+ *         for key, val in self.vars.iteritems():             # <<<<<<<<<<<<<<
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)
  */
-  __pyx_t_4 = 0;
-  if (unlikely(__pyx_v_self->var == Py_None)) {
+  __pyx_t_6 = 0;
+  if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1867, __pyx_L1_error)
   }
-  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_self->var, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_7;
-  __pyx_t_7 = 0;
+  __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_GOTREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __pyx_t_5 = __pyx_t_3;
+  __pyx_t_3 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_5, &__pyx_t_4, &__pyx_t_7, &__pyx_t_8, NULL, __pyx_t_6);
+    __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_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
-    __pyx_t_7 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
-    __pyx_t_8 = 0;
+    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1867, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GOTREF(__pyx_t_4);
+    __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;
 
-    /* "adios_mpi.pyx":1305
+    /* "adios_mpi.pyx":1868
  * 
- *         for key, val in self.var.iteritems():
+ *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
  *                 n = np.array(val)
- *                 extra_var[key] = varinfo(key, n.shape)
+ *                 extra_vars[key] = varinfo(key, n.shape)
  */
-    __pyx_t_10 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_9adios_mpi_varinfo)); 
-    __pyx_t_11 = ((!(__pyx_t_10 != 0)) != 0);
-    if (__pyx_t_11) {
+    __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":1306
- *         for key, val in self.var.iteritems():
+      /* "adios_mpi.pyx":1869
+ *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)             # <<<<<<<<<<<<<<
- *                 extra_var[key] = varinfo(key, n.shape)
- *                 extra_var[key].value = val
+ *                 extra_vars[key] = varinfo(key, n.shape)
+ *                 extra_vars[key].value = val
  */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_12);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
-        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12);
-        if (likely(__pyx_t_7)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-          __Pyx_INCREF(__pyx_t_7);
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1869, __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_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_3)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_3);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_12, function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
         }
       }
-      if (!__pyx_t_7) {
-        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_val); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
+      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);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1869, __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);
-        PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_val);
         __Pyx_GIVEREF(__pyx_v_val);
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+        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_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_8);
-      __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_4);
+      __pyx_t_4 = 0;
 
-      /* "adios_mpi.pyx":1307
+      /* "adios_mpi.pyx":1870
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)
- *                 extra_var[key] = varinfo(key, n.shape)             # <<<<<<<<<<<<<<
- *                 extra_var[key].value = val
+ *                 extra_vars[key] = varinfo(key, n.shape)             # <<<<<<<<<<<<<<
+ *                 extra_vars[key].value = val
  *             else:
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_12);
+      __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_GOTREF(__pyx_t_10);
       __Pyx_INCREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
       __Pyx_GIVEREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_8);
-      __Pyx_GIVEREF(__pyx_t_8);
-      __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_varinfo)), __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_var, __pyx_v_key, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      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_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;
 
-      /* "adios_mpi.pyx":1308
+      /* "adios_mpi.pyx":1871
  *                 n = np.array(val)
- *                 extra_var[key] = varinfo(key, n.shape)
- *                 extra_var[key].value = val             # <<<<<<<<<<<<<<
+ *                 extra_vars[key] = varinfo(key, n.shape)
+ *                 extra_vars[key].value = val             # <<<<<<<<<<<<<<
  *             else:
  *                 if self.is_noxml: val.define(self.gid)
  */
-      __pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_extra_var, __pyx_v_key); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-      __Pyx_GOTREF(__pyx_t_8);
-      if (__Pyx_PyObject_SetAttrStr(__pyx_t_8, __pyx_n_s_value, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L5;
+      __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;
+
+      /* "adios_mpi.pyx":1868
+ * 
+ *         for key, val in self.vars.iteritems():
+ *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
+ *                 n = np.array(val)
+ *                 extra_vars[key] = varinfo(key, n.shape)
+ */
+      goto __pyx_L6;
     }
-    /*else*/ {
 
-      /* "adios_mpi.pyx":1310
- *                 extra_var[key].value = val
+    /* "adios_mpi.pyx":1873
+ *                 extra_vars[key].value = val
  *             else:
  *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
  * 
- *         for key, val in extra_var.iteritems():
+ *         for key, val in extra_vars.iteritems():
  */
-      __pyx_t_11 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_11) {
-        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_13 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_13);
-        __pyx_t_7 = NULL;
-        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
-          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12);
-          if (likely(__pyx_t_7)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
-            __Pyx_INCREF(__pyx_t_7);
+    /*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_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_GOTREF(__pyx_t_11);
+        __pyx_t_3 = NULL;
+        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
+          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
+          if (likely(__pyx_t_3)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+            __Pyx_INCREF(__pyx_t_3);
             __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_12, function);
+            __Pyx_DECREF_SET(__pyx_t_10, function);
           }
         }
-        if (!__pyx_t_7) {
-          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_GOTREF(__pyx_t_8);
+        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_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_GOTREF(__pyx_t_4);
         } else {
-          __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_14);
-          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
-          PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_13);
-          __Pyx_GIVEREF(__pyx_t_13);
-          __pyx_t_13 = 0;
-          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_8);
-          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1873, __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_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        goto __pyx_L6;
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       }
-      __pyx_L6:;
     }
-    __pyx_L5:;
+    __pyx_L6:;
   }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1312
+  /* "adios_mpi.pyx":1875
  *                 if self.is_noxml: val.define(self.gid)
  * 
- *         for key, val in extra_var.iteritems():             # <<<<<<<<<<<<<<
+ *         for key, val in extra_vars.iteritems():             # <<<<<<<<<<<<<<
  *             if self.is_noxml: val.define(self.gid)
- *             self.var[key] = val
+ *             self.vars[key] = val
  */
-  __pyx_t_5 = 0;
-  __pyx_t_8 = __Pyx_dict_iterator(__pyx_v_extra_var, 1, __pyx_n_s_iteritems, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_8;
-  __pyx_t_8 = 0;
+  __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;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_4, &__pyx_t_5, &__pyx_t_8, &__pyx_t_12, NULL, __pyx_t_6);
+    __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_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_8);
-    __pyx_t_8 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_12);
-    __pyx_t_12 = 0;
+    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1875, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
+    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_10);
+    __pyx_t_10 = 0;
 
-    /* "adios_mpi.pyx":1313
+    /* "adios_mpi.pyx":1876
  * 
- *         for key, val in extra_var.iteritems():
+ *         for key, val in extra_vars.iteritems():
  *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
- *             self.var[key] = val
+ *             self.vars[key] = val
  * 
  */
-    __pyx_t_11 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_11) {
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_14 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_14);
-      __pyx_t_13 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
-        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8);
-        if (likely(__pyx_t_13)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
-          __Pyx_INCREF(__pyx_t_13);
+    __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_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 (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_11);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_8, function);
+          __Pyx_DECREF_SET(__pyx_t_4, function);
         }
       }
-      if (!__pyx_t_13) {
-        __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-        __Pyx_GOTREF(__pyx_t_12);
+      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_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        __Pyx_GOTREF(__pyx_t_10);
       } else {
-        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_7);
-        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL;
-        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_14);
-        __Pyx_GIVEREF(__pyx_t_14);
-        __pyx_t_14 = 0;
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __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_GOTREF(__pyx_t_10);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      goto __pyx_L9;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
-    __pyx_L9:;
 
-    /* "adios_mpi.pyx":1314
- *         for key, val in extra_var.iteritems():
+    /* "adios_mpi.pyx":1877
+ *         for key, val in extra_vars.iteritems():
  *             if self.is_noxml: val.define(self.gid)
- *             self.var[key] = val             # <<<<<<<<<<<<<<
+ *             self.vars[key] = val             # <<<<<<<<<<<<<<
  * 
- *         for key, val in self.attr.iteritems():
+ *         for key, val in self.attrs.iteritems():
  */
-    if (unlikely(__pyx_v_self->var == Py_None)) {
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1877, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->var, __pyx_v_key, __pyx_v_val) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __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)
   }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1316
- *             self.var[key] = val
+  /* "adios_mpi.pyx":1879
+ *             self.vars[key] = val
  * 
- *         for key, val in self.attr.iteritems():             # <<<<<<<<<<<<<<
+ *         for key, val in self.attrs.iteritems():             # <<<<<<<<<<<<<<
  *             if not isinstance(val, attrinfo):
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  */
-  __pyx_t_4 = 0;
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
+  __pyx_t_6 = 0;
+  if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1879, __pyx_L1_error)
   }
-  __pyx_t_12 = __Pyx_dict_iterator(__pyx_v_self->attr, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_12;
-  __pyx_t_12 = 0;
+  __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_GOTREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_5);
+  __pyx_t_5 = __pyx_t_10;
+  __pyx_t_10 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_5, &__pyx_t_4, &__pyx_t_12, &__pyx_t_8, NULL, __pyx_t_6);
+    __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_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_12);
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_12);
-    __pyx_t_12 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
-    __pyx_t_8 = 0;
+    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1879, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_GOTREF(__pyx_t_4);
+    __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;
 
-    /* "adios_mpi.pyx":1317
+    /* "adios_mpi.pyx":1880
  * 
- *         for key, val in self.attr.iteritems():
+ *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  *             else:
  */
-    __pyx_t_11 = __Pyx_TypeCheck(__pyx_v_val, ((PyObject*)__pyx_ptype_9adios_mpi_attrinfo)); 
-    __pyx_t_10 = ((!(__pyx_t_11 != 0)) != 0);
-    if (__pyx_t_10) {
+    __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) {
 
-      /* "adios_mpi.pyx":1318
- *         for key, val in self.attr.iteritems():
+      /* "adios_mpi.pyx":1881
+ *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
  *             else:
  *                 if self.is_noxml: val.define(self.gid)
  */
-      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_12 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
-        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
-        if (likely(__pyx_t_12)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-          __Pyx_INCREF(__pyx_t_12);
+      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1881, __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_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_t_10 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_10);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_7, function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
         }
       }
-      if (!__pyx_t_12) {
-        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_val); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
+      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);
       } else {
-        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_14);
-        PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
+        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1881, __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);
-        PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_v_val);
         __Pyx_GIVEREF(__pyx_v_val);
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+        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_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       }
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
+      __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_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_INCREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
       __Pyx_GIVEREF(__pyx_v_key);
+      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
       __Pyx_INCREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_7);
-      __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_attrinfo)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_attr, __pyx_v_key, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      goto __pyx_L12;
+      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_val);
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_4, 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_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_3); __pyx_t_3 = 0;
+
+      /* "adios_mpi.pyx":1880
+ * 
+ *         for key, val in self.attrs.iteritems():
+ *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
+ *             else:
+ */
+      goto __pyx_L13;
     }
-    /*else*/ {
 
-      /* "adios_mpi.pyx":1320
- *                 extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
+    /* "adios_mpi.pyx":1883
+ *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  *             else:
  *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
  * 
- *         for key, val in extra_attr.iteritems():
+ *         for key, val in extra_attrs.iteritems():
  */
-      __pyx_t_10 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_10) {
-        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_14 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_12 = NULL;
-        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
-          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8);
-          if (likely(__pyx_t_12)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
-            __Pyx_INCREF(__pyx_t_12);
+    /*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_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 (likely(__pyx_t_10)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_10);
             __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_8, function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
           }
         }
-        if (!__pyx_t_12) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __Pyx_GOTREF(__pyx_t_7);
+        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_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_GOTREF(__pyx_t_3);
         } else {
-          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_13);
-          PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
-          PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_14);
-          __Pyx_GIVEREF(__pyx_t_14);
-          __pyx_t_14 = 0;
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_7);
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1883, __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_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         }
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        goto __pyx_L13;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
-      __pyx_L13:;
     }
-    __pyx_L12:;
+    __pyx_L13:;
   }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1322
+  /* "adios_mpi.pyx":1885
  *                 if self.is_noxml: val.define(self.gid)
  * 
- *         for key, val in extra_attr.iteritems():             # <<<<<<<<<<<<<<
+ *         for key, val in extra_attrs.iteritems():             # <<<<<<<<<<<<<<
  *             if self.is_noxml: val.define(self.gid)
  * 
  */
-  __pyx_t_5 = 0;
-  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_extra_attr, 1, __pyx_n_s_iteritems, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_3);
-  __pyx_t_3 = __pyx_t_7;
   __pyx_t_7 = 0;
-  while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_4, &__pyx_t_5, &__pyx_t_7, &__pyx_t_8, NULL, __pyx_t_6);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
-    __pyx_t_7 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_8);
-    __pyx_t_8 = 0;
-
-    /* "adios_mpi.pyx":1323
- * 
- *         for key, val in extra_attr.iteritems():
- *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
- * 
- *         groupsize = 0
- */
-    __pyx_t_10 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_10) {
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_13 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_13);
-      __pyx_t_14 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
-        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
-        if (likely(__pyx_t_14)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-          __Pyx_INCREF(__pyx_t_14);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_7, function);
-        }
-      }
-      if (!__pyx_t_14) {
-        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __Pyx_GOTREF(__pyx_t_8);
-      } else {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = NULL;
-        PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_13);
-        __Pyx_GIVEREF(__pyx_t_13);
-        __pyx_t_13 = 0;
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_8);
-        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      }
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L16;
-    }
-    __pyx_L16:;
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
-  /* "adios_mpi.pyx":1325
- *             if self.is_noxml: val.define(self.gid)
- * 
- *         groupsize = 0             # <<<<<<<<<<<<<<
- *         for var in self.var.values():
- *             groupsize = groupsize + var.bytes()
- */
-  __Pyx_INCREF(__pyx_int_0);
-  __pyx_v_groupsize = __pyx_int_0;
-
-  /* "adios_mpi.pyx":1326
- * 
- *         groupsize = 0
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
- *             groupsize = groupsize + var.bytes()
- * 
- */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_3 = __Pyx_PyDict_Values(__pyx_v_self->var); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
-  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
-    __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_4 = 0;
-    __pyx_t_15 = NULL;
-  } else {
-    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_15 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  for (;;) {
-    if (likely(!__pyx_t_15)) {
-      if (likely(PyList_CheckExact(__pyx_t_8))) {
-        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_8)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        #endif
-      }
-    } else {
-      __pyx_t_3 = __pyx_t_15(__pyx_t_8);
-      if (unlikely(!__pyx_t_3)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_3);
-    }
-    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_3);
-    __pyx_t_3 = 0;
-
-    /* "adios_mpi.pyx":1327
- *         groupsize = 0
- *         for var in self.var.values():
- *             groupsize = groupsize + var.bytes()             # <<<<<<<<<<<<<<
- * 
- *         set_group_size(fd, groupsize)
- */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_bytes_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_12 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
-      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
-      if (likely(__pyx_t_12)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-        __Pyx_INCREF(__pyx_t_12);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_7, function);
-      }
-    }
-    if (__pyx_t_12) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = PyNumber_Add(__pyx_v_groupsize, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF_SET(__pyx_v_groupsize, __pyx_t_7);
-    __pyx_t_7 = 0;
+  __Pyx_XDECREF(__pyx_t_5);
+  __pyx_t_5 = __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_GOTREF(__pyx_t_3);
+    __Pyx_GOTREF(__pyx_t_4);
+    __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;
 
-    /* "adios_mpi.pyx":1326
+    /* "adios_mpi.pyx":1886
  * 
- *         groupsize = 0
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
- *             groupsize = groupsize + var.bytes()
+ *         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_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_GOTREF(__pyx_t_11);
+      __pyx_t_12 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_12)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_12);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+        }
+      }
+      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_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_GOTREF(__pyx_t_4);
+      } else {
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1886, __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_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_8); __pyx_t_8 = 0;
-
-  /* "adios_mpi.pyx":1329
- *             groupsize = groupsize + var.bytes()
- * 
- *         set_group_size(fd, groupsize)             # <<<<<<<<<<<<<<
- * 
- *         for var in self.var.values():
- */
-  __pyx_t_16 = __Pyx_PyInt_As_uint64_t(__pyx_v_groupsize); if (unlikely((__pyx_t_16 == (uint64_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_f_9adios_mpi_set_group_size(__pyx_v_fd, __pyx_t_16, 0);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1331
- *         set_group_size(fd, groupsize)
+  /* "adios_mpi.pyx":1897
+ *         """
  * 
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
+ *         for var in self.vars.values():             # <<<<<<<<<<<<<<
  *             var.write(fd)
  * 
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
+  if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1897, __pyx_L1_error)
   }
-  __pyx_t_8 = __Pyx_PyDict_Values(__pyx_v_self->var); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
-    __pyx_t_7 = __pyx_t_8; __Pyx_INCREF(__pyx_t_7); __pyx_t_4 = 0;
-    __pyx_t_15 = NULL;
+  __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_13 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
-    if (likely(!__pyx_t_15)) {
-      if (likely(PyList_CheckExact(__pyx_t_7))) {
-        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_7)) break;
+    if (likely(!__pyx_t_13)) {
+      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_8 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_8); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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)
         #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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);
         #endif
       } else {
-        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
+        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_8); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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)
         #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __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);
         #endif
       }
     } else {
-      __pyx_t_8 = __pyx_t_15(__pyx_t_7);
-      if (unlikely(!__pyx_t_8)) {
+      __pyx_t_5 = __pyx_t_13(__pyx_t_4);
+      if (unlikely(!__pyx_t_5)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else __PYX_ERR(0, 1897, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_GOTREF(__pyx_t_5);
     }
-    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_8);
-    __pyx_t_8 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_5);
+    __pyx_t_5 = 0;
 
-    /* "adios_mpi.pyx":1332
+    /* "adios_mpi.pyx":1898
  * 
- *         for var in self.var.values():
+ *         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_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_3);
-    __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_12);
-    __pyx_t_13 = NULL;
+    __pyx_t_10 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1898, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_13)) {
+      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_11)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_13);
+        __Pyx_INCREF(__pyx_t_11);
         __Pyx_INCREF(function);
         __Pyx_DECREF_SET(__pyx_t_3, function);
       }
     }
-    if (!__pyx_t_13) {
-      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __Pyx_GOTREF(__pyx_t_8);
+    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_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_5);
     } else {
-      __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_14);
-      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL;
-      PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_12);
-      __Pyx_GIVEREF(__pyx_t_12);
-      __pyx_t_12 = 0;
-      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1898, __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_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "adios_mpi.pyx":1331
- *         set_group_size(fd, groupsize)
+    /* "adios_mpi.pyx":1897
+ *         """
  * 
- *         for var in self.var.values():             # <<<<<<<<<<<<<<
+ *         for var in self.vars.values():             # <<<<<<<<<<<<<<
  *             var.write(fd)
  * 
  */
   }
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1334
+  /* "adios_mpi.pyx":1900
  *             var.write(fd)
  * 
  *         close(fd)             # <<<<<<<<<<<<<<
@@ -18345,7 +29905,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":1295
+  /* "adios_mpi.pyx":1855
  *             raise KeyError(name)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -18358,151 +29918,340 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
+  __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);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
   __Pyx_AddTraceback("adios_mpi.writer.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_extra_var);
-  __Pyx_XDECREF(__pyx_v_extra_attr);
+  __Pyx_XDECREF(__pyx_v_extra_vars);
+  __Pyx_XDECREF(__pyx_v_extra_attrs);
   __Pyx_XDECREF(__pyx_v_key);
   __Pyx_XDECREF(__pyx_v_val);
   __Pyx_XDECREF(__pyx_v_n);
-  __Pyx_XDECREF(__pyx_v_groupsize);
   __Pyx_XDECREF(__pyx_v_var);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "adios_mpi.pyx":1336
- *         close(fd)
- * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
- */
-
-/* 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) {
-  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));
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1902
+ *         close(fd)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return ("AdiosWriter (fname=%r, gname=%r, "
+ *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
+ */
+
+/* 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) {
+  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));
+
+  /* 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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "adios_mpi.pyx":1903
+ * 
+ *     def __repr__(self):
+ *         return ("AdiosWriter (fname=%r, gname=%r, "             # <<<<<<<<<<<<<<
+ *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
+ *                 (self.fname,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "adios_mpi.pyx":1909
+ *                  self.method,
+ *                  self.method_params,
+ *                  self.vars.keys(),             # <<<<<<<<<<<<<<
+ *                  self.attrs.keys(),
+ *                  self.mode)
+ */
+  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_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1909, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "adios_mpi.pyx":1910
+ *                  self.method_params,
+ *                  self.vars.keys(),
+ *                  self.attrs.keys(),             # <<<<<<<<<<<<<<
+ *                  self.mode)
+ * 
+ */
+  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_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1910, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "adios_mpi.pyx":1905
+ *         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_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_self->fname);
+  __Pyx_GIVEREF(__pyx_v_self->fname);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->fname);
+  __Pyx_INCREF(__pyx_v_self->gname);
+  __Pyx_GIVEREF(__pyx_v_self->gname);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->gname);
+  __Pyx_INCREF(__pyx_v_self->method);
+  __Pyx_GIVEREF(__pyx_v_self->method);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->method);
+  __Pyx_INCREF(__pyx_v_self->method_params);
+  __Pyx_GIVEREF(__pyx_v_self->method_params);
+  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->method_params);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->mode);
+  __Pyx_GIVEREF(__pyx_v_self->mode);
+  PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_self->mode);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":1904
+ *     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_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
+ *         close(fd)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return ("AdiosWriter (fname=%r, gname=%r, "
+ *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("adios_mpi.writer.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1913
+ *                  self.mode)
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         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) {
+  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));
+
+  /* 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) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "adios_mpi.pyx":1915
+ *     def __enter__(self):
+ *         """ Enter for with statemetn """
+ *         return self             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1913
+ *                  self.mode)
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         """ Enter for with statemetn """
+ *         return self
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1917
+ *         return self
+ * 
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
+ */
+
+/* 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) {
+  CYTHON_UNUSED PyObject *__pyx_v_exception_type = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_exception_value = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_traceback = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_type,&__pyx_n_s_exception_value,&__pyx_n_s_traceback,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_exception_type)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        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)
+        }
+        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)
+        }
+      }
+      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)
+      }
+    } 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_exception_type = values[0];
+    __pyx_v_exception_value = values[1];
+    __pyx_v_traceback = values[2];
+  }
+  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_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);
 
   /* 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_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) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__repr__", 0);
-
-  /* "adios_mpi.pyx":1337
- * 
- *     def __repr__(self):
- *         return ("AdiosWriter (fname=%r, gname=%r, "             # <<<<<<<<<<<<<<
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
- *                 (self.fname,
- */
-  __Pyx_XDECREF(__pyx_r);
+  __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "adios_mpi.pyx":1343
- *                  self.method,
- *                  self.method_params,
- *                  self.var.keys(),             # <<<<<<<<<<<<<<
- *                  self.attr.keys())
+  /* "adios_mpi.pyx":1919
+ *     def __exit__(self, exception_type, exception_value, traceback):
+ *         """ Close file on exit. """
+ *         self.close()             # <<<<<<<<<<<<<<
  * 
+ * cdef class attrinfo(object):
  */
-  if (unlikely(__pyx_v_self->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __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, 1919, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
   }
-  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios_mpi.pyx":1344
- *                  self.method_params,
- *                  self.var.keys(),
- *                  self.attr.keys())             # <<<<<<<<<<<<<<
- * 
- * cdef class attrinfo:
- */
-  if (unlikely(__pyx_v_self->attr == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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_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_2 = __Pyx_PyDict_Keys(__pyx_v_self->attr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-
-  /* "adios_mpi.pyx":1339
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
- *                 (self.fname,             # <<<<<<<<<<<<<<
- *                  self.gname,
- *                  self.method,
- */
-  __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_INCREF(__pyx_v_self->fname);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->fname);
-  __Pyx_GIVEREF(__pyx_v_self->fname);
-  __Pyx_INCREF(__pyx_v_self->gname);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->gname);
-  __Pyx_GIVEREF(__pyx_v_self->gname);
-  __Pyx_INCREF(__pyx_v_self->method);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->method);
-  __Pyx_GIVEREF(__pyx_v_self->method);
-  __Pyx_INCREF(__pyx_v_self->method_params);
-  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->method_params);
-  __Pyx_GIVEREF(__pyx_v_self->method_params);
-  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_1 = 0;
-  __pyx_t_2 = 0;
-
-  /* "adios_mpi.pyx":1338
- *     def __repr__(self):
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%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_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __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;
+  __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":1336
- *         close(fd)
+  /* "adios_mpi.pyx":1917
+ *         return self
  * 
- *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosWriter (fname=%r, gname=%r, "
- *                 "method=%r, method_params=%r, var=%r, attr=%r)") % \
+ *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
+ *         """ Close file on exit. """
+ *         self.close()
  */
 
   /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("adios_mpi.writer.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.writer.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -18510,7 +30259,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1353
+/* "adios_mpi.pyx":1928
  * 
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18536,7 +30285,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4name___get__(struct __pyx_obj_9a
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1354
+  /* "adios_mpi.pyx":1929
  *     property name:
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -18548,7 +30297,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":1353
+  /* "adios_mpi.pyx":1928
  * 
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18563,7 +30312,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4name___get__(struct __pyx_obj_9a
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1357
+/* "adios_mpi.pyx":1932
  * 
  *     property is_static:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18588,12 +30337,9 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_9is_static___get__(struct __pyx_o
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1358
+  /* "adios_mpi.pyx":1933
  *     property is_static:
  *         def __get__(self):
  *             return self.is_static             # <<<<<<<<<<<<<<
@@ -18601,13 +30347,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_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1933, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1357
+  /* "adios_mpi.pyx":1932
  * 
  *     property is_static:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18626,7 +30372,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_9is_static___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1361
+/* "adios_mpi.pyx":1936
  * 
  *     property dtype:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18652,7 +30398,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5dtype___get__(struct __pyx_obj_9
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1362
+  /* "adios_mpi.pyx":1937
  *     property dtype:
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -18664,7 +30410,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":1361
+  /* "adios_mpi.pyx":1936
  * 
  *     property dtype:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18679,7 +30425,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5dtype___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1365
+/* "adios_mpi.pyx":1940
  * 
  *     property value:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18705,7 +30451,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1366
+  /* "adios_mpi.pyx":1941
  *     property value:
  *         def __get__(self):
  *             return self.value             # <<<<<<<<<<<<<<
@@ -18717,7 +30463,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":1365
+  /* "adios_mpi.pyx":1940
  * 
  *     property value:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -18732,7 +30478,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1368
+/* "adios_mpi.pyx":1943
  *             return self.value
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -18758,12 +30504,12 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "adios_mpi.pyx":1369
+  /* "adios_mpi.pyx":1944
  * 
  *         def __set__(self, value):
  *             self.value = value             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, char * name,
+ *     def __init__(self, str name,
  */
   __Pyx_INCREF(__pyx_v_value);
   __Pyx_GIVEREF(__pyx_v_value);
@@ -18771,7 +30517,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":1368
+  /* "adios_mpi.pyx":1943
  *             return self.value
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -18785,10 +30531,10 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1371
+/* "adios_mpi.pyx":1946
  *             self.value = value
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  value = None,
  *                  dtype = None,
  */
@@ -18796,13 +30542,10 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
 /* Python wrapper */
 static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_name;
+  PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_value = 0;
   PyObject *__pyx_v_dtype = 0;
   int __pyx_v_is_static;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
@@ -18810,17 +30553,17 @@ 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":1372
+    /* "adios_mpi.pyx":1947
  * 
- *     def __init__(self, char * name,
+ *     def __init__(self, str name,
  *                  value = None,             # <<<<<<<<<<<<<<
  *                  dtype = None,
  *                  bint is_static = True):
  */
     values[1] = ((PyObject *)Py_None);
 
-    /* "adios_mpi.pyx":1373
- *     def __init__(self, char * name,
+    /* "adios_mpi.pyx":1948
+ *     def __init__(self, str name,
  *                  value = None,
  *                  dtype = None,             # <<<<<<<<<<<<<<
  *                  bint is_static = True):
@@ -18860,7 +30603,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_filename = __pyx_f[0]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1946, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -18872,14 +30615,14 @@ static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObj
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_name = ((PyObject*)values[0]);
     __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_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __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, 1949, __pyx_L3_error)
     } else {
 
-      /* "adios_mpi.pyx":1374
+      /* "adios_mpi.pyx":1949
  *                  value = None,
  *                  dtype = None,
  *                  bint is_static = True):             # <<<<<<<<<<<<<<
@@ -18891,52 +30634,51 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1946, __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)
   __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":1371
+  /* "adios_mpi.pyx":1946
  *             self.value = value
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  value = None,
  *                  dtype = None,
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self, char *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_dtype, int __pyx_v_is_static) {
+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) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1375
+  /* "adios_mpi.pyx":1950
  *                  dtype = None,
  *                  bint is_static = True):
  *         self.name = name             # <<<<<<<<<<<<<<
  *         self.value = value
  *         self.dtype = dtype
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
   __Pyx_GOTREF(__pyx_v_self->name);
   __Pyx_DECREF(__pyx_v_self->name);
-  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":1376
+  /* "adios_mpi.pyx":1951
  *                  bint is_static = True):
  *         self.name = name
  *         self.value = value             # <<<<<<<<<<<<<<
@@ -18949,7 +30691,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":1377
+  /* "adios_mpi.pyx":1952
  *         self.name = name
  *         self.value = value
  *         self.dtype = dtype             # <<<<<<<<<<<<<<
@@ -18962,7 +30704,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":1378
+  /* "adios_mpi.pyx":1953
  *         self.value = value
  *         self.dtype = dtype
  *         self.is_static = is_static             # <<<<<<<<<<<<<<
@@ -18971,27 +30713,21 @@ 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":1371
+  /* "adios_mpi.pyx":1946
  *             self.value = value
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  value = None,
  *                  dtype = None,
  */
 
   /* function exit code */
   __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.attrinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1380
+/* "adios_mpi.pyx":1955
  *         self.is_static = is_static
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
@@ -19004,14 +30740,11 @@ static PyObject *__pyx_pw_9adios_mpi_8attrinfo_3define(PyObject *__pyx_v_self, P
 static char __pyx_doc_9adios_mpi_8attrinfo_2define[] = "attrinfo.define(self, int64_t gid)";
 static PyObject *__pyx_pw_9adios_mpi_8attrinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid) {
   int64_t __pyx_v_gid;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 1380; __pyx_clineno = __LINE__; goto __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, 1955, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -19032,13 +30765,10 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("define", 0);
 
-  /* "adios_mpi.pyx":1381
+  /* "adios_mpi.pyx":1956
  * 
  *     def define(self, int64_t gid):
  *         if self.is_static:             # <<<<<<<<<<<<<<
@@ -19048,7 +30778,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":1382
+    /* "adios_mpi.pyx":1957
  *     def define(self, int64_t gid):
  *         if self.is_static:
  *             if self.value is None:             # <<<<<<<<<<<<<<
@@ -19059,49 +30789,67 @@ 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":1383
+      /* "adios_mpi.pyx":1958
  *         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__26, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(0, 1958, __pyx_L1_error)
+
+      /* "adios_mpi.pyx":1957
+ *     def define(self, int64_t gid):
+ *         if self.is_static:
+ *             if self.value is None:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Value is none")
+ * 
+ */
     }
 
-    /* "adios_mpi.pyx":1385
+    /* "adios_mpi.pyx":1960
  *                 raise TypeError("Value is none")
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)             # <<<<<<<<<<<<<<
  *         else:
  *             ##atype = np2adiostype(np.dtype(self.dtype))
  */
-    __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __pyx_v_self->value;
+    __pyx_t_3 = __pyx_v_self->name;
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_f_9adios_mpi_define_attribute_byvalue(__pyx_v_gid, __pyx_t_4, __pyx_k__7, __pyx_t_3, 0);
+    __pyx_t_4 = __pyx_v_self->value;
+    __Pyx_INCREF(__pyx_t_4);
+    __pyx_f_9adios_mpi_define_attribute_byvalue(__pyx_v_gid, ((PyObject*)__pyx_t_3), __pyx_kp_s__10, __pyx_t_4, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "adios_mpi.pyx":1956
+ * 
+ *     def define(self, int64_t gid):
+ *         if self.is_static:             # <<<<<<<<<<<<<<
+ *             if self.value is None:
+ *                 raise TypeError("Value is none")
+ */
     goto __pyx_L3;
   }
-  /*else*/ {
 
-    /* "adios_mpi.pyx":1390
+  /* "adios_mpi.pyx":1965
  *             ##define_attribute(gid, self.name, "",
  *             ##                 atype, "", str(self.value))
  *             raise NotImplementedError             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
+  /*else*/ {
     __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1965, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":1380
+  /* "adios_mpi.pyx":1955
  *         self.is_static = is_static
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
@@ -19114,6 +30862,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("adios_mpi.attrinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -19122,7 +30871,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1392
+/* "adios_mpi.pyx":1967
  *             raise NotImplementedError
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -19148,12 +30897,9 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1393
+  /* "adios_mpi.pyx":1968
  * 
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
@@ -19162,53 +30908,53 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1395
+  /* "adios_mpi.pyx":1970
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1970, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":1394
+  /* "adios_mpi.pyx":1969
  *     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_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1969, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->value);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->value);
   __Pyx_GIVEREF(__pyx_v_self->value);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->value);
   __Pyx_INCREF(__pyx_v_self->dtype);
-  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->dtype);
   __Pyx_GIVEREF(__pyx_v_self->dtype);
+  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->dtype);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1393
+  /* "adios_mpi.pyx":1968
  * 
  *     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_filename = __pyx_f[0]; __pyx_lineno = 1393; __pyx_clineno = __LINE__; goto __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, 1968, __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":1392
+  /* "adios_mpi.pyx":1967
  *             raise NotImplementedError
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -19228,10 +30974,10 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1406
+/* "adios_mpi.pyx":1981
  *     cdef public value
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
  *                  gdim = tuple(),
  */
@@ -19239,26 +30985,34 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
 /* Python wrapper */
 static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_name;
+  PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_ldim = 0;
   PyObject *__pyx_v_gdim = 0;
   PyObject *__pyx_v_offset = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  PyObject *__pyx_v_value = 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,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[1] = __pyx_k__27;
-    values[2] = __pyx_k__28;
-    values[3] = __pyx_k__29;
+    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};
+    values[1] = __pyx_k__59;
+    values[2] = __pyx_k__60;
+    values[3] = __pyx_k__61;
+
+    /* "adios_mpi.pyx":1985
+ *                  gdim = tuple(),
+ *                  offset = tuple(),
+ *                  value = None):             # <<<<<<<<<<<<<<
+ *         self.name = name
+ *         self.ldim = ldim
+ */
+    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);
@@ -19286,12 +31040,18 @@ static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObje
           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_value);
+          if (value) { values[4] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1981, __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);
@@ -19300,52 +31060,60 @@ static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObje
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_name = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_name = ((PyObject*)values[0]);
     __pyx_v_ldim = values[1];
     __pyx_v_gdim = values[2];
     __pyx_v_offset = values[3];
+    __pyx_v_value = values[4];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1406; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1981, __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:;
-  __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);
+  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);
+
+  /* "adios_mpi.pyx":1981
+ *     cdef public value
+ * 
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
+ *                  ldim = tuple(),
+ *                  gdim = tuple(),
+ */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, char *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset) {
+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) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1410
- *                  gdim = tuple(),
- *                  offset = tuple()):
+  /* "adios_mpi.pyx":1986
+ *                  offset = tuple(),
+ *                  value = None):
  *         self.name = name             # <<<<<<<<<<<<<<
  *         self.ldim = ldim
  *         self.gdim = gdim
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_name);
+  __Pyx_GIVEREF(__pyx_v_name);
   __Pyx_GOTREF(__pyx_v_self->name);
   __Pyx_DECREF(__pyx_v_self->name);
-  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":1411
- *                  offset = tuple()):
+  /* "adios_mpi.pyx":1987
+ *                  value = None):
  *         self.name = name
  *         self.ldim = ldim             # <<<<<<<<<<<<<<
  *         self.gdim = gdim
@@ -19357,12 +31125,12 @@ 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":1412
+  /* "adios_mpi.pyx":1988
  *         self.name = name
  *         self.ldim = ldim
  *         self.gdim = gdim             # <<<<<<<<<<<<<<
  *         self.offset = offset
- * 
+ *         self.value = value
  */
   __Pyx_INCREF(__pyx_v_gdim);
   __Pyx_GIVEREF(__pyx_v_gdim);
@@ -19370,12 +31138,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":1413
+  /* "adios_mpi.pyx":1989
  *         self.ldim = ldim
  *         self.gdim = gdim
  *         self.offset = offset             # <<<<<<<<<<<<<<
+ *         self.value = value
  * 
- *     def define(self, int64_t gid):
  */
   __Pyx_INCREF(__pyx_v_offset);
   __Pyx_GIVEREF(__pyx_v_offset);
@@ -19383,28 +31151,35 @@ 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":1406
+  /* "adios_mpi.pyx":1990
+ *         self.gdim = gdim
+ *         self.offset = offset
+ *         self.value = value             # <<<<<<<<<<<<<<
+ * 
+ *     def define(self, int64_t gid):
+ */
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->value);
+  __Pyx_DECREF(__pyx_v_self->value);
+  __pyx_v_self->value = __pyx_v_value;
+
+  /* "adios_mpi.pyx":1981
  *     cdef public value
  * 
- *     def __init__(self, char * name,             # <<<<<<<<<<<<<<
+ *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
  *                  gdim = tuple(),
  */
 
   /* 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":1415
- *         self.offset = offset
+/* "adios_mpi.pyx":1992
+ *         self.value = value
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
  *         if self.value is None:
@@ -19416,14 +31191,11 @@ static PyObject *__pyx_pw_9adios_mpi_7varinfo_3define(PyObject *__pyx_v_self, Py
 static char __pyx_doc_9adios_mpi_7varinfo_2define[] = "varinfo.define(self, int64_t gid)";
 static PyObject *__pyx_pw_9adios_mpi_7varinfo_3define(PyObject *__pyx_v_self, PyObject *__pyx_arg_gid) {
   int64_t __pyx_v_gid;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 1415; __pyx_clineno = __LINE__; goto __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, 1992, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -19453,18 +31225,12 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
-  char *__pyx_t_8;
-  int __pyx_t_9;
-  char *__pyx_t_10;
-  char *__pyx_t_11;
-  char *__pyx_t_12;
-  struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_13;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_10;
   __Pyx_RefNannySetupContext("define", 0);
 
-  /* "adios_mpi.pyx":1416
+  /* "adios_mpi.pyx":1993
  * 
  *     def define(self, int64_t gid):
  *         if self.value is None:             # <<<<<<<<<<<<<<
@@ -19475,21 +31241,29 @@ 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":1417
+    /* "adios_mpi.pyx":1994
  *     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__30, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 1994, __pyx_L1_error)
+
+    /* "adios_mpi.pyx":1993
+ * 
+ *     def define(self, int64_t gid):
+ *         if self.value is None:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Value is none")
+ * 
+ */
   }
 
-  /* "adios_mpi.pyx":1419
+  /* "adios_mpi.pyx":1996
  *             raise TypeError("Value is none")
  * 
  *         ldim_ = self.ldim             # <<<<<<<<<<<<<<
@@ -19501,7 +31275,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":1420
+  /* "adios_mpi.pyx":1997
  * 
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -19528,22 +31302,28 @@ 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":1421
+    /* "adios_mpi.pyx":1998
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->ldim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1998, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_ldim_, __pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L4;
+
+    /* "adios_mpi.pyx":1997
+ * 
+ *         ldim_ = self.ldim
+ *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             ldim_ = tuple(self.ldim)
+ * 
+ */
   }
-  __pyx_L4:;
 
-  /* "adios_mpi.pyx":1423
+  /* "adios_mpi.pyx":2000
  *             ldim_ = tuple(self.ldim)
  * 
  *         gdim_ = self.gdim             # <<<<<<<<<<<<<<
@@ -19555,7 +31335,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":1424
+  /* "adios_mpi.pyx":2001
  * 
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -19582,22 +31362,28 @@ 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":1425
+    /* "adios_mpi.pyx":2002
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->gdim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2002, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_gdim_, __pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L7;
+
+    /* "adios_mpi.pyx":2001
+ * 
+ *         gdim_ = self.gdim
+ *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             gdim_ = tuple(self.gdim)
+ * 
+ */
   }
-  __pyx_L7:;
 
-  /* "adios_mpi.pyx":1427
+  /* "adios_mpi.pyx":2004
  *             gdim_ = tuple(self.gdim)
  * 
  *         offset_ = self.offset             # <<<<<<<<<<<<<<
@@ -19609,7 +31395,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":1428
+  /* "adios_mpi.pyx":2005
  * 
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -19636,22 +31422,28 @@ 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":1429
+    /* "adios_mpi.pyx":2006
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2006, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_offset_, __pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L10;
+
+    /* "adios_mpi.pyx":2005
+ * 
+ *         offset_ = self.offset
+ *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
+ *             offset_ = tuple(self.offset)
+ * 
+ */
   }
-  __pyx_L10:;
 
-  /* "adios_mpi.pyx":1431
+  /* "adios_mpi.pyx":2008
  *             offset_ = tuple(self.offset)
  * 
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -19663,7 +31455,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":1432
+  /* "adios_mpi.pyx":2009
  * 
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -19672,21 +31464,21 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
  */
   __pyx_t_3 = __pyx_v_self->value;
   __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_t_3, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_t_3, __pyx_ptype_5numpy_ndarray); 
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1433
+    /* "adios_mpi.pyx":2010
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2010, __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_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = NULL;
@@ -19700,157 +31492,165 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2010, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
+      __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);
-      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      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_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_3);
     __pyx_t_3 = 0;
-    goto __pyx_L13;
+
+    /* "adios_mpi.pyx":2009
+ * 
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
   }
-  __pyx_L13:;
 
-  /* "adios_mpi.pyx":1435
+  /* "adios_mpi.pyx":2012
  *             val_ = np.array(self.value)
  * 
  *         atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
  *         ## No space allowed
  *         define_var(gid, self.name, "", atype,
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = __pyx_f_9adios_mpi_np2adiostype(((PyArray_Descr *)__pyx_t_3), 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __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":1437
+  /* "adios_mpi.pyx":2014
  *         atype = np2adiostype(val_.dtype)
  *         ## No space allowed
  *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  */
-  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_atype); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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)
 
-  /* "adios_mpi.pyx":1438
+  /* "adios_mpi.pyx":2015
  *         ## No space allowed
  *         define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_ldim_);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ldim_);
   __Pyx_GIVEREF(__pyx_v_ldim_);
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
+  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_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
+  __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_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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)
 
-  /* "adios_mpi.pyx":1439
+  /* "adios_mpi.pyx":2016
  *         define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_gdim_);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_gdim_);
   __Pyx_GIVEREF(__pyx_v_gdim_);
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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_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_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_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_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_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)
 
-  /* "adios_mpi.pyx":1440
+  /* "adios_mpi.pyx":2017
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
  *     def bytes(self):
  */
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_offset_);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_offset_);
   __Pyx_GIVEREF(__pyx_v_offset_);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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_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_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_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_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_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)
 
-  /* "adios_mpi.pyx":1437
+  /* "adios_mpi.pyx":2014
  *         atype = np2adiostype(val_.dtype)
  *         ## No space allowed
  *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  */
-  __pyx_t_13.__pyx_n = 3;
-  __pyx_t_13.dimensions = __pyx_t_10;
-  __pyx_t_13.global_dimensions = __pyx_t_11;
-  __pyx_t_13.local_offsets = __pyx_t_12;
-  __pyx_f_9adios_mpi_define_var(__pyx_v_gid, __pyx_t_8, __pyx_k__7, __pyx_t_9, 0, &__pyx_t_13); 
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __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_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;
 
-  /* "adios_mpi.pyx":1415
- *         self.offset = offset
+  /* "adios_mpi.pyx":1992
+ *         self.value = value
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
  *         if self.value is None:
@@ -19865,6 +31665,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_6);
   __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
   __Pyx_AddTraceback("adios_mpi.varinfo.define", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -19878,7 +31679,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1442
+/* "adios_mpi.pyx":2019
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  *     def bytes(self):             # <<<<<<<<<<<<<<
@@ -19910,12 +31711,9 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("bytes", 0);
 
-  /* "adios_mpi.pyx":1443
+  /* "adios_mpi.pyx":2020
  * 
  *     def bytes(self):
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -19927,7 +31725,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":1444
+  /* "adios_mpi.pyx":2021
  *     def bytes(self):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -19936,21 +31734,21 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
  */
   __pyx_t_1 = __pyx_v_self->value;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, __pyx_ptype_5numpy_ndarray); 
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":1445
+    /* "adios_mpi.pyx":2022
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2022, __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_filename = __pyx_f[0]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -19964,27 +31762,33 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2022, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
+      __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);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      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_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
     __pyx_t_1 = 0;
-    goto __pyx_L3;
+
+    /* "adios_mpi.pyx":2021
+ *     def bytes(self):
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
   }
-  __pyx_L3:;
 
-  /* "adios_mpi.pyx":1447
+  /* "adios_mpi.pyx":2024
  *             val_ = np.array(self.value)
  * 
  *         return val_.size * val_.itemsize             # <<<<<<<<<<<<<<
@@ -19992,11 +31796,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_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2024, __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;
@@ -20004,7 +31808,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1442
+  /* "adios_mpi.pyx":2019
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  *     def bytes(self):             # <<<<<<<<<<<<<<
@@ -20027,7 +31831,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1449
+/* "adios_mpi.pyx":2026
  *         return val_.size * val_.itemsize
  * 
  *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
@@ -20040,14 +31844,11 @@ static PyObject *__pyx_pw_9adios_mpi_7varinfo_7write(PyObject *__pyx_v_self, PyO
 static char __pyx_doc_9adios_mpi_7varinfo_6write[] = "varinfo.write(self, int64_t fd)";
 static PyObject *__pyx_pw_9adios_mpi_7varinfo_7write(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd) {
   int64_t __pyx_v_fd;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __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_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __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, 2026, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -20072,13 +31873,9 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
-  char *__pyx_t_7;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("write", 0);
 
-  /* "adios_mpi.pyx":1450
+  /* "adios_mpi.pyx":2027
  * 
  *     def write(self, int64_t fd):
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -20090,7 +31887,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":1451
+  /* "adios_mpi.pyx":2028
  *     def write(self, int64_t fd):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -20099,21 +31896,21 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
  */
   __pyx_t_1 = __pyx_v_self->value;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, ((PyObject*)__pyx_ptype_5numpy_ndarray)); 
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_t_1, __pyx_ptype_5numpy_ndarray); 
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":1452
+    /* "adios_mpi.pyx":2029
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2029, __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_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __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_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -20127,37 +31924,45 @@ 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_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __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_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2029, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
+      __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);
-      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      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_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
     __pyx_t_1 = 0;
-    goto __pyx_L3;
+
+    /* "adios_mpi.pyx":2028
+ *     def write(self, int64_t fd):
+ *         val_ = self.value
+ *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *             val_ = np.array(self.value)
+ * 
+ */
   }
-  __pyx_L3:;
 
-  /* "adios_mpi.pyx":1454
+  /* "adios_mpi.pyx":2031
  *             val_ = np.array(self.value)
  * 
  *         write(fd, self.name, val_)             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_f_9adios_mpi_write(__pyx_v_fd, __pyx_t_7, __pyx_v_val_, 0, NULL);
+  __pyx_t_1 = __pyx_v_self->name;
+  __Pyx_INCREF(__pyx_t_1);
+  __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":1449
+  /* "adios_mpi.pyx":2026
  *         return val_.size * val_.itemsize
  * 
  *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
@@ -20182,7 +31987,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1456
+/* "adios_mpi.pyx":2033
  *         write(fd, self.name, val_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -20208,12 +32013,9 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1457
+  /* "adios_mpi.pyx":2034
  * 
  *     def __repr__(self):
  *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \             # <<<<<<<<<<<<<<
@@ -20222,46 +32024,46 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1458
+  /* "adios_mpi.pyx":2035
  *     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)             # <<<<<<<<<<<<<<
  * 
- * ## ====================
+ * ## Aliases
  */
-  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->name);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
   __Pyx_INCREF(__pyx_v_self->ldim);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->ldim);
   __Pyx_GIVEREF(__pyx_v_self->ldim);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->ldim);
   __Pyx_INCREF(__pyx_v_self->gdim);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->gdim);
   __Pyx_GIVEREF(__pyx_v_self->gdim);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->gdim);
   __Pyx_INCREF(__pyx_v_self->offset);
-  PyTuple_SET_ITEM(__pyx_t_1, 3, __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->value);
-  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->value);
   __Pyx_GIVEREF(__pyx_v_self->value);
+  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->value);
 
-  /* "adios_mpi.pyx":1457
+  /* "adios_mpi.pyx":2034
  * 
  *     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)
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __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, 2034, __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":1456
+  /* "adios_mpi.pyx":2033
  *         write(fd, self.name, val_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -20281,9 +32083,9 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1401
- * cdef class varinfo:
- *     cdef bytes name
+/* "adios_mpi.pyx":1976
+ * cdef class varinfo(object):
+ *     cdef str name
  *     cdef public ldim             # <<<<<<<<<<<<<<
  *     cdef public gdim
  *     cdef public offset
@@ -20376,8 +32178,8 @@ static int __pyx_pf_9adios_mpi_7varinfo_4ldim_4__del__(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1402
- *     cdef bytes name
+/* "adios_mpi.pyx":1977
+ *     cdef str name
  *     cdef public ldim
  *     cdef public gdim             # <<<<<<<<<<<<<<
  *     cdef public offset
@@ -20471,7 +32273,7 @@ static int __pyx_pf_9adios_mpi_7varinfo_4gdim_4__del__(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1403
+/* "adios_mpi.pyx":1978
  *     cdef public ldim
  *     cdef public gdim
  *     cdef public offset             # <<<<<<<<<<<<<<
@@ -20566,12 +32368,12 @@ static int __pyx_pf_9adios_mpi_7varinfo_6offset_4__del__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1404
+/* "adios_mpi.pyx":1979
  *     cdef public gdim
  *     cdef public offset
  *     cdef public value             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, char * name,
+ *     def __init__(self, str name,
  */
 
 /* Python wrapper */
@@ -20661,7 +32463,7 @@ static int __pyx_pf_9adios_mpi_7varinfo_5value_4__del__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1464
+/* "adios_mpi.pyx":2049
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
@@ -20670,15 +32472,12 @@ static int __pyx_pf_9adios_mpi_7varinfo_5value_4__del__(struct __pyx_obj_9adios_
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_49readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_48readvar[] = "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_49readvar = {"readvar", (PyCFunction)__pyx_pw_9adios_mpi_49readvar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_48readvar};
-static PyObject *__pyx_pw_9adios_mpi_49readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+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) {
   PyObject *__pyx_v_fname = 0;
   PyObject *__pyx_v_varname = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("readvar (wrapper)", 0);
@@ -20702,11 +32501,11 @@ static PyObject *__pyx_pw_9adios_mpi_49readvar(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_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, 1); __PYX_ERR(0, 2049, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) __PYX_ERR(0, 2049, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -20719,20 +32518,20 @@ static PyObject *__pyx_pw_9adios_mpi_49readvar(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_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2049, __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_48readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
+  __pyx_r = __pyx_pf_9adios_mpi_56readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_48readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname) {
+static PyObject *__pyx_pf_9adios_mpi_56readvar(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;
@@ -20741,111 +32540,66 @@ static PyObject *__pyx_pf_9adios_mpi_48readvar(CYTHON_UNUSED PyObject *__pyx_sel
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  int __pyx_t_6;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("readvar", 0);
 
-  /* "adios_mpi.pyx":1474
+  /* "adios_mpi.pyx":2059
  *         NumPy ndarray: variable value
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)             # <<<<<<<<<<<<<<
- *     if not f.var.has_key(varname):
- *         print "No valid variable"
+ *     v = f[varname]
+ *     return v.read(from_steps=0, nsteps=v.nsteps)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2059, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_fname);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
   __Pyx_GIVEREF(__pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2059, __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_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __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, 2059, __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_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_4) < 0) __PYX_ERR(0, 2059, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_file)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __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, 2059, __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":1475
+  /* "adios_mpi.pyx":2060
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)
- *     if not f.var.has_key(varname):             # <<<<<<<<<<<<<<
- *         print "No valid variable"
- *         return
- */
-  if (unlikely(__pyx_v_f->var == Py_None)) {
-    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_5 = PyDict_Contains(__pyx_v_f->var, __pyx_v_varname); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
-  if (__pyx_t_6) {
-
-    /* "adios_mpi.pyx":1476
- *     f = file(fname, comm=MPI.COMM_SELF)
- *     if not f.var.has_key(varname):
- *         print "No valid variable"             # <<<<<<<<<<<<<<
- *         return
- * 
- */
-    if (__Pyx_PrintOne(0, __pyx_kp_s_No_valid_variable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "adios_mpi.pyx":1477
- *     if not f.var.has_key(varname):
- *         print "No valid variable"
- *         return             # <<<<<<<<<<<<<<
- * 
- *     v = f.var[varname]
- */
-    __Pyx_XDECREF(__pyx_r);
-    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-    goto __pyx_L0;
-  }
-
-  /* "adios_mpi.pyx":1479
- *         return
- * 
- *     v = f.var[varname]             # <<<<<<<<<<<<<<
+ *     v = f[varname]             # <<<<<<<<<<<<<<
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  */
-  if (unlikely(__pyx_v_f->var == Py_None)) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_f->var, __pyx_v_varname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __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_GOTREF(__pyx_t_4);
   __pyx_v_v = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1480
- * 
- *     v = f.var[varname]
+  /* "adios_mpi.pyx":2061
+ *     f = file(fname, comm=MPI.COMM_SELF)
+ *     v = f[varname]
  *     return v.read(from_steps=0, nsteps=v.nsteps)             # <<<<<<<<<<<<<<
  * 
  * 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_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2061, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_steps, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_nsteps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) __PYX_ERR(0, 2061, __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_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __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, 2061, __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;
@@ -20853,7 +32607,7 @@ static PyObject *__pyx_pf_9adios_mpi_48readvar(CYTHON_UNUSED PyObject *__pyx_sel
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1464
+  /* "adios_mpi.pyx":2049
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
@@ -20877,7 +32631,7 @@ static PyObject *__pyx_pf_9adios_mpi_48readvar(CYTHON_UNUSED PyObject *__pyx_sel
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1482
+/* "adios_mpi.pyx":2063
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
@@ -20886,21 +32640,21 @@ static PyObject *__pyx_pf_9adios_mpi_48readvar(CYTHON_UNUSED PyObject *__pyx_sel
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_51bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname); /*proto*/
-static char __pyx_doc_9adios_mpi_50bpls[] = "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_51bpls = {"bpls", (PyCFunction)__pyx_pw_9adios_mpi_51bpls, METH_O, __pyx_doc_9adios_mpi_50bpls};
-static PyObject *__pyx_pw_9adios_mpi_51bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname) {
+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) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("bpls (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_50bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
+  __pyx_r = __pyx_pf_9adios_mpi_58bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_50bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname) {
+static PyObject *__pyx_pf_9adios_mpi_58bpls(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;
@@ -20913,81 +32667,78 @@ static PyObject *__pyx_pf_9adios_mpi_50bpls(CYTHON_UNUSED PyObject *__pyx_self,
   Py_ssize_t __pyx_t_6;
   int __pyx_t_7;
   int __pyx_t_8;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("bpls", 0);
 
-  /* "adios_mpi.pyx":1491
+  /* "adios_mpi.pyx":2072
  *         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_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2072, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_fname);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
   __Pyx_GIVEREF(__pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2072, __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_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __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, 2072, __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_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_4) < 0) __PYX_ERR(0, 2072, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_9adios_mpi_file)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __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, 2072, __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":1492
+  /* "adios_mpi.pyx":2073
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)
  *     return {'nvars': f.nvars,             # <<<<<<<<<<<<<<
  *             'nattrs': f.nattrs,
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
+ *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2073, __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_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2073, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nvars, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nvars, __pyx_t_2) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1493
+  /* "adios_mpi.pyx":2074
  *     f = file(fname, comm=MPI.COMM_SELF)
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,             # <<<<<<<<<<<<<<
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+ *             '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_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2074, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nattrs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nattrs, __pyx_t_2) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1494
+  /* "adios_mpi.pyx":2075
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),             # <<<<<<<<<<<<<<
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+ *             '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_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2075, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = 0;
-  if (unlikely(__pyx_v_f->var == Py_None)) {
+  if (unlikely(((PyObject *)__pyx_v_f->vars) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 2075, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_f->var, 1, __pyx_n_s_iterkeys, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_1);
   __pyx_t_1 = __pyx_t_3;
@@ -20995,34 +32746,34 @@ static PyObject *__pyx_pf_9adios_mpi_50bpls(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_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2075, __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_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2075, __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_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2075, __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_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_vars, __pyx_t_1) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1495
+  /* "adios_mpi.pyx":2076
  *             'nattrs': f.nattrs,
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),             # <<<<<<<<<<<<<<
+ *             '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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2076, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_6 = 0;
-  if (unlikely(__pyx_v_f->attr == Py_None)) {
+  if (unlikely(((PyObject *)__pyx_v_f->attrs) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(0, 2076, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_f->attr, 1, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __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_GOTREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_2);
   __pyx_t_2 = __pyx_t_3;
@@ -21030,54 +32781,54 @@ static PyObject *__pyx_pf_9adios_mpi_50bpls(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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2076, __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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2076, __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_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2076, __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_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attrs, __pyx_t_2) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1496
- *             'vars': tuple([ k for k in f.var.iterkeys() ]),
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+  /* "adios_mpi.pyx":2077
+ *             '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_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2077, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
+  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_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_time_steps, __pyx_t_3) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1497
- *             'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+  /* "adios_mpi.pyx":2078
+ *             '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_filename = __pyx_f[0]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_file_size, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_file_size, __pyx_t_3) < 0) __PYX_ERR(0, 2073, __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":1482
+  /* "adios_mpi.pyx":2063
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
@@ -21101,7 +32852,7 @@ static PyObject *__pyx_pf_9adios_mpi_50bpls(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
  *         # experimental exception made for __getbuffer__ and __releasebuffer__
  *         # -- the details of this may change.
  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
@@ -21142,16 +32893,13 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   char *__pyx_t_7;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getbuffer__", 0);
   if (__pyx_v_info != NULL) {
     __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(__pyx_v_info->obj);
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":203
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":203
  *             # of flags
  * 
  *             if info == NULL: return             # <<<<<<<<<<<<<<
@@ -21164,7 +32912,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     goto __pyx_L0;
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":206
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":206
  * 
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -21173,7 +32921,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_endian_detector = 1;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":207
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":207
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -21182,7 +32930,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":209
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":209
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
  * 
  *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
@@ -21191,7 +32939,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211
  *             ndim = PyArray_NDIM(self)
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -21201,7 +32949,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":212
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":212
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 copy_shape = 1             # <<<<<<<<<<<<<<
@@ -21209,22 +32957,30 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 copy_shape = 0
  */
     __pyx_v_copy_shape = 1;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211
+ *             ndim = PyArray_NDIM(self)
+ * 
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 copy_shape = 1
+ *             else:
+ */
     goto __pyx_L4;
   }
-  /*else*/ {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214
  *                 copy_shape = 1
  *             else:
  *                 copy_shape = 0             # <<<<<<<<<<<<<<
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  */
+  /*else*/ {
     __pyx_v_copy_shape = 0;
   }
   __pyx_L4:;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
  *                 copy_shape = 0
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
@@ -21238,7 +32994,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     goto __pyx_L6_bool_binop_done;
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":217
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":217
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
@@ -21248,23 +33004,39 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L6_bool_binop_done:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
+ *                 copy_shape = 0
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ */
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __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_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(1, 218, __pyx_L1_error)
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216
+ *                 copy_shape = 0
+ * 
+ *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ */
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
  *                 raise ValueError(u"ndarray is not C contiguous")
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
@@ -21278,7 +33050,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     goto __pyx_L9_bool_binop_done;
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":221
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":221
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
@@ -21288,23 +33060,39 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L9_bool_binop_done:;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ */
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
  * 
  *             info.buf = PyArray_DATA(self)
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __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_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(1, 222, __pyx_L1_error)
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220
+ *                 raise ValueError(u"ndarray is not C contiguous")
+ * 
+ *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
+ *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
+ */
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":224
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":224
  *                 raise ValueError(u"ndarray is not Fortran contiguous")
  * 
  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
@@ -21313,7 +33101,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
  * 
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim             # <<<<<<<<<<<<<<
@@ -21322,7 +33110,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_info->ndim = __pyx_v_ndim;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim
  *             if copy_shape:             # <<<<<<<<<<<<<<
@@ -21332,7 +33120,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   __pyx_t_1 = (__pyx_v_copy_shape != 0);
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
  *                 # Allocate new buffer for strides and shape info.
  *                 # This is allocated as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)             # <<<<<<<<<<<<<<
@@ -21341,7 +33129,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
     __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2)));
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":230
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":230
  *                 # This is allocated as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
  *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
@@ -21350,7 +33138,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
     __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):             # <<<<<<<<<<<<<<
@@ -21361,7 +33149,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
       __pyx_v_i = __pyx_t_5;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
@@ -21370,7 +33158,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
       (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]
  *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
@@ -21379,20 +33167,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
       (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
     }
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226
+ *             info.buf = PyArray_DATA(self)
+ *             info.ndim = ndim
+ *             if copy_shape:             # <<<<<<<<<<<<<<
+ *                 # Allocate new buffer for strides and shape info.
+ *                 # This is allocated as one block, strides first.
+ */
     goto __pyx_L11;
   }
-  /*else*/ {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
  *                     info.shape[i] = PyArray_DIMS(self)[i]
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  */
+  /*else*/ {
     __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
@@ -21403,7 +33199,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   }
   __pyx_L11:;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
@@ -21412,7 +33208,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_info->suboffsets = NULL;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":238
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":238
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
@@ -21421,7 +33217,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)
  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
@@ -21430,28 +33226,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
  * 
  *             cdef int t
  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
  *             cdef dtype descr = self.descr
- *             cdef list stack
+ *             cdef int offset
  */
   __pyx_v_f = NULL;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
  *             cdef int t
  *             cdef char* f = NULL
  *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
- *             cdef list stack
  *             cdef int offset
+ * 
  */
   __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
  *             cdef int offset
  * 
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
@@ -21460,7 +33256,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
   __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
  * 
  *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
@@ -21478,7 +33274,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   __pyx_L15_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":251
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
  *             if not hasfields and not copy_shape:
  *                 # do not call releasebuffer
  *                 info.obj = None             # <<<<<<<<<<<<<<
@@ -21490,17 +33286,25 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     __Pyx_GOTREF(__pyx_v_info->obj);
     __Pyx_DECREF(__pyx_v_info->obj);
     __pyx_v_info->obj = Py_None;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
+ * 
+ *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
+ *                 # do not call releasebuffer
+ *                 info.obj = None
+ */
     goto __pyx_L14;
   }
-  /*else*/ {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
  *             else:
  *                 # need to call releasebuffer
  *                 info.obj = self             # <<<<<<<<<<<<<<
  * 
  *             if not hasfields:
  */
+  /*else*/ {
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     __Pyx_GOTREF(__pyx_v_info->obj);
@@ -21509,7 +33313,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   }
   __pyx_L14:;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":256
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255
  *                 info.obj = self
  * 
  *             if not hasfields:             # <<<<<<<<<<<<<<
@@ -21519,7 +33323,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":256
  * 
  *             if not hasfields:
  *                 t = descr.type_num             # <<<<<<<<<<<<<<
@@ -21529,7 +33333,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     __pyx_t_4 = __pyx_v_descr->type_num;
     __pyx_v_t = __pyx_t_4;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":258
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
  *             if not hasfields:
  *                 t = descr.type_num
  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
@@ -21549,7 +33353,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     }
     __pyx_L20_next_or:;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":258
  *                 t = descr.type_num
  *                 if ((descr.byteorder == c'>' and little_endian) or
  *                     (descr.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
@@ -21565,43 +33369,51 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0);
     __pyx_t_1 = __pyx_t_2;
     __pyx_L19_bool_binop_done:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ *             if not hasfields:
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")
+ */
     if (__pyx_t_1) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
  *                 if ((descr.byteorder == c'>' and little_endian) or
  *                     (descr.byteorder == c'<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __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_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
+      __PYX_ERR(1, 259, __pyx_L1_error)
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
- *                 else:
- *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ *             if not hasfields:
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *                     (descr.byteorder == c'<' and not little_endian)):
+ *                     raise ValueError(u"Non-native byte order not supported")
  */
-    switch (__pyx_v_t) {
+    }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
  *                     (descr.byteorder == c'<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"
  */
+    switch (__pyx_v_t) {
       case NPY_BYTE:
-      __pyx_v_f = __pyx_k_b;
+      __pyx_v_f = ((char *)"b");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
  *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
@@ -21609,10 +33421,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_USHORT:      f = "H"
  */
       case NPY_UBYTE:
-      __pyx_v_f = __pyx_k_B;
+      __pyx_v_f = ((char *)"B");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
@@ -21620,10 +33432,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_INT:         f = "i"
  */
       case NPY_SHORT:
-      __pyx_v_f = __pyx_k_h;
+      __pyx_v_f = ((char *)"h");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
@@ -21631,10 +33443,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_UINT:        f = "I"
  */
       case NPY_USHORT:
-      __pyx_v_f = __pyx_k_H;
+      __pyx_v_f = ((char *)"H");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
@@ -21642,10 +33454,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_LONG:        f = "l"
  */
       case NPY_INT:
-      __pyx_v_f = __pyx_k_i;
+      __pyx_v_f = ((char *)"i");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
@@ -21653,10 +33465,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_ULONG:       f = "L"
  */
       case NPY_UINT:
-      __pyx_v_f = __pyx_k_I;
+      __pyx_v_f = ((char *)"I");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
@@ -21664,10 +33476,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_LONGLONG:    f = "q"
  */
       case NPY_LONG:
-      __pyx_v_f = __pyx_k_l;
+      __pyx_v_f = ((char *)"l");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
@@ -21675,10 +33487,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  */
       case NPY_ULONG:
-      __pyx_v_f = __pyx_k_L;
+      __pyx_v_f = ((char *)"L");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
@@ -21686,10 +33498,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_FLOAT:       f = "f"
  */
       case NPY_LONGLONG:
-      __pyx_v_f = __pyx_k_q;
+      __pyx_v_f = ((char *)"q");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
@@ -21697,10 +33509,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_DOUBLE:      f = "d"
  */
       case NPY_ULONGLONG:
-      __pyx_v_f = __pyx_k_Q;
+      __pyx_v_f = ((char *)"Q");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
@@ -21708,10 +33520,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  */
       case NPY_FLOAT:
-      __pyx_v_f = __pyx_k_f;
+      __pyx_v_f = ((char *)"f");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
@@ -21719,10 +33531,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  */
       case NPY_DOUBLE:
-      __pyx_v_f = __pyx_k_d;
+      __pyx_v_f = ((char *)"d");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
@@ -21730,10 +33542,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  */
       case NPY_LONGDOUBLE:
-      __pyx_v_f = __pyx_k_g;
+      __pyx_v_f = ((char *)"g");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
@@ -21741,10 +33553,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  */
       case NPY_CFLOAT:
-      __pyx_v_f = __pyx_k_Zf;
+      __pyx_v_f = ((char *)"Zf");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
@@ -21752,10 +33564,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 elif t == NPY_OBJECT:      f = "O"
  */
       case NPY_CDOUBLE:
-      __pyx_v_f = __pyx_k_Zd;
+      __pyx_v_f = ((char *)"Zd");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
@@ -21763,10 +33575,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                 else:
  */
       case NPY_CLONGDOUBLE:
-      __pyx_v_f = __pyx_k_Zg;
+      __pyx_v_f = ((char *)"Zg");
       break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
@@ -21774,37 +33586,37 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  */
       case NPY_OBJECT:
-      __pyx_v_f = __pyx_k_O;
+      __pyx_v_f = ((char *)"O");
       break;
       default:
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
  *                 elif t == NPY_OBJECT:      f = "O"
  *                 else:
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *                 info.format = f
  *                 return
  */
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_6);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
       __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(1, 278, __pyx_L1_error)
       break;
     }
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
  *                 else:
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f             # <<<<<<<<<<<<<<
@@ -21813,7 +33625,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
     __pyx_v_info->format = __pyx_v_f;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":281
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f
  *                 return             # <<<<<<<<<<<<<<
@@ -21822,19 +33634,27 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
     __pyx_r = 0;
     goto __pyx_L0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255
+ *                 info.obj = self
+ * 
+ *             if not hasfields:             # <<<<<<<<<<<<<<
+ *                 t = descr.type_num
+ *                 if ((descr.byteorder == c'>' and little_endian) or
+ */
   }
-  /*else*/ {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
  *                 return
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
  *                 info.format[0] = c'^' # Native data types, manual alignment
  *                 offset = 0
  */
-    __pyx_v_info->format = ((char *)malloc(255));
+  /*else*/ {
+    __pyx_v_info->format = ((char *)malloc(0xFF));
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = c'^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
@@ -21843,7 +33663,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
     (__pyx_v_info->format[0]) = '^';
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":285
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = c'^' # Native data types, manual alignment
  *                 offset = 0             # <<<<<<<<<<<<<<
@@ -21852,17 +33672,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
  */
     __pyx_v_offset = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":285
  *                 info.format[0] = c'^' # Native data types, manual alignment
  *                 offset = 0
  *                 f = _util_dtypestring(descr, info.format + 1,             # <<<<<<<<<<<<<<
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)
  */
-    __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error)
     __pyx_v_f = __pyx_t_7;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)
  *                 f[0] = c'\0' # Terminate format string             # <<<<<<<<<<<<<<
@@ -21872,7 +33692,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
     (__pyx_v_f[0]) = '\x00';
   }
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197
  *         # experimental exception made for __getbuffer__ and __releasebuffer__
  *         # -- the details of this may change.
  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
@@ -21904,7 +33724,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290
  *                 f[0] = c'\0' # Terminate format string
  * 
  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
@@ -21928,7 +33748,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__releasebuffer__", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
  * 
  *         def __releasebuffer__(ndarray self, Py_buffer* info):
  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
@@ -21938,7 +33758,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
   __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
  *         def __releasebuffer__(ndarray self, Py_buffer* info):
  *             if PyArray_HASFIELDS(self):
  *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
@@ -21946,11 +33766,17 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
  *                 stdlib.free(info.strides)
  */
     free(__pyx_v_info->format);
-    goto __pyx_L3;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ */
   }
-  __pyx_L3:;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
  *             if PyArray_HASFIELDS(self):
  *                 stdlib.free(info.format)
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -21960,19 +33786,25 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
   __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
   if (__pyx_t_1) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
  *                 stdlib.free(info.format)
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
  *                 # info.shape was stored after info.strides in the same block
- * 
+ * 
+ */
+    free(__pyx_v_info->strides);
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.strides)
+ *                 # info.shape was stored after info.strides in the same block
  */
-    free(__pyx_v_info->strides);
-    goto __pyx_L4;
   }
-  __pyx_L4:;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290
  *                 f[0] = c'\0' # Terminate format string
  * 
  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
@@ -21984,7 +33816,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
   __Pyx_RefNannyFinishContext();
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
  * ctypedef npy_cdouble     complex_t
  * 
  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
@@ -21996,12 +33828,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":772
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
  * 
  * cdef inline object PyArray_MultiIterNew1(a):
  *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
@@ -22009,13 +33838,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
  * cdef inline object PyArray_MultiIterNew2(a, b):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
  * ctypedef npy_cdouble     complex_t
  * 
  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
@@ -22034,7 +33863,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
  *     return PyArray_MultiIterNew(1, <void*>a)
  * 
  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
@@ -22046,12 +33875,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774
  * 
  * cdef inline object PyArray_MultiIterNew2(a, b):
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
@@ -22059,13 +33885,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
  *     return PyArray_MultiIterNew(1, <void*>a)
  * 
  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
@@ -22084,7 +33910,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
  * 
  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
@@ -22096,12 +33922,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
  * 
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
@@ -22109,13 +33932,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
  * 
  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
@@ -22134,7 +33957,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
  * 
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
@@ -22146,12 +33969,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780
  * 
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
@@ -22159,13 +33979,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
  * 
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
@@ -22184,7 +34004,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
  * 
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
@@ -22196,12 +34016,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
  * 
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
@@ -22209,13 +34026,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
  * 
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
@@ -22234,7 +34051,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":786
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
  * 
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
@@ -22261,22 +34078,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
   int __pyx_t_7;
   long __pyx_t_8;
   char *__pyx_t_9;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_util_dtypestring", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":793
- *     cdef int delta_offset
- *     cdef tuple i
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ * 
+ *     cdef dtype child
  *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
  *     cdef tuple fields
  */
   __pyx_v_endian_detector = 1;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
- *     cdef tuple i
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ *     cdef dtype child
  *     cdef int endian_detector = 1
  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
  *     cdef tuple fields
@@ -22284,7 +34098,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":797
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
  *     cdef tuple fields
  * 
  *     for childname in descr.names:             # <<<<<<<<<<<<<<
@@ -22293,20 +34107,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
  */
   if (unlikely(__pyx_v_descr->names == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __PYX_ERR(1, 794, __pyx_L1_error)
   }
   __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
   for (;;) {
     if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error)
     #else
-    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":795
  * 
  *     for childname in descr.names:
  *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
@@ -22315,15 +34130,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
  */
     if (unlikely(__pyx_v_descr->fields == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(1, 795, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
  *     for childname in descr.names:
  *         fields = descr.fields[childname]
  *         child, new_offset = fields             # <<<<<<<<<<<<<<
@@ -22340,7 +34155,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __PYX_ERR(1, 796, __pyx_L1_error)
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
@@ -22348,52 +34163,60 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_4);
       #else
-      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       #endif
     } else {
-      __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 796, __pyx_L1_error)
     }
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 796, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
     __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798
  *         child, new_offset = fields
  * 
  *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  * 
  */
-    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
     if (__pyx_t_6) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799
  * 
  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
  * 
  *         if ((child.byteorder == c'>' and little_endian) or
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __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_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(1, 799, __pyx_L1_error)
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798
+ *         child, new_offset = fields
+ * 
+ *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ */
     }
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":804
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  * 
  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
@@ -22413,7 +34236,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
     }
     __pyx_L8_next_or:;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
  * 
  *         if ((child.byteorder == c'>' and little_endian) or
  *             (child.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
@@ -22429,23 +34252,39 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
     __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0);
     __pyx_t_6 = __pyx_t_7;
     __pyx_L7_bool_binop_done:;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *             (child.byteorder == c'<' and not little_endian)):
+ *             raise ValueError(u"Non-native byte order not supported")
+ */
     if (__pyx_t_6) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803
  *         if ((child.byteorder == c'>' and little_endian) or
  *             (child.byteorder == c'<' and not little_endian)):
  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *             # One could encode it in the format string and have Cython
  *             # complain instead, BUT: < and > in format strings also imply
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __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_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __PYX_ERR(1, 803, __pyx_L1_error)
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
+ * 
+ *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
+ *             (child.byteorder == c'<' and not little_endian)):
+ *             raise ValueError(u"Non-native byte order not supported")
+ */
     }
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":816
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
  * 
  *         # Output padding bytes
  *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
@@ -22453,24 +34292,24 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
  *             f += 1
  */
     while (1) {
-      __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (!__pyx_t_6) break;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":817
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
  *         # Output padding bytes
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
  *             f += 1
  *             offset[0] += 1
  */
-      (__pyx_v_f[0]) = 120;
+      (__pyx_v_f[0]) = 0x78;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":815
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte
  *             f += 1             # <<<<<<<<<<<<<<
@@ -22479,7 +34318,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
  */
       __pyx_v_f = (__pyx_v_f + 1);
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":819
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":816
  *             f[0] = 120 # "x"; pad byte
  *             f += 1
  *             offset[0] += 1             # <<<<<<<<<<<<<<
@@ -22490,7 +34329,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
       (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
     }
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":821
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818
  *             offset[0] += 1
  * 
  *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
@@ -22500,7 +34339,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
     __pyx_t_8 = 0;
     (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820
  *         offset[0] += child.itemsize
  * 
  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
@@ -22510,19 +34349,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
     __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
     if (__pyx_t_6) {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":821
  * 
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num             # <<<<<<<<<<<<<<
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")
  */
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num
  *             if end - f < 5:             # <<<<<<<<<<<<<<
@@ -22532,357 +34371,365 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
       __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
       if (__pyx_t_6) {
 
-        /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+        /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823
  *             t = child.type_num
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  */
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_Raise(__pyx_t_4, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __PYX_ERR(1, 823, __pyx_L1_error)
+
+        /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822
+ *         if not PyDataType_HASFIELDS(child):
+ *             t = child.type_num
+ *             if end - f < 5:             # <<<<<<<<<<<<<<
+ *                 raise RuntimeError(u"Format string allocated too short.")
+ * 
+ */
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 98;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":830
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 66;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":828
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 104;
+        (__pyx_v_f[0]) = 0x68;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 72;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":830
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 105;
+        (__pyx_v_f[0]) = 0x69;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 73;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":835
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 108;
+        (__pyx_v_f[0]) = 0x6C;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":836
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 76;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 113;
+        (__pyx_v_f[0]) = 0x71;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":835
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 81;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":836
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 102;
+        (__pyx_v_f[0]) = 0x66;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 100;
+        (__pyx_v_f[0]) = 0x64;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
-        (__pyx_v_f[0]) = 103;
+        (__pyx_v_f[0]) = 0x67;
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
-        (__pyx_v_f[1]) = 102;
+        (__pyx_v_f[1]) = 0x66;
         __pyx_v_f = (__pyx_v_f + 1);
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
-        (__pyx_v_f[1]) = 100;
+        (__pyx_v_f[1]) = 0x64;
         __pyx_v_f = (__pyx_v_f + 1);
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
  */
-      __pyx_t_3 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
-        (__pyx_v_f[1]) = 103;
+        (__pyx_v_f[1]) = 0x67;
         __pyx_v_f = (__pyx_v_f + 1);
         goto __pyx_L15;
       }
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_6) {
         (__pyx_v_f[0]) = 79;
         goto __pyx_L15;
       }
-      /*else*/ {
 
-        /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *             f += 1
  *         else:
  */
-        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      /*else*/ {
+        __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
+        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
         __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __PYX_ERR(1, 844, __pyx_L1_error)
       }
       __pyx_L15:;
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *             f += 1             # <<<<<<<<<<<<<<
@@ -22890,23 +34737,31 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
  *             # Cython ignores struct boundary information ("T{...}"),
  */
       __pyx_v_f = (__pyx_v_f + 1);
+
+      /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820
+ *         offset[0] += child.itemsize
+ * 
+ *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
+ *             t = child.type_num
+ *             if end - f < 5:
+ */
       goto __pyx_L13;
     }
-    /*else*/ {
 
-      /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
  *             # Cython ignores struct boundary information ("T{...}"),
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
  *     return f
  * 
  */
-      __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    /*else*/ {
+      __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(1, 849, __pyx_L1_error)
       __pyx_v_f = __pyx_t_9;
     }
     __pyx_L13:;
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":797
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
  *     cdef tuple fields
  * 
  *     for childname in descr.names:             # <<<<<<<<<<<<<<
@@ -22916,7 +34771,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)
  *     return f             # <<<<<<<<<<<<<<
@@ -22926,7 +34781,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
   __pyx_r = __pyx_v_f;
   goto __pyx_L0;
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":786
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
  * 
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
@@ -22951,7 +34806,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
   return __pyx_r;
 }
 
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":966
  * 
  * 
  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
@@ -22966,7 +34821,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("set_array_base", 0);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":971
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":968
  * cdef inline void set_array_base(ndarray arr, object base):
  *      cdef PyObject* baseptr
  *      if base is None:             # <<<<<<<<<<<<<<
@@ -22977,475 +34832,192 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":972
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969
  *      cdef PyObject* baseptr
  *      if base is None:
  *          baseptr = NULL             # <<<<<<<<<<<<<<
- *      else:
- *          Py_INCREF(base) # important to do this before decref below!
- */
-    __pyx_v_baseptr = NULL;
-    goto __pyx_L3;
-  }
-  /*else*/ {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":974
- *          baseptr = NULL
- *      else:
- *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
- *          baseptr = <PyObject*>base
- *      Py_XDECREF(arr.base)
- */
-    Py_INCREF(__pyx_v_base);
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":975
- *      else:
- *          Py_INCREF(base) # important to do this before decref below!
- *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
- *      Py_XDECREF(arr.base)
- *      arr.base = baseptr
- */
-    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
-  }
-  __pyx_L3:;
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
- *          Py_INCREF(base) # important to do this before decref below!
- *          baseptr = <PyObject*>base
- *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
- *      arr.base = baseptr
- * 
- */
-  Py_XDECREF(__pyx_v_arr->base);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *          baseptr = <PyObject*>base
- *      Py_XDECREF(arr.base)
- *      arr.base = baseptr             # <<<<<<<<<<<<<<
- * 
- * cdef inline object get_array_base(ndarray arr):
- */
-  __pyx_v_arr->base = __pyx_v_baseptr;
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969
- * 
- * 
- * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
- *      cdef PyObject* baseptr
- *      if base is None:
- */
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- *      arr.base = baseptr
- * 
- * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
- *     if arr.base is NULL:
- *         return None
- */
-
-static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  __Pyx_RefNannySetupContext("get_array_base", 0);
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * 
- * cdef inline object get_array_base(ndarray arr):
- *     if arr.base is NULL:             # <<<<<<<<<<<<<<
- *         return None
- *     else:
- */
-  __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":981
- * cdef inline object get_array_base(ndarray arr):
- *     if arr.base is NULL:
- *         return None             # <<<<<<<<<<<<<<
- *     else:
- *         return <object>arr.base
- */
-    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(Py_None);
-    __pyx_r = Py_None;
-    goto __pyx_L0;
-  }
-  /*else*/ {
-
-    /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- *         return None
- *     else:
- *         return <object>arr.base             # <<<<<<<<<<<<<<
- */
-    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
-    __pyx_r = ((PyObject *)__pyx_v_arr->base);
-    goto __pyx_L0;
-  }
-
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- *      arr.base = baseptr
- * 
- * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
- *     if arr.base is NULL:
- *         return None
- */
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-static struct __pyx_vtabstruct_9adios_mpi_file __pyx_vtable_9adios_mpi_file;
-
-static PyObject *__pyx_tp_new_9adios_mpi_file(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_9adios_mpi_file *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_file *)o);
-  p->__pyx_vtab = __pyx_vtabptr_9adios_mpi_file;
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
-
-static void __pyx_tp_dealloc_9adios_mpi_file(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_file *p = (struct __pyx_obj_9adios_mpi_file *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->var);
-  Py_CLEAR(p->attr);
-  (*Py_TYPE(o)->tp_free)(o);
-}
-
-static int __pyx_tp_traverse_9adios_mpi_file(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_9adios_mpi_file *p = (struct __pyx_obj_9adios_mpi_file *)o;
-  if (p->var) {
-    e = (*v)(p->var, a); if (e) return e;
-  }
-  if (p->attr) {
-    e = (*v)(p->attr, a); if (e) return e;
-  }
-  return 0;
-}
-
-static int __pyx_tp_clear_9adios_mpi_file(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_file *p = (struct __pyx_obj_9adios_mpi_file *)o;
-  tmp = ((PyObject*)p->var);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->attr);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_9adios_mpi_file(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_4name_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_nvars(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_5nvars_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_nattrs(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_6nattrs_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_current_step(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_12current_step_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_last_step(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_9last_step_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_endianness(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_10endianness_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_version(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_7version_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_file_sizec(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_10file_sizec_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_is_stream(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_9is_stream_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_4file_var(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_3var_1__get__(o);
-}
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!
+ */
+    __pyx_v_baseptr = NULL;
 
-static int __pyx_setprop_9adios_mpi_4file_var(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_9adios_mpi_4file_3var_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_9adios_mpi_4file_3var_5__del__(o);
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":968
+ * cdef inline void set_array_base(ndarray arr, object base):
+ *      cdef PyObject* baseptr
+ *      if base is None:             # <<<<<<<<<<<<<<
+ *          baseptr = NULL
+ *      else:
+ */
+    goto __pyx_L3;
   }
-}
 
-static PyObject *__pyx_getprop_9adios_mpi_4file_attr(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4file_4attr_1__get__(o);
-}
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":971
+ *          baseptr = NULL
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)
+ */
+  /*else*/ {
+    Py_INCREF(__pyx_v_base);
 
-static int __pyx_setprop_9adios_mpi_4file_attr(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_9adios_mpi_4file_4attr_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_9adios_mpi_4file_4attr_5__del__(o);
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":972
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!
+ *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
+ *      Py_XDECREF(arr.base)
+ *      arr.base = baseptr
+ */
+    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
   }
-}
+  __pyx_L3:;
 
-static PyMethodDef __pyx_methods_9adios_mpi_file[] = {
-  {"__del__", (PyCFunction)__pyx_pw_9adios_mpi_4file_3__del__, METH_NOARGS, __pyx_doc_9adios_mpi_4file_2__del__},
-  {"close", (PyCFunction)__pyx_pw_9adios_mpi_4file_5close, METH_NOARGS, __pyx_doc_9adios_mpi_4file_4close},
-  {"printself", (PyCFunction)__pyx_pw_9adios_mpi_4file_7printself, METH_NOARGS, __pyx_doc_9adios_mpi_4file_6printself},
-  {"advance", (PyCFunction)__pyx_pw_9adios_mpi_4file_9advance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_4file_8advance},
-  {0, 0, 0, 0}
-};
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":973
+ *          Py_INCREF(base) # important to do this before decref below!
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
+ *      arr.base = baseptr
+ * 
+ */
+  Py_XDECREF(__pyx_v_arr->base);
 
-static struct PyGetSetDef __pyx_getsets_9adios_mpi_file[] = {
-  {(char *)"name", __pyx_getprop_9adios_mpi_4file_name, 0, __pyx_k_The_filename_or_stream_name_ass, 0},
-  {(char *)"nvars", __pyx_getprop_9adios_mpi_4file_nvars, 0, __pyx_k_The_number_of_variables, 0},
-  {(char *)"nattrs", __pyx_getprop_9adios_mpi_4file_nattrs, 0, __pyx_k_The_number_of_attributes, 0},
-  {(char *)"current_step", __pyx_getprop_9adios_mpi_4file_current_step, 0, __pyx_k_The_current_timestep_index, 0},
-  {(char *)"last_step", __pyx_getprop_9adios_mpi_4file_last_step, 0, __pyx_k_The_last_timestep_index, 0},
-  {(char *)"endianness", __pyx_getprop_9adios_mpi_4file_endianness, 0, __pyx_k_The_endianness_of_the_stored_da, 0},
-  {(char *)"version", __pyx_getprop_9adios_mpi_4file_version, 0, __pyx_k_The_version_of_Adios, 0},
-  {(char *)"file_sizec", __pyx_getprop_9adios_mpi_4file_file_sizec, 0, __pyx_k_The_size_of_Adios_file, 0},
-  {(char *)"is_stream", __pyx_getprop_9adios_mpi_4file_is_stream, 0, __pyx_k_Indicating_reader_type_file_rea, 0},
-  {(char *)"var", __pyx_getprop_9adios_mpi_4file_var, __pyx_setprop_9adios_mpi_4file_var, __pyx_k_var_dict, 0},
-  {(char *)"attr", __pyx_getprop_9adios_mpi_4file_attr, __pyx_setprop_9adios_mpi_4file_attr, __pyx_k_attr_dict, 0},
-  {0, 0, 0, 0, 0}
-};
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":974
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)
+ *      arr.base = baseptr             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ */
+  __pyx_v_arr->base = __pyx_v_baseptr;
 
-static PySequenceMethods __pyx_tp_as_sequence_file = {
-  0, /*sq_length*/
-  0, /*sq_concat*/
-  0, /*sq_repeat*/
-  __pyx_sq_item_9adios_mpi_file, /*sq_item*/
-  0, /*sq_slice*/
-  0, /*sq_ass_item*/
-  0, /*sq_ass_slice*/
-  0, /*sq_contains*/
-  0, /*sq_inplace_concat*/
-  0, /*sq_inplace_repeat*/
-};
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":966
+ * 
+ * 
+ * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
+ *      cdef PyObject* baseptr
+ *      if base is None:
+ */
 
-static PyMappingMethods __pyx_tp_as_mapping_file = {
-  0, /*mp_length*/
-  __pyx_pw_9adios_mpi_4file_11__getitem__, /*mp_subscript*/
-  0, /*mp_ass_subscript*/
-};
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
 
-static PyTypeObject __pyx_type_9adios_mpi_file = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.file", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_file), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_file, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #else
-  0, /*reserved*/
-  #endif
-  __pyx_pw_9adios_mpi_4file_13__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  &__pyx_tp_as_sequence_file, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_file, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  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*/
-  "file(char *fname, char *method_name='BP', Comm comm=MPI.COMM_WORLD, is_stream=False, ADIOS_LOCKMODE lock_mode=ADIOS_LOCKMODE_ALL, float timeout_sec=0.0)\n\n    file class for Adios file read and write.\n\n    Args:\n        fname (str): filename.\n        method_name (str, optional): Adios read method (default: 'BP').\n        comm (MPI.Comm, optional): MPI comm for parallel read/write (default: MPI.COMM_WORLD).\n        is_stream (bool, optional): Set True if use stream reader (defau [...]
-  __pyx_tp_traverse_9adios_mpi_file, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_file, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_file, /*tp_methods*/
-  0, /*tp_members*/
-  __pyx_getsets_9adios_mpi_file, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_4file_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_file, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-static struct __pyx_vtabstruct_9adios_mpi_var __pyx_vtable_9adios_mpi_var;
+/* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
 
-static PyObject *__pyx_tp_new_9adios_mpi_var(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_9adios_mpi_var *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_var *)o);
-  p->__pyx_vtab = __pyx_vtabptr_9adios_mpi_var;
-  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
-  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  return o;
-}
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("get_array_base", 0);
 
-static void __pyx_tp_dealloc_9adios_mpi_var(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_var *p = (struct __pyx_obj_9adios_mpi_var *)o;
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->file);
-  Py_CLEAR(p->name);
-  Py_CLEAR(p->dtype);
-  Py_CLEAR(p->dims);
-  (*Py_TYPE(o)->tp_free)(o);
-}
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:             # <<<<<<<<<<<<<<
+ *         return None
+ *     else:
+ */
+  __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
+  if (__pyx_t_1) {
 
-static int __pyx_tp_traverse_9adios_mpi_var(PyObject *o, visitproc v, void *a) {
-  int e;
-  struct __pyx_obj_9adios_mpi_var *p = (struct __pyx_obj_9adios_mpi_var *)o;
-  if (p->file) {
-    e = (*v)(((PyObject*)p->file), a); if (e) return e;
-  }
-  if (p->dtype) {
-    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":978
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:
+ *         return None             # <<<<<<<<<<<<<<
+ *     else:
+ *         return <object>arr.base
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+
+    /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:             # <<<<<<<<<<<<<<
+ *         return None
+ *     else:
+ */
   }
-  if (p->dims) {
-    e = (*v)(p->dims, a); if (e) return e;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
+ *         return None
+ *     else:
+ *         return <object>arr.base             # <<<<<<<<<<<<<<
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
+    __pyx_r = ((PyObject *)__pyx_v_arr->base);
+    goto __pyx_L0;
   }
-  return 0;
-}
 
-static int __pyx_tp_clear_9adios_mpi_var(PyObject *o) {
-  PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_var *p = (struct __pyx_obj_9adios_mpi_var *)o;
-  tmp = ((PyObject*)p->file);
-  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->dtype);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->dims);
-  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  return 0;
-}
-static PyObject *__pyx_sq_item_9adios_mpi_var(PyObject *o, Py_ssize_t i) {
-  PyObject *r;
-  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
-  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
-  Py_DECREF(x);
-  return r;
-}
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
 
-static PyObject *__pyx_getprop_9adios_mpi_3var_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_3var_4name_1__get__(o);
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_3var_varid(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_3var_5varid_1__get__(o);
+static PyObject *__pyx_tp_new_9adios_mpi_softdict(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  return o;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_3var_dtype(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_3var_5dtype_1__get__(o);
+static void __pyx_tp_dealloc_9adios_mpi_softdict(PyObject *o) {
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_3var_ndim(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_3var_4ndim_1__get__(o);
+static int __pyx_tp_traverse_9adios_mpi_softdict(PyObject *o, visitproc v, void *a) {
+  int e;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  return 0;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_3var_dims(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_3var_4dims_1__get__(o);
+static int __pyx_tp_clear_9adios_mpi_softdict(PyObject *o) {
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  return 0;
 }
-
-static PyObject *__pyx_getprop_9adios_mpi_3var_nsteps(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_3var_6nsteps_1__get__(o);
+static PyObject *__pyx_sq_item_9adios_mpi_softdict(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
 }
 
-static PyMethodDef __pyx_methods_9adios_mpi_var[] = {
-  {"__del__", (PyCFunction)__pyx_pw_9adios_mpi_3var_3__del__, METH_NOARGS, __pyx_doc_9adios_mpi_3var_2__del__},
-  {"close", (PyCFunction)__pyx_pw_9adios_mpi_3var_5close, METH_NOARGS, __pyx_doc_9adios_mpi_3var_4close},
-  {"advance", (PyCFunction)__pyx_pw_9adios_mpi_3var_7advance, METH_NOARGS, __pyx_doc_9adios_mpi_3var_6advance},
-  {"read", (PyCFunction)__pyx_pw_9adios_mpi_3var_9read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_3var_8read},
-  {"printself", (PyCFunction)__pyx_pw_9adios_mpi_3var_11printself, METH_NOARGS, __pyx_doc_9adios_mpi_3var_10printself},
+static PyMethodDef __pyx_methods_9adios_mpi_softdict[] = {
   {0, 0, 0, 0}
 };
 
-static struct PyGetSetDef __pyx_getsets_9adios_mpi_var[] = {
-  {(char *)"name", __pyx_getprop_9adios_mpi_3var_name, 0, __pyx_k_The_variable_name, 0},
-  {(char *)"varid", __pyx_getprop_9adios_mpi_3var_varid, 0, __pyx_k_Internal_variable_id, 0},
-  {(char *)"dtype", __pyx_getprop_9adios_mpi_3var_dtype, 0, __pyx_k_Variable_type_as_in_numpy_dtype, 0},
-  {(char *)"ndim", __pyx_getprop_9adios_mpi_3var_ndim, 0, __pyx_k_The_number_of_dimensions_of_the, 0},
-  {(char *)"dims", __pyx_getprop_9adios_mpi_3var_dims, 0, __pyx_k_The_shape_of_the_variable, 0},
-  {(char *)"nsteps", __pyx_getprop_9adios_mpi_3var_nsteps, 0, __pyx_k_The_number_of_time_steps_of_the, 0},
-  {0, 0, 0, 0, 0}
-};
-
-static PySequenceMethods __pyx_tp_as_sequence_var = {
+static PySequenceMethods __pyx_tp_as_sequence_softdict = {
   0, /*sq_length*/
   0, /*sq_concat*/
   0, /*sq_repeat*/
-  __pyx_sq_item_9adios_mpi_var, /*sq_item*/
+  __pyx_sq_item_9adios_mpi_softdict, /*sq_item*/
   0, /*sq_slice*/
   0, /*sq_ass_item*/
   0, /*sq_ass_slice*/
@@ -23454,30 +35026,31 @@ static PySequenceMethods __pyx_tp_as_sequence_var = {
   0, /*sq_inplace_repeat*/
 };
 
-static PyMappingMethods __pyx_tp_as_mapping_var = {
+static PyMappingMethods __pyx_tp_as_mapping_softdict = {
   0, /*mp_length*/
-  __pyx_pw_9adios_mpi_3var_15__getitem__, /*mp_subscript*/
+  __pyx_pw_9adios_mpi_8softdict_1__getitem__, /*mp_subscript*/
   0, /*mp_ass_subscript*/
 };
 
-static PyTypeObject __pyx_type_9adios_mpi_var = {
+static PyTypeObject __pyx_type_9adios_mpi_softdict = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.var", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_var), /*tp_basicsize*/
+  "adios_mpi.softdict", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_softdict), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_var, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_softdict, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  __pyx_pw_9adios_mpi_3var_13__repr__, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
   0, /*tp_as_number*/
-  &__pyx_tp_as_sequence_var, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_var, /*tp_as_mapping*/
+  &__pyx_tp_as_sequence_softdict, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_softdict, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
@@ -23485,24 +35058,24 @@ static PyTypeObject __pyx_type_9adios_mpi_var = {
   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*/
-  "var(file file, char *name)\n\n    Adios variable class.\n\n    Unlike attributes whose values are populated on initialization,\n    variable's values will be returned by explicitly calling read() or\n    array access interface ([]).  \n\n    Args:\n        file (file): Associated file class\n        name (str): variable name\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi_var, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_var, /*tp_clear*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_softdict, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_softdict, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_var, /*tp_methods*/
+  __pyx_methods_9adios_mpi_softdict, /*tp_methods*/
   0, /*tp_members*/
-  __pyx_getsets_9adios_mpi_var, /*tp_getset*/
+  0, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_3var_1__init__, /*tp_init*/
+  0, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_var, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_softdict, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -23516,135 +35089,339 @@ static PyTypeObject __pyx_type_9adios_mpi_var = {
   0, /*tp_finalize*/
   #endif
 };
+static struct __pyx_vtabstruct_9adios_mpi_file __pyx_vtable_9adios_mpi_file;
 
-static PyObject *__pyx_tp_new_9adios_mpi_attr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_9adios_mpi_attr *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
+static PyObject *__pyx_tp_new_9adios_mpi_file(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_9adios_mpi_file *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
   if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_attr *)o);
-  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
+  p = ((struct __pyx_obj_9adios_mpi_file *)o);
+  p->__pyx_vtab = __pyx_vtabptr_9adios_mpi_file;
   p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
-  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  p->vars = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
+  p->var = Py_None; Py_INCREF(Py_None);
+  p->attr = Py_None; Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi_attr(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_attr *p = (struct __pyx_obj_9adios_mpi_attr *)o;
+static void __pyx_tp_dealloc_9adios_mpi_file(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_file *p = (struct __pyx_obj_9adios_mpi_file *)o;
   #if PY_VERSION_HEX >= 0x030400a1
   if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
   PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->file);
   Py_CLEAR(p->name);
-  Py_CLEAR(p->dtype);
-  Py_CLEAR(p->value);
-  (*Py_TYPE(o)->tp_free)(o);
+  Py_CLEAR(p->vars);
+  Py_CLEAR(p->attrs);
+  Py_CLEAR(p->var);
+  Py_CLEAR(p->attr);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi_attr(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_file(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi_attr *p = (struct __pyx_obj_9adios_mpi_attr *)o;
-  if (p->file) {
-    e = (*v)(((PyObject*)p->file), a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_file *p = (struct __pyx_obj_9adios_mpi_file *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->vars) {
+    e = (*v)(((PyObject*)p->vars), a); if (e) return e;
   }
-  if (p->dtype) {
-    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
+  if (p->attrs) {
+    e = (*v)(((PyObject*)p->attrs), a); if (e) return e;
   }
-  if (p->value) {
-    e = (*v)(((PyObject*)p->value), a); if (e) return e;
+  if (p->var) {
+    e = (*v)(p->var, a); if (e) return e;
+  }
+  if (p->attr) {
+    e = (*v)(p->attr, a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi_attr(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_file(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_attr *p = (struct __pyx_obj_9adios_mpi_attr *)o;
-  tmp = ((PyObject*)p->file);
-  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_file *p = (struct __pyx_obj_9adios_mpi_file *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->vars);
+  p->vars = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->dtype);
-  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->value);
-  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->var);
+  p->var = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attr);
+  p->attr = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
+static PyObject *__pyx_sq_item_9adios_mpi_file(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
 
-static PyObject *__pyx_getprop_9adios_mpi_4attr_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4attr_4name_1__get__(o);
+static PyObject *__pyx_tp_getattro_9adios_mpi_file(PyObject *o, PyObject *n) {
+  PyObject *v = PyObject_GenericGetAttr(o, n);
+  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+    PyErr_Clear();
+    v = __pyx_pw_9adios_mpi_4file_21__getattr__(o, n);
+  }
+  return v;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_4attr_dtype(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4attr_5dtype_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_4file_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_4name_1__get__(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_4attr_value(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_4attr_5value_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_4file_nvars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_5nvars_1__get__(o);
 }
 
-static PyMethodDef __pyx_methods_9adios_mpi_attr[] = {
+static PyObject *__pyx_getprop_9adios_mpi_4file_nattrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_6nattrs_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_current_step(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_12current_step_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_last_step(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_9last_step_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_endianness(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_10endianness_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_version(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_7version_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_file_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_9file_size_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_is_stream(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_9is_stream_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_vars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_4vars_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_4file_vars(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_4file_4vars_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_4file_4vars_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_5attrs_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_4file_attrs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_4file_5attrs_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_4file_5attrs_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_var(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_3var_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_4file_var(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_4file_3var_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_4file_3var_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_4file_attr(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4file_4attr_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_4file_attr(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_4file_4attr_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_4file_4attr_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_9adios_mpi_file[] = {
+  {"__del__", (PyCFunction)__pyx_pw_9adios_mpi_4file_3__del__, METH_NOARGS, __pyx_doc_9adios_mpi_4file_2__del__},
+  {"__enter__", (PyCFunction)__pyx_pw_9adios_mpi_4file_5__enter__, METH_NOARGS, __pyx_doc_9adios_mpi_4file_4__enter__},
+  {"__exit__", (PyCFunction)__pyx_pw_9adios_mpi_4file_7__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_4file_6__exit__},
+  {"close", (PyCFunction)__pyx_pw_9adios_mpi_4file_9close, METH_NOARGS, __pyx_doc_9adios_mpi_4file_8close},
+  {"printself", (PyCFunction)__pyx_pw_9adios_mpi_4file_11printself, METH_NOARGS, __pyx_doc_9adios_mpi_4file_10printself},
+  {"release_step", (PyCFunction)__pyx_pw_9adios_mpi_4file_13release_step, METH_NOARGS, __pyx_doc_9adios_mpi_4file_12release_step},
+  {"advance", (PyCFunction)__pyx_pw_9adios_mpi_4file_15advance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_4file_14advance},
+  {"__getattr__", (PyCFunction)__pyx_pw_9adios_mpi_4file_21__getattr__, METH_O|METH_COEXIST, 0},
+  {"__dir__", (PyCFunction)__pyx_pw_9adios_mpi_4file_23__dir__, METH_NOARGS, __pyx_doc_9adios_mpi_4file_22__dir__},
+  {"keys", (PyCFunction)__pyx_pw_9adios_mpi_4file_25keys, METH_NOARGS, __pyx_doc_9adios_mpi_4file_24keys},
+  {"is_open", (PyCFunction)__pyx_pw_9adios_mpi_4file_27is_open, METH_NOARGS, __pyx_doc_9adios_mpi_4file_26is_open},
+  {"dirs", (PyCFunction)__pyx_pw_9adios_mpi_4file_33dirs, METH_NOARGS, __pyx_doc_9adios_mpi_4file_32dirs},
   {0, 0, 0, 0}
 };
 
-static struct PyGetSetDef __pyx_getsets_9adios_mpi_attr[] = {
-  {(char *)"name", __pyx_getprop_9adios_mpi_4attr_name, 0, __pyx_k_The_attribute_name, 0},
-  {(char *)"dtype", __pyx_getprop_9adios_mpi_4attr_dtype, 0, __pyx_k_The_attribute_type_as_in_numpy, 0},
-  {(char *)"value", __pyx_getprop_9adios_mpi_4attr_value, 0, __pyx_k_The_attribute_s_value, 0},
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_file[] = {
+  {(char *)"name", __pyx_getprop_9adios_mpi_4file_name, 0, (char *)" The filename (or stream name) associated with. ", 0},
+  {(char *)"nvars", __pyx_getprop_9adios_mpi_4file_nvars, 0, (char *)" The number of variables. ", 0},
+  {(char *)"nattrs", __pyx_getprop_9adios_mpi_4file_nattrs, 0, (char *)" The number of attributes. ", 0},
+  {(char *)"current_step", __pyx_getprop_9adios_mpi_4file_current_step, 0, (char *)" The current timestep index. ", 0},
+  {(char *)"last_step", __pyx_getprop_9adios_mpi_4file_last_step, 0, (char *)" The last timestep index. ", 0},
+  {(char *)"endianness", __pyx_getprop_9adios_mpi_4file_endianness, 0, (char *)" The endianness of the stored data. ", 0},
+  {(char *)"version", __pyx_getprop_9adios_mpi_4file_version, 0, (char *)" The version of Adios. ", 0},
+  {(char *)"file_size", __pyx_getprop_9adios_mpi_4file_file_size, 0, (char *)" The size of Adios file. ", 0},
+  {(char *)"is_stream", __pyx_getprop_9adios_mpi_4file_is_stream, 0, (char *)" Indicating reader type; file reader or stream reader ", 0},
+  {(char *)"vars", __pyx_getprop_9adios_mpi_4file_vars, __pyx_setprop_9adios_mpi_4file_vars, (char *)"vars: adios_mpi.softdict", 0},
+  {(char *)"attrs", __pyx_getprop_9adios_mpi_4file_attrs, __pyx_setprop_9adios_mpi_4file_attrs, (char *)"attrs: adios_mpi.softdict", 0},
+  {(char *)"var", __pyx_getprop_9adios_mpi_4file_var, __pyx_setprop_9adios_mpi_4file_var, (char *)"var: object", 0},
+  {(char *)"attr", __pyx_getprop_9adios_mpi_4file_attr, __pyx_setprop_9adios_mpi_4file_attr, (char *)"attr: object", 0},
   {0, 0, 0, 0, 0}
 };
 
-static PyTypeObject __pyx_type_9adios_mpi_attr = {
+static PyNumberMethods __pyx_tp_as_number_file = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  __pyx_pw_9adios_mpi_4file_29__nonzero__, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  0, /*nb_index*/
+  #if PY_VERSION_HEX >= 0x03050000
+  0, /*nb_matrix_multiply*/
+  #endif
+  #if PY_VERSION_HEX >= 0x03050000
+  0, /*nb_inplace_matrix_multiply*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_file = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_9adios_mpi_file, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_file = {
+  0, /*mp_length*/
+  __pyx_pw_9adios_mpi_4file_17__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_9adios_mpi_file = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.attr", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_attr), /*tp_basicsize*/
+  "adios_mpi.file", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_file), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_attr, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_file, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  __pyx_pw_9adios_mpi_4attr_3__repr__, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_4file_19__repr__, /*tp_repr*/
+  &__pyx_tp_as_number_file, /*tp_as_number*/
+  &__pyx_tp_as_sequence_file, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_file, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
-  0, /*tp_getattro*/
+  __pyx_tp_getattro_9adios_mpi_file, /*tp_getattro*/
   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*/
-  "attr(file file, char *name)\n\n    Adios attribute class.\n    \n    Attribute values are loaded on initialization.\n\n    Args:\n        attr_name (str): attribute name\n\n    Raises:\n        KeyError: If no attribute name exists.\n\n    Note:\n        Users do not need to create this class manually.        \n    ", /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi_attr, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_attr, /*tp_clear*/
+  "file(str fname, str method_name='BP', Comm comm=MPI.COMM_WORLD, is_stream=False, ADIOS_LOCKMODE lock_mode=ADIOS_LOCKMODE_ALL, float timeout_sec=0.0)\n\n    file class for Adios file read and write.\n\n    Args:\n        fname (str): filename.\n        method_name (str, optional): Adios read method (default: 'BP').\n        comm (MPI.Comm, optional): MPI comm for parallel read/write (default: MPI.COMM_WORLD).\n        is_stream (bool, optional): Set True if use stream reader (default:  [...]
+  __pyx_tp_traverse_9adios_mpi_file, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_file, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_attr, /*tp_methods*/
+  __pyx_methods_9adios_mpi_file, /*tp_methods*/
   0, /*tp_members*/
-  __pyx_getsets_9adios_mpi_attr, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_file, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_4attr_1__init__, /*tp_init*/
+  __pyx_pw_9adios_mpi_4file_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_attr, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_file, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -23659,89 +35436,105 @@ static PyTypeObject __pyx_type_9adios_mpi_attr = {
   #endif
 };
 
-static PyObject *__pyx_tp_new_9adios_mpi_smartdict(PyTypeObject *t, PyObject *a, PyObject *k) {
-  struct __pyx_obj_9adios_mpi_smartdict *p;
-  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+static PyObject *__pyx_tp_new_9adios_mpi_blockinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_9adios_mpi_blockinfo *p;
+  PyObject *o;
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
+    o = (*t->tp_alloc)(t, 0);
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
+  }
   if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_smartdict *)o);
-  p->factory = Py_None; Py_INCREF(Py_None);
+  p = ((struct __pyx_obj_9adios_mpi_blockinfo *)o);
+  p->start = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->count = ((PyObject*)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi_smartdict(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_smartdict *p = (struct __pyx_obj_9adios_mpi_smartdict *)o;
+static void __pyx_tp_dealloc_9adios_mpi_blockinfo(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_blockinfo *p = (struct __pyx_obj_9adios_mpi_blockinfo *)o;
   #if PY_VERSION_HEX >= 0x030400a1
   if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
   PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->factory);
-  PyObject_GC_Track(o);
-  (&PyDict_Type)->tp_dealloc(o);
+  Py_CLEAR(p->start);
+  Py_CLEAR(p->count);
+  (*Py_TYPE(o)->tp_free)(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi_smartdict(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_blockinfo(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi_smartdict *p = (struct __pyx_obj_9adios_mpi_smartdict *)o;
-  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
-  if (p->factory) {
-    e = (*v)(p->factory, a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_blockinfo *p = (struct __pyx_obj_9adios_mpi_blockinfo *)o;
+  if (p->start) {
+    e = (*v)(p->start, a); if (e) return e;
+  }
+  if (p->count) {
+    e = (*v)(p->count, a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi_smartdict(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_blockinfo(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_smartdict *p = (struct __pyx_obj_9adios_mpi_smartdict *)o;
-  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
-  tmp = ((PyObject*)p->factory);
-  p->factory = Py_None; Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_blockinfo *p = (struct __pyx_obj_9adios_mpi_blockinfo *)o;
+  tmp = ((PyObject*)p->start);
+  p->start = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->count);
+  p->count = ((PyObject*)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
 
-static int __pyx_mp_ass_subscript_9adios_mpi_smartdict(PyObject *o, PyObject *i, PyObject *v) {
-  if (v) {
-    return __pyx_pw_9adios_mpi_9smartdict_3__setitem__(o, i, v);
-  }
-  else {
-    if ((&PyDict_Type)->tp_as_mapping && (&PyDict_Type)->tp_as_mapping->mp_ass_subscript)
-      return (&PyDict_Type)->tp_as_mapping->mp_ass_subscript(o, i, v);
-    PyErr_Format(PyExc_NotImplementedError,
-      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
-    return -1;
-  }
+static PyObject *__pyx_getprop_9adios_mpi_9blockinfo_start(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_9blockinfo_5start_1__get__(o);
 }
 
-static PyMethodDef __pyx_methods_9adios_mpi_smartdict[] = {
+static PyObject *__pyx_getprop_9adios_mpi_9blockinfo_count(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_9blockinfo_5count_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_9blockinfo_process_id(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_9blockinfo_10process_id_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_9blockinfo_time_index(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_9blockinfo_10time_index_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_9adios_mpi_blockinfo[] = {
   {0, 0, 0, 0}
 };
 
-static PyMappingMethods __pyx_tp_as_mapping_smartdict = {
-  0, /*mp_length*/
-  0, /*mp_subscript*/
-  __pyx_mp_ass_subscript_9adios_mpi_smartdict, /*mp_ass_subscript*/
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_blockinfo[] = {
+  {(char *)"start", __pyx_getprop_9adios_mpi_9blockinfo_start, 0, (char *)0, 0},
+  {(char *)"count", __pyx_getprop_9adios_mpi_9blockinfo_count, 0, (char *)0, 0},
+  {(char *)"process_id", __pyx_getprop_9adios_mpi_9blockinfo_process_id, 0, (char *)0, 0},
+  {(char *)"time_index", __pyx_getprop_9adios_mpi_9blockinfo_time_index, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
 };
 
-static PyTypeObject __pyx_type_9adios_mpi_smartdict = {
+static PyTypeObject __pyx_type_9adios_mpi_blockinfo = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.smartdict", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_smartdict), /*tp_basicsize*/
+  "adios_mpi.blockinfo", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_blockinfo), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_smartdict, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_blockinfo, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  0, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_9blockinfo_3__repr__, /*tp_repr*/
   0, /*tp_as_number*/
   0, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_smartdict, /*tp_as_mapping*/
+  0, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
@@ -23749,24 +35542,24 @@ static PyTypeObject __pyx_type_9adios_mpi_smartdict = {
   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*/
-  "smartdict(factory)", /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi_smartdict, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_smartdict, /*tp_clear*/
+  "blockinfo(tuple start, tuple count, int process_id, int time_index)", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_blockinfo, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_blockinfo, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_smartdict, /*tp_methods*/
+  __pyx_methods_9adios_mpi_blockinfo, /*tp_methods*/
   0, /*tp_members*/
-  0, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_blockinfo, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_9smartdict_1__init__, /*tp_init*/
+  __pyx_pw_9adios_mpi_9blockinfo_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_smartdict, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_blockinfo, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -23780,75 +35573,85 @@ static PyTypeObject __pyx_type_9adios_mpi_smartdict = {
   0, /*tp_finalize*/
   #endif
 };
+static struct __pyx_vtabstruct_9adios_mpi_var __pyx_vtable_9adios_mpi_var;
 
-static PyObject *__pyx_tp_new_9adios_mpi_writer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_9adios_mpi_writer *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
+static PyObject *__pyx_tp_new_9adios_mpi_var(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_9adios_mpi_var *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
   if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_writer *)o);
-  p->fname = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->gname = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->method = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->method_params = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->comm = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p = ((struct __pyx_obj_9adios_mpi_var *)o);
+  p->__pyx_vtab = __pyx_vtabptr_9adios_mpi_var;
+  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
+  p->blockinfo = ((PyObject*)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi_writer(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_writer *p = (struct __pyx_obj_9adios_mpi_writer *)o;
+static void __pyx_tp_dealloc_9adios_mpi_var(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_var *p = (struct __pyx_obj_9adios_mpi_var *)o;
   #if PY_VERSION_HEX >= 0x030400a1
   if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
   PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->fname);
-  Py_CLEAR(p->gname);
-  Py_CLEAR(p->method);
-  Py_CLEAR(p->method_params);
-  Py_CLEAR(p->comm);
-  Py_CLEAR(p->var);
-  Py_CLEAR(p->attr);
-  (*Py_TYPE(o)->tp_free)(o);
+  Py_CLEAR(p->file);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->dtype);
+  Py_CLEAR(p->dims);
+  Py_CLEAR(p->attrs);
+  Py_CLEAR(p->blockinfo);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi_writer(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_var(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi_writer *p = (struct __pyx_obj_9adios_mpi_writer *)o;
-  if (p->comm) {
-    e = (*v)(((PyObject*)p->comm), a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_var *p = (struct __pyx_obj_9adios_mpi_var *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->file) {
+    e = (*v)(((PyObject*)p->file), a); if (e) return e;
   }
-  if (p->var) {
-    e = (*v)(p->var, a); if (e) return e;
+  if (p->dtype) {
+    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
   }
-  if (p->attr) {
-    e = (*v)(p->attr, a); if (e) return e;
+  if (p->dims) {
+    e = (*v)(p->dims, a); if (e) return e;
+  }
+  if (p->attrs) {
+    e = (*v)(((PyObject*)p->attrs), a); if (e) return e;
+  }
+  if (p->blockinfo) {
+    e = (*v)(p->blockinfo, a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi_writer(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_var(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_writer *p = (struct __pyx_obj_9adios_mpi_writer *)o;
-  tmp = ((PyObject*)p->comm);
-  p->comm = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_var *p = (struct __pyx_obj_9adios_mpi_var *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->file);
+  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->var);
-  p->var = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->dtype);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->attr);
-  p->attr = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->dims);
+  p->dims = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->blockinfo);
+  p->blockinfo = ((PyObject*)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
-static PyObject *__pyx_sq_item_9adios_mpi_writer(PyObject *o, Py_ssize_t i) {
+static PyObject *__pyx_sq_item_9adios_mpi_var(PyObject *o, Py_ssize_t i) {
   PyObject *r;
   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
@@ -23856,60 +35659,90 @@ static PyObject *__pyx_sq_item_9adios_mpi_writer(PyObject *o, Py_ssize_t i) {
   return r;
 }
 
-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);
-  }
-  else {
-    PyErr_Format(PyExc_NotImplementedError,
-      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
-    return -1;
+static PyObject *__pyx_tp_getattro_9adios_mpi_var(PyObject *o, PyObject *n) {
+  PyObject *v = PyObject_GenericGetAttr(o, n);
+  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+    PyErr_Clear();
+    v = __pyx_pw_9adios_mpi_3var_25__getattr__(o, n);
   }
+  return v;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_6writer_fname(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_6writer_5fname_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_3var_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_4name_1__get__(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_6writer_gname(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_6writer_5gname_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_3var_varid(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_5varid_1__get__(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_6writer_is_noxml(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_6writer_8is_noxml_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_3var_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_5dtype_1__get__(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_6writer_var(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_6writer_3var_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_3var_ndim(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_4ndim_1__get__(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_6writer_attr(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_6writer_4attr_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_3var_dims(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_4dims_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},
+static PyObject *__pyx_getprop_9adios_mpi_3var_shape(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_5shape_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_3var_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_4size_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_3var_nsteps(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_6nsteps_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_3var_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_5attrs_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_3var_blockinfo(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_3var_9blockinfo_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_9adios_mpi_var[] = {
+  {"__del__", (PyCFunction)__pyx_pw_9adios_mpi_3var_3__del__, METH_NOARGS, __pyx_doc_9adios_mpi_3var_2__del__},
+  {"close", (PyCFunction)__pyx_pw_9adios_mpi_3var_5close, METH_NOARGS, __pyx_doc_9adios_mpi_3var_4close},
+  {"advance", (PyCFunction)__pyx_pw_9adios_mpi_3var_7advance, METH_NOARGS, __pyx_doc_9adios_mpi_3var_6advance},
+  {"read_points", (PyCFunction)__pyx_pw_9adios_mpi_3var_9read_points, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_3var_8read_points},
+  {"read_writeblock", (PyCFunction)__pyx_pw_9adios_mpi_3var_11read_writeblock, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_3var_10read_writeblock},
+  {"read", (PyCFunction)__pyx_pw_9adios_mpi_3var_13read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_3var_12read},
+  {"printself", (PyCFunction)__pyx_pw_9adios_mpi_3var_15printself, METH_NOARGS, __pyx_doc_9adios_mpi_3var_14printself},
+  {"_readattr", (PyCFunction)__pyx_pw_9adios_mpi_3var_19_readattr, METH_O, __pyx_doc_9adios_mpi_3var_18_readattr},
+  {"_readvar", (PyCFunction)__pyx_pw_9adios_mpi_3var_21_readvar, METH_O, __pyx_doc_9adios_mpi_3var_20_readvar},
+  {"__getattr__", (PyCFunction)__pyx_pw_9adios_mpi_3var_25__getattr__, METH_O|METH_COEXIST, 0},
+  {"__dir__", (PyCFunction)__pyx_pw_9adios_mpi_3var_27__dir__, METH_NOARGS, __pyx_doc_9adios_mpi_3var_26__dir__},
+  {"keys", (PyCFunction)__pyx_pw_9adios_mpi_3var_29keys, METH_NOARGS, __pyx_doc_9adios_mpi_3var_28keys},
   {0, 0, 0, 0}
 };
 
-static struct PyGetSetDef __pyx_getsets_9adios_mpi_writer[] = {
-  {(char *)"fname", __pyx_getprop_9adios_mpi_6writer_fname, 0, __pyx_k_The_filename_to_write, 0},
-  {(char *)"gname", __pyx_getprop_9adios_mpi_6writer_gname, 0, __pyx_k_The_groupname_associated_with_t, 0},
-  {(char *)"is_noxml", __pyx_getprop_9adios_mpi_6writer_is_noxml, 0, __pyx_k_Boolean_to_indicate_using_No_XM, 0},
-  {(char *)"var", __pyx_getprop_9adios_mpi_6writer_var, 0, __pyx_k_Dictionary_of_variables_to_writ, 0},
-  {(char *)"attr", __pyx_getprop_9adios_mpi_6writer_attr, 0, __pyx_k_Dictionary_of_attributes_to_wri, 0},
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_var[] = {
+  {(char *)"name", __pyx_getprop_9adios_mpi_3var_name, 0, (char *)" The variable name. ", 0},
+  {(char *)"varid", __pyx_getprop_9adios_mpi_3var_varid, 0, (char *)" Internal variable id. ", 0},
+  {(char *)"dtype", __pyx_getprop_9adios_mpi_3var_dtype, 0, (char *)" Variable type as in numpy.dtype. ", 0},
+  {(char *)"ndim", __pyx_getprop_9adios_mpi_3var_ndim, 0, (char *)" The number of dimensions of the variable. ", 0},
+  {(char *)"dims", __pyx_getprop_9adios_mpi_3var_dims, 0, (char *)" The shape of the variable. ", 0},
+  {(char *)"shape", __pyx_getprop_9adios_mpi_3var_shape, 0, (char *)" The shape of the variable. ", 0},
+  {(char *)"size", __pyx_getprop_9adios_mpi_3var_size, 0, (char *)" The number of elements in the array. ", 0},
+  {(char *)"nsteps", __pyx_getprop_9adios_mpi_3var_nsteps, 0, (char *)" The number of time steps of the variable. ", 0},
+  {(char *)"attrs", __pyx_getprop_9adios_mpi_3var_attrs, 0, (char *)" Attributes associated with the variable. ", 0},
+  {(char *)"blockinfo", __pyx_getprop_9adios_mpi_3var_blockinfo, 0, (char *)" Block information. ", 0},
   {0, 0, 0, 0, 0}
 };
 
-static PySequenceMethods __pyx_tp_as_sequence_writer = {
+static PySequenceMethods __pyx_tp_as_sequence_var = {
   0, /*sq_length*/
   0, /*sq_concat*/
   0, /*sq_repeat*/
-  __pyx_sq_item_9adios_mpi_writer, /*sq_item*/
+  __pyx_sq_item_9adios_mpi_var, /*sq_item*/
   0, /*sq_slice*/
   0, /*sq_ass_item*/
   0, /*sq_ass_slice*/
@@ -23918,55 +35751,56 @@ static PySequenceMethods __pyx_tp_as_sequence_writer = {
   0, /*sq_inplace_repeat*/
 };
 
-static PyMappingMethods __pyx_tp_as_mapping_writer = {
+static PyMappingMethods __pyx_tp_as_mapping_var = {
   0, /*mp_length*/
-  __pyx_pw_9adios_mpi_6writer_13__getitem__, /*mp_subscript*/
-  __pyx_mp_ass_subscript_9adios_mpi_writer, /*mp_ass_subscript*/
+  __pyx_pw_9adios_mpi_3var_23__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
 };
 
-static PyTypeObject __pyx_type_9adios_mpi_writer = {
+static PyTypeObject __pyx_type_9adios_mpi_var = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.writer", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_writer), /*tp_basicsize*/
+  "adios_mpi.var", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_var), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_writer, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_var, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  __pyx_pw_9adios_mpi_6writer_17__repr__, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_3var_17__repr__, /*tp_repr*/
   0, /*tp_as_number*/
-  &__pyx_tp_as_sequence_writer, /*tp_as_sequence*/
-  &__pyx_tp_as_mapping_writer, /*tp_as_mapping*/
+  &__pyx_tp_as_sequence_var, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_var, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
-  0, /*tp_getattro*/
+  __pyx_tp_getattro_9adios_mpi_var, /*tp_getattro*/
   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*/
-  "writer(char *fname, bool is_noxml=True, Comm comm=MPI.COMM_WORLD)\n\n    writer class for Adios write.\n\n    Args:\n        fname (str): filename.\n        is_noxml (bool, optional): Set True if use noxml APIs (default: True).\n        comm (MPI.Comm, optional): MPI comm for parallel read/write (default: MPI.COMM_WORLD).\n\n    Example:\n    \n    >>> import adios as ad\n    >>> f = ad.writer('adiosfile.bp')\n    \n    ", /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi_writer, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_writer, /*tp_clear*/
+  "var(file file, str name)\n\n    Adios variable class.\n\n    Unlike attributes whose values are populated on initialization,\n    variable's values will be returned by explicitly calling read() or\n    array access interface ([]).\n\n    Args:\n        file (file): Associated file class\n        name (str): variable name\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_var, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_var, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_writer, /*tp_methods*/
+  __pyx_methods_9adios_mpi_var, /*tp_methods*/
   0, /*tp_members*/
-  __pyx_getsets_9adios_mpi_writer, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_var, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_6writer_1__init__, /*tp_init*/
+  __pyx_pw_9adios_mpi_3var_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_writer, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_var, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -23981,8 +35815,8 @@ static PyTypeObject __pyx_type_9adios_mpi_writer = {
   #endif
 };
 
-static PyObject *__pyx_tp_new_9adios_mpi_attrinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_9adios_mpi_attrinfo *p;
+static PyObject *__pyx_tp_new_9adios_mpi_attr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_9adios_mpi_attr *p;
   PyObject *o;
   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
     o = (*t->tp_alloc)(t, 0);
@@ -23990,108 +35824,127 @@ static PyObject *__pyx_tp_new_9adios_mpi_attrinfo(PyTypeObject *t, CYTHON_UNUSED
     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   }
   if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_attrinfo *)o);
+  p = ((struct __pyx_obj_9adios_mpi_attr *)o);
+  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
   p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->dtype = Py_None; Py_INCREF(Py_None);
-  p->value = Py_None; Py_INCREF(Py_None);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
+  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi_attrinfo(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_attrinfo *p = (struct __pyx_obj_9adios_mpi_attrinfo *)o;
+static void __pyx_tp_dealloc_9adios_mpi_attr(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_attr *p = (struct __pyx_obj_9adios_mpi_attr *)o;
   #if PY_VERSION_HEX >= 0x030400a1
   if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
   PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->file);
   Py_CLEAR(p->name);
   Py_CLEAR(p->dtype);
   Py_CLEAR(p->value);
   (*Py_TYPE(o)->tp_free)(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi_attrinfo(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_attr(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi_attrinfo *p = (struct __pyx_obj_9adios_mpi_attrinfo *)o;
+  struct __pyx_obj_9adios_mpi_attr *p = (struct __pyx_obj_9adios_mpi_attr *)o;
+  if (p->file) {
+    e = (*v)(((PyObject*)p->file), a); if (e) return e;
+  }
   if (p->dtype) {
-    e = (*v)(p->dtype, a); if (e) return e;
+    e = (*v)(((PyObject*)p->dtype), a); if (e) return e;
   }
   if (p->value) {
-    e = (*v)(p->value, a); if (e) return e;
+    e = (*v)(((PyObject*)p->value), a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi_attrinfo(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_attr(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_attrinfo *p = (struct __pyx_obj_9adios_mpi_attrinfo *)o;
+  struct __pyx_obj_9adios_mpi_attr *p = (struct __pyx_obj_9adios_mpi_attr *)o;
+  tmp = ((PyObject*)p->file);
+  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
   tmp = ((PyObject*)p->dtype);
-  p->dtype = Py_None; Py_INCREF(Py_None);
+  p->dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   tmp = ((PyObject*)p->value);
-  p->value = Py_None; Py_INCREF(Py_None);
+  p->value = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
-
-static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_name(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_8attrinfo_4name_1__get__(o);
-}
-
-static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_is_static(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_8attrinfo_9is_static_1__get__(o);
+static PyObject *__pyx_sq_item_9adios_mpi_attr(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_dtype(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_8attrinfo_5dtype_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_4attr_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4attr_4name_1__get__(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_8attrinfo_5value_1__get__(o);
+static PyObject *__pyx_getprop_9adios_mpi_4attr_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4attr_5dtype_1__get__(o);
 }
 
-static int __pyx_setprop_9adios_mpi_8attrinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_9adios_mpi_8attrinfo_5value_3__set__(o, v);
-  }
-  else {
-    PyErr_SetString(PyExc_NotImplementedError, "__del__");
-    return -1;
-  }
+static PyObject *__pyx_getprop_9adios_mpi_4attr_value(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_4attr_5value_1__get__(o);
 }
 
-static PyMethodDef __pyx_methods_9adios_mpi_attrinfo[] = {
-  {"define", (PyCFunction)__pyx_pw_9adios_mpi_8attrinfo_3define, METH_O, __pyx_doc_9adios_mpi_8attrinfo_2define},
+static PyMethodDef __pyx_methods_9adios_mpi_attr[] = {
   {0, 0, 0, 0}
 };
 
-static struct PyGetSetDef __pyx_getsets_9adios_mpi_attrinfo[] = {
-  {(char *)"name", __pyx_getprop_9adios_mpi_8attrinfo_name, 0, 0, 0},
-  {(char *)"is_static", __pyx_getprop_9adios_mpi_8attrinfo_is_static, 0, 0, 0},
-  {(char *)"dtype", __pyx_getprop_9adios_mpi_8attrinfo_dtype, 0, 0, 0},
-  {(char *)"value", __pyx_getprop_9adios_mpi_8attrinfo_value, __pyx_setprop_9adios_mpi_8attrinfo_value, 0, 0},
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_attr[] = {
+  {(char *)"name", __pyx_getprop_9adios_mpi_4attr_name, 0, (char *)" The attribute name ", 0},
+  {(char *)"dtype", __pyx_getprop_9adios_mpi_4attr_dtype, 0, (char *)" The attribute type as in numpy.dtype ", 0},
+  {(char *)"value", __pyx_getprop_9adios_mpi_4attr_value, 0, (char *)" The attribute's value ", 0},
   {0, 0, 0, 0, 0}
 };
 
-static PyTypeObject __pyx_type_9adios_mpi_attrinfo = {
+static PySequenceMethods __pyx_tp_as_sequence_attr = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_9adios_mpi_attr, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_attr = {
+  0, /*mp_length*/
+  __pyx_pw_9adios_mpi_4attr_3__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_9adios_mpi_attr = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.attrinfo", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_attrinfo), /*tp_basicsize*/
+  "adios_mpi.attr", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_attr), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_attrinfo, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_attr, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  __pyx_pw_9adios_mpi_8attrinfo_5__repr__, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_4attr_5__repr__, /*tp_repr*/
   0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
+  &__pyx_tp_as_sequence_attr, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_attr, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
@@ -24099,24 +35952,24 @@ static PyTypeObject __pyx_type_9adios_mpi_attrinfo = {
   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*/
-  "attrinfo(char *name, value=None, dtype=None, bool is_static=True)", /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi_attrinfo, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_attrinfo, /*tp_clear*/
+  "attr(file file, str name)\n\n    Adios attribute class.\n\n    Attribute values are loaded on initialization.\n\n    Args:\n        attr_name (str): attribute name\n\n    Raises:\n        KeyError: If no attribute name exists.\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_attr, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_attr, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_attrinfo, /*tp_methods*/
+  __pyx_methods_9adios_mpi_attr, /*tp_methods*/
   0, /*tp_members*/
-  __pyx_getsets_9adios_mpi_attrinfo, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_attr, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_8attrinfo_1__init__, /*tp_init*/
+  __pyx_pw_9adios_mpi_4attr_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_attrinfo, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_attr, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -24131,161 +35984,283 @@ static PyTypeObject __pyx_type_9adios_mpi_attrinfo = {
   #endif
 };
 
-static PyObject *__pyx_tp_new_9adios_mpi_varinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  struct __pyx_obj_9adios_mpi_varinfo *p;
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
+static PyObject *__pyx_tp_new_9adios_mpi_group(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_9adios_mpi_group *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
   if (unlikely(!o)) return 0;
-  p = ((struct __pyx_obj_9adios_mpi_varinfo *)o);
+  p = ((struct __pyx_obj_9adios_mpi_group *)o);
+  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
   p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
-  p->ldim = Py_None; Py_INCREF(Py_None);
-  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->vars = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi_varinfo(PyObject *o) {
-  struct __pyx_obj_9adios_mpi_varinfo *p = (struct __pyx_obj_9adios_mpi_varinfo *)o;
+static void __pyx_tp_dealloc_9adios_mpi_group(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_group *p = (struct __pyx_obj_9adios_mpi_group *)o;
   #if PY_VERSION_HEX >= 0x030400a1
   if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
   PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->file);
   Py_CLEAR(p->name);
-  Py_CLEAR(p->ldim);
-  Py_CLEAR(p->gdim);
-  Py_CLEAR(p->offset);
-  Py_CLEAR(p->value);
-  (*Py_TYPE(o)->tp_free)(o);
+  Py_CLEAR(p->vars);
+  Py_CLEAR(p->attrs);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi_varinfo(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_group(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi_varinfo *p = (struct __pyx_obj_9adios_mpi_varinfo *)o;
-  if (p->ldim) {
-    e = (*v)(p->ldim, a); if (e) return e;
-  }
-  if (p->gdim) {
-    e = (*v)(p->gdim, a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_group *p = (struct __pyx_obj_9adios_mpi_group *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->file) {
+    e = (*v)(((PyObject*)p->file), a); if (e) return e;
   }
-  if (p->offset) {
-    e = (*v)(p->offset, a); if (e) return e;
+  if (p->vars) {
+    e = (*v)(((PyObject*)p->vars), a); if (e) return e;
   }
-  if (p->value) {
-    e = (*v)(p->value, a); if (e) return e;
+  if (p->attrs) {
+    e = (*v)(((PyObject*)p->attrs), a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi_varinfo(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_group(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi_varinfo *p = (struct __pyx_obj_9adios_mpi_varinfo *)o;
-  tmp = ((PyObject*)p->ldim);
-  p->ldim = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->gdim);
-  p->gdim = Py_None; Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_group *p = (struct __pyx_obj_9adios_mpi_group *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->file);
+  p->file = ((struct __pyx_obj_9adios_mpi_file *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->offset);
-  p->offset = Py_None; Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->vars);
+  p->vars = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->value);
-  p->value = Py_None; Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
+static PyObject *__pyx_sq_item_9adios_mpi_group(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
 
-static PyObject *__pyx_getprop_9adios_mpi_7varinfo_ldim(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_7varinfo_4ldim_1__get__(o);
+static PyObject *__pyx_tp_getattro_9adios_mpi_group(PyObject *o, PyObject *n) {
+  PyObject *v = PyObject_GenericGetAttr(o, n);
+  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+    PyErr_Clear();
+    v = __pyx_pw_9adios_mpi_5group_7__getattr__(o, n);
+  }
+  return v;
 }
 
-static int __pyx_setprop_9adios_mpi_7varinfo_ldim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+static PyObject *__pyx_getprop_9adios_mpi_5group_vars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_5group_4vars_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_5group_vars(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
   if (v) {
-    return __pyx_pw_9adios_mpi_7varinfo_4ldim_3__set__(o, v);
+    return __pyx_pw_9adios_mpi_5group_4vars_3__set__(o, v);
   }
   else {
-    return __pyx_pw_9adios_mpi_7varinfo_4ldim_5__del__(o);
+    return __pyx_pw_9adios_mpi_5group_4vars_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_5group_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_5group_5attrs_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_5group_attrs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_5group_5attrs_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_5group_5attrs_5__del__(o);
   }
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_7varinfo_gdim(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_7varinfo_4gdim_1__get__(o);
+static PyMethodDef __pyx_methods_9adios_mpi_group[] = {
+  {"__getattr__", (PyCFunction)__pyx_pw_9adios_mpi_5group_7__getattr__, METH_O|METH_COEXIST, 0},
+  {"__dir__", (PyCFunction)__pyx_pw_9adios_mpi_5group_9__dir__, METH_NOARGS, __pyx_doc_9adios_mpi_5group_8__dir__},
+  {"keys", (PyCFunction)__pyx_pw_9adios_mpi_5group_11keys, METH_NOARGS, __pyx_doc_9adios_mpi_5group_10keys},
+  {"dirs", (PyCFunction)__pyx_pw_9adios_mpi_5group_13dirs, METH_NOARGS, __pyx_doc_9adios_mpi_5group_12dirs},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_group[] = {
+  {(char *)"vars", __pyx_getprop_9adios_mpi_5group_vars, __pyx_setprop_9adios_mpi_5group_vars, (char *)"vars: adios_mpi.softdict", 0},
+  {(char *)"attrs", __pyx_getprop_9adios_mpi_5group_attrs, __pyx_setprop_9adios_mpi_5group_attrs, (char *)"attrs: adios_mpi.softdict", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_group = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_9adios_mpi_group, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_group = {
+  0, /*mp_length*/
+  __pyx_pw_9adios_mpi_5group_3__getitem__, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyTypeObject __pyx_type_9adios_mpi_group = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "adios_mpi.group", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_group), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_9adios_mpi_group, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_5group_5__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  &__pyx_tp_as_sequence_group, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_group, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  __pyx_tp_getattro_9adios_mpi_group, /*tp_getattro*/
+  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*/
+  "group(file file, str name)\n\n    Adios group class.\n\n    Note:\n        Users do not need to create this class manually.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_group, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_group, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_9adios_mpi_group, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_9adios_mpi_group, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_9adios_mpi_5group_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_9adios_mpi_group, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  0, /*tp_finalize*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_9adios_mpi_smartdict(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_9adios_mpi_smartdict *p;
+  PyObject *o = (&PyDict_Type)->tp_new(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_9adios_mpi_smartdict *)o);
+  p->factory = Py_None; Py_INCREF(Py_None);
+  return o;
 }
 
-static int __pyx_setprop_9adios_mpi_7varinfo_gdim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_9adios_mpi_7varinfo_4gdim_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_9adios_mpi_7varinfo_4gdim_5__del__(o);
+static void __pyx_tp_dealloc_9adios_mpi_smartdict(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_smartdict *p = (struct __pyx_obj_9adios_mpi_smartdict *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->factory);
+  PyObject_GC_Track(o);
+  (&PyDict_Type)->tp_dealloc(o);
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_7varinfo_offset(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_7varinfo_6offset_1__get__(o);
-}
-
-static int __pyx_setprop_9adios_mpi_7varinfo_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
-  if (v) {
-    return __pyx_pw_9adios_mpi_7varinfo_6offset_3__set__(o, v);
-  }
-  else {
-    return __pyx_pw_9adios_mpi_7varinfo_6offset_5__del__(o);
+static int __pyx_tp_traverse_9adios_mpi_smartdict(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_9adios_mpi_smartdict *p = (struct __pyx_obj_9adios_mpi_smartdict *)o;
+  if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; }
+  if (p->factory) {
+    e = (*v)(p->factory, a); if (e) return e;
   }
+  return 0;
 }
 
-static PyObject *__pyx_getprop_9adios_mpi_7varinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_9adios_mpi_7varinfo_5value_1__get__(o);
+static int __pyx_tp_clear_9adios_mpi_smartdict(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_9adios_mpi_smartdict *p = (struct __pyx_obj_9adios_mpi_smartdict *)o;
+  if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o);
+  tmp = ((PyObject*)p->factory);
+  p->factory = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
 }
 
-static int __pyx_setprop_9adios_mpi_7varinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+static int __pyx_mp_ass_subscript_9adios_mpi_smartdict(PyObject *o, PyObject *i, PyObject *v) {
   if (v) {
-    return __pyx_pw_9adios_mpi_7varinfo_5value_3__set__(o, v);
+    return __pyx_pw_9adios_mpi_9smartdict_3__setitem__(o, i, v);
   }
   else {
-    return __pyx_pw_9adios_mpi_7varinfo_5value_5__del__(o);
+    if ((&PyDict_Type)->tp_as_mapping && (&PyDict_Type)->tp_as_mapping->mp_ass_subscript)
+      return (&PyDict_Type)->tp_as_mapping->mp_ass_subscript(o, i, v);
+    PyErr_Format(PyExc_NotImplementedError,
+      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
+    return -1;
   }
 }
 
-static PyMethodDef __pyx_methods_9adios_mpi_varinfo[] = {
-  {"define", (PyCFunction)__pyx_pw_9adios_mpi_7varinfo_3define, METH_O, __pyx_doc_9adios_mpi_7varinfo_2define},
-  {"bytes", (PyCFunction)__pyx_pw_9adios_mpi_7varinfo_5bytes, METH_NOARGS, __pyx_doc_9adios_mpi_7varinfo_4bytes},
-  {"write", (PyCFunction)__pyx_pw_9adios_mpi_7varinfo_7write, METH_O, __pyx_doc_9adios_mpi_7varinfo_6write},
+static PyMethodDef __pyx_methods_9adios_mpi_smartdict[] = {
   {0, 0, 0, 0}
 };
 
-static struct PyGetSetDef __pyx_getsets_9adios_mpi_varinfo[] = {
-  {(char *)"ldim", __pyx_getprop_9adios_mpi_7varinfo_ldim, __pyx_setprop_9adios_mpi_7varinfo_ldim, __pyx_k_ldim_object, 0},
-  {(char *)"gdim", __pyx_getprop_9adios_mpi_7varinfo_gdim, __pyx_setprop_9adios_mpi_7varinfo_gdim, __pyx_k_gdim_object, 0},
-  {(char *)"offset", __pyx_getprop_9adios_mpi_7varinfo_offset, __pyx_setprop_9adios_mpi_7varinfo_offset, __pyx_k_offset_object, 0},
-  {(char *)"value", __pyx_getprop_9adios_mpi_7varinfo_value, __pyx_setprop_9adios_mpi_7varinfo_value, __pyx_k_value_object, 0},
-  {0, 0, 0, 0, 0}
+static PyMappingMethods __pyx_tp_as_mapping_smartdict = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  __pyx_mp_ass_subscript_9adios_mpi_smartdict, /*mp_ass_subscript*/
 };
 
-static PyTypeObject __pyx_type_9adios_mpi_varinfo = {
+static PyTypeObject __pyx_type_9adios_mpi_smartdict = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.varinfo", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi_varinfo), /*tp_basicsize*/
+  "adios_mpi.smartdict", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_smartdict), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi_varinfo, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_smartdict, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  __pyx_pw_9adios_mpi_7varinfo_9__repr__, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
   0, /*tp_as_number*/
   0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
+  &__pyx_tp_as_mapping_smartdict, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
@@ -24293,24 +36268,24 @@ 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(char *name, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>)", /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi_varinfo, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi_varinfo, /*tp_clear*/
+  "smartdict(factory)", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_smartdict, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_smartdict, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  __pyx_methods_9adios_mpi_varinfo, /*tp_methods*/
+  __pyx_methods_9adios_mpi_smartdict, /*tp_methods*/
   0, /*tp_members*/
-  __pyx_getsets_9adios_mpi_varinfo, /*tp_getset*/
+  0, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  __pyx_pw_9adios_mpi_7varinfo_1__init__, /*tp_init*/
+  __pyx_pw_9adios_mpi_9smartdict_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi_varinfo, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_smartdict, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -24325,109 +36300,202 @@ static PyTypeObject __pyx_type_9adios_mpi_varinfo = {
   #endif
 };
 
-static struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *__pyx_freelist_9adios_mpi___pyx_scope_struct____getitem__[8];
-static int __pyx_freecount_9adios_mpi___pyx_scope_struct____getitem__ = 0;
-
-static PyObject *__pyx_tp_new_9adios_mpi___pyx_scope_struct____getitem__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+static PyObject *__pyx_tp_new_9adios_mpi_writer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_9adios_mpi_writer *p;
   PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9adios_mpi___pyx_scope_struct____getitem__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__)))) {
-    o = (PyObject*)__pyx_freelist_9adios_mpi___pyx_scope_struct____getitem__[--__pyx_freecount_9adios_mpi___pyx_scope_struct____getitem__];
-    memset(o, 0, sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
     o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_9adios_mpi_writer *)o);
+  p->fname = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->gname = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->method = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->method_params = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->comm = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
+  p->vars = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->attrs = ((PyObject*)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi___pyx_scope_struct____getitem__(PyObject *o) {
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_v_dims_);
-  Py_CLEAR(p->__pyx_v_index_);
-  Py_CLEAR(p->__pyx_v_self);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9adios_mpi___pyx_scope_struct____getitem__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__)))) {
-    __pyx_freelist_9adios_mpi___pyx_scope_struct____getitem__[__pyx_freecount_9adios_mpi___pyx_scope_struct____getitem__++] = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
+static void __pyx_tp_dealloc_9adios_mpi_writer(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_writer *p = (struct __pyx_obj_9adios_mpi_writer *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->fname);
+  Py_CLEAR(p->gname);
+  Py_CLEAR(p->method);
+  Py_CLEAR(p->method_params);
+  Py_CLEAR(p->mode);
+  Py_CLEAR(p->comm);
+  Py_CLEAR(p->vars);
+  Py_CLEAR(p->attrs);
+  (*Py_TYPE(o)->tp_free)(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi___pyx_scope_struct____getitem__(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_writer(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)o;
-  if (p->__pyx_v_dims_) {
-    e = (*v)(p->__pyx_v_dims_, a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_writer *p = (struct __pyx_obj_9adios_mpi_writer *)o;
+  if (p->comm) {
+    e = (*v)(((PyObject*)p->comm), a); if (e) return e;
   }
-  if (p->__pyx_v_index_) {
-    e = (*v)(p->__pyx_v_index_, a); if (e) return e;
+  if (p->vars) {
+    e = (*v)(p->vars, a); if (e) return e;
   }
-  if (p->__pyx_v_self) {
-    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
+  if (p->attrs) {
+    e = (*v)(p->attrs, a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi___pyx_scope_struct____getitem__(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_writer(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)o;
-  tmp = ((PyObject*)p->__pyx_v_dims_);
-  p->__pyx_v_dims_ = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_writer *p = (struct __pyx_obj_9adios_mpi_writer *)o;
+  tmp = ((PyObject*)p->comm);
+  p->comm = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_index_);
-  p->__pyx_v_index_ = Py_None; Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->vars);
+  p->vars = ((PyObject*)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_self);
-  p->__pyx_v_self = ((struct __pyx_obj_9adios_mpi_var *)Py_None); Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->attrs);
+  p->attrs = ((PyObject*)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
+static PyObject *__pyx_sq_item_9adios_mpi_writer(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+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);
+  }
+  else {
+    PyErr_Format(PyExc_NotImplementedError,
+      "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_6writer_fname(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_5fname_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_6writer_gname(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_5gname_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_6writer_is_noxml(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_8is_noxml_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_6writer_mode(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_4mode_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_6writer_vars(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_4vars_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_6writer_attrs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_5attrs_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__},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_writer[] = {
+  {(char *)"fname", __pyx_getprop_9adios_mpi_6writer_fname, 0, (char *)" The filename to write. ", 0},
+  {(char *)"gname", __pyx_getprop_9adios_mpi_6writer_gname, 0, (char *)" The groupname associated with the file. ", 0},
+  {(char *)"is_noxml", __pyx_getprop_9adios_mpi_6writer_is_noxml, 0, (char *)" Boolean to indicate using No-XML or not. ", 0},
+  {(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},
+  {0, 0, 0, 0, 0}
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_writer = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_9adios_mpi_writer, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_writer = {
+  0, /*mp_length*/
+  __pyx_pw_9adios_mpi_6writer_13__getitem__, /*mp_subscript*/
+  __pyx_mp_ass_subscript_9adios_mpi_writer, /*mp_ass_subscript*/
+};
 
-static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct____getitem__ = {
+static PyTypeObject __pyx_type_9adios_mpi_writer = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.__pyx_scope_struct____getitem__", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__), /*tp_basicsize*/
+  "adios_mpi.writer", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_writer), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi___pyx_scope_struct____getitem__, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_writer, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  0, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_6writer_17__repr__, /*tp_repr*/
   0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
+  &__pyx_tp_as_sequence_writer, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_writer, /*tp_as_mapping*/
   0, /*tp_hash*/
   0, /*tp_call*/
   0, /*tp_str*/
   0, /*tp_getattro*/
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi___pyx_scope_struct____getitem__, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi___pyx_scope_struct____getitem__, /*tp_clear*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  "writer(str fname, bool is_noxml=True, str mode='w', Comm comm=MPI.COMM_WORLD)\n\n    writer class for Adios write.\n\n    Args:\n        fname (str): filename.\n        is_noxml (bool, optional): Set True if use noxml APIs (default: True).\n        comm (MPI.Comm, optional): MPI comm for parallel read/write (default: MPI.COMM_WORLD).\n\n    Example:\n\n    >>> import adios as ad\n    >>> f = ad.writer('adiosfile.bp')\n\n    ", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_writer, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_writer, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  0, /*tp_methods*/
+  __pyx_methods_9adios_mpi_writer, /*tp_methods*/
   0, /*tp_members*/
-  0, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_writer, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  0, /*tp_init*/
+  __pyx_pw_9adios_mpi_6writer_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi___pyx_scope_struct____getitem__, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_writer, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -24442,81 +36510,115 @@ static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct____getitem__ = {
   #endif
 };
 
-static struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *__pyx_freelist_9adios_mpi___pyx_scope_struct_1_genexpr[8];
-static int __pyx_freecount_9adios_mpi___pyx_scope_struct_1_genexpr = 0;
-
-static PyObject *__pyx_tp_new_9adios_mpi___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+static PyObject *__pyx_tp_new_9adios_mpi_attrinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_9adios_mpi_attrinfo *p;
   PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9adios_mpi___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr)))) {
-    o = (PyObject*)__pyx_freelist_9adios_mpi___pyx_scope_struct_1_genexpr[--__pyx_freecount_9adios_mpi___pyx_scope_struct_1_genexpr];
-    memset(o, 0, sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
     o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_9adios_mpi_attrinfo *)o);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->dtype = Py_None; Py_INCREF(Py_None);
+  p->value = Py_None; Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi___pyx_scope_struct_1_genexpr(PyObject *o) {
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_outer_scope);
-  Py_CLEAR(p->__pyx_v_x);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9adios_mpi___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr)))) {
-    __pyx_freelist_9adios_mpi___pyx_scope_struct_1_genexpr[__pyx_freecount_9adios_mpi___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
+static void __pyx_tp_dealloc_9adios_mpi_attrinfo(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_attrinfo *p = (struct __pyx_obj_9adios_mpi_attrinfo *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->dtype);
+  Py_CLEAR(p->value);
+  (*Py_TYPE(o)->tp_free)(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_attrinfo(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *)o;
-  if (p->__pyx_outer_scope) {
-    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
-  }
-  if (p->__pyx_v_x) {
-    e = (*v)(p->__pyx_v_x, a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_attrinfo *p = (struct __pyx_obj_9adios_mpi_attrinfo *)o;
+  if (p->dtype) {
+    e = (*v)(p->dtype, a); if (e) return e;
   }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  if (p->value) {
+    e = (*v)(p->value, a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi___pyx_scope_struct_1_genexpr(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_attrinfo(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr *)o;
-  tmp = ((PyObject*)p->__pyx_outer_scope);
-  p->__pyx_outer_scope = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)Py_None); Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_x);
-  p->__pyx_v_x = Py_None; Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_attrinfo *p = (struct __pyx_obj_9adios_mpi_attrinfo *)o;
+  tmp = ((PyObject*)p->dtype);
+  p->dtype = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_t_0);
-  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->value);
+  p->value = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
 
-static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct_1_genexpr = {
+static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_8attrinfo_4name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_is_static(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_8attrinfo_9is_static_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_8attrinfo_5dtype_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_8attrinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_8attrinfo_5value_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_8attrinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_8attrinfo_5value_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyMethodDef __pyx_methods_9adios_mpi_attrinfo[] = {
+  {"define", (PyCFunction)__pyx_pw_9adios_mpi_8attrinfo_3define, METH_O, __pyx_doc_9adios_mpi_8attrinfo_2define},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_attrinfo[] = {
+  {(char *)"name", __pyx_getprop_9adios_mpi_8attrinfo_name, 0, (char *)0, 0},
+  {(char *)"is_static", __pyx_getprop_9adios_mpi_8attrinfo_is_static, 0, (char *)0, 0},
+  {(char *)"dtype", __pyx_getprop_9adios_mpi_8attrinfo_dtype, 0, (char *)0, 0},
+  {(char *)"value", __pyx_getprop_9adios_mpi_8attrinfo_value, __pyx_setprop_9adios_mpi_8attrinfo_value, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyTypeObject __pyx_type_9adios_mpi_attrinfo = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.__pyx_scope_struct_1_genexpr", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
+  "adios_mpi.attrinfo", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_attrinfo), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_attrinfo, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  0, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_8attrinfo_5__repr__, /*tp_repr*/
   0, /*tp_as_number*/
   0, /*tp_as_sequence*/
   0, /*tp_as_mapping*/
@@ -24526,25 +36628,25 @@ static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct_1_genexpr = {
   0, /*tp_getattro*/
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi___pyx_scope_struct_1_genexpr, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi___pyx_scope_struct_1_genexpr, /*tp_clear*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  "attrinfo(str name, value=None, dtype=None, bool is_static=True)", /*tp_doc*/
+  __pyx_tp_traverse_9adios_mpi_attrinfo, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_attrinfo, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  0, /*tp_methods*/
+  __pyx_methods_9adios_mpi_attrinfo, /*tp_methods*/
   0, /*tp_members*/
-  0, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_attrinfo, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  0, /*tp_init*/
+  __pyx_pw_9adios_mpi_8attrinfo_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi___pyx_scope_struct_1_genexpr, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_attrinfo, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -24559,81 +36661,159 @@ static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct_1_genexpr = {
   #endif
 };
 
-static struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *__pyx_freelist_9adios_mpi___pyx_scope_struct_2_genexpr[8];
-static int __pyx_freecount_9adios_mpi___pyx_scope_struct_2_genexpr = 0;
-
-static PyObject *__pyx_tp_new_9adios_mpi___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+static PyObject *__pyx_tp_new_9adios_mpi_varinfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_9adios_mpi_varinfo *p;
   PyObject *o;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9adios_mpi___pyx_scope_struct_2_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr)))) {
-    o = (PyObject*)__pyx_freelist_9adios_mpi___pyx_scope_struct_2_genexpr[--__pyx_freecount_9adios_mpi___pyx_scope_struct_2_genexpr];
-    memset(o, 0, sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr));
-    (void) PyObject_INIT(o, t);
-    PyObject_GC_Track(o);
-  } else {
+  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
     o = (*t->tp_alloc)(t, 0);
-    if (unlikely(!o)) return 0;
+  } else {
+    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   }
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_9adios_mpi_varinfo *)o);
+  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->ldim = Py_None; Py_INCREF(Py_None);
+  p->gdim = Py_None; Py_INCREF(Py_None);
+  p->offset = Py_None; Py_INCREF(Py_None);
+  p->value = Py_None; Py_INCREF(Py_None);
   return o;
 }
 
-static void __pyx_tp_dealloc_9adios_mpi___pyx_scope_struct_2_genexpr(PyObject *o) {
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *)o;
-  PyObject_GC_UnTrack(o);
-  Py_CLEAR(p->__pyx_outer_scope);
-  Py_CLEAR(p->__pyx_v_x);
-  Py_CLEAR(p->__pyx_t_0);
-  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9adios_mpi___pyx_scope_struct_2_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr)))) {
-    __pyx_freelist_9adios_mpi___pyx_scope_struct_2_genexpr[__pyx_freecount_9adios_mpi___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *)o);
-  } else {
-    (*Py_TYPE(o)->tp_free)(o);
+static void __pyx_tp_dealloc_9adios_mpi_varinfo(PyObject *o) {
+  struct __pyx_obj_9adios_mpi_varinfo *p = (struct __pyx_obj_9adios_mpi_varinfo *)o;
+  #if PY_VERSION_HEX >= 0x030400a1
+  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+    if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->name);
+  Py_CLEAR(p->ldim);
+  Py_CLEAR(p->gdim);
+  Py_CLEAR(p->offset);
+  Py_CLEAR(p->value);
+  (*Py_TYPE(o)->tp_free)(o);
 }
 
-static int __pyx_tp_traverse_9adios_mpi___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) {
+static int __pyx_tp_traverse_9adios_mpi_varinfo(PyObject *o, visitproc v, void *a) {
   int e;
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *)o;
-  if (p->__pyx_outer_scope) {
-    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
+  struct __pyx_obj_9adios_mpi_varinfo *p = (struct __pyx_obj_9adios_mpi_varinfo *)o;
+  if (p->ldim) {
+    e = (*v)(p->ldim, a); if (e) return e;
   }
-  if (p->__pyx_v_x) {
-    e = (*v)(p->__pyx_v_x, a); if (e) return e;
+  if (p->gdim) {
+    e = (*v)(p->gdim, a); if (e) return e;
+  }
+  if (p->offset) {
+    e = (*v)(p->offset, a); if (e) return e;
   }
-  if (p->__pyx_t_0) {
-    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  if (p->value) {
+    e = (*v)(p->value, a); if (e) return e;
   }
   return 0;
 }
 
-static int __pyx_tp_clear_9adios_mpi___pyx_scope_struct_2_genexpr(PyObject *o) {
+static int __pyx_tp_clear_9adios_mpi_varinfo(PyObject *o) {
   PyObject* tmp;
-  struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr *)o;
-  tmp = ((PyObject*)p->__pyx_outer_scope);
-  p->__pyx_outer_scope = ((struct __pyx_obj_9adios_mpi___pyx_scope_struct____getitem__ *)Py_None); Py_INCREF(Py_None);
+  struct __pyx_obj_9adios_mpi_varinfo *p = (struct __pyx_obj_9adios_mpi_varinfo *)o;
+  tmp = ((PyObject*)p->ldim);
+  p->ldim = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->gdim);
+  p->gdim = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_v_x);
-  p->__pyx_v_x = Py_None; Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->offset);
+  p->offset = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->__pyx_t_0);
-  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
+  tmp = ((PyObject*)p->value);
+  p->value = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
   return 0;
 }
 
-static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct_2_genexpr = {
+static PyObject *__pyx_getprop_9adios_mpi_7varinfo_ldim(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_7varinfo_4ldim_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_7varinfo_ldim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_7varinfo_4ldim_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_7varinfo_4ldim_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_7varinfo_gdim(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_7varinfo_4gdim_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_7varinfo_gdim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_7varinfo_4gdim_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_7varinfo_4gdim_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_7varinfo_offset(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_7varinfo_6offset_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_7varinfo_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_7varinfo_6offset_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_7varinfo_6offset_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_9adios_mpi_7varinfo_value(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_7varinfo_5value_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_7varinfo_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_7varinfo_5value_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_9adios_mpi_7varinfo_5value_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_9adios_mpi_varinfo[] = {
+  {"define", (PyCFunction)__pyx_pw_9adios_mpi_7varinfo_3define, METH_O, __pyx_doc_9adios_mpi_7varinfo_2define},
+  {"bytes", (PyCFunction)__pyx_pw_9adios_mpi_7varinfo_5bytes, METH_NOARGS, __pyx_doc_9adios_mpi_7varinfo_4bytes},
+  {"write", (PyCFunction)__pyx_pw_9adios_mpi_7varinfo_7write, METH_O, __pyx_doc_9adios_mpi_7varinfo_6write},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_9adios_mpi_varinfo[] = {
+  {(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},
+  {(char *)"value", __pyx_getprop_9adios_mpi_7varinfo_value, __pyx_setprop_9adios_mpi_7varinfo_value, (char *)"value: object", 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyTypeObject __pyx_type_9adios_mpi_varinfo = {
   PyVarObject_HEAD_INIT(0, 0)
-  "adios_mpi.__pyx_scope_struct_2_genexpr", /*tp_name*/
-  sizeof(struct __pyx_obj_9adios_mpi___pyx_scope_struct_2_genexpr), /*tp_basicsize*/
+  "adios_mpi.varinfo", /*tp_name*/
+  sizeof(struct __pyx_obj_9adios_mpi_varinfo), /*tp_basicsize*/
   0, /*tp_itemsize*/
-  __pyx_tp_dealloc_9adios_mpi___pyx_scope_struct_2_genexpr, /*tp_dealloc*/
+  __pyx_tp_dealloc_9adios_mpi_varinfo, /*tp_dealloc*/
   0, /*tp_print*/
   0, /*tp_getattr*/
   0, /*tp_setattr*/
   #if PY_MAJOR_VERSION < 3
   0, /*tp_compare*/
-  #else
-  0, /*reserved*/
   #endif
-  0, /*tp_repr*/
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  __pyx_pw_9adios_mpi_7varinfo_9__repr__, /*tp_repr*/
   0, /*tp_as_number*/
   0, /*tp_as_sequence*/
   0, /*tp_as_mapping*/
@@ -24643,25 +36823,25 @@ static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct_2_genexpr = {
   0, /*tp_getattro*/
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  0, /*tp_doc*/
-  __pyx_tp_traverse_9adios_mpi___pyx_scope_struct_2_genexpr, /*tp_traverse*/
-  __pyx_tp_clear_9adios_mpi___pyx_scope_struct_2_genexpr, /*tp_clear*/
+  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*/
+  __pyx_tp_traverse_9adios_mpi_varinfo, /*tp_traverse*/
+  __pyx_tp_clear_9adios_mpi_varinfo, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
   0, /*tp_iternext*/
-  0, /*tp_methods*/
+  __pyx_methods_9adios_mpi_varinfo, /*tp_methods*/
   0, /*tp_members*/
-  0, /*tp_getset*/
+  __pyx_getsets_9adios_mpi_varinfo, /*tp_getset*/
   0, /*tp_base*/
   0, /*tp_dict*/
   0, /*tp_descr_get*/
   0, /*tp_descr_set*/
   0, /*tp_dictoffset*/
-  0, /*tp_init*/
+  __pyx_pw_9adios_mpi_7varinfo_1__init__, /*tp_init*/
   0, /*tp_alloc*/
-  __pyx_tp_new_9adios_mpi___pyx_scope_struct_2_genexpr, /*tp_new*/
+  __pyx_tp_new_9adios_mpi_varinfo, /*tp_new*/
   0, /*tp_free*/
   0, /*tp_is_gc*/
   0, /*tp_bases*/
@@ -24677,30 +36857,33 @@ static PyTypeObject __pyx_type_9adios_mpi___pyx_scope_struct_2_genexpr = {
 };
 
 static PyMethodDef __pyx_methods[] = {
-  {"__parse_index", (PyCFunction)__pyx_pw_9adios_mpi_1__parse_index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi___parse_index},
-  {"init", (PyCFunction)__pyx_pw_9adios_mpi_3init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_2init},
-  {"open", (PyCFunction)__pyx_pw_9adios_mpi_5open, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_4open},
-  {"set_group_size", (PyCFunction)__pyx_pw_9adios_mpi_7set_group_size, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6set_group_size},
-  {"write", (PyCFunction)__pyx_pw_9adios_mpi_9write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_8write},
-  {"write_int", (PyCFunction)__pyx_pw_9adios_mpi_11write_int, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_10write_int},
-  {"write_long", (PyCFunction)__pyx_pw_9adios_mpi_13write_long, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_12write_long},
-  {"write_float", (PyCFunction)__pyx_pw_9adios_mpi_15write_float, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_14write_float},
-  {"write_double", (PyCFunction)__pyx_pw_9adios_mpi_17write_double, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_16write_double},
-  {"read", (PyCFunction)__pyx_pw_9adios_mpi_19read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_18read},
-  {"close", (PyCFunction)__pyx_pw_9adios_mpi_21close, METH_O, __pyx_doc_9adios_mpi_20close},
-  {"finalize", (PyCFunction)__pyx_pw_9adios_mpi_23finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_22finalize},
-  {"init_noxml", (PyCFunction)__pyx_pw_9adios_mpi_25init_noxml, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_24init_noxml},
-  {"allocate_buffer", (PyCFunction)__pyx_pw_9adios_mpi_27allocate_buffer, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_26allocate_buffer},
-  {"declare_group", (PyCFunction)__pyx_pw_9adios_mpi_29declare_group, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_28declare_group},
-  {"define_var", (PyCFunction)__pyx_pw_9adios_mpi_31define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_30define_var},
-  {"define_attribute", (PyCFunction)__pyx_pw_9adios_mpi_33define_attribute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_32define_attribute},
-  {"define_attribute_byvalue", (PyCFunction)__pyx_pw_9adios_mpi_35define_attribute_byvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_34define_attribute_byvalue},
-  {"select_method", (PyCFunction)__pyx_pw_9adios_mpi_37select_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_36select_method},
-  {"adios2npdtype", (PyCFunction)__pyx_pw_9adios_mpi_39adios2npdtype, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_38adios2npdtype},
-  {"np2adiostype", (PyCFunction)__pyx_pw_9adios_mpi_41np2adiostype, METH_O, __pyx_doc_9adios_mpi_40np2adiostype},
-  {"adiostype2string", (PyCFunction)__pyx_pw_9adios_mpi_43adiostype2string, METH_O, __pyx_doc_9adios_mpi_42adiostype2string},
-  {"read_init", (PyCFunction)__pyx_pw_9adios_mpi_45read_init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_44read_init},
-  {"read_finalize", (PyCFunction)__pyx_pw_9adios_mpi_47read_finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_46read_finalize},
+  {"test_str", (PyCFunction)__pyx_pw_9adios_mpi_1test_str, METH_O, __pyx_doc_9adios_mpi_test_str},
+  {"b2s", (PyCFunction)__pyx_pw_9adios_mpi_3b2s, METH_O, __pyx_doc_9adios_mpi_2b2s},
+  {"s2b", (PyCFunction)__pyx_pw_9adios_mpi_5s2b, METH_O, __pyx_doc_9adios_mpi_4s2b},
+  {"__parse_index", (PyCFunction)__pyx_pw_9adios_mpi_9__parse_index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_8__parse_index},
+  {"init", (PyCFunction)__pyx_pw_9adios_mpi_11init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_10init},
+  {"open", (PyCFunction)__pyx_pw_9adios_mpi_13open, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_12open},
+  {"set_group_size", (PyCFunction)__pyx_pw_9adios_mpi_15set_group_size, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_14set_group_size},
+  {"write", (PyCFunction)__pyx_pw_9adios_mpi_17write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_16write},
+  {"write_int", (PyCFunction)__pyx_pw_9adios_mpi_19write_int, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_18write_int},
+  {"write_long", (PyCFunction)__pyx_pw_9adios_mpi_21write_long, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_20write_long},
+  {"write_float", (PyCFunction)__pyx_pw_9adios_mpi_23write_float, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_22write_float},
+  {"write_double", (PyCFunction)__pyx_pw_9adios_mpi_25write_double, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_24write_double},
+  {"read", (PyCFunction)__pyx_pw_9adios_mpi_27read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_26read},
+  {"close", (PyCFunction)__pyx_pw_9adios_mpi_29close, METH_O, __pyx_doc_9adios_mpi_28close},
+  {"finalize", (PyCFunction)__pyx_pw_9adios_mpi_31finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_30finalize},
+  {"init_noxml", (PyCFunction)__pyx_pw_9adios_mpi_33init_noxml, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_32init_noxml},
+  {"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},
   {0, 0, 0, 0}
 };
 
@@ -24723,22 +36906,32 @@ static struct PyModuleDef __pyx_moduledef = {
 #endif
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
   {&__pyx_kp_s_15s_d, __pyx_k_15s_d, sizeof(__pyx_k_15s_d), 0, 0, 1, 0},
   {&__pyx_kp_s_15s_lu, __pyx_k_15s_lu, sizeof(__pyx_k_15s_lu), 0, 0, 1, 0},
   {&__pyx_kp_s_15s_s, __pyx_k_15s_s, sizeof(__pyx_k_15s_s), 0, 0, 1, 0},
+  {&__pyx_n_s_ALL, __pyx_k_ALL, sizeof(__pyx_k_ALL), 0, 0, 1, 1},
   {&__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r, __pyx_k_AdiosAttr_name_r_dtype_r_value_r, sizeof(__pyx_k_AdiosAttr_name_r_dtype_r_value_r), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_k_AdiosAttrinfo_name_r_is_static_r, sizeof(__pyx_k_AdiosAttrinfo_name_r_is_static_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosBlockinfo_process_id_r_time, __pyx_k_AdiosBlockinfo_process_id_r_time, sizeof(__pyx_k_AdiosBlockinfo_process_id_r_time), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosFile, __pyx_k_AdiosFile, sizeof(__pyx_k_AdiosFile), 0, 0, 1, 0},
-  {&__pyx_kp_s_AdiosFile_path_r_nvars_r_var_r_n, __pyx_k_AdiosFile_path_r_nvars_r_var_r_n, sizeof(__pyx_k_AdiosFile_path_r_nvars_r_var_r_n), 0, 0, 1, 0},
-  {&__pyx_kp_s_AdiosVar_varid_r_dtype_r_ndim_r, __pyx_k_AdiosVar_varid_r_dtype_r_ndim_r, sizeof(__pyx_k_AdiosVar_varid_r_dtype_r_ndim_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r, __pyx_k_AdiosFile_path_r_nvars_r_vars_r, sizeof(__pyx_k_AdiosFile_path_r_nvars_r_vars_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosGroup_vars_r_attrs_r, __pyx_k_AdiosGroup_vars_r_attrs_r, sizeof(__pyx_k_AdiosGroup_vars_r_attrs_r), 0, 0, 1, 0},
+  {&__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r, __pyx_k_AdiosVar_varid_r_name_r_dtype_r, sizeof(__pyx_k_AdiosVar_varid_r_name_r_dtype_r), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosVariable, __pyx_k_AdiosVariable, sizeof(__pyx_k_AdiosVariable), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim, sizeof(__pyx_k_AdiosVarinfo_name_r_ldim_r_gdim), 0, 0, 1, 0},
   {&__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth, __pyx_k_AdiosWriter_fname_r_gname_r_meth, sizeof(__pyx_k_AdiosWriter_fname_r_gname_r_meth), 0, 0, 1, 0},
+  {&__pyx_kp_s_All_points_must_have_the_same_le, __pyx_k_All_points_must_have_the_same_le, sizeof(__pyx_k_All_points_must_have_the_same_le), 0, 0, 1, 0},
+  {&__pyx_n_s_Attr, __pyx_k_Attr, sizeof(__pyx_k_Attr), 0, 0, 1, 1},
+  {&__pyx_n_s_Attrinfo, __pyx_k_Attrinfo, sizeof(__pyx_k_Attrinfo), 0, 0, 1, 1},
   {&__pyx_n_s_BP, __pyx_k_BP, sizeof(__pyx_k_BP), 0, 0, 1, 1},
   {&__pyx_n_s_BP_AGGREGATE, __pyx_k_BP_AGGREGATE, sizeof(__pyx_k_BP_AGGREGATE), 0, 0, 1, 1},
   {&__pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_k_BUFFER_ALLOC_WHEN, sizeof(__pyx_k_BUFFER_ALLOC_WHEN), 0, 0, 1, 1},
+  {&__pyx_n_s_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 0, 1, 1},
   {&__pyx_n_s_COMM_SELF, __pyx_k_COMM_SELF, sizeof(__pyx_k_COMM_SELF), 0, 0, 1, 1},
   {&__pyx_n_s_COMM_WORLD, __pyx_k_COMM_WORLD, sizeof(__pyx_k_COMM_WORLD), 0, 0, 1, 1},
+  {&__pyx_n_s_CURRENT, __pyx_k_CURRENT, sizeof(__pyx_k_CURRENT), 0, 0, 1, 1},
+  {&__pyx_n_s_Clone, __pyx_k_Clone, sizeof(__pyx_k_Clone), 0, 0, 1, 1},
   {&__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_k_Count_dimension_mismatch_count_d, sizeof(__pyx_k_Count_dimension_mismatch_count_d), 0, 0, 1, 0},
   {&__pyx_n_s_DATASPACES, __pyx_k_DATASPACES, sizeof(__pyx_k_DATASPACES), 0, 0, 1, 1},
   {&__pyx_n_s_DATATYPE, __pyx_k_DATATYPE, sizeof(__pyx_k_DATATYPE), 0, 0, 1, 1},
@@ -24749,65 +36942,74 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1},
   {&__pyx_n_s_FLAG, __pyx_k_FLAG, sizeof(__pyx_k_FLAG), 0, 0, 1, 1},
   {&__pyx_n_s_FLEXPATH, __pyx_k_FLEXPATH, sizeof(__pyx_k_FLEXPATH), 0, 0, 1, 1},
+  {&__pyx_n_s_FancySelection, __pyx_k_FancySelection, sizeof(__pyx_k_FancySelection), 0, 0, 1, 1},
+  {&__pyx_n_s_File, __pyx_k_File, sizeof(__pyx_k_File), 0, 0, 1, 1},
   {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0},
   {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0},
   {&__pyx_n_s_ICEE, __pyx_k_ICEE, sizeof(__pyx_k_ICEE), 0, 0, 1, 1},
   {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
   {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
   {&__pyx_n_s_LATER, __pyx_k_LATER, sizeof(__pyx_k_LATER), 0, 0, 1, 1},
+  {&__pyx_n_s_LOCKMODE, __pyx_k_LOCKMODE, sizeof(__pyx_k_LOCKMODE), 0, 0, 1, 1},
   {&__pyx_n_s_MPI, __pyx_k_MPI, sizeof(__pyx_k_MPI), 0, 0, 1, 1},
   {&__pyx_n_s_NO, __pyx_k_NO, sizeof(__pyx_k_NO), 0, 0, 1, 1},
+  {&__pyx_n_s_NONE, __pyx_k_NONE, sizeof(__pyx_k_NONE), 0, 0, 1, 1},
   {&__pyx_n_s_NOW, __pyx_k_NOW, sizeof(__pyx_k_NOW), 0, 0, 1, 1},
-  {&__pyx_kp_s_Name_index_r_is_not_supported, __pyx_k_Name_index_r_is_not_supported, sizeof(__pyx_k_Name_index_r_is_not_supported), 0, 0, 1, 0},
-  {&__pyx_kp_s_No_valid_variable, __pyx_k_No_valid_variable, sizeof(__pyx_k_No_valid_variable), 0, 0, 1, 0},
   {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0},
   {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
   {&__pyx_kp_s_Not_a_valid_var, __pyx_k_Not_a_valid_var, sizeof(__pyx_k_Not_a_valid_var), 0, 0, 1, 0},
   {&__pyx_kp_s_Not_an_open_file, __pyx_k_Not_an_open_file, sizeof(__pyx_k_Not_an_open_file), 0, 0, 1, 0},
   {&__pyx_kp_s_Not_an_open_var, __pyx_k_Not_an_open_var, sizeof(__pyx_k_Not_an_open_var), 0, 0, 1, 0},
   {&__pyx_kp_s_Not_an_open_variable, __pyx_k_Not_an_open_variable, sizeof(__pyx_k_Not_an_open_variable), 0, 0, 1, 0},
+  {&__pyx_kp_s_Not_implemented_yet, __pyx_k_Not_implemented_yet, sizeof(__pyx_k_Not_implemented_yet), 0, 0, 1, 0},
   {&__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_k_Offset_dimension_mismatch_offset, sizeof(__pyx_k_Offset_dimension_mismatch_offset), 0, 0, 1, 0},
   {&__pyx_kp_s_Only_contiguous_arrays_are_suppo, __pyx_k_Only_contiguous_arrays_are_suppo, sizeof(__pyx_k_Only_contiguous_arrays_are_suppo), 0, 0, 1, 0},
+  {&__pyx_n_s_POSIX1, __pyx_k_POSIX1, sizeof(__pyx_k_POSIX1), 0, 0, 1, 1},
   {&__pyx_kp_u_Perform_read_Read_data_from_an, __pyx_k_Perform_read_Read_data_from_an, sizeof(__pyx_k_Perform_read_Read_data_from_an), 0, 1, 0, 0},
   {&__pyx_n_s_READ_METHOD, __pyx_k_READ_METHOD, sizeof(__pyx_k_READ_METHOD), 0, 0, 1, 1},
+  {&__pyx_kp_s_Rank_is_out_of_range_nblock_r, __pyx_k_Rank_is_out_of_range_nblock_r, sizeof(__pyx_k_Rank_is_out_of_range_nblock_r), 0, 0, 1, 0},
   {&__pyx_kp_s_Reading, __pyx_k_Reading, sizeof(__pyx_k_Reading), 0, 0, 1, 0},
   {&__pyx_kp_s_Requested_is_larger_than_the_sha, __pyx_k_Requested_is_larger_than_the_sha, sizeof(__pyx_k_Requested_is_larger_than_the_sha), 0, 0, 1, 0},
   {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
   {&__pyx_n_s_S, __pyx_k_S, sizeof(__pyx_k_S), 0, 0, 1, 1},
+  {&__pyx_kp_s_Scalar_dimension_mismatch_scalar, __pyx_k_Scalar_dimension_mismatch_scalar, sizeof(__pyx_k_Scalar_dimension_mismatch_scalar), 0, 0, 1, 0},
+  {&__pyx_n_s_SimpleSelection, __pyx_k_SimpleSelection, sizeof(__pyx_k_SimpleSelection), 0, 0, 1, 1},
   {&__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_k_Step_index_is_out_of_range_from, sizeof(__pyx_k_Step_index_is_out_of_range_from), 0, 0, 1, 0},
-  {&__pyx_kp_s_Step_size_d_is_not_supported, __pyx_k_Step_size_d_is_not_supported, sizeof(__pyx_k_Step_size_d_is_not_supported), 0, 0, 1, 0},
-  {&__pyx_kp_s_Too_many_indices_for_data, __pyx_k_Too_many_indices_for_data, sizeof(__pyx_k_Too_many_indices_for_data), 0, 0, 1, 0},
   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
   {&__pyx_n_s_UNKNOWN, __pyx_k_UNKNOWN, sizeof(__pyx_k_UNKNOWN), 0, 0, 1, 1},
   {&__pyx_kp_s_Unhashable_type, __pyx_k_Unhashable_type, sizeof(__pyx_k_Unhashable_type), 0, 0, 1, 0},
   {&__pyx_kp_s_Use_default_BP_method, __pyx_k_Use_default_BP_method, sizeof(__pyx_k_Use_default_BP_method), 0, 0, 1, 0},
   {&__pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_k_Users_jyc_project_adios_devel_w, sizeof(__pyx_k_Users_jyc_project_adios_devel_w), 0, 0, 1, 0},
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   {&__pyx_kp_s_Value_is_none, __pyx_k_Value_is_none, sizeof(__pyx_k_Value_is_none), 0, 0, 1, 0},
+  {&__pyx_n_s_Var, __pyx_k_Var, sizeof(__pyx_k_Var), 0, 0, 1, 1},
+  {&__pyx_n_s_Varinfo, __pyx_k_Varinfo, sizeof(__pyx_k_Varinfo), 0, 0, 1, 1},
   {&__pyx_kp_s_WARN_Invalid_read_method_name, __pyx_k_WARN_Invalid_read_method_name, sizeof(__pyx_k_WARN_Invalid_read_method_name), 0, 0, 1, 0},
   {&__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_k_Warning_No_support_yet_s_type_d, sizeof(__pyx_k_Warning_No_support_yet_s_type_d), 0, 0, 1, 0},
+  {&__pyx_n_s_Writer, __pyx_k_Writer, sizeof(__pyx_k_Writer), 0, 0, 1, 1},
   {&__pyx_n_s_YES, __pyx_k_YES, sizeof(__pyx_k_YES), 0, 0, 1, 1},
-  {&__pyx_kp_s__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 1, 0},
-  {&__pyx_kp_s__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 0, 1, 0},
-  {&__pyx_kp_s__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 0, 1, 0},
-  {&__pyx_n_s__45, __pyx_k__45, sizeof(__pyx_k__45), 0, 0, 1, 1},
-  {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
+  {&__pyx_kp_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 0},
+  {&__pyx_kp_s__63, __pyx_k__63, sizeof(__pyx_k__63), 0, 0, 1, 0},
+  {&__pyx_kp_s__65, __pyx_k__65, sizeof(__pyx_k__65), 0, 0, 1, 0},
+  {&__pyx_n_s__77, __pyx_k__77, sizeof(__pyx_k__77), 0, 0, 1, 1},
   {&__pyx_n_s_adios_mpi, __pyx_k_adios_mpi, sizeof(__pyx_k_adios_mpi), 0, 0, 1, 1},
   {&__pyx_n_s_advance, __pyx_k_advance, sizeof(__pyx_k_advance), 0, 0, 1, 1},
+  {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
   {&__pyx_n_s_any, __pyx_k_any, sizeof(__pyx_k_any), 0, 0, 1, 1},
-  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
   {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
+  {&__pyx_n_s_asscalar, __pyx_k_asscalar, sizeof(__pyx_k_asscalar), 0, 0, 1, 1},
   {&__pyx_n_s_attr_namelist, __pyx_k_attr_namelist, sizeof(__pyx_k_attr_namelist), 0, 0, 1, 1},
   {&__pyx_n_s_attrname, __pyx_k_attrname, sizeof(__pyx_k_attrname), 0, 0, 1, 1},
   {&__pyx_n_s_attrs, __pyx_k_attrs, sizeof(__pyx_k_attrs), 0, 0, 1, 1},
   {&__pyx_n_s_atype, __pyx_k_atype, sizeof(__pyx_k_atype), 0, 0, 1, 1},
+  {&__pyx_n_s_axis, __pyx_k_axis, sizeof(__pyx_k_axis), 0, 0, 1, 1},
   {&__pyx_n_s_base_path, __pyx_k_base_path, sizeof(__pyx_k_base_path), 0, 0, 1, 1},
   {&__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_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_bytes_2, __pyx_k_bytes_2, sizeof(__pyx_k_bytes_2), 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},
@@ -24815,21 +37017,27 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_complex128, __pyx_k_complex128, sizeof(__pyx_k_complex128), 0, 0, 1, 1},
   {&__pyx_n_s_complex64, __pyx_k_complex64, sizeof(__pyx_k_complex64), 0, 0, 1, 1},
   {&__pyx_n_s_complex_2, __pyx_k_complex_2, sizeof(__pyx_k_complex_2), 0, 0, 1, 1},
+  {&__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_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_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},
   {&__pyx_n_s_dimensions, __pyx_k_dimensions, sizeof(__pyx_k_dimensions), 0, 0, 1, 1},
   {&__pyx_n_s_dims, __pyx_k_dims, sizeof(__pyx_k_dims), 0, 0, 1, 1},
+  {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1},
   {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
   {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1},
   {&__pyx_n_s_double_complex, __pyx_k_double_complex, sizeof(__pyx_k_double_complex), 0, 0, 1, 1},
   {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1},
-  {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1},
+  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
   {&__pyx_n_s_endianness, __pyx_k_endianness, sizeof(__pyx_k_endianness), 0, 0, 1, 1},
+  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
+  {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1},
+  {&__pyx_n_s_exception_value, __pyx_k_exception_value, sizeof(__pyx_k_exception_value), 0, 0, 1, 1},
   {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
   {&__pyx_n_s_factory, __pyx_k_factory, sizeof(__pyx_k_factory), 0, 0, 1, 1},
   {&__pyx_n_s_fd_p, __pyx_k_fd_p, sizeof(__pyx_k_fd_p), 0, 0, 1, 1},
@@ -24847,17 +37055,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_fp, __pyx_k_fp, sizeof(__pyx_k_fp), 0, 0, 1, 1},
   {&__pyx_n_s_from_steps, __pyx_k_from_steps, sizeof(__pyx_k_from_steps), 0, 0, 1, 1},
   {&__pyx_n_s_gdim, __pyx_k_gdim, sizeof(__pyx_k_gdim), 0, 0, 1, 1},
-  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
   {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
-  {&__pyx_n_s_getitem___locals_genexpr, __pyx_k_getitem___locals_genexpr, sizeof(__pyx_k_getitem___locals_genexpr), 0, 0, 1, 1},
+  {&__pyx_n_s_getitem, __pyx_k_getitem, sizeof(__pyx_k_getitem), 0, 0, 1, 1},
   {&__pyx_n_s_global_dimensions, __pyx_k_global_dimensions, sizeof(__pyx_k_global_dimensions), 0, 0, 1, 1},
   {&__pyx_n_s_gname, __pyx_k_gname, sizeof(__pyx_k_gname), 0, 0, 1, 1},
   {&__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_hl, __pyx_k_hl, sizeof(__pyx_k_hl), 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_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1},
   {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
   {&__pyx_n_s_int16, __pyx_k_int16, sizeof(__pyx_k_int16), 0, 0, 1, 1},
   {&__pyx_n_s_int32, __pyx_k_int32, sizeof(__pyx_k_int32), 0, 0, 1, 1},
@@ -24865,13 +37072,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_int8, __pyx_k_int8, sizeof(__pyx_k_int8), 0, 0, 1, 1},
   {&__pyx_n_s_integer, __pyx_k_integer, sizeof(__pyx_k_integer), 0, 0, 1, 1},
   {&__pyx_n_s_is_noxml, __pyx_k_is_noxml, sizeof(__pyx_k_is_noxml), 0, 0, 1, 1},
+  {&__pyx_n_s_is_open, __pyx_k_is_open, sizeof(__pyx_k_is_open), 0, 0, 1, 1},
   {&__pyx_n_s_is_static, __pyx_k_is_static, sizeof(__pyx_k_is_static), 0, 0, 1, 1},
   {&__pyx_n_s_is_stream, __pyx_k_is_stream, sizeof(__pyx_k_is_stream), 0, 0, 1, 1},
   {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
   {&__pyx_n_s_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 0, 0, 1, 1},
   {&__pyx_n_s_iterkeys, __pyx_k_iterkeys, sizeof(__pyx_k_iterkeys), 0, 0, 1, 1},
   {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
+  {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
   {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
+  {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1},
   {&__pyx_n_s_last, __pyx_k_last, sizeof(__pyx_k_last), 0, 0, 1, 1},
   {&__pyx_n_s_last_step, __pyx_k_last_step, sizeof(__pyx_k_last_step), 0, 0, 1, 1},
   {&__pyx_n_s_ldim, __pyx_k_ldim, sizeof(__pyx_k_ldim), 0, 0, 1, 1},
@@ -24886,51 +37096,71 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_method_params, __pyx_k_method_params, sizeof(__pyx_k_method_params), 0, 0, 1, 1},
   {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
   {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
+  {&__pyx_n_s_morder, __pyx_k_morder, sizeof(__pyx_k_morder), 0, 0, 1, 1},
   {&__pyx_n_s_mpi4py_MPI, __pyx_k_mpi4py_MPI, sizeof(__pyx_k_mpi4py_MPI), 0, 0, 1, 1},
+  {&__pyx_n_s_mshape, __pyx_k_mshape, sizeof(__pyx_k_mshape), 0, 0, 1, 1},
   {&__pyx_n_s_mype, __pyx_k_mype, sizeof(__pyx_k_mype), 0, 0, 1, 1},
   {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
   {&__pyx_n_s_nattrs, __pyx_k_nattrs, sizeof(__pyx_k_nattrs), 0, 0, 1, 1},
   {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0},
   {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0},
   {&__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_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_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},
+  {&__pyx_n_s_points, __pyx_k_points, sizeof(__pyx_k_points), 0, 0, 1, 1},
   {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
   {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
   {&__pyx_n_s_printself, __pyx_k_printself, sizeof(__pyx_k_printself), 0, 0, 1, 1},
+  {&__pyx_n_s_process_id, __pyx_k_process_id, sizeof(__pyx_k_process_id), 0, 0, 1, 1},
+  {&__pyx_n_s_prod, __pyx_k_prod, sizeof(__pyx_k_prod), 0, 0, 1, 1},
   {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
   {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
   {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
+  {&__pyx_n_s_rank, __pyx_k_rank, sizeof(__pyx_k_rank), 0, 0, 1, 1},
   {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1},
+  {&__pyx_n_s_read_points, __pyx_k_read_points, sizeof(__pyx_k_read_points), 0, 0, 1, 1},
+  {&__pyx_n_s_read_writeblock, __pyx_k_read_writeblock, sizeof(__pyx_k_read_writeblock), 0, 0, 1, 1},
+  {&__pyx_n_s_readattr, __pyx_k_readattr, sizeof(__pyx_k_readattr), 0, 0, 1, 1},
   {&__pyx_n_s_readvar, __pyx_k_readvar, sizeof(__pyx_k_readvar), 0, 0, 1, 1},
+  {&__pyx_n_s_readvar_2, __pyx_k_readvar_2, sizeof(__pyx_k_readvar_2), 0, 0, 1, 1},
   {&__pyx_n_s_real, __pyx_k_real, sizeof(__pyx_k_real), 0, 0, 1, 1},
+  {&__pyx_n_s_release_step, __pyx_k_release_step, sizeof(__pyx_k_release_step), 0, 0, 1, 1},
   {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1},
-  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
+  {&__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_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_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_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
-  {&__pyx_n_s_squeeze, __pyx_k_squeeze, sizeof(__pyx_k_squeeze), 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},
   {&__pyx_n_s_stats, __pyx_k_stats, sizeof(__pyx_k_stats), 0, 0, 1, 1},
-  {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
-  {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
+  {&__pyx_n_s_step_scalar, __pyx_k_step_scalar, sizeof(__pyx_k_step_scalar), 0, 0, 1, 1},
   {&__pyx_n_s_string, __pyx_k_string, sizeof(__pyx_k_string), 0, 0, 1, 1},
+  {&__pyx_n_s_string_2, __pyx_k_string_2, sizeof(__pyx_k_string_2), 0, 0, 1, 1},
   {&__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_subtract, __pyx_k_subtract, sizeof(__pyx_k_subtract), 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_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 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_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_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},
@@ -24948,36 +37178,40 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__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_namelist, __pyx_k_var_namelist, sizeof(__pyx_k_var_namelist), 0, 0, 1, 1},
-  {&__pyx_kp_u_var_read_line_887, __pyx_k_var_read_line_887, sizeof(__pyx_k_var_read_line_887), 0, 1, 0, 0},
+  {&__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_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},
   {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1},
   {&__pyx_n_s_vp, __pyx_k_vp, sizeof(__pyx_k_vp), 0, 0, 1, 1},
+  {&__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_1221, __pyx_k_writer_declare_group_line_1221, sizeof(__pyx_k_writer_declare_group_line_1221), 0, 1, 0, 0},
-  {&__pyx_kp_u_writer_define_var_line_1243, __pyx_k_writer_define_var_line_1243, sizeof(__pyx_k_writer_define_var_line_1243), 0, 1, 0, 0},
+  {&__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_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},
   {0, 0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 35, __pyx_L1_error)
   #if PY_MAJOR_VERSION >= 3
-  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) __PYX_ERR(0, 71, __pyx_L1_error)
   #else
-  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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_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;
   __pyx_L1_error:;
   return -1;
@@ -24987,289 +37221,632 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
 
-  /* "adios_mpi.pyx":287
+  /* "adios_mpi.pyx":63
+ *     l = list()
+ *     for key in keys:
+ *         if key.startswith('/'):             # <<<<<<<<<<<<<<
+ *             key = key[1:]
+ *         if '/' not in key:
+ */
+  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__2);
+  __Pyx_GIVEREF(__pyx_tuple__2);
+
+  /* "adios_mpi.pyx":64
+ *     for key in keys:
+ *         if key.startswith('/'):
+ *             key = key[1:]             # <<<<<<<<<<<<<<
+ *         if '/' not in key:
+ *             l.append(key)
+ */
+  __pyx_slice__3 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__3)) __PYX_ERR(0, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__3);
+  __Pyx_GIVEREF(__pyx_slice__3);
+
+  /* "adios_mpi.pyx":358
  *     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_ = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice_);
-  __Pyx_GIVEREF(__pyx_slice_);
+  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 358, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__4);
+  __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "adios_mpi.pyx":296
+  /* "adios_mpi.pyx":369
  *     index = tuple(fixed)
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))             # <<<<<<<<<<<<<<
  * 
  *     return index
  */
-  __pyx_slice__2 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_slice__2);
-  __pyx_tuple__3 = PyTuple_New(1); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__3);
-  __Pyx_INCREF(__pyx_slice__2);
-  PyTuple_SET_ITEM(__pyx_tuple__3, 0, __pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_tuple__3);
-
-  /* "adios_mpi.pyx":703
+  __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 369, __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_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
+ *         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);
+
+  /* "adios_mpi.pyx":709
+ *                 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);
+
+  /* "adios_mpi.pyx":710
+ * 
+ *             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);
+
+  /* "adios_mpi.pyx":822
  *         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__12 = PyTuple_Pack(1, __pyx_kp_s__11); if (unlikely(!__pyx_tuple__12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
+  __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);
+
+  /* "adios_mpi.pyx":861
+ *         """ 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);
+
+  /* "adios_mpi.pyx":909
+ *         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);
+
+  /* "adios_mpi.pyx":911
+ *                 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);
 
-  /* "adios_mpi.pyx":775
- *         for key_ in varname:
- *             if not isinstance(key_, str):
- *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":912
  * 
- *             if key_ in self.var.keys():
+ *             if key_.startswith('/'):
+ *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
+ * 
+ *             if key_ in self.vars.keys():
  */
-  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
+  __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);
 
-  /* "adios_mpi.pyx":950
+  /* "adios_mpi.pyx":986
+ *         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);
+
+  /* "adios_mpi.pyx":987
+ *         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);
+
+  /* "adios_mpi.pyx":989
+ *             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);
+
+  /* "adios_mpi.pyx":990
+ *         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);
+
+  /* "adios_mpi.pyx":1331
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()
  *             npoffset.fill(0)             # <<<<<<<<<<<<<<
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)
  */
-  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__14);
-  __Pyx_GIVEREF(__pyx_tuple__14);
+  __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);
 
-  /* "adios_mpi.pyx":967
+  /* "adios_mpi.pyx":1342
+ * 
+ *         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_INCREF(Py_False);
+  __Pyx_GIVEREF(Py_False);
+  PyTuple_SET_ITEM(__pyx_tuple__29, 0, Py_False);
+  __Pyx_GIVEREF(__pyx_tuple__29);
+
+  /* "adios_mpi.pyx":1354
  * 
  *         if (npshape < npcount + npoffset).any():
  *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
  * 
- *         shape = list(npcount)
+ *         shape = [x for x, y in zip(npcount, scalar) if not y]
  */
-  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Requested_is_larger_than_the_sha); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__15);
-  __Pyx_GIVEREF(__pyx_tuple__15);
+  __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);
 
-  /* "adios_mpi.pyx":975
+  /* "adios_mpi.pyx":1362
  * 
  *         if len(shape) > 0:
  *             var[:] = fill             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_slice__16 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__16);
-  __Pyx_GIVEREF(__pyx_slice__16);
+  __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);
 
-  /* "adios_mpi.pyx":1016
+  /* "adios_mpi.pyx":1382
+ *         """ 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);
+
+  /* "adios_mpi.pyx":1406
+ *         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);
+
+  /* "adios_mpi.pyx":1408
+ *                 raise TypeError("Unhashable type")
  * 
- *         if (ndim_ > 0) and (len(index_) > ndim_):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
+ *                 key_ = key_[1:]
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
  */
-  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Too_many_indices_for_data); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
+  __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);
 
-  /* "adios_mpi.pyx":1019
+  /* "adios_mpi.pyx":1409
  * 
- *         if (ndim_ == 0) and (len(index_) > 1):
- *             raise IndexError("Too many indices for data")             # <<<<<<<<<<<<<<
+ *             if key_.startswith('/'):
+ *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
- *         for slice_ in index_:
+ *             if key_ in self.attrs.keys():
  */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Too_many_indices_for_data); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __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);
 
-  /* "adios_mpi.pyx":1035
- *             from_steps_ = z[0][0]
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]             # <<<<<<<<<<<<<<
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
- *         else:
+  /* "adios_mpi.pyx":1430
+ *         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);
+
+  /* "adios_mpi.pyx":1431
+ *             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);
+
+  /* "adios_mpi.pyx":1432
+ *                 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);
+
+  /* "adios_mpi.pyx":1449
+ *             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__19 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__19);
-  __Pyx_GIVEREF(__pyx_slice__19);
+  __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);
 
-  /* "adios_mpi.pyx":1036
- *             nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
- *             offset_ = z[0][1:]
- *             count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)             # <<<<<<<<<<<<<<
+  /* "adios_mpi.pyx":1450
+ *                 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);
+
+  /* "adios_mpi.pyx":1451
+ *                     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);
+
+  /* "adios_mpi.pyx":1469
+ * 
  *         else:
- *             indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
+ *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
+ * 
+ *     def __getitem__(self, args):
  */
-  __pyx_slice__20 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__20);
-  __Pyx_GIVEREF(__pyx_slice__20);
-  __pyx_slice__21 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__21);
-  __Pyx_GIVEREF(__pyx_slice__21);
+  __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);
 
-  /* "adios_mpi.pyx":1383
+  /* "adios_mpi.pyx":1595
+ *     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);
+
+  /* "adios_mpi.pyx":1630
+ *         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);
+
+  /* "adios_mpi.pyx":1632
+ *                 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);
+
+  /* "adios_mpi.pyx":1633
+ * 
+ *             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);
+
+  /* "adios_mpi.pyx":1683
+ *         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);
+
+  /* "adios_mpi.pyx":1684
+ *         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);
+
+  /* "adios_mpi.pyx":1686
+ *             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);
+
+  /* "adios_mpi.pyx":1687
+ *         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);
+
+  /* "adios_mpi.pyx":1958
  *         if self.is_static:
  *             if self.value is None:
  *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)
  */
-  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__26);
-  __Pyx_GIVEREF(__pyx_tuple__26);
+  __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_GOTREF(__pyx_tuple__58);
+  __Pyx_GIVEREF(__pyx_tuple__58);
 
-  /* "adios_mpi.pyx":1417
+  /* "adios_mpi.pyx":1994
  *     def define(self, int64_t gid):
  *         if self.value is None:
  *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *         ldim_ = self.ldim
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __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_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
 
-  /* "adios_mpi.pyx":1438
+  /* "adios_mpi.pyx":2015
  *         ## No space allowed
  *         define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_tuple__32 = PyTuple_Pack(2, __pyx_kp_s__31, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
-  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s__33); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__34);
-  __Pyx_GIVEREF(__pyx_tuple__34);
+  __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_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_GOTREF(__pyx_tuple__66);
+  __Pyx_GIVEREF(__pyx_tuple__66);
 
-  /* "adios_mpi.pyx":1439
+  /* "adios_mpi.pyx":2016
  *         define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_kp_s__31, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__35);
-  __Pyx_GIVEREF(__pyx_tuple__35);
-  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s__33); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__36);
-  __Pyx_GIVEREF(__pyx_tuple__36);
+  __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_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_GOTREF(__pyx_tuple__68);
+  __Pyx_GIVEREF(__pyx_tuple__68);
 
-  /* "adios_mpi.pyx":1440
+  /* "adios_mpi.pyx":2017
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
  *     def bytes(self):
  */
-  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_kp_s__31, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__37);
-  __Pyx_GIVEREF(__pyx_tuple__37);
-  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s__33); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__38);
-  __Pyx_GIVEREF(__pyx_tuple__38);
+  __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_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_GOTREF(__pyx_tuple__70);
+  __Pyx_GIVEREF(__pyx_tuple__70);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  */
-  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__39);
-  __Pyx_GIVEREF(__pyx_tuple__39);
+  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(1, 218, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
  * 
  *             info.buf = PyArray_DATA(self)
  */
-  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__40);
-  __Pyx_GIVEREF(__pyx_tuple__40);
+  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(1, 222, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
  *                 if ((descr.byteorder == c'>' and little_endian) or
  *                     (descr.byteorder == c'<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  */
-  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__41);
-  __Pyx_GIVEREF(__pyx_tuple__41);
+  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(1, 259, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799
  * 
  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
  * 
  *         if ((child.byteorder == c'>' and little_endian) or
  */
-  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__42);
-  __Pyx_GIVEREF(__pyx_tuple__42);
+  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(1, 799, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803
  *         if ((child.byteorder == c'>' and little_endian) or
  *             (child.byteorder == c'<' and not little_endian)):
  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *             # One could encode it in the format string and have Cython
  *             # complain instead, BUT: < and > in format strings also imply
  */
-  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
+  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(1, 803, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823
  *             t = child.type_num
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(1, 823, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__76);
+  __Pyx_GIVEREF(__pyx_tuple__76);
+
+  /* "adios_mpi.pyx":58
+ *         return x.encode()
+ * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ */
+  __pyx_tuple__78 = PyTuple_Pack(3, __pyx_n_s_keys, __pyx_n_s_l, __pyx_n_s_key); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__78);
+  __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":1464
+  /* "adios_mpi.pyx":2049
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_tuple__46 = PyTuple_Pack(4, __pyx_n_s_fname, __pyx_n_s_varname, __pyx_n_s_f, __pyx_n_s_v); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__46);
-  __Pyx_GIVEREF(__pyx_tuple__46);
-  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_readvar, 1464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __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, 2049, __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)
 
-  /* "adios_mpi.pyx":1482
+  /* "adios_mpi.pyx":2063
  *     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__48 = PyTuple_Pack(3, __pyx_n_s_fname, __pyx_n_s_f, __pyx_n_s_k); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__48);
-  __Pyx_GIVEREF(__pyx_tuple__48);
-  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_bpls, 1482, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __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, 2063, __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_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -25278,24 +37855,26 @@ static int __Pyx_InitCachedConstants(void) {
 }
 
 static int __Pyx_InitGlobals(void) {
-  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_12 = PyInt_FromLong(12); if (unlikely(!__pyx_int_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_51 = PyInt_FromLong(51); if (unlikely(!__pyx_int_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_52 = PyInt_FromLong(52); if (unlikely(!__pyx_int_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_54 = PyInt_FromLong(54); if (unlikely(!__pyx_int_54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type;
+  __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_12 = PyInt_FromLong(12); if (unlikely(!__pyx_int_12)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_51 = PyInt_FromLong(51); if (unlikely(!__pyx_int_51)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_52 = PyInt_FromLong(52); if (unlikely(!__pyx_int_52)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_54 = PyInt_FromLong(54); if (unlikely(!__pyx_int_54)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -25311,9 +37890,6 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
 {
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
   __Pyx_RefNannyDeclarations
   #if CYTHON_REFNANNY
   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
@@ -25325,17 +37901,24 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   }
   #endif
   __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_adios_mpi(void)", 0);
-  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
   #ifdef __Pyx_CyFunction_USED
-  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_FusedFunction_USED
-  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_Coroutine_USED
+  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_Generator_USED
-  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_StopAsyncIteration_USED
+  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   /*--- Library function declarations ---*/
   /*--- Threads initialization code ---*/
@@ -25350,107 +37933,139 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   #else
   __pyx_m = PyModule_Create(&__pyx_moduledef);
   #endif
-  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
   Py_INCREF(__pyx_d);
-  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
   #if CYTHON_COMPILING_IN_PYPY
   Py_INCREF(__pyx_b);
   #endif
-  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
   /*--- Initialize various global constants etc. ---*/
-  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
-  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
   if (__pyx_module_is_main_adios_mpi) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   }
   #if PY_MAJOR_VERSION >= 3
   {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
     if (!PyDict_GetItemString(modules, "adios_mpi")) {
-      if (unlikely(PyDict_SetItemString(modules, "adios_mpi", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyDict_SetItemString(modules, "adios_mpi", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
     }
   }
   #endif
   /*--- Builtin init code ---*/
-  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   /*--- Constants init code ---*/
-  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   /*--- Global init code ---*/
+  __pyx_v_9adios_mpi_init_comm = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_9adios_mpi_read_init_comm = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
   /*--- Variable export code ---*/
   /*--- 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)
+  __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)
+  __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;
   __pyx_vtable_9adios_mpi_file.printself = (PyObject *(*)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch))__pyx_f_9adios_mpi_4file_printself;
+  __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;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_file) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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)
   __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_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 721, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_9adios_mpi_4file_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_9adios_mpi_4file_10__getitem__.doc = __pyx_doc_9adios_mpi_4file_10__getitem__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_9adios_mpi_4file_10__getitem__;
+      __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__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_9adios_mpi_4file_16__getitem__;
     }
   }
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__repr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 721, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
-      __pyx_wrapperbase_9adios_mpi_4file_12__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
-      __pyx_wrapperbase_9adios_mpi_4file_12__repr__.doc = __pyx_doc_9adios_mpi_4file_12__repr__;
-      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_9adios_mpi_4file_12__repr__;
+      __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__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_9adios_mpi_4file_18__repr__;
     }
   }
   #endif
-  if (__Pyx_SetVtable(__pyx_type_9adios_mpi_file.tp_dict, __pyx_vtabptr_9adios_mpi_file) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "file", (PyObject *)&__pyx_type_9adios_mpi_file) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __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)
+  __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)
+  __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;
   __pyx_vtable_9adios_mpi_var.advance = (PyObject *(*)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch))__pyx_f_9adios_mpi_3var_advance;
+  __pyx_vtable_9adios_mpi_var.read_points = (PyObject *(*)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_points *__pyx_optional_args))__pyx_f_9adios_mpi_3var_read_points;
+  __pyx_vtable_9adios_mpi_var.read_writeblock = (PyObject *(*)(struct __pyx_obj_9adios_mpi_var *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read_writeblock *__pyx_optional_args))__pyx_f_9adios_mpi_3var_read_writeblock;
   __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;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_var) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __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)
   __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_filename = __pyx_f[0]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyObject_SetAttrString(__pyx_m, "var", (PyObject *)&__pyx_type_9adios_mpi_var) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __pyx_ptype_9adios_mpi_var = &__pyx_type_9adios_mpi_var;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_attr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_9adios_mpi_attr) < 0) __PYX_ERR(0, 1493, __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_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_9adios_mpi_attr) < 0) __PYX_ERR(0, 1493, __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)
+  __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)
+    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__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_9adios_mpi_5group_2__getitem__;
+    }
+  }
+  #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)
+    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__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_9adios_mpi_5group_4__repr__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "group", (PyObject *)&__pyx_type_9adios_mpi_group) < 0) __PYX_ERR(0, 1579, __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_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_9adios_mpi_smartdict) < 0) __PYX_ERR(0, 1691, __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_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_9adios_mpi_smartdict) < 0) __PYX_ERR(0, 1691, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_smartdict = &__pyx_type_9adios_mpi_smartdict;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_writer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_9adios_mpi_writer) < 0) __PYX_ERR(0, 1703, __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_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_9adios_mpi_writer) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_writer = &__pyx_type_9adios_mpi_writer;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_attrinfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_9adios_mpi_attrinfo) < 0) __PYX_ERR(0, 1921, __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_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_9adios_mpi_attrinfo) < 0) __PYX_ERR(0, 1921, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_attrinfo = &__pyx_type_9adios_mpi_attrinfo;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_varinfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_9adios_mpi_varinfo) < 0) __PYX_ERR(0, 1974, __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_filename = __pyx_f[0]; __pyx_lineno = 1399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_9adios_mpi_varinfo) < 0) __PYX_ERR(0, 1974, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_varinfo = &__pyx_type_9adios_mpi_varinfo;
-  if (PyType_Ready(&__pyx_type_9adios_mpi___pyx_scope_struct____getitem__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_9adios_mpi___pyx_scope_struct____getitem__.tp_print = 0;
-  __pyx_ptype_9adios_mpi___pyx_scope_struct____getitem__ = &__pyx_type_9adios_mpi___pyx_scope_struct____getitem__;
-  if (PyType_Ready(&__pyx_type_9adios_mpi___pyx_scope_struct_1_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_9adios_mpi___pyx_scope_struct_1_genexpr.tp_print = 0;
-  __pyx_ptype_9adios_mpi___pyx_scope_struct_1_genexpr = &__pyx_type_9adios_mpi___pyx_scope_struct_1_genexpr;
-  if (PyType_Ready(&__pyx_type_9adios_mpi___pyx_scope_struct_2_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_9adios_mpi___pyx_scope_struct_2_genexpr.tp_print = 0;
-  __pyx_ptype_9adios_mpi___pyx_scope_struct_2_genexpr = &__pyx_type_9adios_mpi___pyx_scope_struct_2_genexpr;
   /*--- Type import code ---*/
   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
   #if CYTHON_COMPILING_IN_PYPY
@@ -25458,763 +38073,1228 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   #else
   sizeof(PyHeapTypeObject),
   #endif
-  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Status = __Pyx_ImportType("mpi4py.MPI", "Status", sizeof(struct PyMPIStatusObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Status)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Datatype = __Pyx_ImportType("mpi4py.MPI", "Datatype", sizeof(struct PyMPIDatatypeObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Datatype)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Request = __Pyx_ImportType("mpi4py.MPI", "Request", sizeof(struct PyMPIRequestObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Request)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Prequest = __Pyx_ImportType("mpi4py.MPI", "Prequest", sizeof(struct PyMPIPrequestObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Prequest)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Grequest = __Pyx_ImportType("mpi4py.MPI", "Grequest", sizeof(struct PyMPIGrequestObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Grequest)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Op = __Pyx_ImportType("mpi4py.MPI", "Op", sizeof(struct PyMPIOpObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Op)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Group = __Pyx_ImportType("mpi4py.MPI", "Group", sizeof(struct PyMPIGroupObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Group)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Info = __Pyx_ImportType("mpi4py.MPI", "Info", sizeof(struct PyMPIInfoObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Info)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Errhandler = __Pyx_ImportType("mpi4py.MPI", "Errhandler", sizeof(struct PyMPIErrhandlerObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Errhandler)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Comm = __Pyx_ImportType("mpi4py.MPI", "Comm", sizeof(struct PyMPICommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Comm)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Intracomm = __Pyx_ImportType("mpi4py.MPI", "Intracomm", sizeof(struct PyMPIIntracommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Intracomm)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Cartcomm = __Pyx_ImportType("mpi4py.MPI", "Cartcomm", sizeof(struct PyMPICartcommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Cartcomm)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Graphcomm = __Pyx_ImportType("mpi4py.MPI", "Graphcomm", sizeof(struct PyMPIGraphcommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Graphcomm)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm = __Pyx_ImportType("mpi4py.MPI", "Distgraphcomm", sizeof(struct PyMPIDistgraphcommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Intercomm = __Pyx_ImportType("mpi4py.MPI", "Intercomm", sizeof(struct PyMPIIntercommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Intercomm)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_Win = __Pyx_ImportType("mpi4py.MPI", "Win", sizeof(struct PyMPIWinObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Win)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6mpi4py_3MPI_File = __Pyx_ImportType("mpi4py.MPI", "File", sizeof(struct PyMPIFileObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_File)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error)
+  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error)
+  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error)
+  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error)
+  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error)
+  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Status = __Pyx_ImportType("mpi4py.MPI", "Status", sizeof(struct PyMPIStatusObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Status)) __PYX_ERR(3, 28, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Datatype = __Pyx_ImportType("mpi4py.MPI", "Datatype", sizeof(struct PyMPIDatatypeObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Datatype)) __PYX_ERR(3, 35, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Request = __Pyx_ImportType("mpi4py.MPI", "Request", sizeof(struct PyMPIRequestObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Request)) __PYX_ERR(3, 42, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Prequest = __Pyx_ImportType("mpi4py.MPI", "Prequest", sizeof(struct PyMPIPrequestObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Prequest)) __PYX_ERR(3, 50, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Grequest = __Pyx_ImportType("mpi4py.MPI", "Grequest", sizeof(struct PyMPIGrequestObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Grequest)) __PYX_ERR(3, 56, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Message = __Pyx_ImportType("mpi4py.MPI", "Message", sizeof(struct PyMPIMessageObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Message)) __PYX_ERR(3, 62, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Op = __Pyx_ImportType("mpi4py.MPI", "Op", sizeof(struct PyMPIOpObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Op)) __PYX_ERR(3, 70, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Group = __Pyx_ImportType("mpi4py.MPI", "Group", sizeof(struct PyMPIGroupObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Group)) __PYX_ERR(3, 79, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Info = __Pyx_ImportType("mpi4py.MPI", "Info", sizeof(struct PyMPIInfoObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Info)) __PYX_ERR(3, 86, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Errhandler = __Pyx_ImportType("mpi4py.MPI", "Errhandler", sizeof(struct PyMPIErrhandlerObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Errhandler)) __PYX_ERR(3, 93, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Comm = __Pyx_ImportType("mpi4py.MPI", "Comm", sizeof(struct PyMPICommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Comm)) __PYX_ERR(3, 100, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Intracomm = __Pyx_ImportType("mpi4py.MPI", "Intracomm", sizeof(struct PyMPIIntracommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Intracomm)) __PYX_ERR(3, 107, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Topocomm = __Pyx_ImportType("mpi4py.MPI", "Topocomm", sizeof(struct PyMPITopocommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Topocomm)) __PYX_ERR(3, 113, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Cartcomm = __Pyx_ImportType("mpi4py.MPI", "Cartcomm", sizeof(struct PyMPICartcommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Cartcomm)) __PYX_ERR(3, 119, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Graphcomm = __Pyx_ImportType("mpi4py.MPI", "Graphcomm", sizeof(struct PyMPIGraphcommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Graphcomm)) __PYX_ERR(3, 125, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm = __Pyx_ImportType("mpi4py.MPI", "Distgraphcomm", sizeof(struct PyMPIDistgraphcommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)) __PYX_ERR(3, 131, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Intercomm = __Pyx_ImportType("mpi4py.MPI", "Intercomm", sizeof(struct PyMPIIntercommObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Intercomm)) __PYX_ERR(3, 137, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_Win = __Pyx_ImportType("mpi4py.MPI", "Win", sizeof(struct PyMPIWinObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Win)) __PYX_ERR(3, 143, __pyx_L1_error)
+  __pyx_ptype_6mpi4py_3MPI_File = __Pyx_ImportType("mpi4py.MPI", "File", sizeof(struct PyMPIFileObject), 1); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_File)) __PYX_ERR(3, 151, __pyx_L1_error)
   /*--- Variable import code ---*/
   /*--- Function import code ---*/
   /*--- Execution code ---*/
+  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
+  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
 
-  /* "adios_mpi.pyx":7
- * """
+  /* "adios_mpi.pyx":13
+ *     char   *strdup  (const char *s)
  * 
  * import numpy as np             # <<<<<<<<<<<<<<
  * cimport numpy as np
  * 
  */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":10
+  /* "adios_mpi.pyx":16
  * cimport numpy as np
  * 
  * import mpi4py.MPI as MPI             # <<<<<<<<<<<<<<
  * cimport mpi4py.MPI as MPI
  * 
  */
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s__45);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__45);
-  __Pyx_GIVEREF(__pyx_n_s__45);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_mpi4py_MPI, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_n_s__77);
+  __Pyx_GIVEREF(__pyx_n_s__77);
+  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__77);
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_mpi4py_MPI, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPI, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPI, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":28
+ * from cpython.ref cimport PyObject
+ * 
+ * import os             # <<<<<<<<<<<<<<
+ * from ._hl import selections as sel
+ * 
+ */
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(0, 28, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":29
+ * 
+ * import os
+ * from ._hl import selections as sel             # <<<<<<<<<<<<<<
+ * 
+ * ## To convert a string to bytes: "str".encode()
+ */
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_selections);
+  __Pyx_GIVEREF(__pyx_n_s_selections);
+  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_selections);
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_hl, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_selections); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sel, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":240
+  /* "adios_mpi.pyx":58
+ *         return x.encode()
+ * 
+ * def normalize_key(keys):             # <<<<<<<<<<<<<<
+ *     if not isinstance(keys, list):
+ *         keys = [keys,]
+ */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9adios_mpi_7normalize_key, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  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
  * ## ====================
  * 
  * 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_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __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_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":241
+  /* "adios_mpi.pyx":308
  * 
  * class DATATYPE:
  *     unknown = -1             # <<<<<<<<<<<<<<
  *     byte = 0
  *     short = 1
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) __PYX_ERR(0, 308, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":242
+  /* "adios_mpi.pyx":309
  * 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_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_byte, __pyx_int_0) < 0) __PYX_ERR(0, 309, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":243
+  /* "adios_mpi.pyx":310
  *     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_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_short, __pyx_int_1) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":244
+  /* "adios_mpi.pyx":311
  *     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_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_integer, __pyx_int_2) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":245
+  /* "adios_mpi.pyx":312
  *     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_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_long, __pyx_int_4) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":246
+  /* "adios_mpi.pyx":313
  *     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_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_byte, __pyx_int_50) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":247
+  /* "adios_mpi.pyx":314
  *     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_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_short, __pyx_int_51) < 0) __PYX_ERR(0, 314, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":248
+  /* "adios_mpi.pyx":315
  *     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_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_integer, __pyx_int_52) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":249
+  /* "adios_mpi.pyx":316
  *     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_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_long, __pyx_int_54) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":250
+  /* "adios_mpi.pyx":317
  *     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_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_real, __pyx_int_5) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":251
+  /* "adios_mpi.pyx":318
  *     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_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_int_6) < 0) __PYX_ERR(0, 318, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":252
+  /* "adios_mpi.pyx":319
  *     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_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_long_double, __pyx_int_7) < 0) __PYX_ERR(0, 319, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":253
+  /* "adios_mpi.pyx":320
  *     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_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_string, __pyx_int_9) < 0) __PYX_ERR(0, 320, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":254
+  /* "adios_mpi.pyx":321
  *     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_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_complex_2, __pyx_int_10) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":255
+  /* "adios_mpi.pyx":322
  *     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_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_double_complex, __pyx_int_11) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":256
+  /* "adios_mpi.pyx":323
  *     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_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_string_array, __pyx_int_12) < 0) __PYX_ERR(0, 323, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":240
+  /* "adios_mpi.pyx":307
  * ## ====================
  * 
  * 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_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 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_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_2) < 0) __PYX_ERR(0, 307, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":258
+  /* "adios_mpi.pyx":325
  *     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_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __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_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":259
+  /* "adios_mpi.pyx":326
  * 
  * class FLAG:
  *     UNKNOWN = 0             # <<<<<<<<<<<<<<
  *     YES = 1
  *     NO = 2
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 326, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":260
+  /* "adios_mpi.pyx":327
  * class FLAG:
  *     UNKNOWN = 0
  *     YES = 1             # <<<<<<<<<<<<<<
  *     NO = 2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_YES, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_YES, __pyx_int_1) < 0) __PYX_ERR(0, 327, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":261
+  /* "adios_mpi.pyx":328
  *     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_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NO, __pyx_int_2) < 0) __PYX_ERR(0, 328, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":258
+  /* "adios_mpi.pyx":325
  *     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_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_2) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":263
+  /* "adios_mpi.pyx":330
  *     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_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __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_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":264
+  /* "adios_mpi.pyx":331
  * 
  * 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_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 331, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":265
+  /* "adios_mpi.pyx":332
  * 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_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NOW, __pyx_int_1) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":266
+  /* "adios_mpi.pyx":333
  *     UNKNOWN = 0
  *     NOW = 1
  *     LATER = 2             # <<<<<<<<<<<<<<
  * 
  * class READ_METHOD:
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_LATER, __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_LATER, __pyx_int_2) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":263
+  /* "adios_mpi.pyx":330
  *     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_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_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)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":268
+  /* "adios_mpi.pyx":335
  *     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_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __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_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":269
+  /* "adios_mpi.pyx":336
  * 
  * 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_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_BP, __pyx_int_0) < 0) __PYX_ERR(0, 336, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":270
+  /* "adios_mpi.pyx":337
  * 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_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_BP_AGGREGATE, __pyx_int_1) < 0) __PYX_ERR(0, 337, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":271
+  /* "adios_mpi.pyx":338
  *     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_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_DATASPACES, __pyx_int_3) < 0) __PYX_ERR(0, 338, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":272
+  /* "adios_mpi.pyx":339
  *     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_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_DIMES, __pyx_int_4) < 0) __PYX_ERR(0, 339, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":273
+  /* "adios_mpi.pyx":340
  *     DATASPACES    = 3
  *     DIMES         = 4
  *     FLEXPATH      = 5             # <<<<<<<<<<<<<<
  *     ICEE          = 6
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) __PYX_ERR(0, 340, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":274
+  /* "adios_mpi.pyx":341
  *     DIMES         = 4
  *     FLEXPATH      = 5
  *     ICEE          = 6             # <<<<<<<<<<<<<<
  * 
- * 
+ * class LOCKMODE:
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_ICEE, __pyx_int_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ICEE, __pyx_int_6) < 0) __PYX_ERR(0, 341, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":268
+  /* "adios_mpi.pyx":335
  *     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_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ_METHOD, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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_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)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":304
- * ## ====================
+  /* "adios_mpi.pyx":343
+ *     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_GOTREF(__pyx_t_1);
+
+  /* "adios_mpi.pyx":344
+ * 
+ * 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)
+
+  /* "adios_mpi.pyx":345
+ * 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)
+
+  /* "adios_mpi.pyx":346
+ *     NONE = 0
+ *     CURRENT = 1
+ *     ALL =2             # <<<<<<<<<<<<<<
  * 
- * cpdef init(char * config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init(config, comm.ob_mpi)
+ * 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)
+
+  /* "adios_mpi.pyx":343
+ *     ICEE          = 6
  * 
+ * class LOCKMODE:             # <<<<<<<<<<<<<<
+ *     NONE = 0
+ *     CURRENT = 1
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __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, 343, __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_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCKMODE, __pyx_t_2) < 0) __PYX_ERR(0, 343, __pyx_L1_error)
   __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_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__4 = ((struct PyMPICommObject *)__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":380
+ * 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_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __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, 380, __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_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__4 = ((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, 380, __pyx_L1_error)
+  __pyx_k__7 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-
-  /* "adios_mpi.pyx":310
- *                    char * name,
- *                    char * mode,
- *                    MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     cdef int64_t fd
- *     cdef int result
- */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __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_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __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, 380, __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_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__5 = ((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, 380, __pyx_L1_error)
+  __pyx_k__7 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":307
- *     return adios_init(config, comm.ob_mpi)
- * 
- * cpdef int64_t open(char * group_name,             # <<<<<<<<<<<<<<
- *                    char * name,
- *                    char * mode,
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-
-  /* "adios_mpi.pyx":310
- *                    char * name,
- *                    char * mode,
+  /* "adios_mpi.pyx":388
+ *                    str name,
+ *                    str mode,
  *                    MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
  *     cdef int64_t fd
  *     cdef int result
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __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_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_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__5 = ((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, 388, __pyx_L1_error)
+  __pyx_k__8 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":361
- * ## ADIOS No-XML API
- * ## ====================
- * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
- *     return adios_init_noxml(comm.ob_mpi)
+  /* "adios_mpi.pyx":385
+ *     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_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 388, __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_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__6 = ((struct PyMPICommObject *)__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__6 = ((struct PyMPICommObject *)__pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":592
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",
- *                     MPI.Comm comm = MPI.COMM_WORLD,             # <<<<<<<<<<<<<<
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)
+  /* "adios_mpi.pyx":388
+ *                    str name,
+ *                    str mode,
+ *                    MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *     cdef int64_t fd
+ *     cdef int result
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __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, 388, __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_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  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)
   __pyx_k__8 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":591
+  /* "adios_mpi.pyx":447
+ * ## ====================
  * 
- * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",             # <<<<<<<<<<<<<<
- *                     MPI.Comm comm = MPI.COMM_WORLD,
- *                     char * parameters = ""):
+ * 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_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __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_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)
+  __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_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_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)
+  __pyx_k__9 = ((struct PyMPICommObject *)__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":592
+  /* "adios_mpi.pyx":683
  * """ Call adios_read_init_method """
- * cpdef int read_init(char * method_name = "BP",
+ * cpdef int read_init(str method_name = "BP",
  *                     MPI.Comm comm = MPI.COMM_WORLD,             # <<<<<<<<<<<<<<
- *                     char * parameters = ""):
- *     cdef method = str2adiosreadmethod(method_name)
+ *                     str parameters = ""):
+ *     global read_init_comm
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __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_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_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__8 = ((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, 683, __pyx_L1_error)
+  __pyx_k__11 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":685
- *     def __init__(self, char * fname,
- *                  char * method_name = 'BP',
- *                  MPI.Comm comm = MPI.COMM_WORLD,             # <<<<<<<<<<<<<<
- *                  is_stream = False,
- *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
+  /* "adios_mpi.pyx":682
+ * 
+ * """ 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_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __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_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "adios_mpi.pyx":683
+ * """ 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_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_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__9 = ((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, 683, __pyx_L1_error)
+  __pyx_k__11 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":687
+  /* "adios_mpi.pyx":804
+ *     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_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_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);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "adios_mpi.pyx":806
  *                  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__10 = ADIOS_LOCKMODE_ALL;
+  __pyx_k__16 = ADIOS_LOCKMODE_ALL;
 
-  /* "adios_mpi.pyx":1206
- *     def __init__(self,char * fname,
+  /* "adios_mpi.pyx":1764
  *                  bint is_noxml = True,
+ *                  str mode = "w",
  *                  MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
  *         self.fname = fname
- *         self.method = <bytes>""
+ *         self.method = ""
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __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_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __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_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_k__22 = ((struct PyMPICommObject *)__pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_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);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1244
+  /* "adios_mpi.pyx":1804
  * 
- *     def define_var(self, char * varname,
+ *     def define_var(self, str varname,
  *                    ldim = tuple(),             # <<<<<<<<<<<<<<
  *                    gdim = tuple(),
  *                    offset = tuple()):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__23 = __pyx_t_2;
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_k__54 = __pyx_t_1;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1245
- *     def define_var(self, char * varname,
+  /* "adios_mpi.pyx":1805
+ *     def define_var(self, str varname,
  *                    ldim = tuple(),
  *                    gdim = tuple(),             # <<<<<<<<<<<<<<
  *                    offset = tuple()):
  *         """
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__24 = __pyx_t_2;
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_k__55 = __pyx_t_1;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1246
+  /* "adios_mpi.pyx":1806
  *                    ldim = tuple(),
  *                    gdim = tuple(),
  *                    offset = tuple()):             # <<<<<<<<<<<<<<
  *         """
  *         Define a variable associated with the file.
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__25 = __pyx_t_2;
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_k__56 = __pyx_t_1;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1407
+  /* "adios_mpi.pyx":1982
  * 
- *     def __init__(self, char * name,
+ *     def __init__(self, str name,
  *                  ldim = tuple(),             # <<<<<<<<<<<<<<
  *                  gdim = tuple(),
- *                  offset = tuple()):
+ *                  offset = tuple(),
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__27 = __pyx_t_2;
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_k__59 = __pyx_t_1;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1408
- *     def __init__(self, char * name,
+  /* "adios_mpi.pyx":1983
+ *     def __init__(self, str name,
  *                  ldim = tuple(),
  *                  gdim = tuple(),             # <<<<<<<<<<<<<<
- *                  offset = tuple()):
- *         self.name = name
+ *                  offset = tuple(),
+ *                  value = None):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__28 = __pyx_t_2;
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_k__60 = __pyx_t_1;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1409
+  /* "adios_mpi.pyx":1984
  *                  ldim = tuple(),
  *                  gdim = tuple(),
- *                  offset = tuple()):             # <<<<<<<<<<<<<<
+ *                  offset = tuple(),             # <<<<<<<<<<<<<<
+ *                  value = None):
  *         self.name = name
- *         self.ldim = ldim
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__29 = __pyx_t_2;
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  __pyx_k__61 = __pyx_t_1;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":2038
+ * 
+ * ## 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)
+
+  /* "adios_mpi.pyx":2039
+ * ## 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)
+
+  /* "adios_mpi.pyx":2040
+ * 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)
+
+  /* "adios_mpi.pyx":2041
+ * 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)
 
-  /* "adios_mpi.pyx":1464
+  /* "adios_mpi.pyx":2042
+ * 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)
+
+  /* "adios_mpi.pyx":2043
+ * 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)
+
+  /* "adios_mpi.pyx":2049
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9adios_mpi_49readvar, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readvar, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __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_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)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1482
+  /* "adios_mpi.pyx":2063
  *     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_9adios_mpi_51bpls, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __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_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_1) < 0) __PYX_ERR(0, 2063, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "adios_mpi.pyx":1
  * # -*- coding: utf-8 -*-             # <<<<<<<<<<<<<<
  * """ADIOS: ADIOS python module
  * 
  */
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_var_read_line_887, __pyx_kp_u_Perform_read_Read_data_from_an) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_writer_declare_group_line_1221, __pyx_kp_u_Define_a_group_associated_with) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_writer_define_var_line_1243, __pyx_kp_u_Define_a_variable_associated_wi) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __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_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;
+
+  /* "../../../../sw/anaconda2/4.1.1/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
+
+  /*--- Wrapped vars code ---*/
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    if (__pyx_d) {
+      __Pyx_AddTraceback("init adios_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    }
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init adios_mpi");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* --- Runtime support code --- */
+/* Refnanny */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif
+
+/* GetBuiltinName */
+static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
+    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
+    if (unlikely(!result)) {
+        PyErr_Format(PyExc_NameError,
+#if PY_MAJOR_VERSION >= 3
+            "name '%U' is not defined", name);
+#else
+            "name '%.200s' is not defined", PyString_AS_STRING(name));
+#endif
+    }
+    return result;
+}
+
+/* PyObjectCall */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+    PyObject *result;
+    ternaryfunc call = func->ob_type->tp_call;
+    if (unlikely(!call))
+        return PyObject_Call(func, arg, kw);
+    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+        return NULL;
+    result = (*call)(func, arg, kw);
+    Py_LeaveRecursiveCall();
+    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
+        PyErr_SetString(
+            PyExc_SystemError,
+            "NULL result without error in PyObject_Call");
+    }
+    return result;
+}
+#endif
+
+/* PyObjectCallMethO */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
+    PyObject *self, *result;
+    PyCFunction cfunc;
+    cfunc = PyCFunction_GET_FUNCTION(func);
+    self = PyCFunction_GET_SELF(func);
+    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+        return NULL;
+    result = cfunc(self, arg);
+    Py_LeaveRecursiveCall();
+    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
+        PyErr_SetString(
+            PyExc_SystemError,
+            "NULL result without error in PyObject_Call");
+    }
+    return result;
+}
+#endif
+
+/* PyObjectCallOneArg */
+#if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+    PyObject *result;
+    PyObject *args = PyTuple_New(1);
+    if (unlikely(!args)) return NULL;
+    Py_INCREF(arg);
+    PyTuple_SET_ITEM(args, 0, arg);
+    result = __Pyx_PyObject_Call(func, args, NULL);
+    Py_DECREF(args);
+    return result;
+}
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+#ifdef __Pyx_CyFunction_USED
+    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
+#else
+    if (likely(PyCFunction_Check(func))) {
+#endif
+        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
+            return __Pyx_PyObject_CallMethO(func, arg);
+        }
+    }
+    return __Pyx__PyObject_CallOneArg(func, arg);
+}
+#else
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
+    PyObject *result;
+    PyObject *args = PyTuple_Pack(1, arg);
+    if (unlikely(!args)) return NULL;
+    result = __Pyx_PyObject_Call(func, args, NULL);
+    Py_DECREF(args);
+    return result;
+}
+#endif
+
+/* PyObjectCallNoArg */
+  #if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
+#ifdef __Pyx_CyFunction_USED
+    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
+#else
+    if (likely(PyCFunction_Check(func))) {
+#endif
+        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
+            return __Pyx_PyObject_CallMethO(func, NULL);
+        }
+    }
+    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
+}
+#endif
 
-  /* "../../../../../../opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- *      arr.base = baseptr
- * 
- * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
- *     if arr.base is NULL:
- *         return None
- */
+/* PyErrFetchRestore */
+    #if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
 
-  /*--- Wrapped vars code ---*/
+/* WriteUnraisableException */
+    static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
+                                  int full_traceback, CYTHON_UNUSED int nogil) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_PyThreadState_declare
+#ifdef WITH_THREAD
+    PyGILState_STATE state;
+    if (nogil)
+        state = PyGILState_Ensure();
+#ifdef _MSC_VER
+    else state = (PyGILState_STATE)-1;
+#endif
+#endif
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    if (full_traceback) {
+        Py_XINCREF(old_exc);
+        Py_XINCREF(old_val);
+        Py_XINCREF(old_tb);
+        __Pyx_ErrRestore(old_exc, old_val, old_tb);
+        PyErr_PrintEx(1);
+    }
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
+    } else {
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
+    }
+#ifdef WITH_THREAD
+    if (nogil)
+        PyGILState_Release(state);
+#endif
+}
 
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  if (__pyx_m) {
-    if (__pyx_d) {
-      __Pyx_AddTraceback("init adios_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
+/* ArgTypeTest */
+    static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+}
+static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (unlikely(!type)) {
+        PyErr_SetString(PyExc_SystemError, "Missing type object");
+        return 0;
     }
-    Py_DECREF(__pyx_m); __pyx_m = 0;
-  } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init adios_mpi");
-  }
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  #if PY_MAJOR_VERSION < 3
-  return;
-  #else
-  return __pyx_m;
-  #endif
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (likely(Py_TYPE(obj) == type)) return 1;
+        #if PY_MAJOR_VERSION == 2
+        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
+        #endif
+    }
+    else {
+        if (likely(PyObject_TypeCheck(obj, type))) return 1;
+    }
+    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
+    return 0;
 }
 
-/* --- Runtime support code --- */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
-    PyObject *m = NULL, *p = NULL;
-    void *r = NULL;
-    m = PyImport_ImportModule((char *)modname);
-    if (!m) goto end;
-    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
-    if (!p) goto end;
-    r = PyLong_AsVoidPtr(p);
-end:
-    Py_XDECREF(p);
-    Py_XDECREF(m);
-    return (__Pyx_RefNannyAPIStruct *)r;
+/* decode_c_bytes */
+    static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
+    if (unlikely((start < 0) | (stop < 0))) {
+        if (start < 0) {
+            start += length;
+            if (start < 0)
+                start = 0;
+        }
+        if (stop < 0)
+            stop += length;
+    }
+    if (stop > length)
+        stop = length;
+    length = stop - start;
+    if (unlikely(length <= 0))
+        return PyUnicode_FromUnicode(NULL, 0);
+    cstring += start;
+    if (decode_func) {
+        return decode_func(cstring, length, errors);
+    } else {
+        return PyUnicode_Decode(cstring, length, encoding, errors);
+    }
 }
-#endif
 
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
-    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
-    if (unlikely(!result)) {
-        PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
-            "name '%U' is not defined", name);
+/* SliceObject */
+    static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
+        Py_ssize_t cstart, Py_ssize_t cstop,
+        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
+        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyMappingMethods* mp;
+#if PY_MAJOR_VERSION < 3
+    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
+    if (likely(ms && ms->sq_slice)) {
+        if (!has_cstart) {
+            if (_py_start && (*_py_start != Py_None)) {
+                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
+                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+            } else
+                cstart = 0;
+        }
+        if (!has_cstop) {
+            if (_py_stop && (*_py_stop != Py_None)) {
+                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
+                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+            } else
+                cstop = PY_SSIZE_T_MAX;
+        }
+        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
+            Py_ssize_t l = ms->sq_length(obj);
+            if (likely(l >= 0)) {
+                if (cstop < 0) {
+                    cstop += l;
+                    if (cstop < 0) cstop = 0;
+                }
+                if (cstart < 0) {
+                    cstart += l;
+                    if (cstart < 0) cstart = 0;
+                }
+            } else {
+                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
+                    goto bad;
+                PyErr_Clear();
+            }
+        }
+        return ms->sq_slice(obj, cstart, cstop);
+    }
+#endif
+    mp = Py_TYPE(obj)->tp_as_mapping;
+    if (likely(mp && mp->mp_subscript))
+#endif
+    {
+        PyObject* result;
+        PyObject *py_slice, *py_start, *py_stop;
+        if (_py_slice) {
+            py_slice = *_py_slice;
+        } else {
+            PyObject* owned_start = NULL;
+            PyObject* owned_stop = NULL;
+            if (_py_start) {
+                py_start = *_py_start;
+            } else {
+                if (has_cstart) {
+                    owned_start = py_start = PyInt_FromSsize_t(cstart);
+                    if (unlikely(!py_start)) goto bad;
+                } else
+                    py_start = Py_None;
+            }
+            if (_py_stop) {
+                py_stop = *_py_stop;
+            } else {
+                if (has_cstop) {
+                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
+                    if (unlikely(!py_stop)) {
+                        Py_XDECREF(owned_start);
+                        goto bad;
+                    }
+                } else
+                    py_stop = Py_None;
+            }
+            py_slice = PySlice_New(py_start, py_stop, Py_None);
+            Py_XDECREF(owned_start);
+            Py_XDECREF(owned_stop);
+            if (unlikely(!py_slice)) goto bad;
+        }
+#if CYTHON_COMPILING_IN_CPYTHON
+        result = mp->mp_subscript(obj, py_slice);
 #else
-            "name '%.200s' is not defined", PyString_AS_STRING(name));
+        result = PyObject_GetItem(obj, py_slice);
 #endif
+        if (!_py_slice) {
+            Py_DECREF(py_slice);
+        }
+        return result;
     }
-    return result;
+    PyErr_Format(PyExc_TypeError,
+        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
+bad:
+    return NULL;
 }
 
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+/* GetItemInt */
+    static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
     PyObject *r;
     if (!j) return NULL;
     r = PyObject_GetItem(o, j);
@@ -26222,7 +39302,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j
     return r;
 }
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
-                                                              int wraparound, int boundscheck) {
+                                                              CYTHON_NCP_UNUSED int wraparound,
+                                                              CYTHON_NCP_UNUSED int boundscheck) {
 #if CYTHON_COMPILING_IN_CPYTHON
     if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
     if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
@@ -26236,7 +39317,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
 #endif
 }
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
-                                                              int wraparound, int boundscheck) {
+                                                              CYTHON_NCP_UNUSED int wraparound,
+                                                              CYTHON_NCP_UNUSED int boundscheck) {
 #if CYTHON_COMPILING_IN_CPYTHON
     if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
     if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
@@ -26249,8 +39331,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
     return PySequence_GetItem(o, i);
 #endif
 }
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
-                                                     int is_list, int wraparound, int boundscheck) {
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
+                                                     CYTHON_NCP_UNUSED int wraparound,
+                                                     CYTHON_NCP_UNUSED int boundscheck) {
 #if CYTHON_COMPILING_IN_CPYTHON
     if (is_list || PyList_CheckExact(o)) {
         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
@@ -26275,82 +39358,220 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                 if (likely(l >= 0)) {
                     i += l;
                 } else {
-                    if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                        PyErr_Clear();
-                    else
+                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                         return NULL;
+                    PyErr_Clear();
                 }
             }
-            return m->sq_item(o, i);
+            return m->sq_item(o, i);
+        }
+    }
+#else
+    if (is_list || PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
+#endif
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
+
+/* PyIntBinop */
+    #if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long x;
+        long a = PyInt_AS_LONG(op1);
+            x = (long)((unsigned long)a + b);
+            if (likely((x^a) >= 0 || (x^b) >= 0))
+                return PyInt_FromLong(x);
+            return PyLong_Type.tp_as_number->nb_add(op1, op2);
+    }
+    #endif
+    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
+    if (likely(PyLong_CheckExact(op1))) {
+        const long b = intval;
+        long a, x;
+        const PY_LONG_LONG llb = intval;
+        PY_LONG_LONG lla, llx;
+        const digit* digits = ((PyLongObject*)op1)->ob_digit;
+        const Py_ssize_t size = Py_SIZE(op1);
+        if (likely(__Pyx_sst_abs(size) <= 1)) {
+            a = likely(size) ? digits[0] : 0;
+            if (size == -1) a = -a;
+        } else {
+            switch (size) {
+                case -2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
+            }
         }
+                x = a + b;
+            return PyLong_FromLong(x);
+        long_long:
+                llx = lla + llb;
+            return PyLong_FromLongLong(llx);
     }
-#else
-    if (is_list || PySequence_Check(o)) {
-        return PySequence_GetItem(o, i);
+    #endif
+    if (PyFloat_CheckExact(op1)) {
+        const long b = intval;
+        double a = PyFloat_AS_DOUBLE(op1);
+            double result;
+            PyFPE_START_PROTECT("add", return NULL)
+            result = ((double)a) + (double)b;
+            PyFPE_END_PROTECT(result)
+            return PyFloat_FromDouble(result);
     }
-#endif
-    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
-}
-
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyThreadState *tstate = PyThreadState_GET();
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-#else
-    PyErr_Restore(type, value, tb);
-#endif
+    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
 }
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-#else
-    PyErr_Fetch(type, value, tb);
 #endif
-}
 
-static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
-                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
-                                  int full_traceback) {
-    PyObject *old_exc, *old_val, *old_tb;
-    PyObject *ctx;
-    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
-    if (full_traceback) {
-        Py_XINCREF(old_exc);
-        Py_XINCREF(old_val);
-        Py_XINCREF(old_tb);
-        __Pyx_ErrRestore(old_exc, old_val, old_tb);
-        PyErr_PrintEx(1);
-    }
+/* PyIntBinop */
+    #if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
     #if PY_MAJOR_VERSION < 3
-    ctx = PyString_FromString(name);
-    #else
-    ctx = PyUnicode_FromString(name);
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long x;
+        long a = PyInt_AS_LONG(op1);
+            x = (long)((unsigned long)a - b);
+            if (likely((x^a) >= 0 || (x^~b) >= 0))
+                return PyInt_FromLong(x);
+            return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
+    }
     #endif
-    __Pyx_ErrRestore(old_exc, old_val, old_tb);
-    if (!ctx) {
-        PyErr_WriteUnraisable(Py_None);
-    } else {
-        PyErr_WriteUnraisable(ctx);
-        Py_DECREF(ctx);
+    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
+    if (likely(PyLong_CheckExact(op1))) {
+        const long b = intval;
+        long a, x;
+        const PY_LONG_LONG llb = intval;
+        PY_LONG_LONG lla, llx;
+        const digit* digits = ((PyLongObject*)op1)->ob_digit;
+        const Py_ssize_t size = Py_SIZE(op1);
+        if (likely(__Pyx_sst_abs(size) <= 1)) {
+            a = likely(size) ? digits[0] : 0;
+            if (size == -1) a = -a;
+        } else {
+            switch (size) {
+                case -2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case -4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                case 4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+                        goto long_long;
+                    }
+                default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
+            }
+        }
+                x = a - b;
+            return PyLong_FromLong(x);
+        long_long:
+                llx = lla - llb;
+            return PyLong_FromLongLong(llx);
     }
+    #endif
+    if (PyFloat_CheckExact(op1)) {
+        const long b = intval;
+        double a = PyFloat_AS_DOUBLE(op1);
+            double result;
+            PyFPE_START_PROTECT("subtract", return NULL)
+            result = ((double)a) - (double)b;
+            PyFPE_END_PROTECT(result)
+            return PyFloat_FromDouble(result);
+    }
+    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
 }
+#endif
 
-static void __Pyx_RaiseArgtupleInvalid(
+/* RaiseArgTupleInvalid */
+    static void __Pyx_RaiseArgtupleInvalid(
     const char* func_name,
     int exact,
     Py_ssize_t num_min,
@@ -26375,7 +39596,8 @@ static void __Pyx_RaiseArgtupleInvalid(
                  (num_expected == 1) ? "" : "s", num_found);
 }
 
-static void __Pyx_RaiseDoubleKeywordsError(
+/* RaiseDoubleKeywords */
+    static void __Pyx_RaiseDoubleKeywordsError(
     const char* func_name,
     PyObject* kw_name)
 {
@@ -26388,7 +39610,8 @@ static void __Pyx_RaiseDoubleKeywordsError(
         #endif
 }
 
-static int __Pyx_ParseOptionalKeywords(
+/* ParseKeywords */
+    static int __Pyx_ParseOptionalKeywords(
     PyObject *kwds,
     PyObject **argnames[],
     PyObject *kwds2,
@@ -26489,33 +39712,8 @@ bad:
     return -1;
 }
 
-static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
-    PyErr_Format(PyExc_TypeError,
-        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
-        name, type->tp_name, Py_TYPE(obj)->tp_name);
-}
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact)
-{
-    if (unlikely(!type)) {
-        PyErr_SetString(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    if (none_allowed && obj == Py_None) return 1;
-    else if (exact) {
-        if (likely(Py_TYPE(obj) == type)) return 1;
-        #if PY_MAJOR_VERSION == 2
-        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
-        #endif
-    }
-    else {
-        if (likely(PyObject_TypeCheck(obj, type))) return 1;
-    }
-    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
-    return 0;
-}
-
-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+/* ExtTypeTest */
+    static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
     if (unlikely(!type)) {
         PyErr_SetString(PyExc_SystemError, "Missing type object");
         return 0;
@@ -26527,7 +39725,8 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
     return 0;
 }
 
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+/* GetModuleGlobalName */
+    static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
     PyObject *result;
 #if CYTHON_COMPILING_IN_CPYTHON
     result = PyDict_GetItem(__pyx_d, name);
@@ -26544,75 +39743,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
     return result;
 }
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
-    PyObject *result;
-    ternaryfunc call = func->ob_type->tp_call;
-    if (unlikely(!call))
-        return PyObject_Call(func, arg, kw);
-    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
-        return NULL;
-    result = (*call)(func, arg, kw);
-    Py_LeaveRecursiveCall();
-    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
-        PyErr_SetString(
-            PyExc_SystemError,
-            "NULL result without error in PyObject_Call");
-    }
-    return result;
-}
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
-    PyObject *self, *result;
-    PyCFunction cfunc;
-    cfunc = PyCFunction_GET_FUNCTION(func);
-    self = PyCFunction_GET_SELF(func);
-    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
-        return NULL;
-    result = cfunc(self, arg);
-    Py_LeaveRecursiveCall();
-    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
-        PyErr_SetString(
-            PyExc_SystemError,
-            "NULL result without error in PyObject_Call");
-    }
-    return result;
-}
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-    PyObject *result;
-    PyObject *args = PyTuple_New(1);
-    if (unlikely(!args)) return NULL;
-    Py_INCREF(arg);
-    PyTuple_SET_ITEM(args, 0, arg);
-    result = __Pyx_PyObject_Call(func, args, NULL);
-    Py_DECREF(args);
-    return result;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
-    if (likely(PyCFunction_Check(func))) {
-#endif
-        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
-            return __Pyx_PyObject_CallMethO(func, arg);
-        }
-    }
-    return __Pyx__PyObject_CallOneArg(func, arg);
-}
-#else
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-    PyObject* args = PyTuple_Pack(1, arg);
-    return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL;
-}
-#endif
-
-static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+/* BytesEquals */
+      static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
 #if CYTHON_COMPILING_IN_PYPY
     return PyObject_RichCompareBool(s1, s2, equals);
 #else
@@ -26649,7 +39781,8 @@ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int eq
 #endif
 }
 
-static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+/* UnicodeEquals */
+      static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
 #if CYTHON_COMPILING_IN_PYPY
     return PyObject_RichCompareBool(s1, s2, equals);
 #else
@@ -26732,62 +39865,96 @@ return_ne:
 #endif
 }
 
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
-#ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
-    if (likely(PyCFunction_Check(func))) {
-#endif
-        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
-            return __Pyx_PyObject_CallMethO(func, NULL);
+/* PyIntBinop */
+      #if CYTHON_COMPILING_IN_CPYTHON
+static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+    if (op1 == op2) {
+        Py_RETURN_TRUE;
+    }
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long a = PyInt_AS_LONG(op1);
+        if (a == b) {
+            Py_RETURN_TRUE;
+        } else {
+            Py_RETURN_FALSE;
         }
     }
-    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
-}
-#endif
-
-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
-    PyObject *method, *result = NULL;
-    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
-    if (unlikely(!method)) goto bad;
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (likely(PyMethod_Check(method))) {
-        PyObject *self = PyMethod_GET_SELF(method);
-        if (likely(self)) {
-            PyObject *args;
-            PyObject *function = PyMethod_GET_FUNCTION(method);
-            args = PyTuple_New(2);
-            if (unlikely(!args)) goto bad;
-            Py_INCREF(self);
-            PyTuple_SET_ITEM(args, 0, self);
-            Py_INCREF(arg);
-            PyTuple_SET_ITEM(args, 1, arg);
-            Py_INCREF(function);
-            Py_DECREF(method); method = NULL;
-            result = __Pyx_PyObject_Call(function, args, NULL);
-            Py_DECREF(args);
-            Py_DECREF(function);
-            return result;
+    #endif
+    #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
+    if (likely(PyLong_CheckExact(op1))) {
+        const long b = intval;
+        long a;
+        const digit* digits = ((PyLongObject*)op1)->ob_digit;
+        const Py_ssize_t size = Py_SIZE(op1);
+        if (likely(__Pyx_sst_abs(size) <= 1)) {
+            a = likely(size) ? digits[0] : 0;
+            if (size == -1) a = -a;
+        } else {
+            switch (size) {
+                case -2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case 2:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case -3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case 3:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case -4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                case 4:
+                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        break;
+                    }
+                #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
+                default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
+                #else
+                default: Py_RETURN_FALSE;
+                #endif
+            }
         }
+            if (a == b) {
+                Py_RETURN_TRUE;
+            } else {
+                Py_RETURN_FALSE;
+            }
     }
-#endif
-    result = __Pyx_PyObject_CallOneArg(method, arg);
-bad:
-    Py_XDECREF(method);
-    return result;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
-    if (PY_MAJOR_VERSION >= 3)
-        return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_values, d);
-    else
-        return PyDict_Values(d);
+    #endif
+    if (PyFloat_CheckExact(op1)) {
+        const long b = intval;
+        double a = PyFloat_AS_DOUBLE(op1);
+            if ((double)a == (double)b) {
+                Py_RETURN_TRUE;
+            } else {
+                Py_RETURN_FALSE;
+            }
+    }
+    return PyObject_RichCompare(op1, op2, Py_EQ);
 }
+#endif
 
-#if PY_MAJOR_VERSION < 3
+/* RaiseException */
+      #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                         CYTHON_UNUSED PyObject *cause) {
+    __Pyx_PyThreadState_declare
     Py_XINCREF(type);
     if (!value || value == Py_None)
         value = NULL;
@@ -26826,6 +39993,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
             goto raise_error;
         }
     }
+    __Pyx_PyThreadState_assign
     __Pyx_ErrRestore(type, value, tb);
     return;
 raise_error:
@@ -26859,10 +40027,13 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject
         if (value && PyExceptionInstance_Check(value)) {
             instance_class = (PyObject*) Py_TYPE(value);
             if (instance_class != type) {
-                if (PyObject_IsSubclass(instance_class, type)) {
-                    type = instance_class;
-                } else {
+                int is_subclass = PyObject_IsSubclass(instance_class, type);
+                if (!is_subclass) {
                     instance_class = NULL;
+                } else if (unlikely(is_subclass == -1)) {
+                    goto bad;
+                } else {
+                    type = instance_class;
                 }
             }
         }
@@ -26922,36 +40093,77 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject
     if (tb) {
 #if CYTHON_COMPILING_IN_PYPY
         PyObject *tmp_type, *tmp_value, *tmp_tb;
-        PyErr_Fetch(tmp_type, tmp_value, tmp_tb);
+        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
         Py_INCREF(tb);
         PyErr_Restore(tmp_type, tmp_value, tb);
         Py_XDECREF(tmp_tb);
 #else
-        PyThreadState *tstate = PyThreadState_GET();
-        PyObject* tmp_tb = tstate->curexc_traceback;
-        if (tb != tmp_tb) {
-            Py_INCREF(tb);
-            tstate->curexc_traceback = tb;
-            Py_XDECREF(tmp_tb);
-        }
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+#endif
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+/* UnpackUnboundCMethod */
+        static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
+    PyObject *method;
+    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
+    if (unlikely(!method))
+        return -1;
+    target->method = method;
+#if CYTHON_COMPILING_IN_CPYTHON
+    #if PY_MAJOR_VERSION >= 3
+    if (likely(PyObject_TypeCheck(method, &PyMethodDescr_Type)))
+    #endif
+    {
+        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
+        target->func = descr->d_method->ml_meth;
+        target->flag = descr->d_method->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_O | METH_NOARGS);
+    }
+#endif
+    return 0;
+}
+
+/* CallUnboundCMethod0 */
+        static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
+    PyObject *args, *result = NULL;
+    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
+#if CYTHON_COMPILING_IN_CPYTHON
+    args = PyTuple_New(1);
+    if (unlikely(!args)) goto bad;
+    Py_INCREF(self);
+    PyTuple_SET_ITEM(args, 0, self);
+#else
+    args = PyTuple_Pack(1, self);
+    if (unlikely(!args)) goto bad;
 #endif
-    }
+    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+    Py_DECREF(args);
 bad:
-    Py_XDECREF(owned_instance);
-    return;
+    return result;
 }
-#endif
 
-static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
+/* py_dict_keys */
+        static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
     if (PY_MAJOR_VERSION >= 3)
-        return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_keys, d);
+        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d);
     else
         return PyDict_Keys(d);
 }
 
-static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
+/* dict_getitem_default */
+        static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
     PyObject* value;
-#if PY_MAJOR_VERSION >= 3
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
     value = PyDict_GetItemWithError(d, key);
     if (unlikely(!value)) {
         if (unlikely(PyErr_Occurred()))
@@ -26976,117 +40188,187 @@ static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObjec
     return value;
 }
 
-static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
-        PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
-        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
-        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyMappingMethods* mp;
+/* None */
+        static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
+}
+
+/* bytes_tailmatch */
+        static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg,
+                                         Py_ssize_t start, Py_ssize_t end, int direction) {
+    const char* self_ptr = PyBytes_AS_STRING(self);
+    Py_ssize_t self_len = PyBytes_GET_SIZE(self);
+    const char* sub_ptr;
+    Py_ssize_t sub_len;
+    int retval;
+    Py_buffer view;
+    view.obj = NULL;
+    if ( PyBytes_Check(arg) ) {
+        sub_ptr = PyBytes_AS_STRING(arg);
+        sub_len = PyBytes_GET_SIZE(arg);
+    }
 #if PY_MAJOR_VERSION < 3
-    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
-    if (likely(ms && ms->sq_ass_slice)) {
-        if (!has_cstart) {
-            if (_py_start && (*_py_start != Py_None)) {
-                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
-                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
-            } else
-                cstart = 0;
-        }
-        if (!has_cstop) {
-            if (_py_stop && (*_py_stop != Py_None)) {
-                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
-                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
-            } else
-                cstop = PY_SSIZE_T_MAX;
-        }
-        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
-            Py_ssize_t l = ms->sq_length(obj);
-            if (likely(l >= 0)) {
-                if (cstop < 0) {
-                    cstop += l;
-                    if (cstop < 0) cstop = 0;
-                }
-                if (cstart < 0) {
-                    cstart += l;
-                    if (cstart < 0) cstart = 0;
-                }
-            } else {
-                if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                    PyErr_Clear();
-                else
-                    goto bad;
-            }
-        }
-        return ms->sq_ass_slice(obj, cstart, cstop, value);
+    else if ( PyUnicode_Check(arg) ) {
+        return (int) PyUnicode_Tailmatch(self, arg, start, end, direction);
     }
 #endif
-    mp = Py_TYPE(obj)->tp_as_mapping;
-    if (likely(mp && mp->mp_ass_subscript))
+    else {
+        if (unlikely(PyObject_GetBuffer(self, &view, PyBUF_SIMPLE) == -1))
+            return -1;
+        sub_ptr = (const char*) view.buf;
+        sub_len = view.len;
+    }
+    if (end > self_len)
+        end = self_len;
+    else if (end < 0)
+        end += self_len;
+    if (end < 0)
+        end = 0;
+    if (start < 0)
+        start += self_len;
+    if (start < 0)
+        start = 0;
+    if (direction > 0) {
+        if (end-sub_len > start)
+            start = end - sub_len;
+    }
+    if (start + sub_len <= end)
+        retval = !memcmp(self_ptr+start, sub_ptr, (size_t)sub_len);
+    else
+        retval = 0;
+    if (view.obj)
+        PyBuffer_Release(&view);
+    return retval;
+}
+static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr,
+                                   Py_ssize_t start, Py_ssize_t end, int direction) {
+    if (unlikely(PyTuple_Check(substr))) {
+        Py_ssize_t i, count = PyTuple_GET_SIZE(substr);
+        for (i = 0; i < count; i++) {
+            int result;
+#if CYTHON_COMPILING_IN_CPYTHON
+            result = __Pyx_PyBytes_SingleTailmatch(self, PyTuple_GET_ITEM(substr, i),
+                                                   start, end, direction);
+#else
+            PyObject* sub = PySequence_ITEM(substr, i);
+            if (unlikely(!sub)) return -1;
+            result = __Pyx_PyBytes_SingleTailmatch(self, sub, start, end, direction);
+            Py_DECREF(sub);
 #endif
-    {
-        int result;
-        PyObject *py_slice, *py_start, *py_stop;
-        if (_py_slice) {
-            py_slice = *_py_slice;
-        } else {
-            PyObject* owned_start = NULL;
-            PyObject* owned_stop = NULL;
-            if (_py_start) {
-                py_start = *_py_start;
-            } else {
-                if (has_cstart) {
-                    owned_start = py_start = PyInt_FromSsize_t(cstart);
-                    if (unlikely(!py_start)) goto bad;
-                } else
-                    py_start = Py_None;
-            }
-            if (_py_stop) {
-                py_stop = *_py_stop;
-            } else {
-                if (has_cstop) {
-                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
-                    if (unlikely(!py_stop)) {
-                        Py_XDECREF(owned_start);
-                        goto bad;
-                    }
-                } else
-                    py_stop = Py_None;
+            if (result) {
+                return result;
             }
-            py_slice = PySlice_New(py_start, py_stop, Py_None);
-            Py_XDECREF(owned_start);
-            Py_XDECREF(owned_stop);
-            if (unlikely(!py_slice)) goto bad;
         }
+        return 0;
+    }
+    return __Pyx_PyBytes_SingleTailmatch(self, substr, start, end, direction);
+}
+
+/* unicode_tailmatch */
+        static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr,
+                                     Py_ssize_t start, Py_ssize_t end, int direction) {
+    if (unlikely(PyTuple_Check(substr))) {
+        Py_ssize_t i, count = PyTuple_GET_SIZE(substr);
+        for (i = 0; i < count; i++) {
+            Py_ssize_t result;
 #if CYTHON_COMPILING_IN_CPYTHON
-        result = mp->mp_ass_subscript(obj, py_slice, value);
+            result = PyUnicode_Tailmatch(s, PyTuple_GET_ITEM(substr, i),
+                                         start, end, direction);
 #else
-        result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
+            PyObject* sub = PySequence_ITEM(substr, i);
+            if (unlikely(!sub)) return -1;
+            result = PyUnicode_Tailmatch(s, sub, start, end, direction);
+            Py_DECREF(sub);
 #endif
-        if (!_py_slice) {
-            Py_DECREF(py_slice);
+            if (result) {
+                return (int) result;
+            }
         }
-        return result;
+        return 0;
     }
-    PyErr_Format(PyExc_TypeError,
-        "'%.200s' object does not support slice %.10s",
-        Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
-bad:
-    return -1;
+    return (int) PyUnicode_Tailmatch(s, substr, start, end, direction);
 }
 
-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
-    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
+/* str_tailmatch */
+        static CYTHON_INLINE int __Pyx_PyStr_Tailmatch(PyObject* self, PyObject* arg, Py_ssize_t start,
+                                               Py_ssize_t end, int direction)
+{
+    if (PY_MAJOR_VERSION < 3)
+        return __Pyx_PyBytes_Tailmatch(self, arg, start, end, direction);
+    else
+        return __Pyx_PyUnicode_Tailmatch(self, arg, start, end, direction);
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
-        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+/* RaiseTooManyValuesToUnpack */
+        static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+    PyErr_Format(PyExc_ValueError,
+                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
+}
+
+/* RaiseNeedMoreValuesToUnpack */
+        static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+    PyErr_Format(PyExc_ValueError,
+                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
+                 index, (index == 1) ? "" : "s");
+}
+
+/* IterFinish */
+        static CYTHON_INLINE int __Pyx_IterFinish(void) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    PyObject* exc_type = tstate->curexc_type;
+    if (unlikely(exc_type)) {
+        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
+            PyObject *exc_value, *exc_tb;
+            exc_value = tstate->curexc_value;
+            exc_tb = tstate->curexc_traceback;
+            tstate->curexc_type = 0;
+            tstate->curexc_value = 0;
+            tstate->curexc_traceback = 0;
+            Py_DECREF(exc_type);
+            Py_XDECREF(exc_value);
+            Py_XDECREF(exc_tb);
+            return 0;
+        } else {
+            return -1;
+        }
+    }
+    return 0;
+#else
+    if (unlikely(PyErr_Occurred())) {
+        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
+            PyErr_Clear();
+            return 0;
+        } else {
+            return -1;
+        }
+    }
+    return 0;
+#endif
+}
+
+/* UnpackItemEndCheck */
+        static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+    if (unlikely(retval)) {
+        Py_DECREF(retval);
+        __Pyx_RaiseTooManyValuesError(expected);
+        return -1;
+    } else {
+        return __Pyx_IterFinish();
+    }
+    return 0;
+}
+
+/* SliceObject */
+        static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
+        Py_ssize_t cstart, Py_ssize_t cstop,
         PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
         int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
 #if CYTHON_COMPILING_IN_CPYTHON
     PyMappingMethods* mp;
 #if PY_MAJOR_VERSION < 3
     PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
-    if (likely(ms && ms->sq_slice)) {
+    if (likely(ms && ms->sq_ass_slice)) {
         if (!has_cstart) {
             if (_py_start && (*_py_start != Py_None)) {
                 cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
@@ -27113,20 +40395,19 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
                     if (cstart < 0) cstart = 0;
                 }
             } else {
-                if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                    PyErr_Clear();
-                else
+                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                     goto bad;
+                PyErr_Clear();
             }
         }
-        return ms->sq_slice(obj, cstart, cstop);
+        return ms->sq_ass_slice(obj, cstart, cstop, value);
     }
 #endif
     mp = Py_TYPE(obj)->tp_as_mapping;
-    if (likely(mp && mp->mp_subscript))
+    if (likely(mp && mp->mp_ass_subscript))
 #endif
     {
-        PyObject* result;
+        int result;
         PyObject *py_slice, *py_start, *py_stop;
         if (_py_slice) {
             py_slice = *_py_slice;
@@ -27160,9 +40441,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
             if (unlikely(!py_slice)) goto bad;
         }
 #if CYTHON_COMPILING_IN_CPYTHON
-        result = mp->mp_subscript(obj, py_slice);
+        result = mp->mp_ass_subscript(obj, py_slice, value);
 #else
-        result = PyObject_GetItem(obj, py_slice);
+        result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
 #endif
         if (!_py_slice) {
             Py_DECREF(py_slice);
@@ -27170,111 +40451,22 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
         return result;
     }
     PyErr_Format(PyExc_TypeError,
-        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
+        "'%.200s' object does not support slice %.10s",
+        Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
 bad:
-    return NULL;
-}
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE void __Pyx_crop_slice(Py_ssize_t* _start, Py_ssize_t* _stop, Py_ssize_t* _length) {
-    Py_ssize_t start = *_start, stop = *_stop, length = *_length;
-    if (start < 0) {
-        start += length;
-        if (start < 0)
-            start = 0;
-    }
-    if (stop < 0)
-        stop += length;
-    else if (stop > length)
-        stop = length;
-    *_length = stop - start;
-    *_start = start;
-    *_stop = stop;
-}
-static CYTHON_INLINE void __Pyx_copy_object_array(PyObject** CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
-    PyObject *v;
-    Py_ssize_t i;
-    for (i = 0; i < length; i++) {
-        v = dest[i] = src[i];
-        Py_INCREF(v);
-    }
-}
-static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(
-            PyObject* src, Py_ssize_t start, Py_ssize_t stop) {
-    PyObject* dest;
-    Py_ssize_t length = PyList_GET_SIZE(src);
-    __Pyx_crop_slice(&start, &stop, &length);
-    if (unlikely(length <= 0))
-        return PyList_New(0);
-    dest = PyList_New(length);
-    if (unlikely(!dest))
-        return NULL;
-    __Pyx_copy_object_array(
-        ((PyListObject*)src)->ob_item + start,
-        ((PyListObject*)dest)->ob_item,
-        length);
-    return dest;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(
-            PyObject* src, Py_ssize_t start, Py_ssize_t stop) {
-    PyObject* dest;
-    Py_ssize_t length = PyTuple_GET_SIZE(src);
-    __Pyx_crop_slice(&start, &stop, &length);
-    if (unlikely(length <= 0))
-        return PyTuple_New(0);
-    dest = PyTuple_New(length);
-    if (unlikely(!dest))
-        return NULL;
-    __Pyx_copy_object_array(
-        ((PyTupleObject*)src)->ob_item + start,
-        ((PyTupleObject*)dest)->ob_item,
-        length);
-    return dest;
+    return -1;
 }
-#endif
 
-static CYTHON_INLINE int __Pyx_div_int(int a, int b) {
+/* None */
+        static CYTHON_INLINE int __Pyx_div_int(int a, int b) {
     int q = a / b;
     int r = a - q*b;
     q -= ((r != 0) & ((r ^ b) < 0));
     return q;
 }
 
-static CYTHON_INLINE int __Pyx_IterFinish(void) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject* exc_type = tstate->curexc_type;
-    if (unlikely(exc_type)) {
-        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
-            PyObject *exc_value, *exc_tb;
-            exc_value = tstate->curexc_value;
-            exc_tb = tstate->curexc_traceback;
-            tstate->curexc_type = 0;
-            tstate->curexc_value = 0;
-            tstate->curexc_traceback = 0;
-            Py_DECREF(exc_type);
-            Py_XDECREF(exc_value);
-            Py_XDECREF(exc_tb);
-            return 0;
-        } else {
-            return -1;
-        }
-    }
-    return 0;
-#else
-    if (unlikely(PyErr_Occurred())) {
-        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
-            PyErr_Clear();
-            return 0;
-        } else {
-            return -1;
-        }
-    }
-    return 0;
-#endif
-}
-
-static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
+/* PyObjectCallMethod0 */
+        static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
     PyObject *method, *result = NULL;
     method = __Pyx_PyObject_GetAttrStr(obj, method_name);
     if (unlikely(!method)) goto bad;
@@ -27286,42 +40478,22 @@ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name
             result = __Pyx_PyObject_CallOneArg(function, self);
             Py_DECREF(method);
             return result;
-        }
-    }
-#endif
-    result = __Pyx_PyObject_CallNoArg(method);
-    Py_DECREF(method);
-bad:
-    return result;
-}
-
-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
-    PyErr_Format(PyExc_ValueError,
-                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
-                 index, (index == 1) ? "" : "s");
-}
-
-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
-    PyErr_Format(PyExc_ValueError,
-                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
-}
-
-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
-    if (unlikely(retval)) {
-        Py_DECREF(retval);
-        __Pyx_RaiseTooManyValuesError(expected);
-        return -1;
-    } else {
-        return __Pyx_IterFinish();
+        }
     }
-    return 0;
+#endif
+    result = __Pyx_PyObject_CallNoArg(method);
+    Py_DECREF(method);
+bad:
+    return result;
 }
 
-static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+/* RaiseNoneIterError */
+        static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
 }
 
-static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+/* UnpackTupleError */
+        static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
     if (t == Py_None) {
       __Pyx_RaiseNoneNotIterableError();
     } else if (PyTuple_GET_SIZE(t) < index) {
@@ -27331,7 +40503,8 @@ static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
     }
 }
 
-static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
+/* UnpackTuple2 */
+        static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                              int is_tuple, int has_known_size, int decref_tuple) {
     Py_ssize_t index;
     PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
@@ -27377,7 +40550,8 @@ bad:
     return -1;
 }
 
-static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+/* dict_iter */
+        static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                    Py_ssize_t* p_orig_length, int* p_source_is_dict) {
     is_dict = is_dict || likely(PyDict_CheckExact(iterable));
     *p_source_is_dict = is_dict;
@@ -27395,363 +40569,111 @@ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_di
         if (!iterable)
             return NULL;
 #if !CYTHON_COMPILING_IN_PYPY
-        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
-            return iterable;
-#endif
-        iter = PyObject_GetIter(iterable);
-        Py_DECREF(iterable);
-        return iter;
-    }
-    return PyObject_GetIter(iterable);
-}
-static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* iter_obj, Py_ssize_t orig_length, Py_ssize_t* ppos,
-                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
-    PyObject* next_item;
-#if !CYTHON_COMPILING_IN_PYPY
-    if (source_is_dict) {
-        PyObject *key, *value;
-        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
-            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
-            return -1;
-        }
-        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
-            return 0;
-        }
-        if (pitem) {
-            PyObject* tuple = PyTuple_New(2);
-            if (unlikely(!tuple)) {
-                return -1;
-            }
-            Py_INCREF(key);
-            Py_INCREF(value);
-            PyTuple_SET_ITEM(tuple, 0, key);
-            PyTuple_SET_ITEM(tuple, 1, value);
-            *pitem = tuple;
-        } else {
-            if (pkey) {
-                Py_INCREF(key);
-                *pkey = key;
-            }
-            if (pvalue) {
-                Py_INCREF(value);
-                *pvalue = value;
-            }
-        }
-        return 1;
-    } else if (PyTuple_CheckExact(iter_obj)) {
-        Py_ssize_t pos = *ppos;
-        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
-        *ppos = pos + 1;
-        next_item = PyTuple_GET_ITEM(iter_obj, pos);
-        Py_INCREF(next_item);
-    } else if (PyList_CheckExact(iter_obj)) {
-        Py_ssize_t pos = *ppos;
-        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
-        *ppos = pos + 1;
-        next_item = PyList_GET_ITEM(iter_obj, pos);
-        Py_INCREF(next_item);
-    } else
-#endif
-    {
-        next_item = PyIter_Next(iter_obj);
-        if (unlikely(!next_item)) {
-            return __Pyx_IterFinish();
-        }
-    }
-    if (pitem) {
-        *pitem = next_item;
-    } else if (pkey && pvalue) {
-        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
-            return -1;
-    } else if (pkey) {
-        *pkey = next_item;
-    } else {
-        *pvalue = next_item;
-    }
-    return 1;
-}
-
-static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-#if PY_VERSION_HEX >= 0x02070000
-    PyObject *ob = PyCapsule_New(vtable, 0, 0);
-#else
-    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
-#endif
-    if (!ob)
-        goto bad;
-    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
-        goto bad;
-    Py_DECREF(ob);
-    return 0;
-bad:
-    Py_XDECREF(ob);
-    return -1;
-}
-
-static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
-    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
-    for (i=0; i < nbases; i++) {
-        PyTypeObject *tmptype;
-        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
-        tmptype = Py_TYPE(tmp);
-#if PY_MAJOR_VERSION < 3
-        if (tmptype == &PyClass_Type)
-            continue;
-#endif
-        if (!metaclass) {
-            metaclass = tmptype;
-            continue;
-        }
-        if (PyType_IsSubtype(metaclass, tmptype))
-            continue;
-        if (PyType_IsSubtype(tmptype, metaclass)) {
-            metaclass = tmptype;
-            continue;
-        }
-        PyErr_SetString(PyExc_TypeError,
-                        "metaclass conflict: "
-                        "the metaclass of a derived class "
-                        "must be a (non-strict) subclass "
-                        "of the metaclasses of all its bases");
-        return NULL;
-    }
-    if (!metaclass) {
-#if PY_MAJOR_VERSION < 3
-        metaclass = &PyClass_Type;
-#else
-        metaclass = &PyType_Type;
-#endif
-    }
-    Py_INCREF((PyObject*) metaclass);
-    return (PyObject*) metaclass;
-}
-
-static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
-                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
-    PyObject *ns;
-    if (metaclass) {
-        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
-        if (prep) {
-            PyObject *pargs = PyTuple_Pack(2, name, bases);
-            if (unlikely(!pargs)) {
-                Py_DECREF(prep);
-                return NULL;
-            }
-            ns = PyObject_Call(prep, pargs, mkw);
-            Py_DECREF(prep);
-            Py_DECREF(pargs);
-        } else {
-            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
-                return NULL;
-            PyErr_Clear();
-            ns = PyDict_New();
-        }
-    } else {
-        ns = PyDict_New();
-    }
-    if (unlikely(!ns))
-        return NULL;
-    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
-    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
-    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
-    return ns;
-bad:
-    Py_DECREF(ns);
-    return NULL;
-}
-static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
-                                      PyObject *dict, PyObject *mkw,
-                                      int calculate_metaclass, int allow_py2_metaclass) {
-    PyObject *result, *margs;
-    PyObject *owned_metaclass = NULL;
-    if (allow_py2_metaclass) {
-        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
-        if (owned_metaclass) {
-            metaclass = owned_metaclass;
-        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
-            PyErr_Clear();
-        } else {
-            return NULL;
-        }
-    }
-    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
-        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
-        Py_XDECREF(owned_metaclass);
-        if (unlikely(!metaclass))
-            return NULL;
-        owned_metaclass = metaclass;
-    }
-    margs = PyTuple_Pack(3, name, bases, dict);
-    if (unlikely(!margs)) {
-        result = NULL;
-    } else {
-        result = PyObject_Call(metaclass, margs, mkw);
-        Py_DECREF(margs);
-    }
-    Py_XDECREF(owned_metaclass);
-    return result;
-}
-
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
-    int start = 0, mid = 0, end = count - 1;
-    if (end >= 0 && code_line > entries[end].code_line) {
-        return count;
-    }
-    while (start < end) {
-        mid = (start + end) / 2;
-        if (code_line < entries[mid].code_line) {
-            end = mid;
-        } else if (code_line > entries[mid].code_line) {
-             start = mid + 1;
-        } else {
-            return mid;
-        }
-    }
-    if (code_line <= entries[mid].code_line) {
-        return mid;
-    } else {
-        return mid + 1;
-    }
-}
-static PyCodeObject *__pyx_find_code_object(int code_line) {
-    PyCodeObject* code_object;
-    int pos;
-    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
-        return NULL;
-    }
-    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
-    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
-        return NULL;
-    }
-    code_object = __pyx_code_cache.entries[pos].code_object;
-    Py_INCREF(code_object);
-    return code_object;
-}
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
-    int pos, i;
-    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
-    if (unlikely(!code_line)) {
-        return;
-    }
-    if (unlikely(!entries)) {
-        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
-        if (likely(entries)) {
-            __pyx_code_cache.entries = entries;
-            __pyx_code_cache.max_count = 64;
-            __pyx_code_cache.count = 1;
-            entries[0].code_line = code_line;
-            entries[0].code_object = code_object;
-            Py_INCREF(code_object);
-        }
-        return;
-    }
-    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
-    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
-        PyCodeObject* tmp = entries[pos].code_object;
-        entries[pos].code_object = code_object;
-        Py_DECREF(tmp);
-        return;
+        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
+            return iterable;
+#endif
+        iter = PyObject_GetIter(iterable);
+        Py_DECREF(iterable);
+        return iter;
     }
-    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
-        int new_max = __pyx_code_cache.max_count + 64;
-        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
-            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
-        if (unlikely(!entries)) {
-            return;
+    return PyObject_GetIter(iterable);
+}
+static CYTHON_INLINE int __Pyx_dict_iter_next(
+        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
+        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
+    PyObject* next_item;
+#if !CYTHON_COMPILING_IN_PYPY
+    if (source_is_dict) {
+        PyObject *key, *value;
+        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
+            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
+            return -1;
+        }
+        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
+            return 0;
+        }
+        if (pitem) {
+            PyObject* tuple = PyTuple_New(2);
+            if (unlikely(!tuple)) {
+                return -1;
+            }
+            Py_INCREF(key);
+            Py_INCREF(value);
+            PyTuple_SET_ITEM(tuple, 0, key);
+            PyTuple_SET_ITEM(tuple, 1, value);
+            *pitem = tuple;
+        } else {
+            if (pkey) {
+                Py_INCREF(key);
+                *pkey = key;
+            }
+            if (pvalue) {
+                Py_INCREF(value);
+                *pvalue = value;
+            }
+        }
+        return 1;
+    } else if (PyTuple_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyTuple_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else if (PyList_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyList_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else
+#endif
+    {
+        next_item = PyIter_Next(iter_obj);
+        if (unlikely(!next_item)) {
+            return __Pyx_IterFinish();
         }
-        __pyx_code_cache.entries = entries;
-        __pyx_code_cache.max_count = new_max;
     }
-    for (i=__pyx_code_cache.count; i>pos; i--) {
-        entries[i] = entries[i-1];
+    if (pitem) {
+        *pitem = next_item;
+    } else if (pkey && pvalue) {
+        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
+            return -1;
+    } else if (pkey) {
+        *pkey = next_item;
+    } else {
+        *pvalue = next_item;
     }
-    entries[pos].code_line = code_line;
-    entries[pos].code_object = code_object;
-    __pyx_code_cache.count++;
-    Py_INCREF(code_object);
+    return 1;
 }
 
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
-            const char *funcname, int c_line,
-            int py_line, const char *filename) {
-    PyCodeObject *py_code = 0;
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    #if PY_MAJOR_VERSION < 3
-    py_srcfile = PyString_FromString(filename);
-    #else
-    py_srcfile = PyUnicode_FromString(filename);
-    #endif
-    if (!py_srcfile) goto bad;
-    if (c_line) {
-        #if PY_MAJOR_VERSION < 3
-        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
-        #else
-        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
-        #endif
-    }
-    else {
-        #if PY_MAJOR_VERSION < 3
-        py_funcname = PyString_FromString(funcname);
-        #else
-        py_funcname = PyUnicode_FromString(funcname);
-        #endif
-    }
-    if (!py_funcname) goto bad;
-    py_code = __Pyx_PyCode_New(
-        0,
-        0,
-        0,
-        0,
-        0,
-        __pyx_empty_bytes, /*PyObject *code,*/
-        __pyx_empty_tuple, /*PyObject *consts,*/
-        __pyx_empty_tuple, /*PyObject *names,*/
-        __pyx_empty_tuple, /*PyObject *varnames,*/
-        __pyx_empty_tuple, /*PyObject *freevars,*/
-        __pyx_empty_tuple, /*PyObject *cellvars,*/
-        py_srcfile,   /*PyObject *filename,*/
-        py_funcname,  /*PyObject *name,*/
-        py_line,
-        __pyx_empty_bytes  /*PyObject *lnotab*/
-    );
-    Py_DECREF(py_srcfile);
-    Py_DECREF(py_funcname);
-    return py_code;
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    return NULL;
+/* py_dict_values */
+        static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
+    if (PY_MAJOR_VERSION >= 3)
+        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
+    else
+        return PyDict_Values(d);
 }
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename) {
-    PyCodeObject *py_code = 0;
-    PyFrameObject *py_frame = 0;
-    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
-    if (!py_code) {
-        py_code = __Pyx_CreateCodeObjectForTraceback(
-            funcname, c_line, py_line, filename);
-        if (!py_code) goto bad;
-        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
-    }
-    py_frame = PyFrame_New(
-        PyThreadState_GET(), /*PyThreadState *tstate,*/
-        py_code,             /*PyCodeObject *code,*/
-        __pyx_d,      /*PyObject *globals,*/
-        0                    /*PyObject *locals*/
-    );
-    if (!py_frame) goto bad;
-    py_frame->f_lineno = py_line;
-    PyTraceBack_Here(py_frame);
+
+/* SetVTable */
+        static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+#if PY_VERSION_HEX >= 0x02070000
+    PyObject *ob = PyCapsule_New(vtable, 0, 0);
+#else
+    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
+#endif
+    if (!ob)
+        goto bad;
+    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
+        goto bad;
+    Py_DECREF(ob);
+    return 0;
 bad:
-    Py_XDECREF(py_code);
-    Py_XDECREF(py_frame);
+    Py_XDECREF(ob);
+    return -1;
 }
 
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+/* Import */
+        static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
     PyObject *empty_list = 0;
     PyObject *module = 0;
     PyObject *global_dict = 0;
@@ -27824,423 +40746,326 @@ bad:
     return module;
 }
 
-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)       \
-    {                                                                     \
-        func_type value = func_value;                                     \
-        if (sizeof(target_type) < sizeof(func_type)) {                    \
-            if (unlikely(value != (func_type) (target_type) value)) {     \
-                func_type zero = 0;                                       \
-                if (is_unsigned && unlikely(value < zero))                \
-                    goto raise_neg_overflow;                              \
-                else                                                      \
-                    goto raise_overflow;                                  \
-            }                                                             \
-        }                                                                 \
-        return (target_type) value;                                       \
-    }
-
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-  #include "longintrepr.h"
- #endif
-#endif
-
-static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
-    const int64_t neg_one = (int64_t) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(int64_t) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(int64_t, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (int64_t) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int64_t, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(int64_t) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(int64_t) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int64_t,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(int64_t, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (sizeof(int64_t) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, long, PyLong_AsLong(x))
-            } else if (sizeof(int64_t) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(int64_t, long long, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            int64_t val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (int64_t) -1;
-        }
-    } else {
-        int64_t val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (int64_t) -1;
-        val = __Pyx_PyInt_As_int64_t(tmp);
-        Py_DECREF(tmp);
-        return val;
+/* ImportFrom */
+        static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
+    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
+        PyErr_Format(PyExc_ImportError,
+        #if PY_MAJOR_VERSION < 3
+            "cannot import name %.230s", PyString_AS_STRING(name));
+        #else
+            "cannot import name %S", name);
+        #endif
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to int64_t");
-    return (int64_t) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to int64_t");
-    return (int64_t) -1;
+    return value;
 }
 
-static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) {
-    const uint64_t neg_one = (uint64_t) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
+/* CalculateMetaclass */
+        static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
+    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
+    for (i=0; i < nbases; i++) {
+        PyTypeObject *tmptype;
+        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
+        tmptype = Py_TYPE(tmp);
 #if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(uint64_t) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (uint64_t) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(uint64_t, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(uint64_t) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(uint64_t) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(uint64_t,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(uint64_t, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
+        if (tmptype == &PyClass_Type)
+            continue;
 #endif
-            if (sizeof(uint64_t) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, long, PyLong_AsLong(x))
-            } else if (sizeof(uint64_t) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(uint64_t, long long, PyLong_AsLongLong(x))
-            }
+        if (!metaclass) {
+            metaclass = tmptype;
+            continue;
         }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        if (PyType_IsSubtype(metaclass, tmptype))
+            continue;
+        if (PyType_IsSubtype(tmptype, metaclass)) {
+            metaclass = tmptype;
+            continue;
+        }
+        PyErr_SetString(PyExc_TypeError,
+                        "metaclass conflict: "
+                        "the metaclass of a derived class "
+                        "must be a (non-strict) subclass "
+                        "of the metaclasses of all its bases");
+        return NULL;
+    }
+    if (!metaclass) {
+#if PY_MAJOR_VERSION < 3
+        metaclass = &PyClass_Type;
 #else
-            uint64_t val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
+        metaclass = &PyType_Type;
 #endif
-            return (uint64_t) -1;
-        }
-    } else {
-        uint64_t val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (uint64_t) -1;
-        val = __Pyx_PyInt_As_uint64_t(tmp);
-        Py_DECREF(tmp);
-        return val;
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to uint64_t");
-    return (uint64_t) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to uint64_t");
-    return (uint64_t) -1;
+    Py_INCREF((PyObject*) metaclass);
+    return (PyObject*) metaclass;
 }
 
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
-    const int neg_one = (int) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(int) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (int) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(int) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(int, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(int) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(int, unsigned long long, PyLong_AsUnsignedLongLong(x))
+/* Py3ClassCreate */
+        static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
+                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
+    PyObject *ns;
+    if (metaclass) {
+        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
+        if (prep) {
+            PyObject *pargs = PyTuple_Pack(2, name, bases);
+            if (unlikely(!pargs)) {
+                Py_DECREF(prep);
+                return NULL;
             }
+            ns = PyObject_Call(prep, pargs, mkw);
+            Py_DECREF(prep);
+            Py_DECREF(pargs);
         } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (sizeof(int) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(int, long, PyLong_AsLong(x))
-            } else if (sizeof(int) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(int, long long, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            int val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (int) -1;
+            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
+                return NULL;
+            PyErr_Clear();
+            ns = PyDict_New();
         }
     } else {
-        int val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (int) -1;
-        val = __Pyx_PyInt_As_int(tmp);
-        Py_DECREF(tmp);
-        return val;
+        ns = PyDict_New();
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to int");
-    return (int) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to int");
-    return (int) -1;
+    if (unlikely(!ns))
+        return NULL;
+    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
+    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
+    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
+    return ns;
+bad:
+    Py_DECREF(ns);
+    return NULL;
 }
-
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
-    const long neg_one = (long) -1, const_zero = 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(long) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
+                                      PyObject *dict, PyObject *mkw,
+                                      int calculate_metaclass, int allow_py2_metaclass) {
+    PyObject *result, *margs;
+    PyObject *owned_metaclass = NULL;
+    if (allow_py2_metaclass) {
+        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
+        if (owned_metaclass) {
+            metaclass = owned_metaclass;
+        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
+            PyErr_Clear();
         } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (long) val;
+            return NULL;
         }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(long, digit, ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-            if (sizeof(long) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT(long, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(long) <= sizeof(unsigned long long)) {
-                __PYX_VERIFY_RETURN_INT(long, unsigned long long, PyLong_AsUnsignedLongLong(x))
-            }
+    }
+    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
+        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
+        Py_XDECREF(owned_metaclass);
+        if (unlikely(!metaclass))
+            return NULL;
+        owned_metaclass = metaclass;
+    }
+    margs = PyTuple_Pack(3, name, bases, dict);
+    if (unlikely(!margs)) {
+        result = NULL;
+    } else {
+        result = PyObject_Call(metaclass, margs, mkw);
+        Py_DECREF(margs);
+    }
+    Py_XDECREF(owned_metaclass);
+    return result;
+}
+
+/* CodeObjectCache */
+        static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = start + (end - start) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
         } else {
-#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
- #if CYTHON_USE_PYLONG_INTERNALS
-            switch (Py_SIZE(x)) {
-                case  0: return 0;
-                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +(((PyLongObject*)x)->ob_digit[0]));
-                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]);
-            }
- #endif
-#endif
-            if (sizeof(long) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT(long, long, PyLong_AsLong(x))
-            } else if (sizeof(long) <= sizeof(long long)) {
-                __PYX_VERIFY_RETURN_INT(long, long long, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            long val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (long) -1;
+            return mid;
         }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
     } else {
-        long val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (long) -1;
-        val = __Pyx_PyInt_As_long(tmp);
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
         Py_DECREF(tmp);
-        return val;
+        return;
     }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to long");
-    return (long) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to long");
-    return (long) -1;
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+/* AddTraceback */
+        #include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,
+        0,
+        0,
+        0,
+        0,
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        __pyx_d,      /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
-    const int neg_one = (int) -1, const_zero = 0;
+/* CIntFromPyVerify */
+        #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
+#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
+    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
+#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
+    {\
+        func_type value = func_value;\
+        if (sizeof(target_type) < sizeof(func_type)) {\
+            if (unlikely(value != (func_type) (target_type) value)) {\
+                func_type zero = 0;\
+                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
+                    return (target_type) -1;\
+                if (is_unsigned && unlikely(value < zero))\
+                    goto raise_neg_overflow;\
+                else\
+                    goto raise_overflow;\
+            }\
+        }\
+        return (target_type) value;\
+    }
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+    const int neg_one = (int) -1, const_zero = (int) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(int) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(int) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(int) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(int) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(int) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
@@ -28251,22 +41076,23 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
     }
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
-    const int64_t neg_one = (int64_t) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
+    const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
         if (sizeof(int64_t) < sizeof(long)) {
             return PyInt_FromLong((long) value);
         } else if (sizeof(int64_t) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(int64_t) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
         if (sizeof(int64_t) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(int64_t) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
@@ -28277,226 +41103,170 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
     }
 }
 
-#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
-static PyObject *__Pyx_GetStdout(void) {
-    PyObject *f = PySys_GetObject((char *)"stdout");
-    if (!f) {
-        PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
+    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(uint64_t) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(uint64_t) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(uint64_t) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
     }
-    return f;
-}
-static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) {
-    int i;
-    if (!f) {
-        if (!(f = __Pyx_GetStdout()))
-            return -1;
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(uint64_t),
+                                     little, !is_unsigned);
     }
-    Py_INCREF(f);
-    for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) {
-        PyObject* v;
-        if (PyFile_SoftSpace(f, 1)) {
-            if (PyFile_WriteString(" ", f) < 0)
-                goto error;
-        }
-        v = PyTuple_GET_ITEM(arg_tuple, i);
-        if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
-            goto error;
-        if (PyString_Check(v)) {
-            char *s = PyString_AsString(v);
-            Py_ssize_t len = PyString_Size(v);
-            if (len > 0) {
-                switch (s[len-1]) {
-                    case ' ': break;
-                    case '\f': case '\r': case '\n': case '\t': case '\v':
-                        PyFile_SoftSpace(f, 0);
-                        break;
-                    default:  break;
-                }
-            }
+}
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_READ_METHOD(ADIOS_READ_METHOD value) {
+    const ADIOS_READ_METHOD neg_one = (ADIOS_READ_METHOD) -1, const_zero = (ADIOS_READ_METHOD) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(ADIOS_READ_METHOD) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(ADIOS_READ_METHOD) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
-    if (newline) {
-        if (PyFile_WriteString("\n", f) < 0)
-            goto error;
-        PyFile_SoftSpace(f, 0);
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(ADIOS_READ_METHOD),
+                                     little, !is_unsigned);
     }
-    Py_DECREF(f);
-    return 0;
-error:
-    Py_DECREF(f);
-    return -1;
 }
-#else
-static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) {
-    PyObject* kwargs = 0;
-    PyObject* result = 0;
-    PyObject* end_string;
-    if (unlikely(!__pyx_print)) {
-        __pyx_print = PyObject_GetAttr(__pyx_b, __pyx_n_s_print);
-        if (!__pyx_print)
-            return -1;
-    }
-    if (stream) {
-        kwargs = PyDict_New();
-        if (unlikely(!kwargs))
-            return -1;
-        if (unlikely(PyDict_SetItem(kwargs, __pyx_n_s_file, stream) < 0))
-            goto bad;
-        if (!newline) {
-            end_string = PyUnicode_FromStringAndSize(" ", 1);
-            if (unlikely(!end_string))
-                goto bad;
-            if (PyDict_SetItem(kwargs, __pyx_n_s_end, end_string) < 0) {
-                Py_DECREF(end_string);
-                goto bad;
-            }
-            Py_DECREF(end_string);
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+    const long neg_one = (long) -1, const_zero = (long) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(long) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(long) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
-    } else if (!newline) {
-        if (unlikely(!__pyx_print_kwargs)) {
-            __pyx_print_kwargs = PyDict_New();
-            if (unlikely(!__pyx_print_kwargs))
-                return -1;
-            end_string = PyUnicode_FromStringAndSize(" ", 1);
-            if (unlikely(!end_string))
-                return -1;
-            if (PyDict_SetItem(__pyx_print_kwargs, __pyx_n_s_end, end_string) < 0) {
-                Py_DECREF(end_string);
-                return -1;
-            }
-            Py_DECREF(end_string);
+    } else {
+        if (sizeof(long) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
-        kwargs = __pyx_print_kwargs;
     }
-    result = PyObject_Call(__pyx_print, arg_tuple, kwargs);
-    if (unlikely(kwargs) && (kwargs != __pyx_print_kwargs))
-        Py_DECREF(kwargs);
-    if (!result)
-        return -1;
-    Py_DECREF(result);
-    return 0;
-bad:
-    if (kwargs != __pyx_print_kwargs)
-        Py_XDECREF(kwargs);
-    return -1;
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(long),
+                                     little, !is_unsigned);
+    }
 }
-#endif
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
-    const uint64_t neg_one = (uint64_t) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
+    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
-        if (sizeof(uint64_t) < sizeof(long)) {
+        if (sizeof(unsigned long) < sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(uint64_t) <= sizeof(unsigned long)) {
+        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(uint64_t) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
-        if (sizeof(uint64_t) <= sizeof(long)) {
+        if (sizeof(unsigned long) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(uint64_t) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
         int one = 1; int little = (int)*(unsigned char *)&one;
         unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(uint64_t),
+        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
                                      little, !is_unsigned);
     }
 }
 
-#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
-static int __Pyx_PrintOne(PyObject* f, PyObject *o) {
-    if (!f) {
-        if (!(f = __Pyx_GetStdout()))
-            return -1;
-    }
-    Py_INCREF(f);
-    if (PyFile_SoftSpace(f, 0)) {
-        if (PyFile_WriteString(" ", f) < 0)
-            goto error;
-    }
-    if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0)
-        goto error;
-    if (PyFile_WriteString("\n", f) < 0)
-        goto error;
-    Py_DECREF(f);
-    return 0;
-error:
-    Py_DECREF(f);
-    return -1;
-    /* the line below is just to avoid C compiler
-     * warnings about unused functions */
-    return __Pyx_Print(f, NULL, 0);
-}
-#else
-static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
-    int res;
-    PyObject* arg_tuple = PyTuple_Pack(1, o);
-    if (unlikely(!arg_tuple))
-        return -1;
-    res = __Pyx_Print(stream, arg_tuple, 1);
-    Py_DECREF(arg_tuple);
-    return res;
-}
-#endif
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
-    const long neg_one = (long) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value) {
+    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
-        if (sizeof(long) < sizeof(long)) {
+        if (sizeof(uint32_t) < sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(long) <= sizeof(unsigned long)) {
+        } else if (sizeof(uint32_t) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(long) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
-        if (sizeof(long) <= sizeof(long)) {
+        if (sizeof(uint32_t) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(long) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
         int one = 1; int little = (int)*(unsigned char *)&one;
         unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(long),
+        return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
                                      little, !is_unsigned);
     }
 }
 
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
-    const unsigned long neg_one = (unsigned long) -1, const_zero = 0;
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ADIOS_DATATYPES(ADIOS_DATATYPES value) {
+    const ADIOS_DATATYPES neg_one = (ADIOS_DATATYPES) -1, const_zero = (ADIOS_DATATYPES) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
-        if (sizeof(unsigned long) < sizeof(long)) {
+        if (sizeof(ADIOS_DATATYPES) < sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
+        } else if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(unsigned long) <= sizeof(unsigned long long)) {
-            return PyLong_FromUnsignedLongLong((unsigned long long) value);
+        } else if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
         }
     } else {
-        if (sizeof(unsigned long) <= sizeof(long)) {
+        if (sizeof(ADIOS_DATATYPES) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
-        } else if (sizeof(unsigned long) <= sizeof(long long)) {
-            return PyLong_FromLongLong((long long) value);
+        } else if (sizeof(ADIOS_DATATYPES) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
         }
     }
     {
         int one = 1; int little = (int)*(unsigned char *)&one;
         unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
+        return _PyLong_FromByteArray(bytes, sizeof(ADIOS_DATATYPES),
                                      little, !is_unsigned);
     }
 }
 
-#if CYTHON_CCOMPLEX
+/* None */
+        #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
       return ::std::complex< float >(x, y);
@@ -28515,7 +41285,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     }
 #endif
 
-#if CYTHON_CCOMPLEX
+/* None */
+        #if CYTHON_CCOMPLEX
 #else
     static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        return (a.real == b.real) && (a.imag == b.imag);
@@ -28616,7 +41387,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     #endif
 #endif
 
-#if CYTHON_CCOMPLEX
+/* None */
+        #if CYTHON_CCOMPLEX
   #ifdef __cplusplus
     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
       return ::std::complex< double >(x, y);
@@ -28635,7 +41407,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
     }
 #endif
 
-#if CYTHON_CCOMPLEX
+/* None */
+        #if CYTHON_CCOMPLEX
 #else
     static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        return (a.real == b.real) && (a.imag == b.imag);
@@ -28726,619 +41499,1340 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long valu
                 r = __Pyx_c_abs(a);
                 theta = atan2(a.imag, a.real);
             }
-            lnr = log(r);
-            z_r = exp(lnr * b.real - theta * b.imag);
-            z_theta = theta * b.real + lnr * b.imag;
-            z.real = z_r * cos(z_theta);
-            z.imag = z_r * sin(z_theta);
-            return z;
+            lnr = log(r);
+            z_r = exp(lnr * b.real - theta * b.imag);
+            z_theta = theta * b.real + lnr * b.imag;
+            z.real = z_r * cos(z_theta);
+            z.imag = z_r * sin(z_theta);
+            return z;
+        }
+    #endif
+#endif
+
+/* CIntToPy */
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+    const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(enum NPY_TYPES) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+        } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+        }
+    } else {
+        if (sizeof(enum NPY_TYPES) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) {
+            return PyLong_FromLongLong((PY_LONG_LONG) value);
+        }
+    }
+    {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&value;
+        return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES),
+                                     little, !is_unsigned);
+    }
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
+    const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(int64_t) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(int64_t, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (int64_t) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int64_t) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(int64_t, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(int64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) >= 2 * PyLong_SHIFT) {
+                            return (int64_t) (((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) >= 3 * PyLong_SHIFT) {
+                            return (int64_t) (((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) >= 4 * PyLong_SHIFT) {
+                            return (int64_t) (((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (int64_t) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(int64_t) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int64_t) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(int64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(int64_t,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(int64_t) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (int64_t) (((int64_t)-1)*(((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(int64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (int64_t) ((((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (int64_t) (((int64_t)-1)*(((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (int64_t) ((((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (int64_t) (((int64_t)-1)*(((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (int64_t) ((((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(int64_t) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, long, PyLong_AsLong(x))
+            } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            int64_t val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (int64_t) -1;
+        }
+    } else {
+        int64_t val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (int64_t) -1;
+        val = __Pyx_PyInt_As_int64_t(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to int64_t");
+    return (int64_t) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to int64_t");
+    return (int64_t) -1;
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) {
+    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(uint64_t) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (uint64_t) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (uint64_t) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(uint64_t, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT) {
+                            return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT) {
+                            return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT) {
+                            return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (uint64_t) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(uint64_t) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (uint64_t) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(uint64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(uint64_t,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
+                            return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
+                            return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
+                            return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(uint64_t) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x))
+            } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            uint64_t val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (uint64_t) -1;
+        }
+    } else {
+        uint64_t val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (uint64_t) -1;
+        val = __Pyx_PyInt_As_uint64_t(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to uint64_t");
+    return (uint64_t) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to uint64_t");
+    return (uint64_t) -1;
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+    const int neg_one = (int) -1, const_zero = (int) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(int) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (int) val;
         }
-    #endif
+    } else
 #endif
-
-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
-    PyObject* fake_module;
-    PyTypeObject* cached_type = NULL;
-    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
-    if (!fake_module) return NULL;
-    Py_INCREF(fake_module);
-    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
-    if (cached_type) {
-        if (!PyType_Check((PyObject*)cached_type)) {
-            PyErr_Format(PyExc_TypeError,
-                "Shared Cython type %.200s is not a type object",
-                type->tp_name);
-            goto bad;
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
+                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
+                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
+                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (int) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(int) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (int) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
+                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
+                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
+                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
+                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
+                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
+                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(int) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
+            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
         }
-        if (cached_type->tp_basicsize != type->tp_basicsize) {
-            PyErr_Format(PyExc_TypeError,
-                "Shared Cython type %.200s has the wrong size, try recompiling",
-                type->tp_name);
-            goto bad;
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            int val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (int) -1;
         }
     } else {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
-        PyErr_Clear();
-        if (PyType_Ready(type) < 0) goto bad;
-        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
-            goto bad;
-        Py_INCREF(type);
-        cached_type = type;
+        int val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (int) -1;
+        val = __Pyx_PyInt_As_int(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-done:
-    Py_DECREF(fake_module);
-    return cached_type;
-bad:
-    Py_XDECREF(cached_type);
-    cached_type = NULL;
-    goto done;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to int");
+    return (int) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to int");
+    return (int) -1;
 }
 
-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
+/* CIntFromPy */
+        static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+    const long neg_one = (long) -1, const_zero = (long) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(long) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (long) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (long) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
+                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
+                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
+                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
 #if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    tstate->exc_type = *type;
-    tstate->exc_value = *value;
-    tstate->exc_traceback = *tb;
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
-    PyErr_SetExcInfo(*type, *value, *tb);
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (long) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
 #endif
-    *type = tmp_type;
-    *value = tmp_value;
-    *tb = tmp_tb;
-}
-
-static PyObject *__Pyx_Generator_Next(PyObject *self);
-static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value);
-static PyObject *__Pyx_Generator_Close(PyObject *self);
-static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args);
-static PyTypeObject *__pyx_GeneratorType = 0;
-#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
-#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
-#if 1 || PY_VERSION_HEX < 0x030300B0
-static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) {
-    PyObject *et, *ev, *tb;
-    PyObject *value = NULL;
-    __Pyx_ErrFetch(&et, &ev, &tb);
-    if (!et) {
-        Py_XDECREF(tb);
-        Py_XDECREF(ev);
-        Py_INCREF(Py_None);
-        *pvalue = Py_None;
-        return 0;
-    }
-    if (unlikely(et != PyExc_StopIteration) &&
-            unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    if (likely(et == PyExc_StopIteration)) {
-        if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) {
-            if (!ev) {
-                Py_INCREF(Py_None);
-                ev = Py_None;
+            if (sizeof(long) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (long) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(long) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
+            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
             }
-            Py_XDECREF(tb);
-            Py_DECREF(et);
-            *pvalue = ev;
-            return 0;
         }
-    }
-    PyErr_NormalizeException(&et, &ev, &tb);
-    if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) {
-        __Pyx_ErrRestore(et, ev, tb);
-        return -1;
-    }
-    Py_XDECREF(tb);
-    Py_DECREF(et);
-#if PY_VERSION_HEX >= 0x030300A0
-    value = ((PyStopIterationObject *)ev)->value;
-    Py_INCREF(value);
-    Py_DECREF(ev);
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
 #else
-    {
-        PyObject* args = PyObject_GetAttr(ev, __pyx_n_s_args);
-        Py_DECREF(ev);
-        if (likely(args)) {
-            value = PyObject_GetItem(args, 0);
-            Py_DECREF(args);
-        }
-        if (unlikely(!value)) {
-            __Pyx_ErrRestore(NULL, NULL, NULL);
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-    }
-#endif
-    *pvalue = value;
-    return 0;
-}
+            long val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
-static CYTHON_INLINE
-void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) {
-    PyObject *exc_type = self->exc_type;
-    PyObject *exc_value = self->exc_value;
-    PyObject *exc_traceback = self->exc_traceback;
-    self->exc_type = NULL;
-    self->exc_value = NULL;
-    self->exc_traceback = NULL;
-    Py_XDECREF(exc_type);
-    Py_XDECREF(exc_value);
-    Py_XDECREF(exc_traceback);
-}
-static CYTHON_INLINE
-int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) {
-    if (unlikely(gen->is_running)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "generator already executing");
-        return 1;
+            return (long) -1;
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (long) -1;
+        val = __Pyx_PyInt_As_long(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    return 0;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to long");
+    return (long) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to long");
+    return (long) -1;
 }
-static CYTHON_INLINE
-PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) {
-    PyObject *retval;
-    assert(!self->is_running);
-    if (unlikely(self->resume_label == 0)) {
-        if (unlikely(value && value != Py_None)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "can't send non-None value to a "
-                            "just-started generator");
-            return NULL;
+
+/* CIntFromPy */
+        static CYTHON_INLINE ADIOS_DATATYPES __Pyx_PyInt_As_ADIOS_DATATYPES(PyObject *x) {
+    const ADIOS_DATATYPES neg_one = (ADIOS_DATATYPES) -1, const_zero = (ADIOS_DATATYPES) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(ADIOS_DATATYPES) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (ADIOS_DATATYPES) val;
         }
-    }
-    if (unlikely(self->resume_label == -1)) {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-    if (value) {
-#if CYTHON_COMPILING_IN_PYPY
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_DATATYPES) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) >= 2 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((((ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) >= 3 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((((((ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) >= 4 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((((((((ADIOS_DATATYPES)digits[3]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-        if (self->exc_traceback) {
-            PyThreadState *tstate = PyThreadState_GET();
-            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-            PyFrameObject *f = tb->tb_frame;
-            Py_XINCREF(tstate->frame);
-            assert(f->f_back == NULL);
-            f->f_back = tstate->frame;
-        }
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (ADIOS_DATATYPES) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(ADIOS_DATATYPES) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_DATATYPES) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(ADIOS_DATATYPES) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((ADIOS_DATATYPES)-1)*(((((ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) ((((((ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(ADIOS_DATATYPES) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((ADIOS_DATATYPES)-1)*(((((((ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) ((((((((ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(ADIOS_DATATYPES) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) (((ADIOS_DATATYPES)-1)*(((((((((ADIOS_DATATYPES)digits[3]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_DATATYPES) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_DATATYPES, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_DATATYPES) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_DATATYPES) ((((((((((ADIOS_DATATYPES)digits[3]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[2]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[1]) << PyLong_SHIFT) | (ADIOS_DATATYPES)digits[0])));
+                        }
+                    }
+                    break;
+            }
 #endif
-        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
-                            &self->exc_traceback);
-    } else {
-        __Pyx_Generator_ExceptionClear(self);
-    }
-    self->is_running = 1;
-    retval = self->body((PyObject *) self, value);
-    self->is_running = 0;
-    if (retval) {
-        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
-                            &self->exc_traceback);
-#if CYTHON_COMPILING_IN_PYPY
-#else
-        if (self->exc_traceback) {
-            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
-            PyFrameObject *f = tb->tb_frame;
-            Py_CLEAR(f->f_back);
+            if (sizeof(ADIOS_DATATYPES) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, long, PyLong_AsLong(x))
+            } else if (sizeof(ADIOS_DATATYPES) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_DATATYPES, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
         }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            ADIOS_DATATYPES val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
-    } else {
-        __Pyx_Generator_ExceptionClear(self);
-    }
-    return retval;
-}
-static CYTHON_INLINE
-PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) {
-    PyObject *ret;
-    PyObject *val = NULL;
-    __Pyx_Generator_Undelegate(gen);
-    __Pyx_PyGen_FetchStopIterationValue(&val);
-    ret = __Pyx_Generator_SendEx(gen, val);
-    Py_XDECREF(val);
-    return ret;
-}
-static PyObject *__Pyx_Generator_Next(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        ret = Py_TYPE(yf)->tp_iternext(yf);
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
-        }
-        return __Pyx_Generator_FinishDelegation(gen);
-    }
-    return __Pyx_Generator_SendEx(gen, Py_None);
-}
-static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
-    PyObject *yf = gen->yieldfrom;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        PyObject *ret;
-        gen->is_running = 1;
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Generator_Send(yf, value);
-        } else {
-            if (value == Py_None)
-                ret = PyIter_Next(yf);
-            else
-                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
-        }
-        gen->is_running = 0;
-        if (likely(ret)) {
-            return ret;
+            return (ADIOS_DATATYPES) -1;
         }
-        return __Pyx_Generator_FinishDelegation(gen);
-    }
-    return __Pyx_Generator_SendEx(gen, value);
-}
-static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) {
-    PyObject *retval = NULL;
-    int err = 0;
-    if (__Pyx_Generator_CheckExact(yf)) {
-        retval = __Pyx_Generator_Close(yf);
-        if (!retval)
-            return -1;
     } else {
-        PyObject *meth;
-        gen->is_running = 1;
-        meth = PyObject_GetAttr(yf, __pyx_n_s_close);
-        if (unlikely(!meth)) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                PyErr_WriteUnraisable(yf);
-            }
-            PyErr_Clear();
-        } else {
-            retval = PyObject_CallFunction(meth, NULL);
-            Py_DECREF(meth);
-            if (!retval)
-                err = -1;
-        }
-        gen->is_running = 0;
-    }
-    Py_XDECREF(retval);
-    return err;
-}
-static PyObject *__Pyx_Generator_Close(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    PyObject *retval, *raised_exception;
-    PyObject *yf = gen->yieldfrom;
-    int err = 0;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        Py_INCREF(yf);
-        err = __Pyx_Generator_CloseIter(gen, yf);
-        __Pyx_Generator_Undelegate(gen);
-        Py_DECREF(yf);
-    }
-    if (err == 0)
-        PyErr_SetNone(PyExc_GeneratorExit);
-    retval = __Pyx_Generator_SendEx(gen, NULL);
-    if (retval) {
-        Py_DECREF(retval);
-        PyErr_SetString(PyExc_RuntimeError,
-                        "generator ignored GeneratorExit");
-        return NULL;
-    }
-    raised_exception = PyErr_Occurred();
-    if (!raised_exception
-        || raised_exception == PyExc_StopIteration
-        || raised_exception == PyExc_GeneratorExit
-        || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)
-        || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))
-    {
-        if (raised_exception) PyErr_Clear();
-        Py_INCREF(Py_None);
-        return Py_None;
+        ADIOS_DATATYPES val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (ADIOS_DATATYPES) -1;
+        val = __Pyx_PyInt_As_ADIOS_DATATYPES(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    return NULL;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to ADIOS_DATATYPES");
+    return (ADIOS_DATATYPES) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to ADIOS_DATATYPES");
+    return (ADIOS_DATATYPES) -1;
 }
-static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    PyObject *typ;
-    PyObject *tb = NULL;
-    PyObject *val = NULL;
-    PyObject *yf = gen->yieldfrom;
-    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
-        return NULL;
-    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
-        return NULL;
-    if (yf) {
-        PyObject *ret;
-        Py_INCREF(yf);
-        if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) {
-            int err = __Pyx_Generator_CloseIter(gen, yf);
-            Py_DECREF(yf);
-            __Pyx_Generator_Undelegate(gen);
-            if (err < 0)
-                return __Pyx_Generator_SendEx(gen, NULL);
-            goto throw_here;
-        }
-        gen->is_running = 1;
-        if (__Pyx_Generator_CheckExact(yf)) {
-            ret = __Pyx_Generator_Throw(yf, args);
+
+/* CIntFromPy */
+        static CYTHON_INLINE ADIOS_LOCKMODE __Pyx_PyInt_As_ADIOS_LOCKMODE(PyObject *x) {
+    const ADIOS_LOCKMODE neg_one = (ADIOS_LOCKMODE) -1, const_zero = (ADIOS_LOCKMODE) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(ADIOS_LOCKMODE) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, PyInt_AS_LONG(x))
         } else {
-            PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s_throw);
-            if (unlikely(!meth)) {
-                Py_DECREF(yf);
-                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                    gen->is_running = 0;
-                    return NULL;
-                }
-                PyErr_Clear();
-                __Pyx_Generator_Undelegate(gen);
-                gen->is_running = 0;
-                goto throw_here;
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
             }
-            ret = PyObject_CallObject(meth, args);
-            Py_DECREF(meth);
-        }
-        gen->is_running = 0;
-        Py_DECREF(yf);
-        if (!ret) {
-            ret = __Pyx_Generator_FinishDelegation(gen);
-        }
-        return ret;
-    }
-throw_here:
-    __Pyx_Raise(typ, val, tb, NULL);
-    return __Pyx_Generator_SendEx(gen, NULL);
-}
-static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    Py_VISIT(gen->closure);
-    Py_VISIT(gen->classobj);
-    Py_VISIT(gen->yieldfrom);
-    Py_VISIT(gen->exc_type);
-    Py_VISIT(gen->exc_value);
-    Py_VISIT(gen->exc_traceback);
-    return 0;
-}
-static int __Pyx_Generator_clear(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    Py_CLEAR(gen->closure);
-    Py_CLEAR(gen->classobj);
-    Py_CLEAR(gen->yieldfrom);
-    Py_CLEAR(gen->exc_type);
-    Py_CLEAR(gen->exc_value);
-    Py_CLEAR(gen->exc_traceback);
-    Py_CLEAR(gen->gi_name);
-    Py_CLEAR(gen->gi_qualname);
-    return 0;
-}
-static void __Pyx_Generator_dealloc(PyObject *self) {
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    PyObject_GC_UnTrack(gen);
-    if (gen->gi_weakreflist != NULL)
-        PyObject_ClearWeakRefs(self);
-    if (gen->resume_label > 0) {
-        PyObject_GC_Track(self);
-#if PY_VERSION_HEX >= 0x030400a1
-        if (PyObject_CallFinalizerFromDealloc(self))
-#else
-        Py_TYPE(gen)->tp_del(self);
-        if (self->ob_refcnt > 0)
-#endif
-        {
-            return;
+            return (ADIOS_LOCKMODE) val;
         }
-        PyObject_GC_UnTrack(self);
-    }
-    __Pyx_Generator_clear(self);
-    PyObject_GC_Del(gen);
-}
-static void __Pyx_Generator_del(PyObject *self) {
-    PyObject *res;
-    PyObject *error_type, *error_value, *error_traceback;
-    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
-    if (gen->resume_label <= 0)
-        return ;
-#if PY_VERSION_HEX < 0x030400a1
-    assert(self->ob_refcnt == 0);
-    self->ob_refcnt = 1;
-#endif
-    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
-    res = __Pyx_Generator_Close(self);
-    if (res == NULL)
-        PyErr_WriteUnraisable(self);
-    else
-        Py_DECREF(res);
-    __Pyx_ErrRestore(error_type, error_value, error_traceback);
-#if PY_VERSION_HEX < 0x030400a1
-    assert(self->ob_refcnt > 0);
-    if (--self->ob_refcnt == 0) {
-        return;
-    }
-    {
-        Py_ssize_t refcnt = self->ob_refcnt;
-        _Py_NewReference(self);
-        self->ob_refcnt = refcnt;
-    }
-#if CYTHON_COMPILING_IN_CPYTHON
-    assert(PyType_IS_GC(self->ob_type) &&
-           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
-    _Py_DEC_REFTOTAL;
-#endif
-#ifdef COUNT_ALLOCS
-    --Py_TYPE(self)->tp_frees;
-    --Py_TYPE(self)->tp_allocs;
+    } else
 #endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_LOCKMODE) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) >= 2 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((((ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) >= 3 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((((((ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) >= 4 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((((((((ADIOS_LOCKMODE)digits[3]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0]));
+                        }
+                    }
+                    break;
+            }
 #endif
-}
-static PyObject *
-__Pyx_Generator_get_name(__pyx_GeneratorObject *self)
-{
-    Py_INCREF(self->gi_name);
-    return self->gi_name;
-}
-static int
-__Pyx_Generator_set_name(__pyx_GeneratorObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (ADIOS_LOCKMODE) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
 #endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__name__ must be set to a string object");
-        return -1;
-    }
-    tmp = self->gi_name;
-    Py_INCREF(value);
-    self->gi_name = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-static PyObject *
-__Pyx_Generator_get_qualname(__pyx_GeneratorObject *self)
-{
-    Py_INCREF(self->gi_qualname);
-    return self->gi_qualname;
-}
-static int
-__Pyx_Generator_set_qualname(__pyx_GeneratorObject *self, PyObject *value)
-{
-    PyObject *tmp;
-#if PY_MAJOR_VERSION >= 3
-    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+            if (sizeof(ADIOS_LOCKMODE) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(ADIOS_LOCKMODE) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_LOCKMODE) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((ADIOS_LOCKMODE)-1)*(((((ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) ((((((ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((ADIOS_LOCKMODE)-1)*(((((((ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) ((((((((ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) (((ADIOS_LOCKMODE)-1)*(((((((((ADIOS_LOCKMODE)digits[3]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_LOCKMODE) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_LOCKMODE, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_LOCKMODE) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_LOCKMODE) ((((((((((ADIOS_LOCKMODE)digits[3]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[2]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[1]) << PyLong_SHIFT) | (ADIOS_LOCKMODE)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(ADIOS_LOCKMODE) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, long, PyLong_AsLong(x))
+            } else if (sizeof(ADIOS_LOCKMODE) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_LOCKMODE, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
 #else
-    if (unlikely(value == NULL || !PyString_Check(value))) {
+            ADIOS_LOCKMODE val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
 #endif
-        PyErr_SetString(PyExc_TypeError,
-                        "__qualname__ must be set to a string object");
-        return -1;
+            return (ADIOS_LOCKMODE) -1;
+        }
+    } else {
+        ADIOS_LOCKMODE val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (ADIOS_LOCKMODE) -1;
+        val = __Pyx_PyInt_As_ADIOS_LOCKMODE(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    tmp = self->gi_qualname;
-    Py_INCREF(value);
-    self->gi_qualname = value;
-    Py_XDECREF(tmp);
-    return 0;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to ADIOS_LOCKMODE");
+    return (ADIOS_LOCKMODE) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to ADIOS_LOCKMODE");
+    return (ADIOS_LOCKMODE) -1;
 }
-static PyGetSetDef __pyx_Generator_getsets[] = {
-    {(char *) "__name__", (getter)__Pyx_Generator_get_name, (setter)__Pyx_Generator_set_name,
-     (char*) PyDoc_STR("name of the generator"), 0},
-    {(char *) "__qualname__", (getter)__Pyx_Generator_get_qualname, (setter)__Pyx_Generator_set_qualname,
-     (char*) PyDoc_STR("qualified name of the generator"), 0},
-    {0, 0, 0, 0, 0}
-};
-static PyMemberDef __pyx_Generator_memberlist[] = {
-    {(char *) "gi_running", T_BOOL, offsetof(__pyx_GeneratorObject, is_running), READONLY, NULL},
-    {0, 0, 0, 0, 0}
-};
-static PyMethodDef __pyx_Generator_methods[] = {
-    {"send", (PyCFunction) __Pyx_Generator_Send, METH_O, 0},
-    {"throw", (PyCFunction) __Pyx_Generator_Throw, METH_VARARGS, 0},
-    {"close", (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0},
-    {0, 0, 0, 0}
-};
-static PyTypeObject __pyx_GeneratorType_type = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "generator",
-    sizeof(__pyx_GeneratorObject),
-    0,
-    (destructor) __Pyx_Generator_dealloc,
-    0,
-    0,
-    0,
+
+/* CIntFromPy */
+        static CYTHON_INLINE ADIOS_READ_METHOD __Pyx_PyInt_As_ADIOS_READ_METHOD(PyObject *x) {
+    const ADIOS_READ_METHOD neg_one = (ADIOS_READ_METHOD) -1, const_zero = (ADIOS_READ_METHOD) 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
-    0,
-#else
-    0,
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(ADIOS_READ_METHOD) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (ADIOS_READ_METHOD) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_READ_METHOD) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) >= 2 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((((ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) >= 3 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((((((ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) >= 4 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((((((((ADIOS_READ_METHOD)digits[3]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0]));
+                        }
+                    }
+                    break;
+            }
 #endif
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
-    0,
-    (traverseproc) __Pyx_Generator_traverse,
-    0,
-    0,
-    offsetof(__pyx_GeneratorObject, gi_weakreflist),
-    0,
-    (iternextfunc) __Pyx_Generator_Next,
-    __pyx_Generator_methods,
-    __pyx_Generator_memberlist,
-    __pyx_Generator_getsets,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-#if PY_VERSION_HEX >= 0x030400a1
-    0,
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
 #else
-    __Pyx_Generator_del,
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (ADIOS_READ_METHOD) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
 #endif
-    0,
-#if PY_VERSION_HEX >= 0x030400a1
-    __Pyx_Generator_del,
+            if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, unsigned long, PyLong_AsUnsignedLong(x))
+            } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (ADIOS_READ_METHOD) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((ADIOS_READ_METHOD)-1)*(((((ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 2 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) ((((((ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((ADIOS_READ_METHOD)-1)*(((((((ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 3 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) ((((((((ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) (((ADIOS_READ_METHOD)-1)*(((((((((ADIOS_READ_METHOD)digits[3]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(ADIOS_READ_METHOD) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(ADIOS_READ_METHOD, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(ADIOS_READ_METHOD) - 1 > 4 * PyLong_SHIFT) {
+                            return (ADIOS_READ_METHOD) ((((((((((ADIOS_READ_METHOD)digits[3]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[2]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[1]) << PyLong_SHIFT) | (ADIOS_READ_METHOD)digits[0])));
+                        }
+                    }
+                    break;
+            }
 #endif
-};
-static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
-                                                  PyObject *closure, PyObject *name, PyObject *qualname) {
-    __pyx_GeneratorObject *gen =
-        PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type);
-    if (gen == NULL)
-        return NULL;
-    gen->body = body;
-    gen->closure = closure;
-    Py_XINCREF(closure);
-    gen->is_running = 0;
-    gen->resume_label = 0;
-    gen->classobj = NULL;
-    gen->yieldfrom = NULL;
-    gen->exc_type = NULL;
-    gen->exc_value = NULL;
-    gen->exc_traceback = NULL;
-    gen->gi_weakreflist = NULL;
-    Py_XINCREF(qualname);
-    gen->gi_qualname = qualname;
-    Py_XINCREF(name);
-    gen->gi_name = name;
-    PyObject_GC_Track(gen);
-    return gen;
-}
-static int __pyx_Generator_init(void) {
-    __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
-    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
-    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
-    if (__pyx_GeneratorType == NULL) {
-        return -1;
+            if (sizeof(ADIOS_READ_METHOD) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, long, PyLong_AsLong(x))
+            } else if (sizeof(ADIOS_READ_METHOD) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(ADIOS_READ_METHOD, PY_LONG_LONG, PyLong_AsLongLong(x))
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            ADIOS_READ_METHOD val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (ADIOS_READ_METHOD) -1;
+        }
+    } else {
+        ADIOS_READ_METHOD val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (ADIOS_READ_METHOD) -1;
+        val = __Pyx_PyInt_As_ADIOS_READ_METHOD(tmp);
+        Py_DECREF(tmp);
+        return val;
     }
-    return 0;
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to ADIOS_READ_METHOD");
+    return (ADIOS_READ_METHOD) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to ADIOS_READ_METHOD");
+    return (ADIOS_READ_METHOD) -1;
 }
 
-static int __Pyx_check_binary_version(void) {
+/* CheckBinaryVersion */
+        static int __Pyx_check_binary_version(void) {
     char ctversion[4], rtversion[4];
     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -29353,7 +42847,8 @@ static int __Pyx_check_binary_version(void) {
     return 0;
 }
 
-#ifndef __PYX_HAVE_RT_ImportModule
+/* ModuleImport */
+        #ifndef __PYX_HAVE_RT_ImportModule
 #define __PYX_HAVE_RT_ImportModule
 static PyObject *__Pyx_ImportModule(const char *name) {
     PyObject *py_name = 0;
@@ -29370,7 +42865,8 @@ bad:
 }
 #endif
 
-#ifndef __PYX_HAVE_RT_ImportType
+/* TypeImport */
+        #ifndef __PYX_HAVE_RT_ImportType
 #define __PYX_HAVE_RT_ImportType
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
     size_t size, int strict)
@@ -29416,14 +42912,14 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class
 #endif
     if (!strict && (size_t)basicsize > size) {
         PyOS_snprintf(warning, sizeof(warning),
-            "%s.%s size changed, may indicate binary incompatibility",
-            module_name, class_name);
+            "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
+            module_name, class_name, basicsize, size);
         if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
     }
     else if ((size_t)basicsize != size) {
         PyErr_Format(PyExc_ValueError,
-            "%.200s.%.200s has the wrong size, try recompiling",
-            module_name, class_name);
+            "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
+            module_name, class_name, basicsize, size);
         goto bad;
     }
     return (PyTypeObject *)result;
@@ -29434,7 +42930,8 @@ bad:
 }
 #endif
 
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+/* InitStrings */
+        static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
     while (t->p) {
         #if PY_MAJOR_VERSION < 3
         if (t->is_unicode) {
@@ -29472,7 +42969,7 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
     return __Pyx_PyObject_AsStringAndSize(o, &ignore);
 }
 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
     if (
 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
             __Pyx_sys_getdefaultencoding_not_ascii &&
@@ -29513,7 +43010,7 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_
 #endif
     } else
 #endif
-#if !CYTHON_COMPILING_IN_PYPY
+#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
     if (PyByteArray_Check(o)) {
         *length = PyByteArray_GET_SIZE(o);
         return PyByteArray_AS_STRING(o);
@@ -29534,7 +43031,7 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
    else return PyObject_IsTrue(x);
 }
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
   PyNumberMethods *m;
   const char *name = NULL;
   PyObject *res = NULL;
@@ -29543,7 +43040,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
 #else
   if (PyLong_Check(x))
 #endif
-    return Py_INCREF(x), x;
+    return __Pyx_NewRef(x);
   m = Py_TYPE(x)->tp_as_number;
 #if PY_MAJOR_VERSION < 3
   if (m && m->nb_int) {
@@ -29583,18 +43080,55 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_ssize_t ival;
   PyObject *x;
 #if PY_MAJOR_VERSION < 3
-  if (likely(PyInt_CheckExact(b)))
-      return PyInt_AS_LONG(b);
+  if (likely(PyInt_CheckExact(b))) {
+    if (sizeof(Py_ssize_t) >= sizeof(long))
+        return PyInt_AS_LONG(b);
+    else
+        return PyInt_AsSsize_t(x);
+  }
 #endif
   if (likely(PyLong_CheckExact(b))) {
-    #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-     #if CYTHON_USE_PYLONG_INTERNALS
-       switch (Py_SIZE(b)) {
-       case -1: return -(sdigit)((PyLongObject*)b)->ob_digit[0];
-       case  0: return 0;
-       case  1: return ((PyLongObject*)b)->ob_digit[0];
-       }
-     #endif
+    #if CYTHON_USE_PYLONG_INTERNALS
+    const digit* digits = ((PyLongObject*)b)->ob_digit;
+    const Py_ssize_t size = Py_SIZE(b);
+    if (likely(__Pyx_sst_abs(size) <= 1)) {
+        ival = likely(size) ? digits[0] : 0;
+        if (size == -1) ival = -ival;
+        return ival;
+    } else {
+      switch (size) {
+         case 2:
+           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
+             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case -2:
+           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
+             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case 3:
+           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
+             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case -3:
+           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
+             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case 4:
+           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
+             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+         case -4:
+           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
+             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
+           }
+           break;
+      }
+    }
     #endif
     return PyLong_AsSsize_t(b);
   }
diff --git a/wrappers/numpy/adios_mpi.pyx b/wrappers/numpy/adios_mpi.pyx
index 519283c..79d8ecd 100644
--- a/wrappers/numpy/adios_mpi.pyx
+++ b/wrappers/numpy/adios_mpi.pyx
@@ -4,10 +4,16 @@
 .. moduleauthor:: Jong Choi <choij at ornl.gov>
 """
 
+from __future__ import print_function
+
+cdef extern from "mpi-compat.h": pass
+cdef extern from "string.h" nogil:
+    char   *strdup  (const char *s)
+
 import numpy as np
 cimport numpy as np
 
-import mpi4py.MPI as MPI 
+import mpi4py.MPI as MPI
 cimport mpi4py.MPI as MPI
 
 import cython
@@ -15,11 +21,56 @@ cimport cython
 
 from libc.stdlib cimport malloc, free
 from cpython.string cimport PyString_AsString
+from cpython.bytes cimport PyBytes_AsString, PyBytes_AS_STRING
+from cpython.unicode cimport PyUnicode_AsUTF8String, PyUnicode_Check
+from cpython.ref cimport PyObject
+
+import os
+from ._hl import selections as sel
+
+## To convert a string to bytes: "str".encode()
+## To convert bytes to a String: b"".decode() or str(b"")
+cpdef void test_str(str x):
+    cdef char * y = strdup(x.encode())
+    print(x, str(y))
+
+from cpython.version cimport PY_MAJOR_VERSION
+
+## Fixed-length ASCII (NumPy S type)
+## Variable-length ASCII (Python 2 str, Python 3 bytes)
+## Variable-length UTF-8 (Python 2 unicode, Python 3 str)
+
+## bytes-to-str problem for supporting both python2 and python3
+## python2: str(b"") return str
+## python3: str(b"") return 'b""'. Correct way: b"".decode()
+cpdef str b2s(bytes x):
+    if PY_MAJOR_VERSION < 3:
+        return str(x)
+    else:
+        return x.decode()
+
+cpdef bytes s2b(str x):
+    if PY_MAJOR_VERSION < 3:
+        return <bytes>x
+    else:
+        return x.encode()
+
+def normalize_key(keys):
+    if not isinstance(keys, list):
+        keys = [keys,]
+    l = list()
+    for key in keys:
+        if key.startswith('/'):
+            key = key[1:]
+        if '/' not in key:
+            l.append(key)
+    return (l)
 
 cdef char ** to_cstring_array(list_str):
     cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
     for i in xrange(len(list_str)):
-        ret[i] = PyString_AsString(list_str[i])
+        bstr = s2b(list_str[i])
+        ret[i] = PyBytes_AsString(bstr)
     return ret
 
 ## ====================
@@ -63,40 +114,40 @@ cdef extern from "adios.h":
     ctypedef char* const_char_ptr "const char*"
 
     cdef int adios_init (char * config, MPI_Comm)
-    
+
     cdef int adios_finalize (int mype)
-    
+
     cdef int adios_open (int64_t * fd,
                          char * group_name,
-                         char * name, 
+                         char * name,
                          char * mode,
                          MPI_Comm comm)
-    
+
     cdef int adios_group_size (int64_t fd_p,
                                uint64_t data_size,
                                uint64_t * total_size)
-    
+
     cdef int adios_write (int64_t fd_p,
                           char * name,
                           void * var)
-    
+
     cdef int adios_read (int64_t fd_p,
                          char * name,
                          void * buffer,
                          uint64_t buffer_size)
 
     cdef int adios_close(int64_t fd_p)
-    
+
     cdef int adios_init_noxml (MPI_Comm)
-    
+
     cdef int adios_allocate_buffer (ADIOS_BUFFER_ALLOC_WHEN when,
                                     uint64_t buffer_size)
-    
+
     cdef int adios_declare_group (int64_t * id,
                                   char * name,
                                   char * time_index,
                                   ADIOS_FLAG stats)
-    
+
     cdef int adios_define_var (int64_t group_id,
                                char * name,
                                char * path,
@@ -104,7 +155,7 @@ cdef extern from "adios.h":
                                char * dimensions,
                                char * global_dimensions,
                                char * local_offsets)
-    
+
     cdef int adios_define_attribute (int64_t group,
                                      char * name,
                                      char * path,
@@ -118,7 +169,7 @@ cdef extern from "adios.h":
                                              ADIOS_DATATYPES type,
                                              int nelems,
                                              void * values)
-    
+
     cdef int adios_select_method (int64_t group,
                                   char * method,
                                   char * parameters,
@@ -141,7 +192,7 @@ cdef extern from "adios_selection.h":
 
     ctypedef struct ADIOS_SELECTION_WRITEBLOCK_STRUCT:
         pass
-    
+
     ctypedef struct ADIOS_SELECTION_AUTO_STRUCT:
         pass
 
@@ -155,10 +206,18 @@ cdef extern from "adios_selection.h":
         ADIOS_SELECTION_TYPE    type
         ADIOS_SELECTION_UNION   u
 
-    cdef ADIOS_SELECTION * adios_selection_boundingbox (int ndim,
+    cdef ADIOS_SELECTION * adios_selection_boundingbox (uint64_t ndim,
                                                         const uint64_t *start,
                                                         const uint64_t *count)
 
+    cdef ADIOS_SELECTION * adios_selection_points (uint64_t ndim,
+                                                   uint64_t npoints,
+                                                   const uint64_t *points)
+
+    cdef ADIOS_SELECTION * adios_selection_writeblock (int index)
+
+    cdef void adios_selection_delete (ADIOS_SELECTION * sel)
+
 cdef extern from "adios_read.h":
     ctypedef enum ADIOS_READ_METHOD:
         pass
@@ -169,47 +228,55 @@ cdef extern from "adios_read.h":
         ADIOS_LOCKMODE_ALL
 
     ctypedef struct ADIOS_FILE:
-        uint64_t fh               
-        int      nvars            
-        char     ** var_namelist  
-        int      nattrs           
-        char     ** attr_namelist 
-        int      nmeshes          
-        char     ** mesh_namelist 
-        int      current_step     
-        int      last_step        
-        char     *path            
-        int      endianness       
-        int      version          
+        uint64_t fh
+        int      nvars
+        char     ** var_namelist
+        int      nattrs
+        char     ** attr_namelist
+        int      nmeshes
+        char     ** mesh_namelist
+        int      current_step
+        int      last_step
+        char     *path
+        int      endianness
+        int      version
         uint64_t file_size
 
     ctypedef struct ADIOS_VARINFO:
         int        varid
-        ADIOS_DATATYPES type  
-        int        ndim       
-        uint64_t * dims       
-        int        nsteps     
-        void     * value      
-        int      * nblocks    
+        ADIOS_DATATYPES type
+        int        ndim
+        uint64_t * dims
+        int        nsteps
+        void     * value
+        int      * nblocks
         int        sum_nblocks
+        ADIOS_VARBLOCK *blockinfo
 
-    cdef int adios_read_init_method (ADIOS_READ_METHOD method, 
-                                     MPI_Comm comm, 
+    ctypedef struct ADIOS_VARBLOCK:
+        uint64_t * start
+        uint64_t * count
+        uint32_t process_id
+        uint32_t time_index
+
+    cdef int adios_read_init_method (ADIOS_READ_METHOD method,
+                                     MPI_Comm comm,
                                      char * parameters)
     cdef int adios_read_finalize_method(ADIOS_READ_METHOD method)
-    cdef ADIOS_FILE * adios_read_open (const char * fname, 
-                                       ADIOS_READ_METHOD method, 
-                                       MPI_Comm comm, 
+    cdef ADIOS_FILE * adios_read_open (const char * fname,
+                                       ADIOS_READ_METHOD method,
+                                       MPI_Comm comm,
                                        ADIOS_LOCKMODE lock_mode,
                                        float timeout_sec)
-    cdef ADIOS_FILE * adios_read_open_file (const char * fname, 
-                                            ADIOS_READ_METHOD method, 
+    cdef ADIOS_FILE * adios_read_open_file (const char * fname,
+                                            ADIOS_READ_METHOD method,
                                             MPI_Comm comm)
     cdef int adios_read_close (ADIOS_FILE *fp)
     cdef int adios_advance_step (ADIOS_FILE *fp, int last, float timeout_sec)
     cdef void adios_release_step (ADIOS_FILE *fp)
     cdef ADIOS_VARINFO * adios_inq_var (ADIOS_FILE *fp, const char * varname)
     cdef ADIOS_VARINFO * adios_inq_var_byid (ADIOS_FILE *fp, int varid)
+    cdef int adios_inq_var_blockinfo (ADIOS_FILE *fp, ADIOS_VARINFO * varinfo)
     cdef void adios_free_varinfo (ADIOS_VARINFO *cp)
     cdef int adios_schedule_read (const ADIOS_FILE * fp,
                                   const ADIOS_SELECTION * sel,
@@ -217,7 +284,7 @@ cdef extern from "adios_read.h":
                                   int from_steps,
                                   int nsteps,
                                   void * data)
-    cdef int adios_schedule_read_byid (const ADIOS_FILE * fp, 
+    cdef int adios_schedule_read_byid (const ADIOS_FILE * fp,
                                        const ADIOS_SELECTION * sel,
                                        int varid,
                                        int from_steps,
@@ -230,7 +297,7 @@ cdef extern from "adios_read.h":
                              ADIOS_DATATYPES  * type,
                              int * size,
                              void ** data)
-    
+
     cdef char * adios_type_to_string (ADIOS_DATATYPES type)
 
 ## ====================
@@ -259,20 +326,24 @@ class FLAG:
     UNKNOWN = 0
     YES = 1
     NO = 2
-    
+
 class BUFFER_ALLOC_WHEN:
     UNKNOWN = 0
     NOW = 1
     LATER = 2
 
 class READ_METHOD:
-    BP            = 0 
+    BP            = 0
     BP_AGGREGATE  = 1
     DATASPACES    = 3
     DIMES         = 4
     FLEXPATH      = 5
     ICEE          = 6
 
+class LOCKMODE:
+    NONE = 0
+    CURRENT = 1
+    ALL =2
 
 cpdef __parse_index(index, ndim):
     # Fix index, handling ellipsis and incomplete slices.
@@ -281,12 +352,14 @@ cpdef __parse_index(index, ndim):
 
     fixed = []
     length = len(index)
-    
+
     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))
+        elif isinstance(slice_, (float)):
+            fixed.append(slice(int(slice_), int(slice_)+1, None))
         else:
             fixed.append(slice_)
         length -= 1
@@ -301,16 +374,21 @@ cpdef __parse_index(index, ndim):
 ## ADIOS Write API
 ## ====================
 
-cpdef init(char * config, MPI.Comm comm = MPI.COMM_WORLD):
-    return adios_init(config, comm.ob_mpi)
+cdef MPI.Comm init_comm
+cdef MPI.Comm read_init_comm
 
-cpdef int64_t open(char * group_name,
-                   char * name,
-                   char * mode,
+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)
+
+cpdef int64_t open(str group_name,
+                   str name,
+                   str mode,
                    MPI.Comm comm = MPI.COMM_WORLD):
     cdef int64_t fd
     cdef int result
-    result = adios_open(&fd, group_name, name, mode, comm.ob_mpi)
+    result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm.ob_mpi)
     return fd
 
 cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
@@ -319,7 +397,7 @@ cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):
     result = adios_group_size(fd_p, data_size, &total_size)
     return total_size
 
-cpdef int write (int64_t fd_p, char * name, val, dtype=None):
+cpdef int write (int64_t fd_p, str name, val, dtype=None):
     cdef np.ndarray val_
     if isinstance(val, (np.ndarray)):
         if val.flags.contiguous:
@@ -329,25 +407,32 @@ cpdef int write (int64_t fd_p, char * name, val, dtype=None):
     else:
         val_ = np.array(val, dtype=dtype)
 
-    return adios_write (fd_p, name, <void *> val_.data)
+    cdef void * ptr
+    if (val_.dtype.char in ('S', 'U')):
+        bstr = val_.tostring()
+        ptr = <void *> PyBytes_AS_STRING(bstr)
+    else:
+        ptr = <void *> val_.data
+
+    return adios_write (fd_p, s2b(name), ptr)
 
-cpdef int write_int (int64_t fd_p, char * name, int val):
-    return adios_write (fd_p, name, &val)
+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, char * name, long val):
-    return adios_write (fd_p, name, &val)
+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, char * name, float val):
-    return adios_write (fd_p, name, &val)
+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, char * name, double val):
-    return adios_write (fd_p, name, &val)
+cpdef int write_double (int64_t fd_p, str name, double val):
+    return adios_write (fd_p, s2b(name), &val)
 
 
-cpdef int read(int64_t fd_p, char * name, np.ndarray val):
+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, name, <void *> val.data, val.itemsize * val.size)
+    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):
     return adios_close(fd_p)
@@ -358,54 +443,58 @@ cpdef int finalize(int mype = 0):
 ## ====================
 ## ADIOS No-XML API
 ## ====================
+
 cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):
-    return adios_init_noxml(comm.ob_mpi)
+    global init_comm
+    init_comm = comm.Clone()
+    return adios_init_noxml(init_comm.ob_mpi)
 
 cpdef int allocate_buffer(int when,
                           uint64_t buffer_size):
     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,
                                  buffer_size)
 
-cpdef int64_t declare_group(char * name,
-                            char * time_index = "",
+cpdef int64_t declare_group(str name,
+                            str time_index = "",
                             int stats = 1):
     cdef int64_t id = 0
     adios_declare_group (&id,
-                         name,
-                         time_index,
+                         s2b(name),
+                         s2b(time_index),
                          <ADIOS_FLAG> stats)
     return id
 
 cpdef int define_var(int64_t group_id,
-                     char * name,
-                     char * path,
+                     str name,
+                     str path,
                      int atype,
-                     char * dimensions = "",
-                     char * global_dimensions = "",
-                     char * local_offsets = ""):
+                     str dimensions = "",
+                     str global_dimensions = "",
+                     str local_offsets = ""):
     return adios_define_var(group_id,
-                            name, path,
+                            s2b(name),
+                            s2b(path),
                             <ADIOS_DATATYPES> atype,
-                            dimensions,
-                            global_dimensions,
-                            local_offsets)
+                            s2b(dimensions),
+                            s2b(global_dimensions),
+                            s2b(local_offsets))
 
 cpdef int define_attribute (int64_t group,
-                            char * name,
-                            char * path,
+                            str name,
+                            str path,
                             int atype,
-                            char * value,
-                            char * var):
+                            str value,
+                            str var):
     return adios_define_attribute (group,
-                                   name,
-                                   path,
+                                   s2b(name),
+                                   s2b(path),
                                    <ADIOS_DATATYPES> atype,
-                                   value,
-                                   var)
+                                   s2b(value),
+                                   s2b(var))
 
 cpdef int define_attribute_byvalue (int64_t group,
-                                    char * name,
-                                    char * path,
+                                    str name,
+                                    str path,
                                     val):
     cdef np.ndarray val_
     if isinstance(val, (np.ndarray)):
@@ -420,40 +509,41 @@ cpdef int define_attribute_byvalue (int64_t group,
 
     cdef char * pt1
     cdef char ** pt2
-    if (val_.dtype.char == 'S'):
+    if (val_.dtype.char in ('S', 'U')):
         if (val_.size == 1):
-            pt1 = PyString_AsString(val)
+            bstr = s2b(str(val))
+            pt1 = PyBytes_AsString(bstr)
             adios_define_attribute_byvalue (group,
-                                            name,
-                                            path,
+                                            s2b(name),
+                                            s2b(path),
                                             DATATYPE.string,
                                             1,
                                             <void *> pt1)
         else:
             pt2 = to_cstring_array(val)
             adios_define_attribute_byvalue (group,
-                                            name,
-                                            path,
+                                            s2b(name),
+                                            s2b(path),
                                             DATATYPE.string_array,
                                             len(val),
                                             <void *> pt2)
             free(pt2)
     else:
         adios_define_attribute_byvalue (group,
-                                        name,
-                                        path,
+                                        s2b(name),
+                                        s2b(path),
                                         <ADIOS_DATATYPES> atype,
                                         val_.size,
                                         <void *> val_.data)
 
 cpdef int select_method (int64_t group,
-                         char * method,
-                         char * parameters = "",
-                         char * base_path = ""):
+                         str method,
+                         str parameters = "",
+                         str base_path = ""):
     return adios_select_method (group,
-                                method,
-                                parameters,
-                                base_path)
+                                s2b(method),
+                                s2b(parameters),
+                                s2b(base_path))
 
 
 ## ====================
@@ -490,33 +580,34 @@ cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
     elif t == adios_double_complex:
         ntype = np.dtype(np.complex128)
     elif t == adios_string:
-        ntype = np.dtype((np.str_, strlen))
+        ## Use string_ instead of str_ for py3
+        ntype = np.dtype((np.string_, strlen))
     else:
         ntype = None
 
     return ntype
 
 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)
-    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)       
-    print '%15s : %d' % ('version', f.version)       
-    print '%15s : %lu' % ('file_size', f.file_size)
+    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)]))
+    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))
+    print ('%15s : %lu' % ('file_size', f.file_size))
 
 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)])
-    print '%15s : %d' % ('nsteps', v.nsteps)
+    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))
 
-cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
+cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
     if (name == "BP"):
         method = READ_METHOD.BP
     elif (name == "BP_AGGREGATE"):
@@ -530,9 +621,9 @@ cdef ADIOS_READ_METHOD str2adiosreadmethod(bytes name):
     elif (name == "ICEE"):
         method = READ_METHOD.ICEE
     else:
-        print '[WARN] Invalid read method name:', name, '. Use default BP method'
+        print ('[WARN] Invalid read method name:', name, '. Use default BP method')
         method = READ_METHOD.BP
-        
+
     return method
 
 cpdef np2adiostype(np.dtype nptype):
@@ -542,7 +633,7 @@ cpdef np2adiostype(np.dtype nptype):
     cdef atype = DATATYPE.unknown
 
     if (nptype == np.bool_):
-        atype = DATATYPE.integer
+        atype = DATATYPE.byte
     elif (nptype == np.int8):
         atype = DATATYPE.byte
     elif (nptype == np.int16):
@@ -573,7 +664,7 @@ cpdef np2adiostype(np.dtype nptype):
         atype = DATATYPE.complex
     elif (nptype == np.complex128):
         atype = DATATYPE.double_complex
-    elif (nptype.char == 'S'):
+    elif (nptype.char in ('S', 'U')):
         atype = DATATYPE.string
     else:
         atype = DATATYPE.unknown
@@ -588,20 +679,46 @@ cpdef str adiostype2string (ADIOS_DATATYPES type):
 ## ====================
 
 """ Call adios_read_init_method """
-cpdef int read_init(char * method_name = "BP",
+cpdef int read_init(str method_name = "BP",
                     MPI.Comm comm = MPI.COMM_WORLD,
-                    char * parameters = ""):
+                    str parameters = ""):
+    global read_init_comm
+    read_init_comm = comm.Clone()
     cdef method = str2adiosreadmethod(method_name)
-    return adios_read_init_method (method, comm.ob_mpi, parameters)
+    return adios_read_init_method (method, read_init_comm.ob_mpi, s2b(parameters))
 
 
 """ Call adios_read_finalize_method """
-cpdef int read_finalize(char * method_name = "BP"):
+cpdef int read_finalize(str method_name = "BP"):
     cdef method = str2adiosreadmethod(method_name)
-    return adios_read_finalize_method (method)
+    return adios_read_finalize_method (s2b(method))
+
+## dict for handling '/' prefix
+cdef class softdict(dict):
+    def __getitem__(self, varname):
+        if not isinstance(varname, tuple):
+            varname = (varname,)
+
+        if len(varname) > 1:
+            raise KeyError(varname)
+
+        for key_ in varname:
+            if not isinstance(key_, str):
+                raise TypeError("Unhashable type")
+
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in dict.keys(self):
+                return dict.get(self, key_)
+
+            if '/'+key_ in dict.keys(self):
+                return dict.get(self, '/'+key_)
+
+        raise KeyError(key_)
 
 ## Python class for ADIOS_FILE structure
-cdef class file:
+cdef class file(dict):
     """
     file class for Adios file read and write.
 
@@ -614,14 +731,14 @@ cdef class file:
         timeout_sec (float, optional): Timeout seconds for stream reader (default: 0.0).
 
     Example:
-    
+
     >>> import adios as ad
     >>> f = ad.file('adiosfile.bp')
-    
+
     """
-    
+
     cpdef ADIOS_FILE * fp
-    cpdef bytes name
+    cpdef str name
     cpdef int nvars
     cpdef int nattrs
     cpdef int current_step
@@ -630,10 +747,12 @@ cdef class file:
     cpdef int version
     cpdef int file_size
     cpdef bint is_stream
-    
+
     ## Public Memeber
-    cpdef public dict var
-    cpdef public dict attr
+    cpdef public softdict vars
+    cpdef public softdict attrs
+    cpdef public var
+    cpdef public attr
 
     property name:
         """ The filename (or stream name) associated with. """
@@ -669,8 +788,8 @@ cdef class file:
         """ The version of Adios. """
         def __get__(self):
             return self.version
-        
-    property file_sizec:
+
+    property file_size:
         """ The size of Adios file. """
         def __get__(self):
             return self.file_size
@@ -680,24 +799,24 @@ cdef class file:
         def __get__(self):
             return self.is_stream
 
-    def __init__(self, char * fname,
-                 char * method_name = 'BP',
+    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,
                  float timeout_sec = 0.0):
         self.fp = NULL
-        self.var = {}
-        self.attr = {}
+        self.vars = softdict()
+        self.attrs = softdict()
         self.is_stream = is_stream
         cdef method = str2adiosreadmethod(method_name)
 
         if (is_stream):
-            self.fp = adios_read_open(fname, method, comm.ob_mpi,
+            self.fp = adios_read_open(s2b(fname), method, comm.ob_mpi,
                                       lock_mode, timeout_sec)
         else:
-            self.fp = adios_read_open_file(fname, method, comm.ob_mpi)
-            
+            self.fp = adios_read_open_file(s2b(fname), method, comm.ob_mpi)
+
         assert self.fp != NULL, 'Not an open file'
 
         self.name = fname.split('/')[-1]  ## basename
@@ -708,30 +827,45 @@ cdef class file:
         self.endianness = self.fp.endianness
         self.version = self.fp.version
         self.file_size = self.fp.file_size
-    
-        for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
-            self.var[name] = var(self, name)
 
         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
-            self.attr[name] = attr(self, name)
+            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))
+
+        self.var = self.vars
+        self.attr = self.attrs
 
     def __del__(self):
         """ Close file on destruction. """
         self.close()
-            
+
+    def __enter__(self):
+        """ Enter for with statemetn """
+        return self
+
+    def __exit__(self, exception_type, exception_value, traceback):
+        """ Close file on exit. """
+        self.close()
+
     cpdef close(self):
         """ Close the open file. """
         assert self.fp != NULL, 'Not an open file'
         adios_read_close(self.fp)
         self.fp = NULL
-        
+
     cpdef printself(self):
         """ Print native ADIOS_FILE structure. """
         assert self.fp != NULL, 'Not an open file'
-        print '=== AdiosFile ==='
-        print '%15s : %lu' % ('fp', <unsigned long> self.fp)
+        print ('=== AdiosFile ===')
+        print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
         printfile(self.fp)
 
+    cpdef release_step(self):
+        """ Release the current step lock and let the writer code to progress """
+        adios_release_step(self.fp)
+
     cpdef advance(self, int last = 0, float timeout_sec = 0.0):
         """
         Advance a timestep for stream reader.
@@ -748,20 +882,20 @@ cdef class file:
             self.current_step = self.fp.current_step
             self.last_step = self.fp.last_step
 
-            for v in self.var.values():
+            for v in self.vars.values():
                 v.advance()
-                
+
         return val
-        
+
     def __getitem__(self, varname):
         """
-        Return Adios variable.
+        Return Adios variable, attribute, or group.
 
         Args:
-            varname (str): variable name.
+            varname (str): variable or attribute name.
 
         Raises:
-            KeyError: If no varname exists.
+            KeyError: If no name exists.
 
         """
         if not isinstance(varname, tuple):
@@ -769,38 +903,135 @@ cdef class file:
 
         if len(varname) > 1:
             raise KeyError(varname)
-        
+
         for key_ in varname:
             if not isinstance(key_, str):
                 raise TypeError("Unhashable type")
 
-            if key_ in self.var.keys():
-                return self.var.get(key_)
-            elif key_ in self.attr.keys():
-                return self.attr.get(key_)
-            else:
-                raise KeyError(key_)
-        
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in self.vars.keys():
+                return self.vars.get(key_)
+
+            if key_ in self.attrs.keys():
+                return self.attrs.get(key_)
+
+            if '/'+key_ in self.vars.keys():
+                return self.vars.get('/'+key_)
+
+            if '/'+key_ in self.attrs.keys():
+                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_):
+                    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_):
+                    return group(self, key_)
+
+        raise KeyError(key_)
+
+
     def __repr__(self):
         """ Return string representation. """
-        return ("AdiosFile (path=%r, nvars=%r, var=%r, nattrs=%r, attr=%r, "
+        return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
                 "current_step=%r, last_step=%r, file_size=%r)") % \
-                (self.fp.path,
+                (self.fp.path if self.fp != NULL else None,
                  self.nvars,
-                 self.var.keys(),
+                 self.vars.keys(),
                  self.nattrs,
-                 self.attr.keys(),
+                 self.attrs.keys(),
                  self.current_step,
                  self.last_step,
                  self.file_size)
 
-cdef class var:
+    ## For access var/attr/group as an attribute
+    def __getattr__(self, varname):
+        return self.__getitem__(varname)
+
+    ## To support ipython tab completion
+    def __dir__(self):
+        k0 = dir(type(self))
+        ## 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
+
+    ## Require for dictionary key completion
+    def keys(self):
+        return self.vars.keys() + self.attrs.keys()
+
+    def is_open(self):
+        """ Check whether file is open or closed """
+        return True if self.fp != NULL else False
+
+    ## for py2
+    def __nonzero__(self):
+        return self.is_open()
+
+    ## for py3
+    def __bool__(self):
+        """ Check whether file is open or closed """
+        return self.is_open()
+
+    def dirs(self):
+        """ 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])
+        for k in self.attrs.keys():
+            if k.startswith('/'): k = k[1:]
+            s.add(os.path.dirname(k).split('/')[0])
+        return list(s-set(['']))
+
+cdef class blockinfo(object):
+    cpdef tuple start
+    cpdef tuple count
+    cpdef int process_id
+    cpdef int time_index
+
+    property start:
+        def __get__(self):
+            return self.start
+
+    property count:
+        def __get__(self):
+            return self.count
+
+    property process_id:
+        def __get__(self):
+            return self.process_id
+
+    property time_index:
+        def __get__(self):
+            return self.time_index
+
+    def __init__(self, tuple start, tuple count, int process_id, int time_index):
+        self.start = start
+        self.count = count
+        self.process_id = process_id
+        self.time_index = time_index
+
+    def __repr__(self):
+        return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
+               (self.process_id,
+                self.time_index,
+                self.start,
+                self.count)
+
+cdef class var(dict):
     """
     Adios variable class.
 
     Unlike attributes whose values are populated on initialization,
     variable's values will be returned by explicitly calling read() or
-    array access interface ([]).  
+    array access interface ([]).
 
     Args:
         file (file): Associated file class
@@ -809,27 +1040,29 @@ cdef class var:
     Note:
         Users do not need to create this class manually.
     """
-    
+
     cdef file file
     cdef ADIOS_VARINFO * vp
 
-    cpdef bytes name
+    cpdef str name
     cpdef int varid
     cpdef np.dtype dtype
     cpdef int ndim
     cpdef tuple dims
     cpdef int nsteps
+    cpdef softdict attrs
+    cpdef list blockinfo
 
     property name:
         """ The variable name. """
         def __get__(self):
             return self.name
-    
+
     property varid:
         """ Internal variable id. """
         def __get__(self):
             return self.varid
-    
+
     property dtype:
         """ Variable type as in numpy.dtype. """
         def __get__(self):
@@ -845,22 +1078,62 @@ cdef class var:
         def __get__(self):
             return self.dims
 
+    property shape:
+        """ The shape of the variable. """
+        def __get__(self):
+            return self.dims
+
+    property size:
+        """ The number of elements in the array. """
+        def __get__(self):
+            return np.prod(self.dims)
+
     property nsteps:
         """ The number of time steps of the variable. """
         def __get__(self):
             return self.nsteps
 
-    def __init__(self, file file, char * name):
+    property attrs:
+        """ Attributes associated with the variable. """
+        def __get__(self):
+            return self.attrs
+
+    property blockinfo:
+        """ Block information. """
+        def __get__(self):
+            if self.blockinfo is None:
+                ll = list()
+                k = 0
+                for t in range(self.vp.nsteps):
+                    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)])
+                        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)
+                        k += 1
+                    ll.append(l)
+                self.blockinfo = ll
+            return (self.blockinfo)
+
+    def __init__(self, file file, str name):
         self.file = file
         self.vp = NULL
 
         assert self.file.fp != NULL, 'Not an open file'
-        self.vp = adios_inq_var(self.file.fp, name)
+        self.vp = adios_inq_var(self.file.fp, s2b(name))
         assert self.vp != NULL, 'Not a valid var'
 
+        ## Further populate vp.blockinfo
+        adios_inq_var_blockinfo(self.file.fp, self.vp)
+
         self.name = name
         self.varid = self.vp.varid
-        self.ndim = self.vp.ndim                 
+        self.ndim = self.vp.ndim
         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
         self.nsteps = self.vp.nsteps
 
@@ -869,6 +1142,13 @@ cdef class var:
         else:
             self.dtype = adios2npdtype(self.vp.type)
 
+        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]
+            if name.startswith('/' + self.name + '/'):
+                self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
+
     def __del__(self):
         self.close()
 
@@ -884,7 +1164,105 @@ cdef class var:
         assert self.vp != NULL, 'Not a valid var'
         self.nsteps = self.vp.nsteps
 
-    cpdef read(self, tuple offset = (), tuple count = (), from_steps = None, nsteps = None, fill = 0):
+    cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):
+        """ Perform points read.
+
+        Read data from an ADIOS BP file based on the given list of point index.
+
+        Args:
+            points (tuple of int, optional): points index defined by ((o1,o2,...,oN),...) (default: ())
+            from_steps (int, optional): starting step index (default: None)
+            nsteps (int, optional): number of time dimensions (default: None)
+
+        Returns:
+            NumPy 1-D ndarray
+
+        Raises:
+            IndexError: If dimension is mismatched or out of the boundary.
+        """
+        if from_steps is None:
+            from_steps = 0 ##self.file.current_step
+
+        if nsteps is None:
+            nsteps = self.file.last_step - from_steps + 1
+
+        assert self.dtype is not None, 'Data type is not supported yet'
+
+        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):
+            points = (points,)
+
+        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,))
+
+        cpdef uint64_t ndim = self.ndim
+        cpdef uint64_t npoints = len(points)
+        ##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])
+
+        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])
+
+        cdef ADIOS_SELECTION * sel
+        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)
+
+        return var
+
+    cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):
+        """ Perform block read.
+
+        Read data from an ADIOS BP file based on the rank id.
+
+        Args:
+            rank (int): rank id
+            from_steps (int, optional): starting step index (default: None)
+            nsteps (int, optional): number of time dimensions (default: None)
+
+        Returns:
+            NumPy 1-D ndarray
+
+        Raises:
+            IndexError: If dimension is mismatched or out of the boundary.
+        """
+        if from_steps is None:
+            from_steps = 0 ##self.file.current_step
+
+        if nsteps is None:
+            nsteps = self.file.last_step - from_steps + 1
+
+        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)
+
+        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)]
+        if (nsteps>1):
+            shape.insert(0, nsteps)
+        cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
+
+        cdef ADIOS_SELECTION * sel
+        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)
+        return var
+
+    cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
+               from_steps = None, nsteps = None, fill = 0, step_scalar = True):
         """ Perform read.
 
         Read data from an ADIOS BP file. Subset reading is
@@ -894,13 +1272,15 @@ cdef class var:
         Args:
             offset (tuple of int, optional): offset (default: ())
             count (tuple of int, optional): count (default: ())
+            scalar (tuple of bool, optional): scalar (default: ())
             from_steps (int, optional): starting step index (default: None)
             nsteps (int, optional): number of time dimensions (default: None)
             fill (value, optional): default fill value (default: 0)
+            step_scalar (bool, optional): add time dim or not (default: True)
 
         Returns:
             NumPy ndarray
-            
+
         Raises:
             IndexError: If dimension is mismatched or out of the boundary.
 
@@ -908,7 +1288,7 @@ cdef class var:
         Example:
 
         The following command will read the full data:
-        
+
         >>> var.read()
 
         which is equvalent to
@@ -917,7 +1297,7 @@ cdef class var:
 
 
         The following command is for subset reading:
-        
+
         >>> var.read(offset=(1,2), count=(3,4))
 
         which will return an 3x4 array offset by (1,2) in the original
@@ -929,7 +1309,7 @@ cdef class var:
 
         >>> var.read(count=(5,6))
         >>> var[:5, :6]
-        
+
         """
         if from_steps is None:
             from_steps = 0 ##self.file.current_step
@@ -938,39 +1318,46 @@ cdef class var:
             nsteps = self.file.last_step - from_steps + 1
 
         assert self.dtype is not None, 'Data type is not supported yet'
+
         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)]
         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)
-        
+
         cdef np.ndarray npoffset
         if len(offset) == 0:
             npoffset = npshape.copy()
             npoffset.fill(0)
         else:
             npoffset = np.array(offset, dtype=np.int64)
-        
+
         cdef np.ndarray npcount
         if len(count) == 0:
             npcount = npshape - npoffset
         else:
             npcount = np.array(count, dtype=np.int64)
 
-        if npshape.ndim != npoffset.ndim:
-            raise IndexError('Offset dimension mismatch (offset dim: %r)' % (npoffset.ndim))
+        if len(scalar) == 0:
+            scalar = tuple((False,) * len(npshape))
+
+        if len(npshape) != len(npoffset):
+            raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
 
-        if npshape.ndim != npcount.ndim:
-            raise IndexError('Count dimension mismatch (count dim: %r)' % (npcount.ndim))
+        if len(npshape) != len(npcount):
+            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))
 
         if (npshape < npcount + npoffset).any():
             raise IndexError('Requested is larger than the shape.')
 
-        shape = list(npcount)
-        if (nsteps > 1):
+        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)
-        
+
         if len(shape) > 0:
             var[:] = fill
 
@@ -982,87 +1369,131 @@ cdef class var:
 
         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)
 
-        ## Try not to return as scalar to be consistent
-        ##if (var.ndim == 0):
-        ##    return np.asscalar(var)
-        ##else:
-        ##    return var
-        return np.squeeze(var)
+        if (var.ndim == 0):
+            return np.asscalar(var)
+        else:
+            return var
 
     cpdef printself(self):
         """ 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)
+        print ('=== AdiosVariable ===')
+        print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
+        print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
         printvar(self.vp)
-        
+
     def __repr__(self):
-        return "AdiosVar (varid=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r)" % \
+        return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
                (self.varid,
+                self.name,
                 self.dtype,
                 self.ndim,
                 self.dims,
-                self.nsteps)
-
-    def __getitem__(self, index):
-        ndim_ = self.ndim
-        if (self.nsteps) > 1: ndim_ += 1
-
-        index_ = __parse_index(index, ndim_)
-
-        if (ndim_ > 0) and (len(index_) > ndim_):
-            raise IndexError("Too many indices for data")
-
-        if (ndim_ == 0) and (len(index_) > 1):
-            raise IndexError("Too many indices for data")
-        
-        for slice_ in index_:
-            if isinstance(slice_.step, (int, long)) and (slice_.step != 1):
-                raise IndexError("Step size (%d) is not supported." % (slice_.step))
-            if isinstance(slice_, str):
-                raise IndexError("Name index (%r) is not supported." % (slice_))
-        
-        if (self.nsteps) > 1:
-            dims_ = list(self.dims)
-            dims_.insert(0, self.nsteps)
-            indices = tuple(x[0].indices(x[1]) for x in zip(index_, dims_))
-            z = zip(*indices)
-
-            from_steps_ = z[0][0]
-            nsteps_ = (z[1][0] - z[0][0]-1)%self.nsteps+1
-            offset_ = z[0][1:]
-            count_ = tuple((np.subtract(z[1][1:], z[0][1:])-1)%dims_[1:]+1)
-        else:
-            indices = tuple(x[0].indices(x[1]) for x in zip(index_, self.dims))
-            z = zip(*indices)
-
-            if len(z) == 0:
-                from_steps_ = 0
-                nsteps_ = self.nsteps
-                offset_ = ()
-                count_ = ()
+                self.nsteps,
+                self.attrs.keys())
+
+    def _readattr(self, varname):
+        if not isinstance(varname, tuple):
+            varname = (varname,)
+
+        if len(varname) > 1:
+            raise KeyError(varname)
+
+        for key_ in varname:
+            if not isinstance(key_, str):
+                raise TypeError("Unhashable type")
+
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in self.attrs.keys():
+                return self.attrs.get(key_)
+
+            if '/'+key_ in self.attrs.keys():
+                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_):
+                    return group(self.file, self.name + '/' + key_)
+
+    def _readvar(self, args):
+        shape = list(self.dims)
+        if self.nsteps > 1:
+            shape.insert(0, self.nsteps)
+        asel = sel.select(shape, args)
+
+        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:],
+                                 from_steps=asel.sel[0][0],
+                                 nsteps=asel.sel[1][0],
+                                 step_scalar=asel.sel[3][0])
             else:
-                from_steps_ = 0
-                nsteps_ = self.nsteps
-                offset_ = z[0]
-                count_ = tuple((np.subtract(z[1], z[0])-1)%self.dims+1)
-
-        ##print "from_steps", from_steps_
-        ##print "nsteps", nsteps_
-        ##print "offset", offset_
-        ##print "count", count_
-        
-        return self.read(offset=offset_,
-                         count=count_,
-                         from_steps=from_steps_,
-                         nsteps=nsteps_)
-
-cdef class attr:
+                return self.read(offset=asel.sel[0],
+                                 count=asel.sel[1],
+                                 scalar=asel.sel[3],
+                                 from_steps=0,
+                                 nsteps=1)
+
+        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):
+                if (self.nsteps) > 1:
+                    v = self.read(offset=obj[0][1:],
+                                  count=obj[1][1:],
+                                  scalar=obj[3][1:],
+                                  from_steps=obj[0][0],
+                                  nsteps=obj[1][0],
+                                  step_scalar=obj[3][0])
+                else:
+                    v = self.read(offset=obj[0],
+                                  count=obj[1],
+                                  scalar=obj[3],
+                                  from_steps=0,
+                                  nsteps=1)
+
+                var = np.concatenate((var, v), axis=asel.morder[idx])
+
+            var = np.reshape(var, asel.mshape)
+
+            return var
+
+        else:
+            raise NotImplementedError("Not implemented yet")
+
+    def __getitem__(self, args):
+        if isinstance(args, str):
+            return self._readattr(args)
+        else:
+            return self._readvar(args)
+
+    ## For access var/attr/group as an attribute
+    def __getattr__(self, varname):
+        return self.__getitem__(varname)
+
+    ## To support ipython tab completion
+    def __dir__(self):
+        k0 = dir(type(self))
+        ## Normalize to support var starting with '/'
+        ## E.g., f['/attr1'] == f.attr1
+        k2 = normalize_key(self.attrs.keys())
+        return k0 + k2
+
+    ## Require for dictionary key completion
+    def keys(self):
+        return self.attrs.keys()
+
+cdef class attr(object):
     """
     Adios attribute class.
-    
+
     Attribute values are loaded on initialization.
 
     Args:
@@ -1072,10 +1503,10 @@ cdef class attr:
         KeyError: If no attribute name exists.
 
     Note:
-        Users do not need to create this class manually.        
+        Users do not need to create this class manually.
     """
     cdef file file
-    cpdef bytes name
+    cpdef str name
     cpdef np.dtype dtype
     cdef np.ndarray value
 
@@ -1092,9 +1523,12 @@ cdef class attr:
     property value:
         """ The attribute's value """
         def __get__(self):
-            return self.value
+            if (self.value.ndim == 0):
+                return np.asscalar(self.value)
+            else:
+                return self.value
 
-    def __init__(self, file file, char * name):
+    def __init__(self, file file, str name):
         self.file = file
         self.name = name
 
@@ -1103,26 +1537,26 @@ cdef class attr:
         cdef int bytes
         cdef list strlist
         cdef int len
-        
-        err = adios_get_attr(self.file.fp, self.name, &atype, &bytes, <void **> &p)
+
+        err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
 
         if err == 0:
             if atype == DATATYPE.string:
-                bytes = bytes - 1 ## Remove the NULL terminal                
+                bytes = bytes - 1 ## Remove the NULL terminal
             self.dtype = adios2npdtype(atype, bytes)
             if atype == DATATYPE.string_array:
                 strlist = list()
-                len = bytes/sizeof(p)
+                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
-                    
+
             elif self.dtype is None:
-                print 'Warning: No support yet: %s (type=%d, bytes=%d)' % \
-                      (self.name, atype, bytes)
+                print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
+                      (self.name, atype, bytes))
             else:
-                len = bytes/self.dtype.itemsize
+                len = <int>(bytes/self.dtype.itemsize)
                 if len == 1:
                     self.value = np.array(len, dtype=self.dtype)
                 else:
@@ -1131,10 +1565,127 @@ cdef class attr:
         else:
             raise KeyError(name)
 
+    def __getitem__(self, args):
+        val = self.value[args]
+        if (val.ndim == 0):
+            return np.asscalar(val)
+        else:
+            return val
+
     def __repr__(self):
         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
                (self.name, self.dtype, self.value)
 
+cdef class group(dict):
+    """
+    Adios group class.
+
+    Note:
+        Users do not need to create this class manually.
+    """
+    cdef file file
+    cpdef str name
+
+    ## Public Memeber
+    cpdef public softdict vars
+    cpdef public softdict attrs
+
+    def __init__(self, file file, str name):
+        self.file = file
+        self.name = name.rstrip('/')
+
+        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]
+            if name.startswith('/' + self.name + '/'):
+                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 + '/'):
+                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):
+        """
+        Return Adios variable, attribute, or group.
+
+        Args:
+            varname (str): variable or attribute name.
+
+        Raises:
+            KeyError: If no name exists.
+
+        """
+        if not isinstance(varname, tuple):
+            varname = (varname,)
+
+        if len(varname) > 1:
+            raise KeyError(varname)
+
+        for key_ in varname:
+            if not isinstance(key_, str):
+                raise TypeError("Unhashable type")
+
+            if key_.startswith('/'):
+                key_ = key_[1:]
+
+            if key_ in self.vars.keys():
+                return self.vars.get(key_)
+
+            if key_ in self.attrs.keys():
+                return self.attrs.get(key_)
+
+            if '/'+key_ in self.vars.keys():
+                return self.vars.get('/'+key_)
+
+            if '/'+key_ in self.attrs.keys():
+                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_):
+                    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_):
+                    return group(self.file, self.name + '/' + key_)
+
+        raise KeyError(key_)
+
+    def __repr__(self):
+        """ Return string representation. """
+        return ("AdiosGroup (vars=%r, attrs=%r)") % \
+                (self.vars.keys(),
+                 self.attrs.keys())
+
+    ## To support ipython tab completion
+    def __getattr__(self, varname):
+        return self.__getitem__(varname)
+
+    def __dir__(self):
+        k0 = dir(type(self))
+        k1 = normalize_key(self.vars.keys())
+        k2 = normalize_key(self.attrs.keys())
+        return k0 + k1 + k2
+
+    ## Require for dictionary key completion
+    def keys(self):
+        return self.vars.keys() + self.attrs.keys()
+
+    def dirs(self):
+        """ 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])
+        for k in self.attrs.keys():
+            if k.startswith('/'): k = k[1:]
+            s.add(os.path.dirname(k).split('/')[0])
+        return list(s-set(['']))
 
 ## Helper dict
 cdef class smartdict(dict):
@@ -1142,14 +1693,14 @@ cdef class smartdict(dict):
     def __init__(self, factory):
         dict.__init__(self)
         self.factory = factory
-        
+
     def __setitem__(self, key, value):
         if key in dict.keys(self):
             dict.__setitem__(self, key, value)
         else:
             self.factory(key, value)
 
-cdef class writer:
+cdef class writer(object):
     """
     writer class for Adios write.
 
@@ -1159,22 +1710,23 @@ cdef class writer:
         comm (MPI.Comm, optional): MPI comm for parallel read/write (default: MPI.COMM_WORLD).
 
     Example:
-    
+
     >>> import adios as ad
     >>> f = ad.writer('adiosfile.bp')
-    
+
     """
-    
+
     cdef int64_t gid
-    cpdef bytes fname
-    cpdef bytes gname
-    cpdef bytes method
-    cpdef bytes method_params
+    cpdef str fname
+    cpdef str gname
+    cpdef str method
+    cpdef str method_params
     cpdef bint is_noxml
+    cpdef str mode
     cpdef MPI.Comm comm
 
-    cpdef dict var
-    cpdef dict attr
+    cpdef dict vars
+    cpdef dict attrs
 
     property fname:
         """ The filename to write. """
@@ -1185,42 +1737,50 @@ cdef class writer:
         """ The groupname associated with the file. """
         def __get__(self):
             return self.gname
-        
+
     property is_noxml:
         """ Boolean to indicate using No-XML or not. """
         def __get__(self):
             return self.is_noxml
-        
-    property var:
+
+    property mode:
+        """ Writing mode: overwrite or append. """
+        def __get__(self):
+            return self.mode
+
+    property vars:
         """ Dictionary of variables to write. """
         def __get__(self):
-            return self.var
+            return self.vars
 
-    property attr:
+    property attrs:
         """ Dictionary of attributes to write. """
         def __get__(self):
-            return self.attr
-        
-    def __init__(self,char * fname,
+            return self.attrs
+
+    def __init__(self, str fname,
                  bint is_noxml = True,
+                 str mode = "w",
                  MPI.Comm comm = MPI.COMM_WORLD):
         self.fname = fname
-        self.method = <bytes>""
-        self.method_params = <bytes>""
+        self.method = ""
+        self.method_params = ""
         self.is_noxml = is_noxml
+        self.mode = mode
         self.comm = comm
-        self.var = dict()
-        self.attr = dict()
+        self.vars = dict()
+        self.attrs = dict()
 
+        init_noxml(comm)
     ##def __var_factory__(self, name, value):
     ##    print "var_factory:", name, value
     ##
     ##def __attr_factory__(self, name, value):
     ##    print "attr_factory:", name, value
 
-    def declare_group(self, char * gname,
-                      char * method = "POSIX1",
-                      char * method_params = ""):
+    def declare_group(self, str gname,
+                      str method = "POSIX1",
+                      str method_params = ""):
         """
         Define a group associated with the file.
 
@@ -1232,7 +1792,7 @@ cdef class writer:
         Example:
 
         >>>  fw.declare_group('group', method='MPI', method_params='verbose=3')
-        
+
         """
         self.gid = declare_group(gname, "", 1)
         self.gname = gname
@@ -1240,7 +1800,7 @@ cdef class writer:
         self.method_params = method_params
         select_method(self.gid, self.method, self.method_params, "")
 
-    def define_var(self, char * varname,
+    def define_var(self, str varname,
                    ldim = tuple(),
                    gdim = tuple(),
                    offset = tuple()):
@@ -1258,11 +1818,11 @@ cdef class writer:
         Write 'temperature' variable of size of 2x3 array.
 
         >>>  fw.define_var ('temperature', (2,3))
-        
+
         """
-        self.var[varname] = varinfo(varname, ldim, gdim, offset)
+        self.vars[varname] = varinfo(varname, ldim, gdim, offset)
 
-    def define_attr(self, char * attrname):
+    def define_attr(self, str attrname):
         """
         Define attribute in the file.
 
@@ -1270,81 +1830,96 @@ cdef class writer:
             attrname (str): attribute name.
         """
 
-        self.attr[attrname] = attrinfo(attrname, is_static=True)
+        self.attrs[attrname] = attrinfo(attrname, is_static=True)
 
-    def define_dynamic_attr(self, char * attrname,
-                            char * varname,
+    def define_dynamic_attr(self, str attrname,
+                            str varname,
                             dtype):
-        self.attr[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+        self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
     def __setitem__(self, name, val):
-        if self.var.has_key(name):
-            self.var[name].value = val
-        elif self.attr.has_key(name):
-            self.attr[name].value = val
+        if self.vars.has_key(name):
+            self.vars[name] = val
+        elif self.attrs.has_key(name):
+            self.attrs[name] = val
         else:
-            self.var[name] = val
-        
+            self.vars[name] = val
+
     def __getitem__(self, name):
-        if self.var.has_key(name):
-            return self.var[name].value
-        elif self.attr.has_key(name):
-            return self.attr[name].value
+        if self.vars.has_key(name):
+            return self.vars[name]
+        elif self.attrs.has_key(name):
+            return self.attrs[name]
         else:
             raise KeyError(name)
-    
+
     def close(self):
         """
         Write variables and attributes to a file and close the writer.
         """
-        fd = open(self.gname, self.fname, "w")
+        if self.gname is None:
+            self.declare_group("group")
+
+        fd = open(self.gname, self.fname, self.mode)
 
-        extra_var = dict()
-        extra_attr = dict()
+        extra_vars = dict()
+        extra_attrs = dict()
 
-        for key, val in self.var.iteritems():
+        for key, val in self.vars.iteritems():
             if not isinstance(val, varinfo):
                 n = np.array(val)
-                extra_var[key] = varinfo(key, n.shape)
-                extra_var[key].value = val
+                extra_vars[key] = varinfo(key, n.shape)
+                extra_vars[key].value = val
             else:
                 if self.is_noxml: val.define(self.gid)
 
-        for key, val in extra_var.iteritems():
+        for key, val in extra_vars.iteritems():
             if self.is_noxml: val.define(self.gid)
-            self.var[key] = val
+            self.vars[key] = val
 
-        for key, val in self.attr.iteritems():
+        for key, val in self.attrs.iteritems():
             if not isinstance(val, attrinfo):
-                extra_attr[key] = attrinfo(key, val, np.array(val).dtype)
+                extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
             else:
                 if self.is_noxml: val.define(self.gid)
 
-        for key, val in extra_attr.iteritems():
+        for key, val in extra_attrs.iteritems():
             if self.is_noxml: val.define(self.gid)
 
+        """
+        ## No groupsize anymore (Jun 17, 2016)
         groupsize = 0
-        for var in self.var.values():
+        for var in self.vars.values():
             groupsize = groupsize + var.bytes()
 
         set_group_size(fd, groupsize)
+        """
 
-        for var in self.var.values():
+        for var in self.vars.values():
             var.write(fd)
-            
+
         close(fd)
-    
+
     def __repr__(self):
         return ("AdiosWriter (fname=%r, gname=%r, "
-                "method=%r, method_params=%r, var=%r, attr=%r)") % \
+                "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
                 (self.fname,
                  self.gname,
                  self.method,
                  self.method_params,
-                 self.var.keys(),
-                 self.attr.keys())
+                 self.vars.keys(),
+                 self.attrs.keys(),
+                 self.mode)
 
-cdef class attrinfo:
-    cdef bytes name
+    def __enter__(self):
+        """ Enter for with statemetn """
+        return self
+
+    def __exit__(self, exception_type, exception_value, traceback):
+        """ Close file on exit. """
+        self.close()
+
+cdef class attrinfo(object):
+    cdef str name
     cdef bint is_static # Use define_byvalue, if True
     cdef dtype
     cdef value # Either varname or nparray
@@ -1360,15 +1935,15 @@ cdef class attrinfo:
     property dtype:
         def __get__(self):
             return self.dtype
-        
+
     property value:
         def __get__(self):
             return self.value
-        
+
         def __set__(self, value):
             self.value = value
-        
-    def __init__(self, char * name,
+
+    def __init__(self, str name,
                  value = None,
                  dtype = None,
                  bint is_static = True):
@@ -1381,14 +1956,14 @@ cdef class attrinfo:
         if self.is_static:
             if self.value is None:
                 raise TypeError("Value is none")
-            
+
             define_attribute_byvalue(gid, self.name, "", self.value)
         else:
             ##atype = np2adiostype(np.dtype(self.dtype))
             ##define_attribute(gid, self.name, "",
             ##                 atype, "", str(self.value))
-            raise NotImplementedError            
-        
+            raise NotImplementedError
+
     def __repr__(self):
         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
                 (self.name,
@@ -1396,22 +1971,24 @@ cdef class attrinfo:
                  self.value,
                  self.dtype)
 
-cdef class varinfo:
-    cdef bytes name
+cdef class varinfo(object):
+    cdef str name
     cdef public ldim
     cdef public gdim
     cdef public offset
     cdef public value
 
-    def __init__(self, char * name,
+    def __init__(self, str name,
                  ldim = tuple(),
                  gdim = tuple(),
-                 offset = tuple()):
+                 offset = tuple(),
+                 value = None):
         self.name = name
         self.ldim = ldim
         self.gdim = gdim
         self.offset = offset
-        
+        self.value = value
+
     def define(self, int64_t gid):
         if self.value is None:
             raise TypeError("Value is none")
@@ -1443,20 +2020,28 @@ cdef class varinfo:
         val_ = self.value
         if not isinstance(self.value, (np.ndarray)):
             val_ = np.array(self.value)
-        
+
         return val_.size * val_.itemsize
-    
-    def write(self, int64_t fd): 
+
+    def write(self, int64_t fd):
         val_ = self.value
         if not isinstance(self.value, (np.ndarray)):
             val_ = np.array(self.value)
-        
+
         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)
-        
+
+## Aliases
+File = file
+Var = var
+Attr = attr
+Writer = writer
+Attrinfo = attrinfo
+Varinfo = varinfo
+
 ## ====================
 ## ADIOS Global functions
 ## ====================
@@ -1472,11 +2057,7 @@ def readvar(fname, varname):
         NumPy ndarray: variable value
     """
     f = file(fname, comm=MPI.COMM_SELF)
-    if not f.var.has_key(varname):
-        print "No valid variable"
-        return
-
-    v = f.var[varname]
+    v = f[varname]
     return v.read(from_steps=0, nsteps=v.nsteps)
 
 def bpls(fname):
@@ -1491,7 +2072,7 @@ def bpls(fname):
     f = file(fname, comm=MPI.COMM_SELF)
     return {'nvars': f.nvars,
             'nattrs': f.nattrs,
-            'vars': tuple([ k for k in f.var.iterkeys() ]),
-            'attrs': tuple([ k for k in f.attr.iterkeys() ]),
+            '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}
diff --git a/wrappers/numpy/adios_mpi2serial.sed b/wrappers/numpy/adios_mpi2serial.sed
index 8605442..7662b95 100644
--- a/wrappers/numpy/adios_mpi2serial.sed
+++ b/wrappers/numpy/adios_mpi2serial.sed
@@ -3,13 +3,16 @@
 ## Example:
 ## sed -f adios_mpi2serial.sed adios_mpi.pyx > adios.pyx
 ##
+s/^cdef extern from \"mpi-compat.h\": pass/#cdef extern from \"mpi-compat.h\": pass/g
 s/^import mpi4py.MPI/#import mpi4py.MPI/g
 s/^cimport mpi4py.MPI/#cimport mpi4py.MPI/g
 s/MPI./MPI_/g
 s/comm.ob_mpi/comm/g
+s/comm.Clone()/comm/g
 /ctypedef struct MPI_Comm:$/{
   N
   s/ctypedef struct MPI_Comm:\n[ ]*pass/ctypedef int MPI_Comm\
     int MPI_COMM_WORLD\
     int MPI_COMM_SELF/
 }
+s/adios_mpi/adios/g
diff --git a/wrappers/numpy/doc/source/quick.rst b/wrappers/numpy/doc/source/quick.rst
index 554b39c..82f57bb 100644
--- a/wrappers/numpy/doc/source/quick.rst
+++ b/wrappers/numpy/doc/source/quick.rst
@@ -33,7 +33,8 @@ contents:
 
 >>> f = ad.file('adios_test.bp')
 >>> f
-AdiosFile (path='adios_test.bp', nvars=3, var=['NX', 'temperature', 'size'], nattrs=1, attr=['/temperature/description'], current_step=0, last_step=0, file_size=1549)
+AdiosFile (path='adios_test.bp', nvars=3, var=['NX', 'temperature', 'size'],
+nattrs=1, attr=['/temperature/description'], current_step=0, last_step=0, file_size=878)
 
 Now let's read a scalar variable, 'NX'. We can access each variable by
 using Python's dictionary-style interface:
@@ -41,18 +42,36 @@ using Python's dictionary-style interface:
 >>> v = f['NX']
 >>> v
 AdiosVar (varid=0, type=dtype('int32'), ndim=0, dims=(), nsteps=1)
+
+
+.. note:: The Adios python wrapper provides convenience to access variables
+          as a class member, such as, f.NX, unless the name contains
+          a separator ('/') in the middle.
+
+Now v contains only meta data information. To read data from the disk,
+execute the following command:
+
 >>> v.read()
-array(10, dtype=int32)
+10
 
 Equivalently, we can use Numpy-style interface:
 
->>> f['NX'][:]
-array(10, dtype=int32)
+>>> v[...]
+
+We can combine them all together:
 
+>>> f['NX'][...]
+
+In short, the following commands have the same effect:
+
+>>> f['NX'][...]
+>>> f['NX'].read()
+>>> f.NX[...]
+>>> f.NX.read()
 
 Then, let's read a multi-dimensional array, 'temperature'.
 
->>> f['temperature'][:]
+>>> f['temperature'][...]
 array([[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],
        [ 10.,  11.,  12.,  13.,  14.,  15.,  16.,  17.,  18.,  19.]])
 
@@ -64,24 +83,37 @@ array([[  0.,   1.,   2.,   3.,   4.],
 
 We can use the most of the NumPy's slice syntax.
 
+Attribute
+---------
+
 Attribute reading is similar:
 
 >>> at = f.attr['/temperature/description']
 >>> at
-AdiosAttr (name='/temperature/description', type=dtype('S43'))
+AdiosAttr (name='/temperature/description', dtype=dtype('S42'),
+value=array("Global array written from 'size' processes", dtype='|S42'))
 >>> at.value
-array(["Global array written from 'size' processes"], 
-      dtype='|S43')
+"Global array written from 'size' processes"
 
-Unless attribute's name is not conflict with any variable name in the
-file, which is totally fine with Adios, we can access through the
-dictionary-style:
+Unless attribute's name is conflict with any variable name in the
+file, we can access attributes through the dictionary-style:
 
 >>> f['/temperature/description'].value
 
 .. note:: While variables are read by "read" function or slice
           interface, attributes are accessed through "value" property.
 
+
+The Adios Python reorganizes the attributes in a tree structure based on the prefix of the name.
+For example, the following commands have the same effect:
+
+>>> v = f['temperature']
+>>> v['description'].value
+
+By using the class member notation, the following command is also same:
+
+>>> v.description.value
+
 Writing data
 ------------
 
@@ -108,11 +140,9 @@ First, we load necessary modules and prepare our Numpy data to save:
 
 I.e., we have two scalar variables (NX and size) and one 2-D array (tt).
 
-Then, we initialize Adios and specify a buffer size (10MB) which Adios
-can work with:
+Then, we initialize Adios:
 
 >>> ad.init_noxml()
->>> ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
 
 Then, we give a file name to create and specify a group with Adios method:
 
@@ -136,8 +166,3 @@ To write an attribute, we can do as follows:
 Finally, we let Adios to write a file by calling "close"
 
 >>> fw.close()
-
-
-
-
-          
diff --git a/wrappers/numpy/example/staging/README b/wrappers/numpy/example/staging/README
index 2b63129..73c96c5 100644
--- a/wrappers/numpy/example/staging/README
+++ b/wrappers/numpy/example/staging/README
@@ -33,3 +33,7 @@ Note: Users may need to use the MPI-enabled Adios module, adios_mpi,
 instead of serial adios module, adios. Some Adios methods work only
 with MPI. In that case, use import "adios_mpi", not "adios".
 
+c. DataSpaces
+
+Refer job.pbs script to test with DATASPACES method.
+adios_write_mpi.py and adios_read_mpi.py communicates through DATASPACES method.
diff --git a/wrappers/numpy/example/staging/adios_read_mpi.py b/wrappers/numpy/example/staging/adios_read_mpi.py
new file mode 100644
index 0000000..fede8fb
--- /dev/null
+++ b/wrappers/numpy/example/staging/adios_read_mpi.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+"""
+Example:
+
+$ python ./adios_read_mpi.py [METHOD] [params]
+"""
+
+import adios_mpi as ad
+import getopt, sys
+import os
+
+method = "BP"
+init = "verbose=3;"
+
+if len(sys.argv) > 1:
+    method = sys.argv[1]
+
+if len(sys.argv) > 2:
+    init = sys.argv[2]
+
+print ">>> Method:", method, init
+ad.read_init(method, parameters=init)
+
+f = ad.file("temp.bp", method, is_stream=True, timeout_sec = 10.0)
+f.printself()
+
+i = 0
+while True:
+    print ">>> step:", i
+    v = f.var['temperature']
+    v.printself()
+
+    val = v.read(nsteps=1)
+    print val
+
+    if (f.advance() < 0):
+        break
+    i += 1
+
+f.close()
+
+ad.read_finalize(method)
+
+print ">>> Done."
diff --git a/wrappers/numpy/example/staging/adios_write_mpi.py b/wrappers/numpy/example/staging/adios_write_mpi.py
new file mode 100644
index 0000000..d51ccea
--- /dev/null
+++ b/wrappers/numpy/example/staging/adios_write_mpi.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+"""
+Example:
+
+$ python ./adios_write_mpi.py [METHOD] [params]
+"""
+
+import adios_mpi as ad
+from mpi4py import MPI
+import numpy as np
+import getopt, sys
+import os
+import datetime
+
+method = "POSIX1"
+init = "verbose=3;"
+
+if len(sys.argv) > 1:
+    method = sys.argv[1]
+
+if len(sys.argv) > 2:
+    init = sys.argv[2]
+
+## Init
+ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+ad.init_noxml(MPI.COMM_WORLD)
+g = ad.declare_group("temperature", "", 1)
+ad.define_var(g, "NX", "", ad.DATATYPE.integer, "", "", "")
+ad.define_var(g, "size", "", ad.DATATYPE.integer, "", "", "")
+ad.define_var(g, "temperature", "", ad.DATATYPE.double, "size,NX", "size,NX", "0,0")
+msg = str(datetime.datetime.now())
+ad.define_attribute(g, "datetime", "", ad.DATATYPE.string, msg, "")
+print ">>> Method:", method, init
+ad.select_method(g, method, init, "")
+
+## Writing
+for i in range(5):
+    print ">>> step:", i
+    fd = ad.open("temperature", "temp.bp", "a")
+
+    NX = 10
+    size = 2
+    groupsize =  4 + 4 + 8 * size * NX
+    t = np.array(range(NX*size), dtype=np.float64) + 100*i
+    tt = t.reshape((size, NX))
+    ad.set_group_size(fd, groupsize)
+    ad.write_int(fd, "NX", NX)
+    ad.write_int(fd, "size", size)
+    ad.write(fd, "temperature", tt)
+    ad.close(fd)
+
+ad.finalize()
+print ">>> Done."
diff --git a/wrappers/numpy/example/staging/job.pbs b/wrappers/numpy/example/staging/job.pbs
new file mode 100644
index 0000000..d4cce75
--- /dev/null
+++ b/wrappers/numpy/example/staging/job.pbs
@@ -0,0 +1,58 @@
+#!/bin/bash -l
+#PBS -j oe
+#PBS -N python_adios_staging
+#PBS -l nodes=1:ppn=32
+#PBS -l walltime=0:10:00
+#PBS -V
+
+#RUNCMD="aprun -n"
+RUNCMD="mpirun -n"
+SERVER=$DATASPACES_DIR/bin/dataspaces_server
+
+WRITEPROC=1
+STAGINGPROC=1
+READPROC=1
+let "PROCALL=WRITEPROC+READPROC"
+
+# clean-up previous run
+rm -f log.* core* conf dataspaces.conf
+
+# Prepare config file for DataSpaces
+echo "## Config file for DataSpaces
+ndim = 2
+dims = 100,100
+max_versions = 10
+#max_readers =" $READPROC " 
+#lock_type = 2
+" > dataspaces.conf
+
+# Run DataSpaces
+echo "-- Start DataSpaces server "$SERVER" on $STAGINGPROC PEs, -s$STAGINGPROC -c$PROCALL"
+$RUNCMD $STAGINGPROC $SERVER -s$STAGINGPROC -c$PROCALL >& log.server &
+
+## Give some time for the servers to load and startup
+sleep 1s
+while [ ! -f conf ]; do
+    echo "-- File conf is not yet available from server. Sleep more"
+    sleep 1s
+done
+sleep 3s  # wait server to fill up the conf file
+
+## Export the main server config to the environment
+while read line; do
+    export set "${line}"
+done < conf
+
+echo "-- DataSpaces IDs: P2TNID = $P2TNID   P2TPID = $P2TPID"
+
+# Start STAGE_READ
+echo "-- Start GENARRAY on $READPROC PEs"
+$RUNCMD $READPROC python ./adios_read_mpi.py DATASPACES "verbose=3" >& log.reader &
+
+# Start STAGE_WRITE
+echo "-- Start STAGE_WRITE on $WRITEPROC PEs"
+$RUNCMD $WRITEPROC python ./adios_write_mpi.py DATASPACES "verbose=3" >& log.writer &
+
+echo "-- Wait until all applications exit. Run 'tail -F log.server log.reader log.writer' to see status"
+wait
+rm -f conf
diff --git a/wrappers/numpy/example/utils/bpls.py b/wrappers/numpy/example/utils/bpls.py
index ed63dfb..41d66cb 100755
--- a/wrappers/numpy/example/utils/bpls.py
+++ b/wrappers/numpy/example/utils/bpls.py
@@ -11,7 +11,7 @@ import getopt, sys
 
 def usage():
     print "USAGE: %s filename" % sys.argv[0]
-    
+
 def main():
     fname = ""
     if len(sys.argv) < 2:
@@ -28,11 +28,11 @@ def main():
     print "  %-18s %d" % ("file size:", f.file_size)
     print "  %-18s %d" % ("bp version:", f.version)
     print ""
-    
+
     for k in sorted(f.var.keys()):
         v = f.var[k]
-        print "  %-17s  %-12s  %d*%s" % (np.typename(np.sctype2char(v.type)), v.name, v.nsteps, v.dims)
-            
+        print "  %-17s  %-12s  %d*%s" % (np.typename(np.sctype2char(v.dtype)), v.name, v.nsteps, v.dims)
+
 
 if __name__ == "__main__":
     main()
diff --git a/wrappers/numpy/mpi-compat.h b/wrappers/numpy/mpi-compat.h
new file mode 100644
index 0000000..367c58a
--- /dev/null
+++ b/wrappers/numpy/mpi-compat.h
@@ -0,0 +1,14 @@
+/* Author:  Lisandro Dalcin   */
+/* Contact: dalcinl at gmail.com */
+
+#ifndef MPI_COMPAT_H
+#define MPI_COMPAT_H
+
+#include <mpi.h>
+
+#if (MPI_VERSION < 3) && !defined(PyMPI_HAVE_MPI_Message)
+typedef void *PyMPI_MPI_Message;
+#define MPI_Message PyMPI_MPI_Message
+#endif
+
+#endif/*MPI_COMPAT_H*/
diff --git a/wrappers/numpy/setup.py b/wrappers/numpy/setup.py
index 817dcd0..c3d50d9 100644
--- a/wrappers/numpy/setup.py
+++ b/wrappers/numpy/setup.py
@@ -13,9 +13,10 @@ from distutils.core import Command
 
 import subprocess
 import sys
+from subprocess import check_output
 
-m1 = Extension('adios', 
-               sources=['adios.cpp'], 
+m1 = Extension('adios.adios',
+               sources=['adios.cpp'],
                define_macros=[('_NOMPI', None)],
                include_dirs = [np.get_include()],
                library_dirs = [],
@@ -31,13 +32,13 @@ if cmd == None:
         "Please install Adios or check PATH.\n")
     sys.exit(-1)
 
-p = subprocess.Popen(["adios_config", "-c", "-s"], stdout=subprocess.PIPE)
-for path in p.communicate()[0].strip().split(" "):
+out = check_output(["adios_config", "-c", "-s"]).decode("utf-8")
+for path in out.strip().split(" "):
     if path.startswith('-I'):
         m1.include_dirs.append(path.replace('-I', '', 1))
 
-p = subprocess.Popen(["adios_config", "-l", "-s"], stdout=subprocess.PIPE)
-for path in p.communicate()[0].strip().split(" "):
+out = check_output(["adios_config", "-l", "-s"]).decode("utf-8")
+for path in out.strip().split(" "):
     if path.startswith('-L'):
         m1.library_dirs.append(path.replace('-L', '', 1))
     if path.startswith('-l'):
@@ -66,11 +67,25 @@ class adios_test(Command):
         test_suite = test_loader.discover(os.path.join(setup_dir, 'test'))
         test_runner.run(test_suite)
 
-setup(name = 'adios',
-      version = '1.8.1b3',
-      description = 'Python Module for Adios',
-      author = 'Jong Choi',
-      author_email = 'yyalli at gmail.com',
-      url = 'http://www.olcf.ornl.gov/center-projects/adios/',
+NAME = 'adios'
+DESCRIPTION = 'Python Module for Adios'
+AUTHOR = 'Jong Choi'
+AUTHOR_EMAIL = 'choij at ornl.gov'
+URL = 'http://www.olcf.ornl.gov/center-projects/adios/'
+
+import re
+module_file = open("src/__init__.py").read()
+metadata = dict(re.findall("__([a-z]+)__\s*=\s*'([^']+)'", module_file))
+VERSION = metadata['version']
+
+setup(name = NAME,
+      version = VERSION,
+      description = DESCRIPTION,
+      author = AUTHOR,
+      author_email = AUTHOR_EMAIL,
+      url = URL,
       cmdclass={'test': adios_test},
-      ext_modules = [m1])
+      ext_modules = [m1],
+      packages=['adios', 'adios._hl'],
+      package_dir = {'adios': 'src', 'adios._hl': '_hl'},
+      )
diff --git a/wrappers/numpy/setup_mpi.py b/wrappers/numpy/setup_mpi.py
index 7cbbfd5..8fda6f7 100644
--- a/wrappers/numpy/setup_mpi.py
+++ b/wrappers/numpy/setup_mpi.py
@@ -5,26 +5,26 @@
 
 import os
 import sys
-import getopt
+import argparse
 
 ## Credit: http://svn.apache.org/repos/asf/subversion/tags/0.20.1/subversion/bindings/swig/python/setup.py
-def _do_usage():
-  print "Usage: setup.py [OPTIONS] build"
-  print "       setup.py install [--prefix PREFIX]"
-  print "       setup.py install_lib [--install-dir DIR]"
-  print ""
-  print "Options:"
-  print "   -I dir      " + \
-        "search DIR for includes (multiple instances allowed)"
-  print "   -L dir      " + \
-        "search DIR for libraries (multiple instances allowed)"
-  print "   -C option   " + \
-        "pass OPTION to the compiler at compile time (multiple instances " + \
-        "allowed)"
-  print "   -R option   " + \
-        "pass OPTION to the compiler at link time (multiple instances " + \
-        "allowed)"
-  sys.exit(0)
+# def _do_usage():
+#   print "Usage: setup.py [OPTIONS] build"
+#   print "       setup.py install [--prefix PREFIX]"
+#   print "       setup.py install_lib [--install-dir DIR]"
+#   print ""
+#   print "Options:"
+#   print "   -I dir      " + \
+#         "search DIR for includes (multiple instances allowed)"
+#   print "   -L dir      " + \
+#         "search DIR for libraries (multiple instances allowed)"
+#   print "   -C option   " + \
+#         "pass OPTION to the compiler at compile time (multiple instances " + \
+#         "allowed)"
+#   print "   -R option   " + \
+#         "pass OPTION to the compiler at link time (multiple instances " + \
+#         "allowed)"
+#   sys.exit(0)
 
 # Default option values
 include_dirs = []
@@ -32,37 +32,38 @@ library_dirs = []
 extra_compile_args = []
 extra_link_args = []
 
-# No args?  Give usage.
-if len(sys.argv) < 2:
-  _do_usage()
-
-# Parse the command-line arguments, keeping what we want and letting
-# distutils have the rest.  Distutils parameters should come after
-# the target as in 'python setup.py build --prefix=/usr/local' and
-# parameters for us should appear before the target as in
-# 'python setup.py -I/usr/include build'.
-options, leftovers = getopt.getopt(sys.argv[1:], "I:L:C:R:h",
-                                   ["help"])
-for option in options:
-  if option[0] == '-I':
-    include_dirs.append(option[1])
-  if option[0] == '-L':
-    library_dirs.append(option[1])
-  if option[0] == '-C':
-    extra_compile_args.append(option[1])
-  if option[0] == '-R':
-    extra_link_args.append(option[1])
-  if option[0] == '-h':
-    _do_usage()
-
-  if option[0] == '--help':
-    _do_usage()
-
-  # All long options just get passed through
-  if option[0][:2] == '--':
-    leftovers.append(option[0])
-    leftovers.append(option[1])
-sys.argv[1:] = leftovers
+## TODO: Use ArgumentParser.parse_known_args
+# # No args?  Give usage.
+# if len(sys.argv) < 2:
+#   _do_usage()
+
+# # Parse the command-line arguments, keeping what we want and letting
+# # distutils have the rest.  Distutils parameters should come after
+# # the target as in 'python setup.py build --prefix=/usr/local' and
+# # parameters for us should appear before the target as in
+# # 'python setup.py -I/usr/include build'.
+# options, leftovers = getopt.getopt(sys.argv[1:], "I:L:C:R:h",
+#                                    ["help"])
+# for option in options:
+#   if option[0] == '-I':
+#     include_dirs.append(option[1])
+#   if option[0] == '-L':
+#     library_dirs.append(option[1])
+#   if option[0] == '-C':
+#     extra_compile_args.append(option[1])
+#   if option[0] == '-R':
+#     extra_link_args.append(option[1])
+#   if option[0] == '-h':
+#     _do_usage()
+#
+#   if option[0] == '--help':
+#     _do_usage()
+#
+#   # All long options just get passed through
+#   if option[0][:2] == '--':
+#     leftovers.append(option[0])
+#     leftovers.append(option[1])
+# sys.argv[1:] = leftovers
 
 from distutils.extension import Extension
 import numpy as np
@@ -74,13 +75,14 @@ from distutils.spawn import find_executable
 from distutils.core import Command
 
 import subprocess
+from subprocess import check_output
 
 include_dirs.insert(0, np.get_include())
 extra_compile_args.insert(0, '-Wno-uninitialized')
 extra_compile_args.insert(0, '-Wno-unused-function')
 
-m1 = Extension('adios_mpi', 
-               sources=['adios_mpi.cpp'], 
+m1 = Extension('adios_mpi.adios_mpi',
+               sources=['adios_mpi.cpp'],
                define_macros=[],
                include_dirs = include_dirs,
                library_dirs = library_dirs,
@@ -96,13 +98,13 @@ if cmd == None:
         "Please install Adios or check PATH.\n")
     sys.exit(-1)
 
-p = subprocess.Popen(["adios_config", "-c"], stdout=subprocess.PIPE)
-for path in p.communicate()[0].strip().split(" "):
+out = check_output(["adios_config", "-c"]).decode("utf-8")
+for path in out.strip().split(" "):
     if path.startswith('-I'):
         m1.include_dirs.append(path.replace('-I', '', 1))
 
-p = subprocess.Popen(["adios_config", "-l"], stdout=subprocess.PIPE)
-for path in p.communicate()[0].strip().split(" "):
+out = check_output(["adios_config", "-l"]).decode("utf-8")
+for path in out.strip().split(" "):
     if path.startswith('-L'):
         m1.library_dirs.append(path.replace('-L', '', 1))
     if path.startswith('-l'):
@@ -121,13 +123,27 @@ class adios_test(Command):
         import sys
         errno = subprocess.call([sys.executable, 'tests/test_adios_mpi.py', 'tests/config_mpi.xml'])
         raise SystemExit(errno)
-    
-setup(name = 'adios_mpi',
-      version = '1.8.1b3',
-      description = 'Python Module for Adios MPI',
-      author = 'Jong Choi',
-      author_email = 'yyalli at gmail.com',
-      url = 'http://www.olcf.ornl.gov/center-projects/adios/',
+
+NAME = 'adios_mpi'
+DESCRIPTION = 'Python Module for Adios MPI'
+AUTHOR = 'Jong Choi'
+AUTHOR_EMAIL = 'choij at ornl.gov'
+URL = 'http://www.olcf.ornl.gov/center-projects/adios/'
+
+import re
+module_file = open("src_mpi/__init__.py").read()
+metadata = dict(re.findall("__([a-z]+)__\s*=\s*'([^']+)'", module_file))
+VERSION = metadata['version']
+
+setup(name = NAME,
+      version = VERSION,
+      description = DESCRIPTION,
+      author = AUTHOR,
+      author_email = AUTHOR_EMAIL,
+      url = URL,
       cmdclass={'test': adios_test},
       executables = [],
-      ext_modules = [m1])
+      ext_modules = [m1],
+      packages=['adios_mpi', 'adios_mpi._hl'],
+      package_dir = {'adios_mpi': 'src_mpi', 'adios_mpi._hl': '_hl'},
+      )
diff --git a/wrappers/numpy/src/__init__.py b/wrappers/numpy/src/__init__.py
new file mode 100644
index 0000000..d72a1b3
--- /dev/null
+++ b/wrappers/numpy/src/__init__.py
@@ -0,0 +1,2 @@
+from .adios import *
+__version__ = '1.9.1b19'
diff --git a/wrappers/numpy/src_mpi/__init__.py b/wrappers/numpy/src_mpi/__init__.py
new file mode 100644
index 0000000..da69a47
--- /dev/null
+++ b/wrappers/numpy/src_mpi/__init__.py
@@ -0,0 +1,2 @@
+from .adios_mpi import *
+__version__ = '1.9.1b19'
diff --git a/wrappers/numpy/test/README b/wrappers/numpy/test/README
new file mode 100644
index 0000000..ef9cb98
--- /dev/null
+++ b/wrappers/numpy/test/README
@@ -0,0 +1,8 @@
+This directory contains unit test cases for Adios python binding. The
+test cases are based on Python "unittest" module
+
+Simply, run individual files as follows:
+$ python ./test_adios_unittest.py
+
+Or, you can run all the files in this directory:
+$ python -m unittest discover .
diff --git a/wrappers/numpy/test/__init__.py b/wrappers/numpy/test/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/wrappers/numpy/test/test_adios_group_unittest.py b/wrappers/numpy/test/test_adios_group_unittest.py
new file mode 100644
index 0000000..3dce058
--- /dev/null
+++ b/wrappers/numpy/test/test_adios_group_unittest.py
@@ -0,0 +1,148 @@
+import unittest as ut
+import adios as ad
+import numpy as np
+from common import TempFile
+from common import Slicee
+
+class AdiosTestCase(ut.TestCase):
+    temp = None ## TempFile
+
+    def setUp(self):
+        ad.init_noxml()
+
+    def tearDown(self):
+        ad.finalize()
+
+    def test_simple1(self):
+        self.temp = TempFile()
+
+        NX = 10
+        size = 2
+        t = np.array(list(range(NX*size)), dtype=np.float64)
+        tt = t.reshape((size, NX))
+
+        fw = ad.writer(self.temp.path)
+        fw.declare_group('group', method='POSIX1')
+
+        fw['NX'] = NX
+        fw['size'] = size
+        fw['temperature'] = tt
+        fw.attrs['/temperature/description'] = "Global array written from 'size' processes"
+        fw.attrs["/someSubGroup/anOtherGroup/anOtherAttribute"] = 99
+        fw["/someSubGroup/anOtherGroup/anOtherVariable"] = 77
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        t = f["temperature"]
+        # here t could have a member dictionary attr(s) again
+        # which looks up all attributes starting with t.name
+
+        # now match: f.attrs["/temperature/description"]
+        self.assertEqual(t.attrs["description"], f.attrs["/temperature/description"])
+
+        # the same should be possible for groups
+        g = f["/someSubGroup/anOtherGroup"]
+
+        # now match: f.attrs["/someSubGroup/anOtherGroup/anOtherAttribute"]
+        self.assertEqual(g.attrs["anOtherAttribute"], f.attrs["/someSubGroup/anOtherGroup/anOtherAttribute"])
+
+        # now match: f["/someSubGroup/anOtherGroup/anOtherVariable"]
+        self.assertEqual(g["anOtherVariable"], f["/someSubGroup/anOtherGroup/anOtherVariable"])
+
+        # Missing '/'
+        g = f["someSubGroup/anOtherGroup"]
+
+        # now match: f.attrs["/someSubGroup/anOtherGroup/anOtherAttribute"]
+        self.assertEqual(g.attrs["anOtherAttribute"], f.attrs["/someSubGroup/anOtherGroup/anOtherAttribute"])
+
+        # now match: f["/someSubGroup/anOtherGroup/anOtherVariable"]
+        self.assertEqual(g["anOtherVariable"], f["/someSubGroup/anOtherGroup/anOtherVariable"])
+
+        ## Testing name acess
+        self.assertEqual(g["anOtherVariable"][...], g.anOtherVariable[...])
+        self.assertEqual(g["anOtherAttribute"].value, g.anOtherAttribute.value)
+
+
+    def test_simple2(self):
+        self.temp = TempFile()
+
+        NX = 10
+        size = 2
+        t = np.array(list(range(NX*size)), dtype=np.float64)
+        tt = t.reshape((size, NX))
+
+        fw = ad.writer(self.temp.path)
+        fw.declare_group('mygroup', method='POSIX1')
+
+        fw['/data/0/fields/FieldE/x'] = tt
+        fw['/data/0/fields/FieldE/y'] = tt*2
+
+        fw['/data/0/particles/i/globalCellIdx/x'] = t
+        fw['/data/0/particles/i/globalCellIdx/y'] = t*2
+
+        fw.attrs['/data/0/fields/FieldE/x/sim_unit'] = 77
+        fw.attrs['/data/0/fields/FieldE/y/sim_unit'] = 99
+        fw.attrs['/data/0/fields/e_chargeDensity/sim_unit'] = 88
+
+        fw.attrs['/data/0/iteration'] = 33
+        fw.attrs['/data/0/sim_slides'] = 55
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        g = f["data/0"]
+        self.assertTrue((g['fields/FieldE/x'][...] == tt).all())
+        self.assertEqual(g['fields/FieldE/y/sim_unit'][...], 99)
+        self.assertEqual(g['iteration'][...], 33)
+
+        g1 = f["/data/0"]
+        self.assertTrue((g1['fields/FieldE/x'][...] == tt).all())
+        self.assertEqual(g1['fields/FieldE/y/sim_unit'][...], 99)
+        self.assertEqual(g1['iteration'][...], 33)
+
+        g = f["data"]
+        g = f["/data"]
+        g = f["/data/"]
+        g = f["data/0/"]
+        g = f["/data/0"]
+
+        g2 = g["fields"]
+        self.assertTrue((g2['FieldE/x'][...] == tt).all())
+        self.assertTrue((g2['FieldE/y'][...] == tt*2).all())
+        self.assertEqual(g2['FieldE/x/sim_unit'][...], 77)
+        self.assertEqual(g2['FieldE/y/sim_unit'][...], 99)
+
+        ## Check dirs()
+        self.assertEqual(g.dirs(), ['particles', 'fields'])
+        self.assertEqual(g['fields'].dirs(), ['e_chargeDensity', 'FieldE'])
+        self.assertEqual(f.dirs(), ['data'])
+
+    def test_softdict1(self):
+        self.temp = TempFile()
+
+        fw = ad.writer(self.temp.path)
+        fw.attrs['a1'] = 12
+        fw.attrs['/a2'] = 42
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        self.assertEqual(f.attrs['/a1'][...], f['/a1'][...])
+        self.assertEqual(f.attrs['a1'][...], f['a1'][...])
+        self.assertEqual(f.attrs['/a2'][...], f['/a2'][...])
+        self.assertEqual(f.attrs['a2'][...], f['a2'][...])
+
+    def test_softdict2(self):
+        self.temp = TempFile()
+
+        fw = ad.writer(self.temp.path)
+        fw.vars['a1'] = 12
+        fw.vars['/a2'] = 42
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        self.assertEqual(f.vars['/a1'][...], f['/a1'][...])
+        self.assertEqual(f.vars['a1'][...], f['a1'][...])
+        self.assertEqual(f.vars['/a2'][...], f['/a2'][...])
+        self.assertEqual(f.vars['a2'][...], f['a2'][...])
+
+if __name__ == '__main__':
+    ut.main()
diff --git a/wrappers/numpy/test/test_adios_unittest.py b/wrappers/numpy/test/test_adios_prefix_unittest.py
similarity index 54%
copy from wrappers/numpy/test/test_adios_unittest.py
copy to wrappers/numpy/test/test_adios_prefix_unittest.py
index 287f782..77b3dc3 100644
--- a/wrappers/numpy/test/test_adios_unittest.py
+++ b/wrappers/numpy/test/test_adios_prefix_unittest.py
@@ -10,59 +10,65 @@ class AdiosTestCase(ut.TestCase):
 
     def setUp(self):
         self.temp = TempFile()
-        
+
         ad.init_noxml()
-        
-        ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+
         g = ad.declare_group("temperature", "", ad.FLAG.YES)
         ad.define_var(g, "NX", "", ad.DATATYPE.integer, "", "", "")
         ad.define_var(g, "size", "", ad.DATATYPE.integer, "", "", "")
         ad.define_var(g, "temperature", "", ad.DATATYPE.double, "size,NX", "size,NX", "0,0")
+        ad.define_var(g, "temperature", "", ad.DATATYPE.double, "size,NX", "size,NX", "0,0")
         self.msg = "this is a test"
         ad.define_attribute(g, "desc", "", ad.DATATYPE.string, self.msg, "")
+        ad.define_attribute(g, "temperature/unit", "", ad.DATATYPE.string, "C", "")
+        ad.define_attribute(g, "temperature/desc", "", ad.DATATYPE.string, "description", "")
+        ad.define_attribute(g, "/subgroup/subsubgroup/otherattr", "", ad.DATATYPE.string, "another", "")
+        ad.define_var(g, "/subgroup/subsubgroup/othervar", "", ad.DATATYPE.integer, "", "", "")
         ad.select_method(g, "POSIX1", "verbose=3", "")
 
         fd = ad.open("temperature", self.temp.path, "w")
         self.NX = 10
         self.size = 2
-        groupsize =  4 + 4 + 8 * self.size * self.NX
-        t = np.array(range(self.NX * self.size), dtype=np.float64)
+        ##groupsize =  4 + 4 + 8 * self.size * self.NX + 4
+        t = np.array(list(range(self.NX * self.size)), dtype=np.float64)
         self.tt = t.reshape((self.size, self.NX))
-        ad.set_group_size(fd, groupsize)
+        ##ad.set_group_size(fd, groupsize)
         ad.write_int(fd, "NX", self.NX)
         ad.write_int(fd, "size", self.size)
         ad.write(fd, "temperature", self.tt)
+        ad.write_int(fd, "/subgroup/subsubgroup/othervar", 99)
         ad.close(fd)
 
         ad.finalize()
 
         self.f = ad.file(self.temp.path)
-        
+
     def tearDown(self):
         try:
             if self.f:
                 self.f.close()
         except:
             pass
-        
+
     def test_adios_file(self):
-        self.assertEqual(self.f.nattrs, 1)
-        self.assertEqual(self.f.nvars, 3)
+        self.assertEqual(self.f.nattrs, 4)
+        self.assertEqual(self.f.nvars, 4)
         self.assertEqual(self.f.current_step, 0)
         self.assertEqual(self.f.last_step, 0)
-        self.assertEqual(sorted(self.f.var.keys()),
-                         sorted(['NX', 'size', 'temperature']))
-        self.assertEqual(self.f.attr.keys(), ['desc'])
+        self.assertEqual(sorted(self.f.vars.keys()), \
+                         sorted(['NX', 'size', 'temperature', '/subgroup/subsubgroup/othervar']))
+        self.assertEqual(sorted(self.f.attrs.keys()), \
+                        sorted(['temperature/unit', 'temperature/desc', 'desc', '/subgroup/subsubgroup/otherattr']))
 
     def test_adios_attr(self):
-        self.assertEqual(self.f.attr['desc'].value, self.msg)
-        self.assertEqual(self.f.attr['desc'].dtype, np.dtype('S14'))
+        self.assertEqual(self.f.attrs['desc'].value, self.msg.encode())
+        self.assertEqual(self.f.attrs['desc'].dtype, np.dtype('S14'))
 
     def test_adios_file_getitem(self):
         self.assertRaises(TypeError, self.f.__getitem__, Slicee()[1])
         self.assertRaises(KeyError, self.f.__getitem__, Slicee()[:,:])
         self.assertRaises(KeyError, self.f.__getitem__, Slicee()['NONE'])
-        
+
     def test_adios_var_scalar(self):
         v = self.f['NX']
         self.assertEqual(v.ndim, 0)
@@ -70,15 +76,13 @@ class AdiosTestCase(ut.TestCase):
         self.assertEqual(v.nsteps, 1)
 
         val = v.read()
-        self.assertEqual(val.dtype, np.dtype('int32'))
-        self.assertEqual(val.ndim, 0)
-        self.assertEqual(val.shape, ())
-        self.assertEqual(val, v[:])
+        self.assertEqual(val, v[...])
+        self.assertEqual(val, self.NX)
 
     def test_adios_var_array(self):
         v = self.f['temperature']
         self.assertEqual(v.ndim, 2)
-        self.assertEqual(v.dims, (2L, 10L))
+        self.assertEqual(v.dims, (2, 10))
         self.assertEqual(v.nsteps, 1)
 
         val = v.read()
@@ -90,21 +94,37 @@ class AdiosTestCase(ut.TestCase):
         self.assertTrue((v.read(offset=(0,5), count=(2,5)) == v[:,5:]).all())
         self.assertTrue((v.read(offset=(0,5), count=(2,5)) == v[:,-5:]).all())
 
-    def test_adios_var_getitem(self):        
+    def test_adios_var_getitem(self):
         v = self.f['temperature']
         val = v.read()
-        self.assertTrue((val == v[...,...]).all())
+        self.assertRaises(ValueError, v.__getitem__, Slicee()[...,...])
         self.assertTrue((val == v[:,...]).all())
         self.assertTrue((val == v[:,::1]).all())
 
         ## equivalent to v[::2]
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[::2])
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[:,:,:])
+        ##self.assertRaises(IndexError, v.__getitem__, Slicee()[::2])
+        self.assertRaises(TypeError, v.__getitem__, Slicee()[:,:,:])
 
     def test_adios_var_array_squeeze(self):
         v = self.f['temperature']
         val = v[:,1]
         self.assertEqual(val.shape, (2,))
 
+    def test_adios_var_attr(self):
+        v = self.f['temperature']
+        self.assertEqual(list(v.attrs.keys()).sort(), ['unit', 'desc'].sort())
+        self.assertEqual(v.attrs['desc'].value, 'description'.encode())
+        self.assertEqual(v.attrs['unit'].value, 'C'.encode())
+
+    def test_adios_group(self):
+        # No error anymore (as of May 27, 2016)
+        #self.assertRaises(KeyError, self.f.__getitem__, Slicee()['/subgroup'])
+
+        g = self.f['/subgroup/subsubgroup']
+        self.assertEqual(list(g.vars.keys()), ['othervar'])
+        self.assertEqual(list(g.attrs.keys()), ['otherattr'])
+        self.assertEqual(g['othervar'][...], 99)
+        self.assertEqual(g['otherattr'][...], 'another'.encode())
+
 if __name__ == '__main__':
     ut.main()
diff --git a/wrappers/numpy/test/test_adios_timestep_unittest.py b/wrappers/numpy/test/test_adios_timestep_unittest.py
index e9ead2a..18e94c1 100644
--- a/wrappers/numpy/test/test_adios_timestep_unittest.py
+++ b/wrappers/numpy/test/test_adios_timestep_unittest.py
@@ -11,10 +11,9 @@ class AdiosTestCase(ut.TestCase):
 
     def setUp(self):
         self.temp = TempFile()
-        
+
         ad.init_noxml()
-        
-        ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+
         g = ad.declare_group("temperature", "", ad.FLAG.YES)
         ad.define_var(g, "NX", "", ad.DATATYPE.integer, "", "", "")
         ad.define_var(g, "size", "", ad.DATATYPE.integer, "", "", "")
@@ -29,10 +28,10 @@ class AdiosTestCase(ut.TestCase):
             fd = ad.open("temperature", self.temp.path, mode)
             self.NX = 10
             self.size = 2
-            groupsize =  4 + 4 + 8 * self.size * self.NX
-            t = np.array(range(self.NX * self.size), dtype=np.float64) + 100*i
+            ##groupsize =  4 + 4 + 8 * self.size * self.NX
+            t = np.array(list(range(self.NX * self.size)), dtype=np.float64) + 100*i
             self.tt = t.reshape((self.size, self.NX))
-            ad.set_group_size(fd, groupsize)
+            ##ad.set_group_size(fd, groupsize)
             ad.write_int(fd, "NX", self.NX)
             ad.write_int(fd, "size", self.size)
             ad.write(fd, "temperature", self.tt)
@@ -41,14 +40,14 @@ class AdiosTestCase(ut.TestCase):
         ad.finalize()
 
         self.f = ad.file(self.temp.path)
-        
+
     def tearDown(self):
         try:
             if self.f:
                 self.f.close()
         except:
             pass
-        
+
     def test_adios_file(self):
         self.assertEqual(self.f.current_step, 0)
         self.assertEqual(self.f.last_step, 4)
@@ -68,8 +67,9 @@ class AdiosTestCase(ut.TestCase):
 
     def test_adios_var_array(self):
         v = self.f['temperature']
+
         self.assertEqual(v.ndim, 2)
-        self.assertEqual(v.dims, (2L, 10L))
+        self.assertEqual(v.dims, (2, 10))
         self.assertEqual(v.nsteps, 5)
 
         val = v.read()
@@ -77,17 +77,29 @@ class AdiosTestCase(ut.TestCase):
 
         self.assertEqual(val.ndim, v.ndim + 1)
         self.assertEqual(val.shape, (5, self.size, self.NX))
-        
+
         self.assertTrue((val == v[:]).all())
         self.assertTrue((val == v[:,:]).all())
         self.assertTrue((val == v[:,:,:]).all())
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[::2])
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[:,:,:,:])
+        #self.assertRaises(NotImplementedError, v.__getitem__, Slicee()[::2])
+        self.assertRaises(TypeError, v.__getitem__, Slicee()[:,:,:,:])
 
         self.assertTrue((v.read(offset=(0,5), count=(2,5)) == v[:,:,5:]).all())
         self.assertTrue((v.read(offset=(0,5), count=(2,5)) == v[:,:,-5:]).all())
 
-    def test_adios_var_getitem(self):        
+    def test_adios_var_array_squeeze(self):
+        v = self.f['temperature']
+        self.assertEqual(v[...].shape, (5,2,10))
+        self.assertEqual(v[1,...].shape, (2,10))
+        self.assertEqual(v[:,1,...].shape, (5,10))
+        self.assertEqual(v[:,1].shape, (5,10))
+        self.assertEqual(v[:,:,1].shape, (5,2))
+        self.assertEqual(v[...,1].shape, (5,2))
+
+        self.assertEqual(v[1:2,...].shape, (1,2,10))
+        self.assertEqual(v[:,1:2,...].shape, (5,1,10))
+
+    def test_adios_var_getitem(self):
         v = self.f['temperature']
 
         self.assertTrue((v[0,] == v.read(from_steps=0, nsteps=1)).all())
@@ -101,10 +113,31 @@ class AdiosTestCase(ut.TestCase):
         self.assertTrue((v[-1,...] == v.read(from_steps=4, nsteps=1)).all())
         self.assertTrue((v[-2,...] == v.read(from_steps=3, nsteps=1)).all())
 
-        self.assertTrue((v[:,...,-1] == v.read(offset=(0,9), count=(2,1))).all())
+        self.assertTrue((v[:,...,-1] == v.read(offset=(0,9), count=(2,1), scalar=(False,True))).all())
         self.assertTrue((v[:,...,-3:-1] == v.read(offset=(0,7), count=(2,2))).all())
 
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[:,:,-1:-2])
+        self.assertRaises(ValueError, v.__getitem__, Slicee()[:,:,-1:-2])
+
+    def test_adios_var_read_points(self):
+        v = self.f['temperature']
+        x1 = ((0,0),)
+        x2 = ((0,0),(0,1),)
+        x3 = ((0,0),(0,1),(0,2),)
+
+        self.assertEqual(len(v.read_points()), 0)
+        ##self.assertTrue((v.read_points(x1) == self.tt[0,0:1]).all())
+        ##self.assertTrue((v.read_points(x2) == self.tt[0,0:2]).all())
+        ##self.assertTrue((v.read_points(x3) == self.tt[0,0:3]).all())
+
+    def test_adios_var_read_fancy(self):
+        v = self.f['temperature']
+        m0 = np.arange(2) % 2 != 0
+        m1 = np.arange(10) % 3 != 0
+
+        self.assertEqual(v[:,:,m1].shape, (5,2,6))
+        self.assertEqual(v[:,m0,m1].shape, (5,1,6))
+        self.assertEqual(v[:,1,m1].shape, (5,6))
+        self.assertEqual(v[1,1,m1].shape, (6,))
 
 if __name__ == '__main__':
     ut.main()
diff --git a/wrappers/numpy/test/test_adios_unittest.py b/wrappers/numpy/test/test_adios_unittest.py
index 287f782..67e52a3 100644
--- a/wrappers/numpy/test/test_adios_unittest.py
+++ b/wrappers/numpy/test/test_adios_unittest.py
@@ -10,25 +10,27 @@ class AdiosTestCase(ut.TestCase):
 
     def setUp(self):
         self.temp = TempFile()
-        
+
         ad.init_noxml()
-        
-        ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+
         g = ad.declare_group("temperature", "", ad.FLAG.YES)
         ad.define_var(g, "NX", "", ad.DATATYPE.integer, "", "", "")
         ad.define_var(g, "size", "", ad.DATATYPE.integer, "", "", "")
         ad.define_var(g, "temperature", "", ad.DATATYPE.double, "size,NX", "size,NX", "0,0")
         self.msg = "this is a test"
-        ad.define_attribute(g, "desc", "", ad.DATATYPE.string, self.msg, "")
+        self.unit = "C"
+        ## attr must be <varpath> + / + something without / (line 857, common_read.c)
+        ad.define_attribute(g, "temperature/desc", "", ad.DATATYPE.string, self.msg, "")
+        ad.define_attribute(g, "temperature/unit", "", ad.DATATYPE.string, self.unit, "")
         ad.select_method(g, "POSIX1", "verbose=3", "")
 
         fd = ad.open("temperature", self.temp.path, "w")
         self.NX = 10
         self.size = 2
-        groupsize =  4 + 4 + 8 * self.size * self.NX
-        t = np.array(range(self.NX * self.size), dtype=np.float64)
+        ##groupsize =  4 + 4 + 8 * self.size * self.NX
+        t = np.array(list(range(self.NX * self.size)), dtype=np.float64)
         self.tt = t.reshape((self.size, self.NX))
-        ad.set_group_size(fd, groupsize)
+        ##ad.set_group_size(fd, groupsize)
         ad.write_int(fd, "NX", self.NX)
         ad.write_int(fd, "size", self.size)
         ad.write(fd, "temperature", self.tt)
@@ -37,32 +39,33 @@ class AdiosTestCase(ut.TestCase):
         ad.finalize()
 
         self.f = ad.file(self.temp.path)
-        
+
     def tearDown(self):
         try:
             if self.f:
                 self.f.close()
         except:
             pass
-        
+
     def test_adios_file(self):
-        self.assertEqual(self.f.nattrs, 1)
+        self.assertEqual(self.f.nattrs, 2)
         self.assertEqual(self.f.nvars, 3)
         self.assertEqual(self.f.current_step, 0)
         self.assertEqual(self.f.last_step, 0)
-        self.assertEqual(sorted(self.f.var.keys()),
+        self.assertEqual(sorted(self.f.vars.keys()), \
                          sorted(['NX', 'size', 'temperature']))
-        self.assertEqual(self.f.attr.keys(), ['desc'])
+        self.assertEqual(sorted(self.f.attrs.keys()), \
+                         sorted(['temperature/unit', 'temperature/desc']))
 
     def test_adios_attr(self):
-        self.assertEqual(self.f.attr['desc'].value, self.msg)
-        self.assertEqual(self.f.attr['desc'].dtype, np.dtype('S14'))
+        self.assertEqual(self.f.attrs['temperature/desc'].value, self.msg.encode())
+        self.assertEqual(self.f.attrs['temperature/desc'].dtype, np.dtype('S14'))
 
     def test_adios_file_getitem(self):
         self.assertRaises(TypeError, self.f.__getitem__, Slicee()[1])
         self.assertRaises(KeyError, self.f.__getitem__, Slicee()[:,:])
         self.assertRaises(KeyError, self.f.__getitem__, Slicee()['NONE'])
-        
+
     def test_adios_var_scalar(self):
         v = self.f['NX']
         self.assertEqual(v.ndim, 0)
@@ -70,16 +73,16 @@ class AdiosTestCase(ut.TestCase):
         self.assertEqual(v.nsteps, 1)
 
         val = v.read()
-        self.assertEqual(val.dtype, np.dtype('int32'))
-        self.assertEqual(val.ndim, 0)
-        self.assertEqual(val.shape, ())
-        self.assertEqual(val, v[:])
+        self.assertEqual(val, v[...])
+        self.assertEqual(val, self.NX)
 
     def test_adios_var_array(self):
         v = self.f['temperature']
         self.assertEqual(v.ndim, 2)
-        self.assertEqual(v.dims, (2L, 10L))
+        self.assertEqual(v.dims, (2, 10))
+        self.assertEqual(v.shape, (2, 10))
         self.assertEqual(v.nsteps, 1)
+        self.assertEqual(v.size, 20)
 
         val = v.read()
         self.assertEqual(val.dtype, np.dtype('float64'))
@@ -90,21 +93,75 @@ class AdiosTestCase(ut.TestCase):
         self.assertTrue((v.read(offset=(0,5), count=(2,5)) == v[:,5:]).all())
         self.assertTrue((v.read(offset=(0,5), count=(2,5)) == v[:,-5:]).all())
 
-    def test_adios_var_getitem(self):        
+    def test_adios_var_getitem(self):
         v = self.f['temperature']
         val = v.read()
-        self.assertTrue((val == v[...,...]).all())
+        #self.assertTrue((val == v[...,...]).all())
         self.assertTrue((val == v[:,...]).all())
         self.assertTrue((val == v[:,::1]).all())
 
         ## equivalent to v[::2]
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[::2])
-        self.assertRaises(IndexError, v.__getitem__, Slicee()[:,:,:])
+        ##self.assertRaises(IndexError, v.__getitem__, Slicee()[::2])
+        #self.assertRaises(IndexError, v.__getitem__, Slicee()[:,:,:])
 
     def test_adios_var_array_squeeze(self):
         v = self.f['temperature']
         val = v[:,1]
         self.assertEqual(val.shape, (2,))
 
+        val = v[:,1:2]
+        self.assertEqual(val.shape, (2,1))
+
+        val = v[1,:]
+        self.assertEqual(val.shape, (10,))
+
+        val = v[1:2,:]
+        self.assertEqual(val.shape, (1,10))
+
+    def test_adios_var_getattr(self):
+        v = self.f['temperature']
+        self.assertEqual(v.attrs['unit'].value, self.unit.encode())
+
+    def test_adios_var_read_points(self):
+        v = self.f['temperature']
+        x1 = ((0,0),)
+        x2 = ((0,0),(0,1),)
+        x3 = ((0,0),(0,1),(0,2),)
+
+        self.assertEqual(len(v.read_points()), 0)
+        self.assertTrue((v.read_points(x1) == self.tt[0,0:1]).all())
+        self.assertTrue((v.read_points(x2) == self.tt[0,0:2]).all())
+        self.assertTrue((v.read_points(x3) == self.tt[0,0:3]).all())
+
+        xerr = ((0,0),(0,1),(0,2,0),)
+        self.assertRaises(IndexError, v.read_points, xerr)
+
+    def test_adios_var_read_fancy(self):
+        v = self.f['temperature']
+        m = np.arange(10) % 3 != 0
+
+        self.assertTrue((v[:,m] == self.tt[:,m]).all())
+        self.assertTrue((v[1,m] == self.tt[1,m]).all())
+        self.assertEqual(v[1,m].shape, (6,))
+        self.assertTrue((v[:1,m] == self.tt[:1,m]).all())
+        self.assertRaises(ValueError, v.__getitem__, Slicee()[3,m])
+
+    def test_adios_var_name_access(self):
+        v1 = self.f['temperature']
+        v2 = self.f.temperature
+        self.assertTrue((v1[...] == v2[...]).all())
+
+        v1 = self.f['NX']
+        v2 = self.f.NX
+        self.assertEqual(v1[...], v2[...])
+
+    def test_adios_open_and_close(self):
+        self.assertTrue(self.f.is_open())
+        self.assertTrue(self.f)
+
+        self.f.close()
+        self.assertFalse(self.f.is_open())
+        self.assertFalse(self.f)
+
 if __name__ == '__main__':
     ut.main()
diff --git a/wrappers/numpy/test/test_adios_write_unittest.py b/wrappers/numpy/test/test_adios_write_unittest.py
index 7557fd4..00a465c 100644
--- a/wrappers/numpy/test/test_adios_write_unittest.py
+++ b/wrappers/numpy/test/test_adios_write_unittest.py
@@ -18,7 +18,6 @@ class AdiosTestCase(ut.TestCase):
 
     def write_scalar(self, adtype, val, varname='val'):
         ad.init_noxml()
-        ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
         g = ad.declare_group("group", "", ad.FLAG.YES)
         ad.define_var(g, varname, "", adtype, "", "", "")
         ad.select_method(g, "POSIX1", "", "")
@@ -31,18 +30,18 @@ class AdiosTestCase(ut.TestCase):
             npval = np.array(val, dtype=dtype)
 
         fd = ad.open("group", self.temp.path, "w")
-        ad.set_group_size(fd, npval.nbytes)
+        ##ad.set_group_size(fd, npval.nbytes)
         ad.write(fd, varname, val, dtype)
         ad.close(fd)
         ad.finalize()
 
         f = ad.file(self.temp.path)
-        v = f.var['val']
+        v = f.vars['val']
         self.assertEqual(v.read(), npval)
 
     def test_write_scalar_int(self):
         self.write_scalar(ad.DATATYPE.integer, 123)
-        
+
     def test_write_scalar_double(self):
         self.write_scalar(ad.DATATYPE.double, 123)
 
@@ -51,4 +50,3 @@ class AdiosTestCase(ut.TestCase):
 
 if __name__ == '__main__':
     ut.main()
-        
diff --git a/wrappers/numpy/test/test_adios_writer_unittest.py b/wrappers/numpy/test/test_adios_writer_unittest.py
index e79e7b0..4ccfe54 100644
--- a/wrappers/numpy/test/test_adios_writer_unittest.py
+++ b/wrappers/numpy/test/test_adios_writer_unittest.py
@@ -10,21 +10,20 @@ class AdiosTestCase(ut.TestCase):
 
     def setUp(self):
         ad.init_noxml()
-        ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10)
 
     def tearDown(self):
         ad.finalize()
 
     def test_writer_var(self):
         self.temp = TempFile()
-        
+
         NX = 10
-        val1 = np.array(range(NX), dtype=np.int32)
-        val2 = np.array(range(5), dtype='f8')
+        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.define_var("NX")
         fw.define_var("val1", "NX")
         fw.define_var("val2", val2.shape)
@@ -35,33 +34,37 @@ class AdiosTestCase(ut.TestCase):
         fw.close()
 
         f = ad.file(self.temp.path)
-        self.assertEqual(f['NX'][:], NX)
+        self.assertEqual(f['NX'][...], NX)
         self.assertTrue((f['val1'][:] == val1).all())
         self.assertTrue((f['val2'][:] == val2).all())
 
     def test_writer_attr(self):
         self.temp = TempFile()
-        
+
         NX = 10
-        val1 = np.array(range(NX), dtype=np.int32)
-        val2 = np.array(range(5), dtype='f8')
+        val1 = np.array(list(range(NX)), dtype=np.int32)
+        val2 = np.array(list(range(5)), dtype='f8')
 
         single_string = "ABCD"
         three_string = ("AA","BBB","CCCC")
         single_int = 10
-        five_int = np.array(range(5), dtype=np.int32)
+        five_int = np.array(list(range(5)), dtype=np.int32)
         single_double = 1.1
-        five_double = np.array(range(5), dtype='double')*1.1
-        
+        five_double = np.array(list(range(5)), dtype='double')*1.1
+        unicode_string = u"unicode"
+        bytes_string = u"bytes"
+
         fw = ad.writer(self.temp.path)
         fw.declare_group("group", method="POSIX1")
-        
+
         fw.define_attr("single_string")
         fw.define_attr("three_string")
         fw.define_attr("single_int")
         fw.define_attr("five_int")
         fw.define_attr("single_double")
         fw.define_attr("five_double")
+        fw.define_attr("unicode_string")
+        fw.define_attr("bytes_string")
 
         fw['single_string'] = single_string
         fw['three_string'] = three_string
@@ -69,56 +72,86 @@ class AdiosTestCase(ut.TestCase):
         fw['five_int'] = five_int
         fw['single_double'] = single_double
         fw['five_double'] = five_double
+        fw['unicode_string'] = unicode_string
+        fw['bytes_string'] = bytes_string
         fw.close()
-        
+
         f = ad.file(self.temp.path)
-        self.assertEqual(f['single_string'].value, single_string)
-        self.assertTrue((f['three_string'].value == three_string).all())
+        self.assertEqual(f['single_string'].value, single_string.encode())
+        ##self.assertTrue((f['three_string'].value == three_string).all())
+        self.assertTrue(f['three_string'].value[0], three_string[0].encode())
+        self.assertTrue(f['three_string'].value[1], three_string[1].encode())
+        self.assertTrue(f['three_string'].value[2], three_string[2].encode())
         self.assertEqual(f['single_int'].value, single_int)
         self.assertTrue((f['five_int'].value == five_int).all())
         self.assertEqual(f['single_double'].value, single_double)
         self.assertTrue((f['five_double'].value == five_double).all())
+        self.assertTrue(f['unicode_string'].value, unicode_string.encode())
+        self.assertTrue(f['bytes_string'].value, bytes_string)
 
     def test_writer_undefined_var(self):
         self.temp = TempFile()
-        
+
         NX = 10
-        val1 = np.array(range(NX), dtype=np.int32)
-        val2 = np.array(range(5), dtype='f8')
+        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.close()
 
         f = ad.file(self.temp.path)
-        self.assertEqual(f['NX'][:], NX)
+        self.assertEqual(f['NX'][...], NX)
         self.assertTrue((f['val1'][:] == val1).all())
         self.assertTrue((f['val2'][:] == val2).all())
 
     def test_writer_undefined_var2(self):
         self.temp = TempFile()
-        
+
         NX = 10
-        val1 = np.array(range(NX), dtype=np.int32)
-        val2 = np.array(range(5), dtype='f8')
+        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.var['NX'] = NX
-        fw.var['val1'] = val1
-        fw.var['val2'] = val2
+
+        fw.vars['NX'] = NX
+        fw.vars['val1'] = val1
+        fw.vars['val2'] = val2
         fw.close()
 
         f = ad.file(self.temp.path)
-        self.assertEqual(f['NX'][:], NX)
+        self.assertEqual(f['NX'][...], NX)
         self.assertTrue((f['val1'][:] == val1).all())
         self.assertTrue((f['val2'][:] == val2).all())
-        
+
+    def test_writer_default_group(self):
+        self.temp = TempFile()
+        fw = ad.writer(self.temp.path)
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        f.close()
+
+    def test_writer_varname(self):
+        self.temp = TempFile()
+
+        fw = ad.writer(self.temp.path)
+        fw.declare_group("group", method="POSIX1")
+
+        NVARS = 99
+        fw.vars['nvars'] = NVARS
+        fw.vars['/nvars'] = NVARS
+        fw.vars['_nvars'] = NVARS
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        self.assertEqual(f.nvars, 3)
+        self.assertEqual(f._nvars[...], NVARS)
+
 if __name__ == '__main__':
     ut.main()
-        
diff --git a/wrappers/numpy/test/test_selections.py b/wrappers/numpy/test/test_selections.py
new file mode 100644
index 0000000..0fe66c7
--- /dev/null
+++ b/wrappers/numpy/test/test_selections.py
@@ -0,0 +1,90 @@
+import unittest as ut
+import adios as ad
+import numpy as np
+from adios._hl import selections as sel
+from common import TempFile
+from common import Slicee
+
+class SimpleSelectionTestCase(ut.TestCase):
+    def test_simpleselection(self):
+        sgen = Slicee()
+        shape = (10,20,30)
+        x = sel.select(shape, sgen[5])
+        self.assertEqual(x.shape, shape)
+        self.assertEqual(x.mshape, (20,30))
+
+        x = sel.select(shape, sgen[5,:])
+        self.assertEqual(x.mshape, (20,30))
+
+        x = sel.select(shape, sgen[5,...])
+        self.assertEqual(x.mshape, (20,30))
+
+        self.assertRaises(ValueError, sel.select, shape, sgen[20])
+        self.assertRaises(ValueError, sel.select, shape, sgen[...,40])
+        self.assertRaises(ValueError, sel.select, shape, sgen[...,30,20])
+
+        shape = (10,)
+        x = sel.select(shape, sgen[1])
+        self.assertEqual(x.mshape, ())
+
+        self.assertRaises(ValueError, sel.select, shape, sgen[10])
+
+    def test_simpleselection_noninclusive(self):
+        sgen = Slicee()
+        shape = (10,20,30)
+        x = sel.select(shape, sgen[:,:,15])
+        self.assertEqual(x.mshape, (10,20))
+
+        x = sel.select(shape, sgen[:,15,:])
+        self.assertEqual(x.mshape, (10,30))
+
+        x = sel.select(shape, sgen[:,15:16,:])
+        self.assertEqual(x.mshape, (10,1,30))
+
+        x = sel.select(shape, sgen[:,15:17,:])
+        self.assertEqual(x.mshape, (10,2,30))
+
+    def test_simpleselection_ellipsis(self):
+        sgen = Slicee()
+        shape = (10,20,30)
+        x = sel.select(shape, sgen[:,1])
+        self.assertEqual(x.mshape, (10,30))
+
+        x = sel.select(shape, sgen[...,1])
+        self.assertEqual(x.mshape, (10,20))
+
+        x = sel.select(shape, sgen[...])
+        self.assertEqual(x.mshape, (10,20,30))
+
+        x = sel.select(shape, sgen[:,...])
+        self.assertEqual(x.mshape, (10,20,30))
+
+    def test_simpleselection_erros(self):
+        sgen = Slicee()
+        shape = (10,20,30)
+        self.assertRaises(ValueError, sel.select, shape, sgen[...,...])
+
+    def test_fancyselection(self):
+        sgen = Slicee()
+        shape = (10,20,30)
+        m1 = np.arange(10) % 3 != 0
+        m2 = np.arange(20) % 3 != 0
+
+        x1 = sel.FancySelection(shape)
+        x1[m1,:,:]
+        self.assertEqual(x1.shape, shape)
+        self.assertEqual(x1.mshape, np.zeros(shape)[m1,:,:].shape)
+
+        x2 = sel.FancySelection(shape)
+        self.assertRaises(ValueError, x2.__getitem__, sgen[m2,:])
+
+    def test_unitfunction(self):
+        self.assertEqual(sel._translate_indexlist([], 5), (slice(0, 5, None),))
+        self.assertEqual(sel._translate_indexlist([1,2], 5), (slice(1, 3, None),))
+        self.assertEqual(sel._translate_indexlist([0,1,3,4], 5), (slice(0, 2, None), slice(3, 5, None)))
+
+        self.assertRaises(ValueError, sel._translate_indexlist, [5], 5)
+
+
+if __name__ == '__main__':
+    ut.main()
diff --git a/wrappers/numpy/tests/config.xml b/wrappers/numpy/tests/config.xml
index 1d29c90..807b396 100644
--- a/wrappers/numpy/tests/config.xml
+++ b/wrappers/numpy/tests/config.xml
@@ -11,6 +11,6 @@
 
 <method group="temperature" method="POSIX1"/>
 
-<buffer size-MB="2" allocate-time="now"/>
+<buffer max-size-MB="2"/>
 
 </adios-config>
diff --git a/wrappers/numpy/tests/config_mpi.xml b/wrappers/numpy/tests/config_mpi.xml
index 46120d4..3d8747d 100644
--- a/wrappers/numpy/tests/config_mpi.xml
+++ b/wrappers/numpy/tests/config_mpi.xml
@@ -12,6 +12,6 @@
 
 <method group="temperature" method="MPI"/>
 
-<buffer size-MB="2" allocate-time="now"/>
+<buffer max-size-MB="2"/>
 
 </adios-config>
diff --git a/wrappers/numpy/tests/test_adios.py b/wrappers/numpy/tests/test_adios.py
index d383c6d..e6f0d1f 100644
--- a/wrappers/numpy/tests/test_adios.py
+++ b/wrappers/numpy/tests/test_adios.py
@@ -5,12 +5,13 @@ Example:
 $ python ./test_adios.py
 """
 
+
 import adios as ad
 import numpy as np
 import sys
 
 ## Writing
-print "\n>>> Writing ...\n"
+print("\n>>> Writing ...\n")
 
 config = "config.xml"
 if len(sys.argv) > 1:
@@ -22,7 +23,7 @@ fd = ad.open("temperature", "adios_test.bp", "w")
 NX = 10
 size = 2
 groupsize =  4 + 4 + 8 * size * NX
-t = np.array(range(NX*size), dtype=np.float64)
+t = np.array(list(range(NX*size)), dtype=np.float64)
 tt = t.reshape((size, NX))
 ad.set_group_size(fd, groupsize)
 ad.write_int(fd, "NX", NX)
@@ -33,24 +34,23 @@ ad.close(fd)
 ad.finalize()
 
 ## Reading
-print "\n>>> Reading ...\n"
+print("\n>>> Reading ...\n")
 
 f = ad.file("adios_test.bp")
 f.printself()
 
-v = f.var['temperature']
+v = f.vars['temperature']
 v.printself()
 
 val = v.read()
-print val
+print(val)
 assert ((tt == val).all())
 f.close()
 
 ## Testing
-print "\n>>> Test utility functions ...\n"
-
-print "bpls:\n", ad.bpls('adios_test.bp')
-print "readvar:\n", ad.readvar("adios_test.bp", "temperature")
+print("\n>>> Test utility functions ...\n")
 
-print "\n>>> Done.\n"
+print("bpls:\n", ad.bpls('adios_test.bp'))
+print("readvar:\n", ad.readvar("adios_test.bp", "temperature"))
 
+print("\n>>> Done.\n")
diff --git a/wrappers/numpy/tests/test_adios_attribute.py b/wrappers/numpy/tests/test_adios_attribute.py
new file mode 100644
index 0000000..1c87c45
--- /dev/null
+++ b/wrappers/numpy/tests/test_adios_attribute.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+"""
+Example:
+
+$ python ./test_adios.py
+"""
+
+import adios as ad
+import numpy as np
+import getopt, sys
+import os
+import datetime
+
+method = "POSIX1"
+init = "verbose=3;"
+
+## Init
+ad.init_noxml()
+ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+g = ad.declare_group("temperature", "", 1)
+ad.define_var(g, "NX", "", ad.DATATYPE.integer, "", "", "")
+ad.define_var(g, "size", "", ad.DATATYPE.integer, "", "", "")
+ad.define_var(g, "temperature", "", ad.DATATYPE.double, "size,NX", "size,NX", "0,0")
+msg = str(datetime.datetime.now())
+ad.define_attribute(g, "datetime", "", ad.DATATYPE.string, msg, "")
+ad.define_attribute(g, "size2", "", ad.DATATYPE.integer, "0", "size")
+
+ad.define_attribute(g, "temperature/unit", "", ad.DATATYPE.string, "cm", "")
+ad.define_attribute(g, "temperature/unit/desc", "", ad.DATATYPE.string, "desc", "")
+ad.define_attribute(g, "temperature/type", "", ad.DATATYPE.string, "None", "")
+
+ad.select_method(g, method, init, "")
+print(">>> Method:", method)
+
+## Writing
+for i in range(5):
+    fd = ad.open("temperature", "temp.bp", "a")
+
+    NX = 10
+    size = 2
+    groupsize =  4 + 4 + 8 * size * NX
+    t = np.array(list(range(NX*size)), dtype=np.float64) + 100*i
+    tt = t.reshape((size, NX))
+    ad.set_group_size(fd, groupsize)
+    ad.write_int(fd, "NX", NX)
+    ad.write_int(fd, "size", size)
+    ad.write(fd, "temperature", tt)
+    ad.close(fd)
+
+ad.finalize()
+print(">>> Done.")
+
+f = ad.file('temp.bp')
+v = f['temperature']
+print((v.attrs['unit'].value))
+print((f['temperature/unit'].value))
+
+print((v.attrs['unit/desc'].value))
+print((f['temperature/unit/desc'].value))
+
+print((v.attrs['type'].value))
+print((f['temperature/type'].value))
diff --git a/wrappers/numpy/tests/test_adios_matplot.py b/wrappers/numpy/tests/test_adios_matplot.py
index 094761d..977dece 100644
--- a/wrappers/numpy/tests/test_adios_matplot.py
+++ b/wrappers/numpy/tests/test_adios_matplot.py
@@ -10,7 +10,7 @@ import numpy as np
 import matplotlib.pyplot as plt
 
 ## Writing
-print "\n>>> Writing ...\n"
+print("\n>>> Writing ...\n")
 
 ad.init("config.xml")
 fd = ad.open("temperature", "adios_test.bp", "w")
@@ -18,7 +18,7 @@ fd = ad.open("temperature", "adios_test.bp", "w")
 NX = 10
 size = 2
 groupsize =  4 + 4 + 8 * size * NX
-t = np.array(range(NX*size), dtype=np.float64)
+t = np.array(list(range(NX*size)), dtype=np.float64)
 tt = t.reshape((size, NX))
 ad.set_group_size(fd, groupsize)
 ad.write_int(fd, "NX", NX)
@@ -29,28 +29,27 @@ ad.close(fd)
 ad.finalize()
 
 ## Reading
-print "\n>>> Reading ...\n"
+print("\n>>> Reading ...\n")
 
 f = ad.file("adios_test.bp")
 f.printself()
 
-v = f.var['temperature']
+v = f.vars['temperature']
 v.printself()
 
 val = v.read()
-print val
+print(val)
 assert ((tt == val).all())
 f.close()
 
 ## Testing
-print "\n>>> Test utility functions ...\n"
+print("\n>>> Test utility functions ...\n")
 
-print "bpls:\n", ad.bpls('adios_test.bp')
-print "readvar:\n", ad.readvar("adios_test.bp", "temperature")
+print("bpls:\n", ad.bpls('adios_test.bp'))
+print("readvar:\n", ad.readvar("adios_test.bp", "temperature"))
 
 plt.imshow(val)
 plt.colorbar()
 plt.show()
 
-print "\n>>> Done.\n"
-
+print("\n>>> Done.\n")
diff --git a/wrappers/numpy/tests/test_adios_mpi.py b/wrappers/numpy/tests/test_adios_mpi.py
index 9d1e3e3..7eb7cf1 100644
--- a/wrappers/numpy/tests/test_adios_mpi.py
+++ b/wrappers/numpy/tests/test_adios_mpi.py
@@ -16,7 +16,7 @@ rank = comm.Get_rank()
 size = comm.Get_size()
 
 ## Writing
-print "\n>>> Writing ... (rank = %d)\n" % rank
+print("\n>>> Writing ... (rank = %d)\n" % rank)
 
 config = "config_mpi.xml"
 if len(sys.argv) > 1:
@@ -27,7 +27,7 @@ fd = ad.open("temperature", "adios_test_mpi.bp", "w", comm)
 
 NX = 10
 groupsize =  4 + 4 + 4 + 8 * 1 * NX
-t = np.array(range(NX), dtype=np.float64) + rank*NX
+t = np.array(list(range(NX)), dtype=np.float64) + rank*NX
 ad.set_group_size(fd, groupsize)
 ad.write_int(fd, "NX", NX)
 ad.write_int(fd, "rank", rank)
@@ -39,26 +39,26 @@ ad.finalize()
 
 ## Reading
 if rank == 0:
-    print "\n>>> Reading ...\n"
+    print("\n>>> Reading ...\n")
 
     f = ad.file("adios_test_mpi.bp", comm=MPI.COMM_SELF)
     f.printself()
 
-    v = f.var['temperature']
+    v = f.vars['temperature']
     v.printself()
 
     val = v.read()
-    print val
+    print(val)
     assert (int(np.sum(val)) == (size*NX-1)*(size*NX)/2)
     f.close()
 
-print "\n>>> Done.\n"
+print("\n>>> Done.\n")
 
 ## Testing
 if rank == 0:
-    print "\n>>> Test utility functions ...\n"
+    print("\n>>> Test utility functions ...\n")
 
-    print "bpls:\n", ad.bpls('adios_test_mpi.bp')
-    print "readvar:\n", ad.readvar("adios_test_mpi.bp", "temperature")
+    print("bpls:\n", ad.bpls('adios_test_mpi.bp'))
+    print("readvar:\n", ad.readvar("adios_test_mpi.bp", "temperature"))
 
-    print "\n>>> Done.\n"
+    print("\n>>> Done.\n")
diff --git a/wrappers/numpy/tests/test_adios_mpi_writer.py b/wrappers/numpy/tests/test_adios_mpi_writer.py
index 66d9147..5efeb97 100644
--- a/wrappers/numpy/tests/test_adios_mpi_writer.py
+++ b/wrappers/numpy/tests/test_adios_mpi_writer.py
@@ -15,14 +15,14 @@ rank = comm.Get_rank()
 size = comm.Get_size()
 
 ## Prepare
-print "\n>>> Prepare ... (rank = %d)\n" % rank
+print("\n>>> Prepare ... (rank = %d)\n" % rank)
 fname = 'adios_test_mpi_writer.bp'
 NX = 10
-t = np.array(range(NX*size), dtype=np.float64) + rank*NX
+t = np.array(list(range(NX*size)), dtype=np.float64) + rank*NX
 gdim = (size, NX)
 offset = (rank, 0)
 
-print "\n>>> Writing ... (rank = %d)\n" % rank
+print("\n>>> Writing ... (rank = %d)\n" % rank)
 ad.init_noxml()
 ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
 
@@ -33,19 +33,18 @@ fw.define_var('temperature', ldim=(1,NX), gdim=gdim, offset=offset)
 fw['NX'] = NX
 fw['size'] = size
 fw['temperature'] = t
-fw.attr['/temperature/description'] = "Global array written from 'size' processes"
+fw.attrs['/temperature/description'] = "Global array written from 'size' processes"
 fw.close()
 
 ## Reading
 if rank == 0:
-    print "\n>>> Reading ...\n"
+    print("\n>>> Reading ...\n")
 
     f = ad.file(fname, comm=MPI.COMM_SELF)
-    for key, val in f.var.iteritems():
-        print key, '=', val.read()
+    for key, val in f.vars.items():
+        print(key, '=', val.read())
 
-    for key, val in f.attr.iteritems():
-        print key, '=', val.value
-
-    print "\n>>> Done.\n"
+    for key, val in f.attrs.items():
+        print(key, '=', val.value)
 
+    print("\n>>> Done.\n")
diff --git a/wrappers/numpy/tests/test_adios_timestep.py b/wrappers/numpy/tests/test_adios_timestep.py
index 7cf4328..cacf0f5 100644
--- a/wrappers/numpy/tests/test_adios_timestep.py
+++ b/wrappers/numpy/tests/test_adios_timestep.py
@@ -9,7 +9,7 @@ import adios as ad
 import numpy as np
 
 ## Writing
-print "\n>>> Writing ...\n"
+print("\n>>> Writing ...\n")
 
 ad.init("config.xml")
 
@@ -22,7 +22,7 @@ for i in range(10):
     NX = 10
     size = 2
     groupsize =  4 + 4 + 8 * size * NX
-    t = np.array(range(NX*size), dtype=np.float64) + i*NX*size
+    t = np.array(list(range(NX*size)), dtype=np.float64) + i*NX*size
     tt = t.reshape((size, NX))
     ad.set_group_size(fd, groupsize)
     ad.write_int(fd, "NX", NX)
@@ -33,26 +33,25 @@ for i in range(10):
 ad.finalize()
 
 ## Reading
-print "\n>>> Reading step-by-step ...\n"
+print("\n>>> Reading step-by-step ...\n")
 
 f = ad.file("adios_test.bp")
 f.printself()
 
-v = f.var['temperature']
+v = f.vars['temperature']
 v.printself()
 
 for i in range(10):
     val = v.read(from_steps=i, nsteps=1)
-    print "step =", i
-    print val
-    
+    print("step =", i)
+    print(val)
+
 assert ((tt == val).all())
-    
-## Testing
-print "\n>>> Test utility functions ...\n"
 
-print "bpls:\n", ad.bpls('adios_test.bp')
-print "readvar:\n", ad.readvar("adios_test.bp", "temperature")
+## Testing
+print("\n>>> Test utility functions ...\n")
 
-print "\n>>> Done.\n"
+print("bpls:\n", ad.bpls('adios_test.bp'))
+print("readvar:\n", ad.readvar("adios_test.bp", "temperature"))
 
+print("\n>>> Done.\n")
diff --git a/wrappers/numpy/tests/test_adios_writer.py b/wrappers/numpy/tests/test_adios_writer.py
index 1b0843e..646352a 100644
--- a/wrappers/numpy/tests/test_adios_writer.py
+++ b/wrappers/numpy/tests/test_adios_writer.py
@@ -8,14 +8,14 @@ $ python ./test_adios_write.py
 import adios as ad
 import numpy as np
 
-print "\n>>> Prepare ...\n"
+print("\n>>> Prepare ...\n")
 fname = 'adios_test_writer.bp'
 NX = 10
 size = 2
-t = np.array(range(NX*size), dtype=np.float64)
+t = np.array(list(range(NX*size)), dtype=np.float64)
 tt = t.reshape((size, NX))
 
-print "\n>>> Writing ...\n"
+print("\n>>> Writing ...\n")
 ad.init_noxml()
 ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
 
@@ -25,19 +25,18 @@ fw.declare_group('group', method='POSIX1')
 fw['NX'] = NX
 fw['size'] = size
 fw['temperature'] = tt
-fw.attr['/temperature/description'] = "Global array written from 'size' processes"
+fw.attrs['/temperature/description'] = "Global array written from 'size' processes"
 fw.close()
 
 ## Reading
-print "\n>>> Reading ...\n"
+print("\n>>> Reading ...\n")
 
 f = ad.file(fname)
-for key, val in f.var.iteritems():
-    print key, '=', val.read()
+for key, val in f.vars.items():
+    print(key, '=', val.read())
 
-for key, val in f.attr.iteritems():
-    print key, '=', val.value
+for key, val in f.attrs.items():
+    print(key, '=', val.value)
 
 ## Testing
-print "\n>>> Done.\n"
-
+print("\n>>> Done.\n")
diff --git a/wrappers/numpy/uninstal-adios-modules.sh b/wrappers/numpy/uninstal-adios-modules.sh
new file mode 100755
index 0000000..a9896ec
--- /dev/null
+++ b/wrappers/numpy/uninstal-adios-modules.sh
@@ -0,0 +1,34 @@
+#/bin/bash
+
+usage () {
+    echo "USAGE: $0 [-h|-d]"
+    exit
+}
+
+DRY_RUN=false
+
+while getopts ":hd" arg; do
+  case $arg in
+    h) usage ;;
+    d) DRY_RUN=true ;;
+    *) usage ;; 
+  esac
+done
+
+PRECMD=
+[ $DRY_RUN = true ] && PRECMD=echo && echo "Dry-run mode is ON"
+
+$PRECMD pip uninstall --yes adios adios_mpi
+$PRECMD pip uninstall --yes adios adios_mpi
+
+echo "Extra cleaning:"
+DIR1=`python -c "import site; print(site.getsitepackages()[0])"`
+DIR2=`python -m site --user-site`
+for DIR in $DIR1 $DIR2; do
+    echo "$DIR"
+    if [ -d $DIR ]; then
+        pushd $DIR >> /dev/null
+        $PRECMD rm -rf adios*
+        popd >> /dev/null
+    fi
+done

-- 
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